压力给到了前端这边: app 如何获取应用唯一标识?

2023-04-30 08:34:14 +08:00
 nathanleeinph

通常一个设备的 udid 在目前移动端操作系统的限制下是无法真正识别用户的,比如应用卸载重装就会发生改变。

但是最近发现市面上有些 app 能真正识别到一个设备。

这个唯一标识不受应用卸载重装、网络状态改变、IP 地址改变、显示分辨率改变、禁止访问剪贴板、禁止获取定位、禁止获取 imei 信息等影响,始终能识别是初次安装的设备及注册的用户信息

有人知道大概实现的原理吗?

4924 次点击
所在节点    问与答
27 条回复
sl0000
2023-04-30 08:37:21 +08:00
系统重装再试试呢
ho121
2023-04-30 09:12:32 +08:00
浏览器指纹
nvkou
2023-04-30 09:14:49 +08:00
用户总不能卸载浏览器吧
j20001112
2023-04-30 09:15:45 +08:00
uber lyft 打车可以识别同一台设备,用的是 iCloud local keychain. 即使卸载重装也能自动登录之前的账号。
j20001112
2023-04-30 09:19:05 +08:00
目前只有手机刷机 /三星的安全文件夹用多用户的 work profile 可以让 uber 无法识别是同一台设备, 微信的新设备登录好像也可以.
j20001112
2023-04-30 09:19:38 +08:00
0o0O0o0O0o
2023-04-30 09:19:44 +08:00
1. 如果重装后还能自动登录,你先排除 iOS KeyChain ,设备指纹再精准,我相信也没公司敢仅靠设备指纹自动登录
2. 还有,绝大多数普通用户最好放弃对抗设备指纹,我觉得物理隔离更行之有效,无论是浏览器还是 APP ,很多东西防君子不防小人的
https://www.ishumei.com/new/product/tw/sdk
https://www.tongdun.cn/product/bddevicefingerp
https://www.dingxiang-inc.com/business/fingerprint
https://dun.163.com/product/dna
j20001112
2023-04-30 09:25:07 +08:00
@0o0O0o0O0o uber 就是靠设备 ID 指纹判断自动登录的,除非手机刷机,否则退出登录之后只要选择查找我的账号就能自动查到该设备所有登录过地账号. uber 用设备指纹来防止信用卡盗刷欺诈,之前信用卡有笔扣款不记得了就报告给银行说是盗刷,最后 Uber 直接把我的 iOS 三星谷歌安卓设备 信用卡 PayPal 全给拉黑了,永远无法叫车. 哪怕是用新的手机号新的信用卡卡号创建一个新的账号都是秒封. 最后只有手机刷机,不从 iOS 备份恢复,没有恢复那些设备指纹 ID 才成功创建新的账号没被封号. 之前手机刷机用从 iOS 备份恢复 /旧手机换机迁移助理都能自动登录之前的账号, 导致新设备一并拉黑.
0o0O0o0O0o
2023-04-30 09:31:40 +08:00
@j20001112 #8

确实,uber android 这个询问之后需要进行一些验证才能登录吗? iOS 某些 app 是“静默”地自动登录上了,第一次遇到时毛骨悚然,还是看到 v 站网友科普才明白
j20001112
2023-04-30 09:33:02 +08:00
https://techcrunch.com/2017/04/23/uber-responds-to-report-that-it-tracked-users-who-deleted-its-app/ 之前库克 CEO 还约谈 uber CEO 威胁下架 关于设备指纹追踪用户,哪怕是刷机都能继续识别. Uber 说是防止信用卡盗刷者一次叫了四五百美金的 uber 打车,最后抹掉设备又能继续盗刷, 拉黑设备完全没用. 最后 Uber 还是坚持继续追踪设备指纹. icloud local keychain 本来是为了卸载游戏后还能继续保存游戏进度不用注册登录账户,最后被大公司拿来识别同一台设备. v 站之前也有讨论过 /t/916353
通过搜索发现在已有大量关于 KeyChain 隐私问题的讨论,但基本都停留在“重置手机删除”,没有人讨论过这部分 App 写入的 KeyChain 是否会被 iCloud 同步,导致重置手机后被再次跟踪。
现状是重度依赖钥匙串账号密码同步功能,那么问题来了:
App 写入的 KeyChain 是否会被 iCloud 同步?
如果会,如何只保留账号密码同步,阻止 App KeyChain 同步?
如果无法阻止,有没有其他办法或思路来避免被同步跟踪?
有没有大佬全面详细的写一下 KeyChain 的细节,以及如何规避其引发的隐私跟踪问题。

