限制使用UUID
细节
大多数移动设备具有唯一的ID,也称为通用唯一标识符(UUID),在设备制造时就被分配用于唯一标识的目的。例如,iOS设备被分配了所谓的唯一设备标识符(UDID)。唯一识别设备的能力对采购,管理和保护数据很重要。开发人员采用UUID和UDID可以快速地进行设备识别。唯一设备识别成为许多系统安全的基础。
不幸的是,这种方法带来了一些隐私和安全问题。首先,许多在线系统将设备的UUID连接到个人用户,以便即使用户未登录到应用程序也可以跨应用进行跟踪。这种跟踪用户的高级功能已成为首要的隐私问题。
除此之外,通过UUID识别个人的应用程序有可能将设备的先前用户的数据暴露给新的用户。在某种情况下,在重新设置iPhone之后,即使所有用户数据已被删除,我们也可以访问先前用户的在线音乐服务帐户。这不仅是一个隐私问题,而且是一个安全威胁,因为攻击者可以伪造一个UUID。
苹果已经认识到iOS的UDID的隐私和安全风险,并删除了开发人员对其的访问权限。由于UDID不可获取,一些开发人员应用涉及无线网络接口的MAC地址或OpenUDID的其他设备识别方法。这些方法现在已经在系统/API级别被禁止,并在AppStore审查过程中被标记并拒绝发布。
修复
我们建议开发人员避免使用任何设备提供的标识符来识别设备,尤其是它是设备认证实现的组成部分。相反,我们建议在注册,安装或首次执行时创建应用程序唯一的“设备因素”。然后可以要求与应用程序唯一的设备因素结合用户身份验证创建会话。设备因素也可以用作加密程序中的附加因素。
由于不依赖于可预测的设备提供的数据,因此开发变得更加困难。通过采用挑战 - 响应方法,服务器和设备可以在用户认证之前相互认证。为了获得系统访问权限,攻击者将不得不利用这两个因素。开发人员还可以实现在客户端或服务器端复位设备因素的功能,从而强制对用户和设备进行更严格的重新认证。
为了保护用户隐私,同时保留广告功能,Apple建议您使用advertisingIdentifier,即系统中所有应用程序共享的唯一标识符。任何人可以随时在设置 - >隐私 - >广告菜单中重置其设备上的advertisingIdentifier。