设备识别码(以下简称“设备ID”)相当于设备的“⾝份证”、“指纹”,采集设备识别码是识别、关联、定位设备的⼀种最常见做法,且以⼿机等终端设备为代表的⽤户常⽤设备,设备ID往往与个⼈⾝份有紧密的关联关系,因此设备ID被App等⼴泛应⽤于服务⽤户的场景。
在产品运营⽅⾯,App等可以使⽤设备ID统计⽤户的使⽤习惯,优化产品功能,设置个性化界⾯;在⼴告营销⽅
⾯,App、SDK等可以借助设备ID追踪和分析⽤户浏览操作记录、关联⽤户⾏为和活动轨迹,形成⽤户精准画像并进⾏⼴告推送。
全息设备同时,设备ID也是当下最为⼴泛使⽤的数据汇聚、交换、补充的关键连接符;在安全风控⽅⾯,App等可以通过监测设备ID并采取封堵措施来规避“薅⽺⽑”、刷单、刷票、刷粉、数据、作弊、恶意灌⽔、恶意差评等⿊灰产恶意⾏为,也可以⽤于监测⽤户账号是否存在异常登录、异常操作等保护⽤户账号安全。
不难看出,以上⼏个主要使⽤场景⼏乎是所有App的现实需求,可以说⼿机设备ID在整个互联⽹⽣态中扮演了举⾜轻重的⾓⾊。
然⽽,近年来,基于⼿机设备ID精准的⽤户画像和定向⼴告,跨平台跨组织的数据交换等饱受争议,⼿机设备ID的强制、过度采集⾏为也受到⼴泛质疑,到底如何正确看待各类⼿机设备ID的特性,获取机制是否可以做出相应限制,本⽂将对⼿机设备ID进⾏分类分析并探讨解决⽅案。
根据⼿机设备ID所代表的含义、获取和⽣成⽅式等不同,主要分为以下⼏类:
类别⼀:⼿机设备⾃⾝的唯⼀识别码
类别⼀:
⼿机设备⾃⾝的唯⼀识别码
磁卡电表
1、国际移动设备识别码(IMEI :International Mobile EquipmentIdentity),即通常所说的⼿机序列号、⼿机“串号”,⽤于在移动电话⽹络中识别每⼀部独⽴的⼿机等移动通信设备,相当于移动电话的⾝份证,IMEI号共有15~17位数字。国际移动设备识别码⼀般贴于机⾝背⾯与外包装上,同时也存在于⼿机存储器中。 安卓系统需要⽤户开启READ_PHONE_STATE权限(在权限组中⼀般体现为“电话”或“设备信息”权限)后才能读取IMEI 号,很多安卓App向⽤户索要“电话”权限,其实主要⽬的是为了读取IMEI号,苹果⼿机iOS 5以上系统中App⽆法读取IMEI号。 2、移动设备识别码(MEID:Mobile Equipment Identifier)是⽀持CDMA⼿机等移动通信设备唯⼀的识别码。MEID的数字范围是⼗六进制的,和IMEI号的格式类似。安卓系统需要⽤户开启READ_PHONE_STATE权限(在权限组中⼀般体现为“电话”或“设备信息”权限)后才能读取MEID号,苹果⼿机iOS 5以上系统中App⽆法读取MEID号。
图1 ⼿机中的IMEI和MEID
3、Android_ID是运⾏安卓系统的⼿机等设备随机⽣成⼀串64位的号码,每⼀个Android_ID都是独⼀⽆⼆。Android8.0及更⾼版本中,Android_ID的值通过签名密钥等确定范围。在低于Android8.0的版本中,Android_ID在⽤户第⼀次启动设备时随机⽣成。在恢复出⼚设置、或重装系统后,Android_ID会被重置。获取Android_ID不需要开启任何系统权限,可直接通过运⾏相应代码获取。
图2 AndroidID
4、设备序列号(SN:SerialNumber)通常⽤于验证产品的出⼚⽣产的正规性和合法性,也称作机器码、认证码、注册码,通常可在系统信息中的序列号⼀栏看到,不可更改。App通常可以使⽤命令、调⽤READ_PHONE_STATE权限相关函数读取SN值,但是因操作系统、⼿机型号版本等不同存在差异。
关函数读取SN值,但是因操作系统、⼿机型号版本等不同存在差异。
图3 设备序列号
5、⼴告标识符(IDFA:identifierForIdentifier)是苹果⼿机iOS 6及以上系统给⼴告商提供的追踪⽤户的标识符,⼴告标识符存储在⼿机系统中,可被每⼀个App获取。同时,⽤户可以根据⾃⼰的意愿来还原或者禁⽌获取IDFA。⽤户可以通过设置--->隐私--->⼴告来操作,界⾯如下图,当⽤户选择还原IDFA或重置⼿机系统时,IDFA值会发⽣变化。
图4 苹果iOS系统可重置IDFA值
6、应⽤开发商标识符(IDFV - Identifier For Vendor)是苹果iOS系统给App开发商⽣成的唯⼀性标识符,同⼀个开发商开发的不同的App获取的IDFV值相同,常⽤于⾃开发App及跨App追踪⽤户⾏为。
此外,还有通⽤唯⼀标识符(UUID)被经常性使⽤,标准UUID是⼀个128位的值,可以保证在空间和时间上的唯⼀性,由RFC 4122定义。不同系统中可能会使⽤该格式对其中的相关软件、应⽤程序⽣成UUID。⽐如,旧版本iOS系统中App可以采集该值来识别⽤户⾝份,如果⽤户完全删除然后重新安装该应⽤程序,则UUID将被重置,新版iOS系统中对采集UUID做出了限制。
类别⼆:移动设备中其他组件的标识符
仿古建筑施工1,国际移动⽤户识别码(IMSI:International Mobile SubscriberIdentification Number)是区别移动⽤户
的标志,储存在SIM卡中,在全⽹和全球范围内唯⼀。安卓系统需要⽤户开启READ_PHONE_STATE权限(在权限组中⼀般体现为“电话”或“设备信息”权限)后才能读取IMSI号,苹果⼿机iOS 5以上系统中App⽆法读取IMSI号。
2.、⼿机SIM卡序列号(ICCID:ICC identity)是集成电路卡标识,是唯⼀标识SIM卡的序列号。ICCID存储在SIM卡中,完整的ICCID为19或20个字符。安卓系统需要⽤户开启READ_PHONE_STATE权限(在权限组中⼀般体现为“电
话”或“设备信息”权限)后才能读取ICCID号。
3、MAC(Media AccessControl)是介质访问控制地址,在移动设备上分为蓝⽛MAC地址和WLAN MAC地址,分别是移动设备上蓝⽛部件和⽹络部件的唯⼀的⽹络标识,由⽹络设备制造商⽣产时写在硬件内部,⽤来表⽰互联⽹上每⼀个站点的标识符,采⽤⼗六进制数表⽰,共六个字节(48位)。获取蓝⽛MAC和WLAN MAC通常需要开启⽹络数据、蓝⽛功能和WLAN功能和相关权限,然后通过API等⽅式获取MAC地址,新版本iOS对获取MAC地址做出了限制。
图5 蓝⽛MAC地址和WLAN MAC地址
类别三:软件等⽣成的唯⼀识别符
该类标识与前述标识不同,是App安装之后通过⼀系列拼接、计算等机制⽣成的唯⼀性标识,⽽⾮硬件设备和组件⾃有标识。此类标识本⾝并不存在于设备中,开发者对⽣成规则有较强的主导权,往往也只能在⾃有产品⽣态中使⽤。由于硬件设备识别码的采集限制越来越严格,该⽅式已经越来越多的被采⽤。常见的有以下⼏类:
1、OpenUDID通常是通过第⼀个带有OpenUDID SDK包的App⽣成,最初OpenUDID是为了代替苹果公司禁⽤的UDID,并在开源社区开放设备标识⽣成⽅法。在删除第⼀个带有OpenUDID SDK包的App后,OpenUDID的值会重新⽣成。
2、InstalltionID是在App安装后第⼀次运⾏时⽣成的⼀个ID。不同的App会产⽣不同的Installtion ID,相同的App重新安装也会产⽣不同的Installtion ID。Installtion ID通常⽤来跟踪应⽤安装数量。
3、Pseudo-Unique ID是⼀种伪唯⼀ID,这种ID主要通过读取⼿机的ROM版本、制造商名称、CPU类型以及其他硬件详细信息后通过计算⽣成⼀串标识号。该标识符所基于的源数据往往可以不需要⽤户开启系统权限,但是在唯⼀性的可靠度不⾼。
事实上,App、SDK开发者还习惯根据已采集的设备ID、设备相关的随机码,以及⽤户账户、使⽤⼿机的⼀些习惯性⾏为、特定历史记录等等进⾏拼接和建模计算,最终⽣成⼀类⾃定义的OpenID,并⼴泛应⽤于各类场景中。
陶瓷添加剂
为、特定历史记录等等进⾏拼接和建模计算,最终⽣成⼀类⾃定义的OpenID,并⼴泛应⽤于各类场景中。
除以上类型,应⽤商店及应⽤商店SDK还可能会在App开发框架、应⽤上架等环节赋予App⼀个唯⼀标识符,如⼿机安装Google Play的SDK或者设备本⾝有Google Play的,会⽣成GAID。
类别四:⽹络环境中的标识符
此类标识本⾝并不属于⼿机等移动设备,⽽是由⼿机所处的⽹络环境进⾏⼴播后⼿机可以接收到的数据,该类数据可能包含或能分析出⽤户的地理位置、所处场所等信息,在⼀定条件下进⾏加⼯、关联分析,也能⽣成具有唯⼀性属性的标识符,典型的包括:
1、BSSID(Basic Service Set ID),简单来说,在⼿机使⽤场景下,BSSID是⽆线⽹络热点的MAC地址,是由 IEEE 802.11-1999 ⽆线局域⽹规范定义,可以通过⼿机中的⽹络模块进⾏扫描附近热点、尝试连接等⽅式获取BSSID。
2、SSID(Service SetIdentifier)是服务集标识符,通常不超过32位,常⽤于标识⼀个可⽤的⽆线⽹络。简单来说,Wi-Fi 等热点的名称就是SSID,可以通过⼿机中的⽹络模块进⾏扫描附近热点、尝试连接等⽅式获取附近Wi-Fi的SSID列表。由于SSID是由⽤户⾃⾏命名,所以名称内容可能会包含企业
名、宾馆名、餐厅名等,再辅助使⽤信号强度等进⾏判断,能⼀定程上推断⽤户可能所处的位置以及场所。
3、CellID(Cell TowerID)是⽆线的ID号,⽤于对每个⽆线收发器进⾏唯⼀标识,通过该标识可以推断出使⽤GSM⽹络的⼿机设备的⼤致位置信息,在Android系统中需要获取位置权限才能读取该值。
针对收集设备识别码
的分析探讨
从设备识别码尤其是常⽤设备唯⼀识别码的不变属性和标记个⼈⾏为等⽤途来看,其与其他信息结合很容易就能识别到特定⾃然⼈,因此是⼀类典型的个⼈信息。在国家标准GB/T35273《个⼈信息安全规范》的资料性附录A⾥,明确将常⽤设备唯⼀识别码作为个⼈信息的例举。⽽且,从国际上来看,对设备唯⼀识别码的管理和限制措施⼀直有加强趋势。
以上共介绍了17种典型和常⽤的设备识别码,其中安卓系统相关App、SDK等最常采集的有IMEI、IMSI、ICCID、MAC、ANDROID_ID、SN等,⽽且所有能被采集的设备唯⼀识别码被App、SDK等照单全收成为⼀种常态,其中还不乏⾼频次、后台运⾏时收集的⾏为。究其原因,⽂章开头已经有所介
绍,设备唯⼀识别码⽤处很多,产品体验、商业营销、业务风控、账户安全等⽬的将企业利益和⽤户权益捆绑交织,即使如此,我们还是不禁要问,“到底收多少设备识别码才算够⽤?边界到底在哪?”真空超导
实践中,很多App认为设备唯⼀识别码为其所需的必要信息,也将涉及收集设备唯⼀识别码的最主要权
限“READ_PHONE_STATE权限(不同安卓⼿机定义的权限组名称不同,有的称为“电话”,有的称为“设备信息”)设置为需⽤户强制开启后才能正常使⽤App。很多⽹友的举报都表达了强制索要该权限的不解,可是很多App并没有给⽤户做出合理详尽的解释,更没有把选择权交给⽤户。
收集“设备唯⼀识别码”问题是当下⽹络安全、隐私保护、创新发展等问题交织的焦点,到其中的平衡点成为了迫切的任务之⼀。在最新公开征求意见的国家标准草案“移动互联⽹应⽤(App)收集个⼈信息基本规范”4.1管理要求中提
出,“App不得收集不可变更的设备唯⼀标识(如IMEI号、MAC地址等),⽤于保障⽹络安全或运营安全的除外”,事实上是强调收集设备唯⼀识别码的⽬的仅限于运营或⽹络安全,不能同时⽤于其他⽬的。
挤压件同时,随着Android Q的发布,其重点加强了隐私相关的设置,尤其是对设备唯⼀识别码的收集进⾏限
制,App、SDK 等将⽆法从移动设备中获取IMEI、IMSI、ICCID等设备标识符,MAC地址也可以被随机化。可以说,禁⽌对设备唯⼀识别码的滥⽤已经逐步形成共识。很多⼿机⼚商也开始尝试其⽣态内开放基于不同功能的唯⼀标识符,类似于苹果iOS系统的IDFA等,可由⽤户进⾏重置。
也有⼈提出疑惑,基于硬件的设备唯⼀识别码⽆法采集,⼀定会有基于软件、甚⾄⽤户⾏为⽣成的唯⼀识别码出现,同样⽆法规避⽤户⾏为被追踪的问题。的确,技术的发展还会带来哪些个⼈信息保护的隐患和问题,还是个未知数,需要持续寻求最佳⽅案。只是当下,⼩编认为:不对问题视⽽不见,准确、及时向⽤户传达收集设备唯⼀识别码的真实⽤途,尊重⽤户的选择权,绝对是对于个⼈信息保护有益⽽⽆害的。(注:本⽂部分内容来源于⽹络与专家观点,如有不
途,尊重⽤户的选择权,绝对是对于个⼈信息保护有益⽽⽆害的。(注:本⽂部分内容来源于⽹络与专家观点,如有不当之处欢迎批评指正。)