除了 icloud local keychain 还用了 device check https://developer.apple.com/documentation/devicecheck
Using the DCDevice class in your app, you can get a token that you use on your server to set and query two binary digits of data per device, while maintaining user privacy. For example, you might use this data to identify devices that have already taken advantage of a promotional offer that you provide, or to flag a device that you’ve determined to be fraudulent. The server-to-server APIs also let you verify that the token you receive comes from your app on an Apple device.
在您的应用程序中使用 DCDevice 类,您可以获取一个令牌,然后在您的服务器上设置和查询每个设备的两个二进制数据位,同时保持用户隐私。例如,您可以使用这些数据来识别已经利用您提供的促销优惠的设备,或者标记您认为是欺诈性的设备。服务器到服务器的 API 还允许您验证您收到的令牌是否来自 Apple 设备上的您的应用程序。
j20001112
2023-04-30 09:36:23 +08:00
@0o0O0o0O0o 安卓也是卸载重装 /恢复手机备份 /从旧手机迁移数据到新手机都能自动登录. 只有当你主动退出登录之后才会询问是是否登录之前该设备 ID 登录过的账号. 目前只有三星的安全文件夹 knox 生成另一个 work profle 才能不被识别到同一台设备. ubereats refer 一个新用户给 35 美金, 老用户给 25 美金. 光是一个新用户就 60 美金. 之前设备指纹技术做地不够到位被羊毛党薅几天就走了上千万美金
j20001112
2023-04-30 09:38:28 +08:00
iOS 开发者证书重签名砸壳的 ipa 也能让 uber 认为是一台新设备,但是之后卸载重装还是能继续识别到是同一台设备. app store 版跟开发者证书重签名砸壳的 ipa 版本有两个不同的设备 ID
j20001112
2023-04-30 09:44:57 +08:00
https://developer.apple.com/forums/thread/72271 之前 iOS10.3 beta2 移除掉了 iCloud keychain items 来防止 APP 追踪同一台设备,最后被很多开发者反对, iOS10.3 RC 之后又添加回去了.


In previous versions of iOS, the keychain data persisted even when the app was uninstalled and reinstalled on the device. After upgrading to iOS 10.3 beta 2, it appears as if deleting the app also deletes all associated keychain contents for that app. The code I'm using to interface with the keychain hasn't changed, and works with iOS 10.2. Is anyone else experiencing this behavior? I haven't had a chance to test this with 10.3 beta 1.
I've searched through related threads here:
https://forums.developer.apple.com/message/75464
https://forums.developer.apple.com/message/112523
The conclusion from the Apple staff member is that the persistence of the keychain data across apps re-installs is a side-effect of the implementation rather than a feature, and that the behavior should not be relied upon. Maybe they finally decided to update the implementation?
* This is an intentional change in iOS 10.3 to protect user privacy. Information that can identify a user should not be left on the device after the app that created it has been removed.
It has never been a part of the API contract that keychain items created by an app would survive when the app is removed. This has always been an implementation detail.
If a keychain item is shared with other apps, it won't be deleted until those other apps have been deleted as well.
There is documentation in the works about this change that should address questions raised in this thread.
--gc
在之前的 iOS 版本中,即使应用程序被卸载并重新安装在设备上,钥匙串数据仍然存在。在升级到 iOS 10.3 beta 2 之后,似乎删除应用程序还会删除与该应用程序关联的所有钥匙串内容。我用来与钥匙串进行交互的代码没有改变,并且可以在 iOS 10.2 上使用。有没有其他人遇到这种情况?我还没有机会测试 10.3 beta 1 。
我在这里查找了相关帖子:
https://forums.developer.apple.com/message/75464
https://forums.developer.apple.com/message/112523
苹果员工得出的结论是,钥匙串数据在应用程序重新安装之间的持久性是实现的副作用,而不是功能,并且不应依赖这种行为。也许他们终于决定更新实现?
* 这是 iOS 10.3 中有意为之的更改,以保护用户隐私。在创建它的应用程序被删除后,不应将可以识别用户的信息留在设备上。
API 合同中从未规定应用程序创建的钥匙串项目在应用程序被删除时会保留。这一直是实现细节。
如果钥匙串项目与其他应用程序共享,那么在其他应用程序被删除之前,它不会被删除。
关于此更改的文档正在编写中,应该会解答本帖提出的问题。
--gc
j20001112
2023-04-30 09:49:58 +08:00
uber 百万美金的工程师还是挺牛的,像微信刷机之后从 iCloud 恢复备份之后还要旧设备扫码登录,而这本身就是同一台设备. Uber 可以自动登录,连一个按钮一个字符都不用按. 而且 uber 绑定着用户上几十万上百万美金的银行卡信用卡, 设备指纹 ID 技术哪怕是出现 1 次错误都会造成严重的资金被盗. 而银行 APP 支付宝都无法做到
a570295535
2023-04-30 09:53:23 +08:00
很简单啊,用户第一次(打开 app/登陆 app)的时候,直接在其他已有文件夹拉一个屎,用户根本不知道你还偷偷拉了屎,由于是在其他文件夹的屎,用户也想不到是你的屎,再加上这个屎是加密的乱码或是拥有某些系统文件的名称,就算用户发现了也不敢随便删除。
WebKit
2023-04-30 09:55:39 +08:00
uuid 我记得 iOS 卸载后重装也不会变,Android 国产有 OAID 国外有 google ID ADID
j20001112
2023-04-30 09:58:03 +08:00
@WebKit uuid 没有权限获取的,还要安装个描述文件才可以在浏览器获取到。比如 Uber 在设备刷机之后就无法识别是同一台设备了,如果知道 uuid 还是可以继续识别到的。
James369
2023-04-30 10:31:57 +08:00
这么麻烦吗,不是手机号码关联了吗
j20001112
2023-04-30 10:36:32 +08:00
@James369 封了手机号用户还是能创建新账号,无法做到直接封设备来风控。
tyzandhr
2023-04-30 14:16:21 +08:00
网络环境的话,可能会追踪你的路由器的

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

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

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

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

© 2021 V2EX