扫码订阅《中国信息安全》杂志
权威刊物 重要平台 关键渠道
邮发代号 2-786
App收集MAC地址合理吗?
这个案例中,“探针盒子”收集的MAC地址被用于关联了个人身份,从而发生了未经用户同意,滥用个人信息的现象。但是,MAC地址又作为网络通信所依赖的“必需品”,成为普遍收集的对象。
NO.1
MAC地址是什么?有什么特性?
通俗的说,每一个网络设备的接口(俗称网卡,包括有线、无线、蓝牙等)上都有一个出厂时即设定进硬件的(即硬编码的)一组编码,全称“介质访问控制”(Media Access Control)地址(48位),位于链接层中,即MAC地址。
换言之,手机或者其他终端要使用 Wi-Fi 上网,必须使用一个唯一的网络地址在网络上标识自己,这个地址就是Wi-Fi 的MAC地址,而App要使用WiFi联网,自然需要使用到MAC地址。
NO.2
MAC地址滥用有何风险?
以央视3.15晚会所曝光“探针盒子”为例,收集MAC地址的过程以及后续利用的逻辑如下图:
NO.3
MAC地址随机化有效性验证
为了降低因唯一性所带来的的MAC地址的敏感性,近年来,新版iOS和Android在操作系统层面也进行了一系列改进,具体情况见表1和表2。
表 1 Android系统在MAC地址随机化上的改进
时间 |
版本 |
MAC地址随机化的改进内容 |
2017年 |
Android 8 |
增加MAC地址随机化功能:探测新网络时,会使用随机分配的 MAC 地址。 |
2018年 |
Android 9 |
启用一个开发者选项(默认处于停用状态),使设备在连接到 WLAN 网络时使用随机分配的 MAC 地址。 |
2019年 |
Android 10 |
提供完整的随机化功能:默认为客户端模式、SoftAp 和 WLAN 直连启用随机分配 MAC。 |
表 2 iOS系统在MAC地址随机化上的改进
时间 |
版本 |
MAC地址随机化的改进内容 |
2014年 |
iOS 8 |
增加MAC地址随机化功能:探测新网络时,会使用随机分配的 MAC 地址 (Unassociated PNO Scans, Unassociated ePNO Scans)。 |
2018年 |
iOS 9 |
增加了随机分配MAC地址的场景(Unassociated PNO Scans, Unassociated ePNO Scans,Location Scans, Auto Join Scans)。 |
2019年 |
iOS 14 |
iOS 14 提供完整的随机化功能:默认开启;每24小时更新一次随机的MAC地址。(注:前期beta版本24小时更新,后期beta版本随机MAC地址随SSID变化而变化) |
3.1 iOS 系统:验证App能否获取真实MAC地址
图1 iOS系统中MAC地址随机化功能选项
3.2 Android系统:验证MAC地址随机化的有效性
图2 Android系统中MAC地址随机化功能选项
版本 |
Android 9 |
Android 10 |
使用的系统接口函数 |
java.net.NetworkInterface getHardwareAddress() |
java.net.NetworkInterface getHardwareAddress() |
所需权限 |
需要添加权限: <uses-permission android:name="android.permission.INTERNET"/> |
需要添加权限: <uses-permission android:name="android.permission.INTERNET"/> |
实验结果 |
获取成功:获取的是随机化后的MAC地址。截图如下:
真实MAC地址截图: |
获取成功:获取的是随机化后的MAC地址,截图如下: 真实MAC地址截图: |
图3 Android 10及更高系统中获取MAC地址API函数
图4获取真实MAC地址API函数的说明
2.检索Android开发者文档和Android源码,确认获取真实MAC地址需要是设备所有者或者资料所有者(图5)即Device Owner 或者 Profile Owner。
图5 Android源码中获取真实MAC地址函数的说明
3.如何开发设备所有者/资料所有者的App,可以参见Android官方文档,设置设备所有者只能在初始化时进行配置(图6)。
图6 Android开发文档设置设备所有者需要重置手机
图7 利用私有命令获取真实MAC地址失败
图8 Android官方文档:停止申请设备政策控制器
图9 Android官方文档:设备管理概览
NO.4
如何看待App收集MAC地址行为
App收集MAC地址行为是当下一个普遍性现象,除上文所述其应用面的广泛外,还有一个原因是其不受用户控制,可以直接通过调用相关操作系统API获取。关于App收集MAC地址的行为,有以下的分析及建议:
一是,收集的MAC地址是随机化的,应如何看待?
只不过,由于Android 8的开源特性及各手机厂商的定制化操作系统导致的差异,很多厂商将随机化功能默认关闭或者隐藏,用户无法打开这个功能,那么真实MAC地址仍可能被收集。针对该问题有以下建议:
——给手机厂商的建议:使用MAC地址随机化功能,同时在系统设置中向提供用户开启和关闭选项,并默认开启随机化。
当然,浏览/游客模式下,如果收集的MAC是真实的,还是伴随着用户被追踪的风险。针对该问题有以下建议:
其一,浏览/游客模式下如果要标记用户行为,增加使用体验,可以将MAC地址或其他设备信息进行技术处理后形成临时标识使用,如使用哈希函数方式,既保证了后续使用,又能降低关联风险。
其二,用户行为的记录可保留在本地,或仅在服务器上做限期保存(如1月),除非用户明示同意,定期清除记录,或为用户提供清除记录的功能。
以上分析可见,如果是对App收集MAC地址的行为进行专业检测和分析,则必须要顾及以上两方面要素。在发现App打开便收集了MAC地址后,不宜直接得出App未经同意收集个人信息的行为的判断,还需具体分析其使用目的和安全机制。否则,当倒逼App开屏弹窗隐私政策成为“合规之举”时,事实上带来的反而是用户隐私体验的下降。
之所以在能不能收“MAC地址”这个看似细枝末节的问题上较真,原因有二。一是个人信息滥用问题如需要扼制,收集的最小化是个实际的抓手,每一种个人信息类型都必须过问,缺一不可;二是,即使是MAC地址这样一个短短的字符,收集或者不收集,利如何,弊如何,都将对App的形态、产业生态产生不小的影响,现有的解决方案是否是解决问题的最优解必须考量。MAC地址的收集问题恰似个人信息保护与发展平衡问题的缩影,见微方可知著,值得密切关注,值得深入研究,值得细致考量。
(来源:App治理工作组)
扫码关注我们
更多信息安全资讯
请关注“中国信息安全”
本文始发于微信公众号(中国信息安全):观察 | 有意为之?无心之过?App收集MAC地址合理吗?
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论