Highlight
Managed Device Attestation 利用设备的 Secure Enclave 生成硬件背书的证书链,让服务器验证设备是否为企业配发、未被篡改,且满足特定安全策略(如开启 FileVault、设置密码策略),适用于 MDM、VPN 和 Wi-Fi 认证场景。
核心内容
企业 IT 管理中有一个根本性问题:当一台设备连接到你的服务器时,你怎么确定它真的是一台公司配发的、未被篡改的 iPhone?
传统做法是依赖 MDM(Mobile Device Management)的设备注册信息——服务器检查设备是否在 MDM 注册表中,是否符合某些配置要求。问题是,这些信息可以被伪造。攻击者可以修改客户端代码,让一台越狱设备假装自己是合规设备。服务端看到的信息是客户端想让你看到的,不是设备真实状态的可靠证明。
苹果在 iOS 16 中引入了 Managed Device Attestation(受管设备认证)。这个机制的核心是让设备的 Secure Enclave(安全隔区)生成一个证书链,由苹果的 CA 签名,证明这确实是一台真实的、未被篡改的 Apple 设备。更重要的是,证书中可以包含设备的安全状态信息——是否开启了某些安全策略、是否被越狱、是否符合密码要求等。这些信息来自 Secure Enclave 的硬件判断,客户端应用无法伪造。
整个流程是:服务器向设备发起一个 attestation challenge,设备的 Secure Enclave 用私钥签名一个 nonce,生成一个证书链。这个证书链包含叶子证书(设备证书)和中间证书(苹果 CA 签名)。服务器验证证书链后,可以从证书扩展中提取设备的安全属性,判断设备是否符合企业策略。
Session 还详细讲解了 attestation 在不同场景下的应用:MDM 服务器可以用它验证设备身份,VPN 服务可以用它确保只有合规设备能接入企业内网,Wi-Fi 认证可以用它替代密码,提供更强的安全保证。
详细内容
设备认证挑战流程
(11:16)设备认证从 MDM 服务器发起一个 attestation challenge 开始。服务器在 DeviceInformation 请求中包含一个 DeviceAttestationNonce——一个随机数,确保每次请求的响应都是唯一的。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>RequestType</key>
<string>DeviceInformation</string>
<key>Queries</key>
<array>
<string>DevicePropertiesAttestation</string>
</array>
<key>DeviceAttestationNonce</key>
<data>
bWFnaWMgd29yZHM6IHNxdWVhbWlzaCBvc3NpZnJhZ2U=
</data>
</dict>
</plist>
关键点:
RequestType为DeviceInformation,表示查询设备信息Queries数组包含DevicePropertiesAttestation,请求设备属性认证DeviceAttestationNonce是 base64 编码的随机数,防止重放攻击- nonce 由服务器生成,设备必须用它生成签名响应
(11:43)设备响应包含一个证书链数组,每个证书都是 base64 编码的 DER 格式。
<key>QueryResponses</key>
<dict>
<key>DevicePropertiesAttestation</key>
<array>
<data>
MIIC0TCCAli <!-- ... --> pIbnVw= <!-- Leaf certificate -->
</data>
<data>
MIICSTCCAc6 <!-- ... --> wjtGA== <!-- Intermediate certificate -->
</data>
</array>
</dict>
关键点:
- 第一个
<data>元素是叶子证书(设备证书),包含设备的安全属性 - 第二个
<data>元素是中间证书,由苹果 CA 签发 - 证书链可以追溯到苹果的根证书(Apple Root CA - Private PKI)
- 服务器需要验证整个证书链的有效性
证书验证流程
服务器收到证书链后,需要执行以下验证步骤:
-
验证证书链签名:从叶子证书开始,逐级验证签名,直到苹果根证书。确保每个证书都是由上级 CA 签发的。
-
检查证书有效期:确认每个证书都在有效期内,未被吊销。
-
提取设备属性:从叶子证书的扩展中提取设备的安全属性。这些属性包括设备是否开启 FileVault、是否符合密码策略、是否被越狱等。
-
验证 nonce:检查证书中对 nonce 的签名是否匹配服务器发出的随机数,防止重放攻击。
-
应用企业策略:根据提取的设备属性,判断设备是否符合企业安全要求。如果不符合,可以拒绝设备接入或降级权限。
应用场景
MDM 服务器认证:MDM 服务器可以用 attestation 验证设备的真实身份,确保只有企业配发的设备能够接收 MDM 命令。传统 MDM 依赖设备 ID 和配置文件,这些都可以被越狱设备绕过。attestation 提供了硬件级别的保证,即使设备被越狱,也无法伪造 Secure Enclave 的签名。
VPN 接入控制:企业 VPN 可以要求设备在连接前提供 attestation,证明设备满足安全策略。只有合规设备才能连接到企业内网。这比传统的密码或证书认证更强,因为密码可能泄露,证书可能被盗,而 attestation 绑定到设备硬件。
Wi-Fi 认证:企业 Wi-Fi 可以用 attestation 替代密码,设备连接时自动提供证书链证明身份。这避免了密码管理的复杂度,同时提供更强的安全保证。Wi-Fi 网络可以根据设备的安全属性,决定允许接入的权限级别。
证书和私钥管理
Managed Device Attestation 的私钥由 Secure Enclave 生成和管理,永远不会离开安全硬件。这意味着即使设备被完全入侵,攻击者也无法导出私钥来伪造 attestation。Secure Enclave 只会为合法的 attestation 请求生成签名,且签名操作在硬件内部完成,操作系统无法干预或篡改。
证书由苹果的 Private PKI(公钥基础设施)签发。苹果维护了一个私有 CA 生态系统,专门用于设备认证。企业服务器需要信任苹果的根证书,才能验证设备证书链。这个信任链条是安全的,因为苹果的根证书预装在所有 Apple 设备中,且由苹果严格控制。
核心启发
-
做什么:在 MDM 解决方案中集成 Managed Device Attestation,增强设备验证安全性。
为什么值得做:传统的 MDM 验证容易被越狱设备绕过,attestation 提供硬件级别的安全保证,确保只有合规设备能接入企业服务。
怎么开始:在你的 MDM 服务器实现中,添加 attestation challenge 发起逻辑和证书验证逻辑。参考 Apple Device Management 文档中的 attestation 相关 API。 -
做什么:在 VPN 服务中用 attestation 替代或增强传统认证。
为什么值得做:VPN 是企业内网的入口,如果认证被绕过,攻击者可以直接访问内网资源。attestation 确保只有满足安全策略的设备能连接,即使密码泄露也不会导致内网被入侵。
怎么开始:在你的 VPN 服务器的认证模块中,添加设备 attestation 验证步骤。设备连接时,先要求提供 attestation,验证通过后再允许建立隧道。 -
做什么:在企业 Wi-Fi 网络中启用基于 attestation 的认证。
为什么值得做:Wi-Fi 密码管理是 IT 管理员的噩梦——密码要定期更换、用户可能泄露密码、访客设备难以管理。attestation 让设备自动证明身份,无需用户输入密码,且安全级别更高。
怎么开始:在你的 Wi-Fi 认证服务器(如 RADIUS)中,配置基于证书的认证,要求设备连接时提供 Managed Device Attestation 证书链。 -
做什么:定义企业设备安全策略,并在 attestation 验证中强制执行。
为什么值得做:attestation 不仅能验证设备身份,还能验证设备的安全状态。你可以定义规则:只有开启了 FileVault、设置了强密码、未被越狱的设备才能接入企业服务。
怎么开始:在你的服务端验证逻辑中,根据企业安全策略,检查证书中的设备属性。不符合策略的设备拒绝接入或降级权限。
关联 Session
- What’s new in managing Apple devices — explore enhancements to device management across apple platforms
- Adopt declarative device management — simplify development of your device management solution
- Get to know Developer Mode — meet developer mode — required on ios 16, ipados 16, and watchos 9
- Replace CAPTCHAs with Private Access Tokens — identify http requests from legitimate devices without captchas
- Streamline local authorization flows — authorization-focused apis in localauthentication
评论
GitHub Issues · utterances