数字凭据配置 API 按三个主要资源模型进行整理:
| 资源 | 说明 |
|---|---|
| 设备 | 实体设备和身份密钥的唯一实例。 |
| 校对 | 在签发凭据之前证明用户身份的过程。 |
| 凭据 | DC 本身。 |
作为签发方,您负责在 DC 的整个生命周期内创建和管理这些资源。
假设
此 API 的主要假设是设备使用 Android Identity Credential API 来存储由 ISO/IEC 18013-5 定义的数字凭证。
资源模型
设备
在数字凭据配置 API 模型中,设备不仅仅是指用户使用 Google 钱包应用管理其 DC 的 Android 设备。相反,它表示以下各项的组合:
- 实体 Android 设备。
- 公钥/私钥对(称为“身份密钥”)。
- 签发者使用公钥来验证设备的身份。
- 私钥存储在设备的安全存储空间中。
进行 API 调用时,设备和凭据组合由设备引用 ID(即 deviceReferenceId 属性)标识。
设备首次与发卡机构通信时,会获得一个唯一随机数(以防止重放攻击并确保新鲜度)。随机数由设备的身份密钥签名,并嵌入在包含身份密钥的证书中。之后,证书可用于向签发者验证设备。
如需详细了解证书,请参阅 Android IdentityCredential 文档。
如果您将此资源建模为数据库表,则该表将类似于以下内容。请注意,identityKey 属性将是公钥值。
校对
校样表示以下各项的组合:
- 用户提供的用于证明其身份的凭证
- 发卡机构根据提供的证据做出的决定
身份验证流程因用户请求的凭据类型而异。在进行 DC 预配时,用户需要提供其实体身份证件的照片和个人资料视频。Google 会使用该视频来计算视频中的人是真人的可能性。Google 向发卡机构提供的结果称为“活体检测得分”。随着支持的凭据类型不断增加,我们还会添加其他身份验证方法。
下表列出了校样的可能状态。
| 状态 | 说明 | 最终状态 |
|---|---|---|
| 待处理 | 发卡机构尚未做出决定。 | 否 |
| 已接受 | 发卡机构已认定证据令人满意。 | 否 |
| 已拒绝 | 发卡机构已决定证据不令人满意。 | 是* |
| 挑战 | 发卡机构需要更多信息才能做出决定。 | 否 |
| 已取消 | 用户已取消校对。 | 是 |
| 已撤消 | 签发方已撤消身份验证。 | 是* |
| 已过期 | 用户未及时完成挑战。 | 是 |
带有星号 (*) 的状态可能不是最终状态,因为人工审核人员可能会犯错并手动更新状态。
以下状态图描述了可能的状态流:
在某些情况下,鉴于初始证据,签发方可能无法做出决定。为了帮助用户做出决定,可以要求用户向发卡机构提供更多信息或证据。例如,回复信函、访问发卡机构网站或提交其他证据。
如果您将此资源建模为数据库表,则该表将类似于以下内容。
凭据
凭证表示特定设备的实物凭证的虚拟版本。每次向实体设备配置虚拟凭据时,系统都会为其分配一个凭据 ID。如果同一实体凭据被配置到不同的设备,每次都会有不同的凭据 ID。同样,如果向设备配置凭据,然后删除该凭据,再向同一设备配置该凭据,则该凭据将具有不同的凭据 ID。
当用户凭据的详细信息发生变化时(例如身份证明文件的地址发生变化),必须更新所有关联的虚拟凭据的这些详细信息。单个凭据可以有不同的版本,以对应此类更改。当前版本使用凭据版本 ID 进行跟踪。
为了向信赖方出示凭据,设备必须先从签发者处检索移动安全对象 (MSO)。MSO 包含由签发者签名的凭据摘要。MSO 是根据身份验证密钥(由设备的身份密钥生成并签名的公钥)创建的。身份验证密钥可有效地将 MSO 绑定到设备。MSO 和凭据的组合向信赖方证明,凭据源自签发者。
在设备上配置凭据后,设备必须将 ProofOfProvisioning 对象发送回签发者。此消息会通知签发方凭据已成功预配到设备并存储在设备的安全存储空间中。
凭据可能具有以下状态:
| 状态 | 说明 |
| ProvisionPending |
凭据已发布到 Google 钱包,但预配证明尚未返回给发卡机构。凭据在凭据版本 ID 发生更改时会随时移至此状态。 不会为此凭据发布 MSO。 |
| 活跃 |
凭据已发布到 Google 钱包,并且预配证明已返回给发卡机构。 MSO 是否适用于相应凭据。
|
| 已撤消 |
签发者已永久撤消凭据。 不会为此凭据发布 MSO。 Google 钱包在此状态下不会显示凭据。 |
| 已删除 |
用户或 Google 钱包已从设备中永久删除凭据。 不会为此凭据发布 MSO。 Google 钱包在此状态下不会显示凭据。 |
以下状态图描述了可能的状态流:
如果您将此资源建模为数据库表,则该表将类似于以下内容。