iOS/Android的设备唯一标识符

本文最后更新于2018年10月13日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

最近在做这一块的数据分析,所以整理一下在 iOS/Android 系统上有哪些指标可以作为设备唯一标识符或是辅助唯一确定一台设备,方便以后参考。

正文:

参考解答:
# iOS

iOS 10 IDFA 新策略
`
当Apple设备升级到 iOS10 及以后版本,且开启了限制广告跟踪的情况下,在获取 IDFA 时会返回:
00000000-0000-0000-0000-000000000000
`

iOS 10 and IDFA zeroed attribution

iOS获取设备UUID和IDFA
`
UDID #iOS 5之后废弃
IDFV
IDFA #iOS 10之后可能为0
MAC地址 #iOS 7之后废弃
`

【iOS】获取设备唯一标识符

iOS怎样获取设备唯一标识符

iOS获取设备的唯一标识的方法总结以及最好的方法

iOS唯一标识设备方法

iOS开发中使用到的设备ID及存储方案

 

# Android

Android 唯一识别码

https://android-developers.googleblog.com/2011/03/identifying-app-installations.html

How can I get the UUID of my Android phone in an application?

Android唯一标识符最佳做法
`
我们建议您在使用 Android 标识符时遵循以下原则:

原则 1:避免使用硬件标识符。您可以在大多数用例中避免使用 SSAID (Android ID) 和 IMEI 等硬件标识符,而必需功能也不会受到限制。

原则 2:只为用户分析或广告用例使用广告 ID。使用广告 ID 时,务必遵守限制广告追踪标记,确保标识符无法与个人可识别信息 (PII) 建立关联,并避免桥接广告 ID 重置。

原则 3:尽一切可能为防欺诈支付和电话以外的所有其他用例使用实例 ID 或私密存储的 GUID。对于绝大多数非广告用例,使用实例 ID 或 GUID 应该足矣。

原则 4:使用适合您的用例的 API 以尽量降低隐私权风险。为高价值内容保护使用 DRM API,为滥用预防使用 SafetyNet API。Safetynet API 是能够确定设备真伪而又不会招致隐私权风险的最简单方法。
`

android获取设备唯一标识完美解决方案的思考以及实现方式

如何唯一的标识一台Android设备?

如何获取Android设备唯一ID?

Is there a unique Android device ID?

 

参考链接:
  • 如上

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/4114.html

