android 可以像 ios keychain 那样追踪用户吗

2022-02-26 14:38:36 +08:00
 thisismr2

请教一下:

ios 可以通过 keychain 追踪用户。 Android (仅官方 ROM 或 Google ROM 并且是最新版, 应该 12)有没有类似方案。‘

这里追踪的定义(或相似定义)是:

  1. 安装 app
  2. 打开 app
  3. app 在某个地方做个标记 xxx
  4. 卸载 app
  5. 再次安装 app
  6. 打开 app
  7. app 会取到之前的 xxx 标记

就目前来看 ios 不会限制 keychain 的写入。 如果 android 做不到的话,准备考虑换 android

14077 次点击
所在节点    Android
54 条回复
calloc
2022-02-27 16:01:30 +08:00
看来做这行的还不少
ShadowPower
2022-02-27 18:26:15 +08:00
@bkmi 我去了解了一下“数字联盟可信 ID”,但没找到相关技术资料。找到的大多数是其产品的广告宣传,在广告中吹嘘得神乎其神。
我倾向于它其实不能保证获取到的 ID 可靠且不可变,只是会额外做一些检查,判断运行环境是否存在作弊。
如果可以,希望能稍微讲讲它是如何在权限限制下保证 ID 不可变的。
ShadowPower
2022-02-27 18:29:03 +08:00
@bkmi 广告的原文是这么说的:

可信 ID 3.0 成功迭代上线,数字联盟研发了弱特征归因技术,弱特征指的是单一或者组合无法识别设备唯一性的特征,比如电量、屏幕亮度等,在弱特征归因的过程中,多维度采集环境和设备层中隐私敏感度不高的信息,利用长期积累的环境数据,与设备行为数据的拟合,通过深度机器学习与严密的算法,为设备颁发准确唯一的设备 ID 。

听起来就不太可靠……
nicevar
2022-02-27 19:05:25 +08:00
@bkmi 别装了好吗,你让头条和拼多多的人出来,他们敢保证能生成不变的唯一 ID 吗?头条连一些 sdk 26 的设备都搞不定,pdd 就更不用说了。
nicevar
2022-02-27 19:08:23 +08:00
@bkmi 另外你口中的那个数字可信一堆设备都直接返回不支持,不知道你哪来的勇气胡说八道。
ShadowPower
2022-02-27 20:21:26 +08:00
Dreax
2022-02-27 20:40:39 +08:00
@MengiNo 据我所知 local keychain 只有通过完全重置手机才能删
MacDows
2022-02-27 20:45:33 +08:00
似乎如果用嵌套虚拟化 wsa 能彻底解决这个问题?
MengiNo
2022-02-27 21:01:50 +08:00
@Dreax 开 iCloud 同步的情况下,在 macOS 里删就可以同步把 iOS 的也删了,苹果客服是这么说的,但是官方文档没解释的非常清楚,不排除他瞎说。但像 Wi-Fi 、证书这样的东西删除是同步的,感觉上大概率都是同步的,这种东西重点在加密,功能上还是比较简单的,应该不会有很多策略。
bkmi
2022-02-27 21:37:15 +08:00
@nicevar @ShadowPower 你们爱信不信吧,要验证也简单,数盟官网案例中有列出一堆应用,抓包找到上报的 id ,然后卸载重装看上报的是不是一样,另外友情提示不要直接在系统里设置 HTTP 代理,因为 SDK 检测到代理会主动失效。
ShadowPower
2022-02-28 00:04:40 +08:00
@bkmi 它的代码里校验了证书链,没法在劫持 HTTPS 请求的情况下让它走完整个流程……
上报的数据估计都是加密后的一些本机硬件信息和其他可能用来识别设备的信息,如果当场卸载重装那肯定不怎么会变。

但它的宣传是用于反作弊 /风控用的,这意味着只需要做到能检测出黑产刷单薅羊毛的行为就算达到目的了。
也许旧版本 Android/iOS 上限制不够严格,可信 ID 还能做到准确标识一台设备。
如果是目前的版本,根据各种“不那么唯一”的信息,综合起来确实能够在一定程度上区分设备。然而问题在于:
1. 不能确保不同的设备拿到的 ID 也一定不同,可能有一定的碰撞概率(至少要比广告 ID 的碰撞概率高,毕竟它主要用于识别相同设备,同时还没法拿到真正的设备唯一 ID ,只能靠其他数据来猜);
2. 对于同一台设备,在不同时间地点,用户做了许多操作(清理垃圾,更换 SIM 卡,升级系统版本,跌落,部分硬件老化或故障),然后重装了应用,得到的新的可信 ID 有可能会发生变化。

一个可靠的用来跟踪用户设备的 ID ,应该是能避免上述两种问题的。我公司的内部 APP 可能也接入了类似的东西。自从我最近换了手机,升级到 Android 12 并折腾好各种权限之后,信息部时不时给我打电话说我打卡记录异常,检测到我使用另一个同事的手机打卡,是不是有代打卡的行为……我说没有,对方说建议我重装一下应用。
我猜测他们很可能把这类东西当作真正的设备跟踪 ID 来用,然后误报了。

如果应用场景仅仅是反作弊 /风险检测而不是广告跟踪,只要能大幅增加黑产的操作成本就能达到效果了。
那技术应该都在检测设备有没有安装 xposed/越狱 /处于调试模式 /是虚拟机 /APP 被篡改,以及自身的协议和库的反破解上。
vinsoncou
2022-02-28 09:22:32 +08:00
鸿蒙目前是有登录凭据管理了
lisongeee
2022-02-28 11:00:29 +08:00
@thisismr2 -- 这个应该会弹出提示用户授权 对吧

是的,但是某些 app 会申请这个权限然后你同意才能用,然后就在根目录乱建文件夹
XXWHCA
2022-02-28 16:37:16 +08:00
Android 作为更开放的平台,应用存放或获取用户标识有很多方案
可以直接获取的标识:
* 广告 ID ,不同的厂商稍有差异,但大部分都是卸载应用后重置
* SSAID ( Android ID ),格式化或系统更新(可能)重置,应用读取不需要权限
* GUID ,应用内随机生成的设备 ID ,卸载后重置

国内的一些联盟的方案:
* 移动安全联盟( OAID )和各厂商合作,提供了各种周期的设备 ID 方案,集成了它的各应用也可以直接获取 https://www.jianshu.com/p/1c7ef27d6db4
* 推送联盟(以友盟、极光为主)所有集成了这些推送的都可以互相共享数据的

需要一定前提的方案:
* 将标识保存到外置存储,现在需要存储权限,友盟以前是有用过的,但 Android12 存储分区后已经废弃
* 同系应用标识 ID 共享,现在大厂应用基本都有类似功能

已经废弃的方案:
* IMEI ,MAC 等设备唯一标识,现在普通应用没有权限读取到
* settings.db 将数据保存到系统配置数据库 之前又见百度系应用将一些配置存到了 Settings.Global

现在隐私合规越来越严格而且 google 也对获取设备唯一标识的 api 进行了限制,所以各大厂的设备 id 都是多种方案结合来生成的,可以进行降级获取,但主要是使用的 OAID 和 GUID 的方案,都是卸载后可以重置,但是依旧可以通过同系应用或同联盟的应用共享。

实际上两个平台没有什么区别,因为我们的 app 基本都被这些大厂的,都是可以相互追踪的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/836574

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX