在设备注册阶段,系统会在发布者的系统中注册身份密钥,以便为设备存储 VDC 做准备。
请求流程
流程说明
| 步骤 | 来源 | 说明 |
|---|---|---|
| 1 | 搭载 Android 的设备 |
用户的设备上已创建新的 VDC 请求。发布者必须创建新的身份密钥。用户的
设备会调用 getDeviceRegistrationNonce 来启动此
流程。
|
| 2 | Google 服务器 |
Google 会将 getDeviceRegistrationNonce 请求中继给
发布者。
|
| 3 | 发布者服务器 |
发布者会生成一个 nonce,将其与
deviceReferenceId 一起存储,然后将该 nonce 返回给 Google。
|
| 4 | Google 服务器 | Google 会将该 nonce 中继给用户的设备。 |
| 5 | 搭载 Android 的设备 |
用户的设备会对该 nonce 进行签名,并将其嵌入到 x509 证书中。
此证书包含在 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 中,则该证书无效,并且设备认证不应被信任。
- 叶证书 :叶证书是特定于设备的证书。它包含有关设备的信息,例如硬件标识符和软件版本。
- 扩展 :扩展是证书中包含的其他信息。设备认证证书包含许多用于验证设备完整性的扩展。 如需了解详情,请参阅证书扩展数据 架构。