abab Profile picture
一般般的安全研究者 非常一般般的开发者

Jul 24, 2021, 8 tweets

来把之前说安卓的坑填了

经过本菜鸡简单研究后,目前在Android10及以上,主流国产UI中的可进行跟踪的标识分为以下几个来源(如有不对还请指正):UUID、移动智能终端补充设备标识体系、数字版权管理(DRM,这个之后会解释)


UUID
谷歌官方提出的UUID,UUID作为安卓官方提供且明确推荐的接口,在Android Q以上的系统中具有获取简单、具有较好的隐私保护性的特点。跟入UUID类中的randomUUID()方法可知,其是先生成了一个16位的随机比特位,然后重新设置特定标志位后,将随机的内容放入UUID类的默认方法。


移动智能终端补充设备标识体系
华为、小米、OPPO、vivo、中兴、努比亚、魅族、联想、三星等设备厂商均将逐步在国内实现此标识体系。此方案提供了OAID、VAID、AAID这三种重置方法跟踪存活能力不同的获取标识符,获取方法较为简单,仅需引入“移动安全联盟”官方SDK并进行相应配置后即可获取。


数字版权管理(DRM)
数字版权管理(DRM)方案,该方法是在资料查询时,发现的一个可以利用于进行唯一性跟踪的手段。主要是使用 DRM API中的MediaDrm,它的作用是来获取用于解密受保护的媒体流的密钥。


测试结果1:
UUID就不赘述了,其本身基本上没有跨应用跟踪和长期跟踪能力,必须写文件到本地才能跟踪,在不允许全盘读写的情况下,没有跨应用跟踪能力。


测试结果2:
“联盟”
OAID:跨应用跟踪能力,用户可以手动重置(所有应用都会获得相同的标识符)如图1-3
VAID:被MIUI禁用了,所有机器和应用拿到的是一样的,无法使用
AAID:在应用安装时生成,只有在卸载应用或恢复出场设置后重新安装此应用,该值才会发生更新。(更新和覆盖安装不影响)如图3-4


测试结果3:
DRM
长期跟踪能力极强,无论是卸载重置恢复出厂,只要不刷机,单个应用获取的串号不变。但不具备跨应用跟踪能力。如图1-3
图4为安卓源码中DRM生成规则的源码。由开发者置入Key+包名+sessionid生成,但是安卓11中没有启用sessionid,而ios中sessionid会1h过期无跟踪。(安卓12也没修复)


测试结果总结,如图所示

(不得不吐槽,twitter写长文好麻烦,字数限制有被恶心到)

Share this Scrolly Tale with your friends.

A Scrolly Tale is a new way to read Twitter threads with a more visually immersive experience.
Discover more beautiful Scrolly Tales like this.

Keep scrolling