12 thoughts on “iOS/Android的设备唯一标识符”

  1. 聊一聊薅羊毛党最爱用的改机神器
    https://media.weibo.cn/article?id=2309404283470665937933
    `
    本文讨论了薅羊毛的危害,羊毛党使用的某些技术以及一些对抗羊毛党的思路。

    0x00 什么是薅羊毛
    薅羊毛,简单来讲就是通过刷活动来获取奖励。举例来说:某公司搞推广活动,介绍一个新用户奖励10元,如果真的去介绍是很困难的,所以羊毛党要做的就是自己注册很多账号,并邀请自己的账号来获取奖励。又或者刷注册、刷点击等等,都算薅羊毛项目之一。

    简单总结一下羊毛党的危害:
    1、运营成本高,推广费用在短时间都被羊毛党薅干,导致资损。
    2、本来推广的费用是给正常用户的一些福利,结果被羊毛党薅走,影响正常用户的体验和一些网站活动的口碑。
    3、对服务器带来一定的压力,严重的话会导致服务器宕机,影响活动的正常进行。

    0x01 基础对抗
    一机一号一券。也就是说一台手机只能注册一个账号才能领到一个红包(优惠券)。

    0x02中级对抗
    既然平台对机器进行了限制,那么羊毛党有三个选择:1. 真的买一堆机器(根据用户行为进行判断)。2. 使用虚拟机(分析很难伪造的虚拟机特征)。3. 用改机神器,让一台机器化身千万台机器。

    0x03 改机神器
    在Android和iOS平台上都有大量的改机神器,他们的基本原理是都是在root(越狱)的基础上,对app获取系统和设备信息的API进行了hook,然后将内容替换为伪造的系统和设备信息(java层hook,native层hook,替换系统配置文件,以及屏蔽文件等)。

    0x04 对抗改机神器的思路
    1. 改机神器会hook大量的信息获取API,但依然会漏掉一些可以对机器进行唯一标示的API函数,因此我们可以寻找这样的API函数并使其成为设备唯一标识符的参考。
    2. 虽然改机神器hook了一些关键的API,但是依然有办法绕过这些hook,并获取到真实的数据,这里会涉及到一些内存和汇编的对抗技术。
    3. 就算是改机神器伪造了机器的数据,但是通过云端的一些算法,依然可以识别出这些伪造的设备。如果再配合上环境指纹和行为信息的话,即使是全部数据都是伪造的,依然可以有方法识别出来羊毛党的流量。
    `

  2. 探针盒子收集附近的手机号码和个人信息是怎么实现的?普通人怎么防范?
    https://daily.zhihu.com/story/9709274
    https://www.zhihu.com/question/303176001
    `
    收集 MAC 地址,很简单,只要 Wi-Fi 开启,手机会广播(以及跟 SSID 源交互)自己的 MAC 地址,在人流量较多的地方,“探针”只要“探”一下即可获得大量地址,直到这个地方的信号太过拥挤,通讯质量太差或是缓存满了为止。

    iPhone 用户则需要升级到至少 iOS 9,才能够获得比较好的防护(iOS 8 的太初级了),而且 iOS 版本越高,往往防追踪能力越强(例如 iOS 12 的防跟踪)。在 Wi-Fi MAC 地址防护上,iOS 10 就已经基本完备了,也就是说,iPhone 7 以后的用户即使不升级系统,也能得到最高限度的一定保护,而 iPhone 7 以下机型最好运行 iOS 10 或更高版本。

    iPhone 4S 无法随机生成 MAC 地址,多高系统也没用。

    最重要的,不要胡乱连接 Wi-Fi,大型连锁快餐店和大型连锁商场或许还行,但是其他地方我不敢保证。
    `

    2019 央视 3·15 曝光案例全面盘点 – 4/10智能骚扰电话
    https://www.zhihu.com/special/20746695#NewsSpecial-SubModule-1089989412917620736

  3. What is the risk of leaking IMEI / IMSI numbers over a network
    https://security.stackexchange.com/questions/49343/what-is-the-risk-of-leaking-imei-imsi-numbers-over-a-network
    `
    IMEI是手机的唯一全球标识符(硬件元素),而IMSI是SIM卡的唯一全球标识符(因此它可以或多或少地映射到拥有它的人身上)。

    IMEI 是和Android手机 硬件相关 的参数,同一台手机的IMEI相同,一般情况下不同手机的IMEI不同;
    IMSI 是和Android手机 SIM卡相关 的参数,即同一台手机换了SIM卡之后,IMSI就不一样了。
    `
    https://www.quora.com/What-is-the-difference-between-ICCID-IMSI-and-IMEI-numbers

  4. 实测SDK“偷”数据:隐瞒收集、明文回传!你装了哪些App它也知道
    https://mp.weixin.qq.com/s/b9NSzS71JVC4_0DglgHDJw
    `
    为了摸清SDK获取用户个人信息的合规现状,近日,南都个人信息保护研究中心、中国金融认证中心(CFCA)对60款常用App以及主流SDK进行了测评,并联合发布《常用第三方SDK收集使用个人信息测评报告》(下称《报告》)。

    《报告》显示,讯飞、TalkingData等SDK收集的个人信息未在其嵌入App的隐私政策或弹窗中被提及;友盟SDK和高德地图SDK可能隐瞒了其要收集的个人信息;支付宝、携程、百度地图、美团等SDK则会向自己的服务器明文回传用户的个人信息甚至个人敏感信息。

    平均每款App使用19.3个SDK,获取IMEI号最多

    国家标准《信息安全技术 个人信息安全规范》修订草案要求,当个人信息控制者在其产品或服务中接入具备收集个人信息功能的第三方产品或服务时,应通过合同等形式明确双方的安全责任及应实施的个人信息安全措施,并要求第三方向个人信息主体征得收集个人信息的授权同意。

    也就是说,SDK收集个人信息也需要经过用户授权同意。由于SDK不直接与用户交互,使用它的App有义务代为向用户告知。然而,不少App并没有做到——用户的隐私很可能在不知情的情况下被SDK收集了。
    `
    http://research.nandu.com/piprc/static/pdf/%E5%B8%B8%E7%94%A8%E7%AC%AC%E4%B8%89%E6%96%B9SDK%E6%94%B6%E9%9B%86%E4%BD%BF%E7%94%A8%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF%E6%B5%8B%E8%AF%84%E6%8A%A5%E5%91%8A.pdf

  5. Android下如何获取已安装app应用列表
    `
    final PackageManager pm = getPackageManager();
    //get a list of installed apps.
    List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

    for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, “Installed package :” + packageInfo.packageName);
    Log.d(TAG, “Source dir : ” + packageInfo.sourceDir);
    Log.d(TAG, “Launch Activity :” + pm.getLaunchIntentForPackage(packageInfo.packageName));
    }
    `
    https://stackoverflow.com/questions/2695746/how-to-get-a-list-of-installed-android-applications-and-pick-one-to-run
    https://developer.android.com/reference/android/content/pm/PackageManager

  6. 移动端设备ID标识整理(IMEI、MEID、ICCID…
    https://www.jianshu.com/p/f888390e37d5

    IMEI值和MEID值的获取
    https://www.jianshu.com/p/740e9116281f
    `
    MEID是CDMA手机的识别码,IMEI是GSM、WCDMA手机的识别码,对应到国内的运营商如下:

    移动:2G使用 GSM, 3G使用 TD-SCDMA 4G使用TD-LTE
    联通:2G使用 GSM, 3G使用 WCDMA 4G使用TD-LTE、FDD-LTE
    电信:2G使用 CDMA,3G使用 CDMA2000 4G使用TD-LTE、FDD-LTE

    所以,你知道了,IMEI是联通移动手机的标识,MEID是电信手机的标识。
    `

  7. 移动安全联盟
    http://www.msa-alliance.cn/col.jsp?id=120
    `
    移动智能终端补充设备标识体系架构共涉及四类实体,包括开发者、开发者开发的应用软件、移动智能终端设备的操作系统、用户及用户使用的设备。为保护用户用户的隐私和标识设备的唯一性,根据不同使用对象和不同用途,基于移动智能终端设备,分别生成设备唯一标识符、匿名设备标识符、开发者匿名设备标识符和应用匿名设备标识符,将这四个设备标识符构成补充设备标识体系。

    UDID – 设备唯一标识符是指设备唯一硬件标识,设备生产时根据特定的硬件信息生成,可用于设备的生产环境及合法性校验。

    OAID – 匿名设备标识符是可以连接所有应用数据的标识符,移动智能终端系统首次启动后立即生成,可用于广告业务。

    VAID – 开发者匿名设备标识符是指用于开放给开发者的设备标识符,可在应用安装时产生,可用于同一开发者不同应用之间的推荐。

    AAID – 应用匿名设备标识符是指第三方应用获取的匿名设备标识,可在应用安装时产生,可用于用户统计等。

    应用向系统发送获取设备标识的请求时,系统需要对应用采取合适的手段进行身份验证,并验证其请求符合策略规定,才可将结果返回给应用。
    UDID 、OAID、VAID和AAID这四个设备标识符之间不存在映射关系。
    `

    https://mtj.baidu.com/static/userguide/book/android/oaid.html
    `
    因传统的移动终端设备标识如国际移动设备识别码(IMEI)等已被部分国家认定为用户隐私的一部分,并存在被篡改和冒用的风险,所以在Android 10及后续版本中非厂商系统应用将无法获取IMEI、MAC等设备信息。无法获取IMEI会在用户行为统计过程中对设备识别产生一定影响。

    近日移动安全联盟针对该问题联合国内手机厂商推出补充设备标准体系方案,选择OAID字段作为IMEI等的替代字段。OAID字段是由中国信通院联合华为、小米、OPPO、VIVO等厂商共同推出的设备识别字段,具有一定的权威性,可满足用户行为统计的使用场景。
    `
    https://manual.sensorsdata.cn/sa/latest/tech_sdk_client_android_oaid-7541893.html
    https://github.com/guxiaonian/MobileInfo/wiki/Oaid

    Android获取OAID
    https://blog.csdn.net/haovip123/java/article/details/101679971
    https://github.com/haoguibao/OaidDemo/tree/master
    `
    IMEI 国际移动设备识别码 International Mobile Equipment Identity 15~17位
    UDID 设备唯一标识符 Unique Device Identifier 最长64位
    OAID 匿名设备标识符 Open Anonymous Device Identifier 最长64位
    VAID 开发者匿名设备标识符 Vender Anonymous Device Identifier 最长64位
    AAID 应用匿名设备标识符 Application Anonymous Device Identifier 最长64位
    `

发表评论

电子邮件地址不会被公开。 必填项已用*标注