设备注册阶段通过在发行方的系统中注册身份密钥来准备设备以存储 DC。
请求流程
流说明
| 步骤 | 来源 | 说明 |
|---|---|---|
| 1 | 搭载 Android 的设备 |
已在用户设备上创建新的 DC 请求。发卡机构必须创建新的身份密钥。用户的设备调用 getDeviceRegistrationNonce 以启动此流程。
|
| 2 | Google 服务器 |
Google 将 getDeviceRegistrationNonce 请求中继到发卡机构。
|
| 3 | 发卡机构服务器 |
发卡机构生成一个 nonce,将其与 deviceReferenceId 一起存储,然后将该 nonce 返回给 Google。
|
| 4 | Google 服务器 | Google 将随机数中继到用户的设备。 |
| 5 | 搭载 Android 的设备 |
用户的设备对随机数进行签名,并将其嵌入到 X.509 证书中。
这包含在 registerDevice 调用中,用于验证设备。
|
| 6 | Google 服务器 | Google 将 registerDevice 调用中继到发卡机构。 |
| 7 | 发卡机构服务器 | 发卡机构执行设备完整性检查,并存储与设备关联的身份密钥。 |
如何验证设备的完整性
设备证明是一项安全功能,可让发卡机构在注册设备之前验证设备的完整性。 这有助于防止注册已被篡改或正在运行未经授权的软件的设备。
为了验证设备的完整性,签发者应:
- 验证
/registerDevice请求中发送的证书链。 链中的根证书必须与 Google 提供的证书一致。 - 确保根证书不在证书吊销列表中。
- 解析叶证书,读取扩展程序,并验证以下内容:
attestationChallenge值与/getDeviceRegistrationNonce操作期间发送的nonce一致。teeEnforced.rootOfTrust具有以下属性:deviceLocked=TRUEverifiedBootState=VERIFIED
softwareEnforced.attestationApplicationId中的软件包名称与com.google.android.gms或com.google.android.gsf匹配。
设备证明流程各个部分的说明
- 证书链:证书链是一系列用于验证设备身份的证书。链中的根证书是最受信任的证书,链中的每个后续证书都由其上方的证书签名。
- 证书吊销列表:证书吊销列表 (CRL) 是指因某种原因而被吊销的证书的列表。如果设备认证证书链中的根证书位于 CRL 上,则该证书无效,不应信任设备认证。
- 叶证书:叶证书是特定于设备的证书。它包含有关设备的信息,例如硬件标识符和软件版本。
- 扩展:扩展是证书中包含的额外信息。设备认证证书包含多个用于验证设备完整性的扩展。 如需了解详情,请参阅证书扩展数据架构。