数字凭据概览

数字凭据是可通过加密方式验证的文档,可用于对用户进行身份验证、授权或以其他方式提供有关用户的信息。这些凭证通常包括移动设备上的驾照、数字护照、登机牌等。它们存储在称为数字钱包的虚拟容器中,并且是 W3C 标准的一部分,该标准规定了如何访问和检索这些凭证。此标准已通过 W3C Credential Management API 实现,用于 Web 用例;在 Android 上,已通过 Credential Manager 的 DigitalCredential API 实现。

了解数字凭据

在现实世界中,某人可能会将自己的身份证件放在钱包中,并在被要求时向请求方出示:

图片:显示正常钱包互动的流程
图 1. 实体凭据请求的完成流程。请求者向用户请求特定凭据。然后,用户从实体钱包中选择并取出该卡。最后,用户向请求者提供凭据。

在这种情况下,用户通常只有一个钱包,并从钱包中检索所请求的凭据以呈现给请求者。钱包大多可以互换,并且通常可以存储相同的内容。

数字凭据与实体凭据存在以下区别:

  1. 用户应拥有多个钱包(也称为持有者),其中可以包含各种不同的凭据。钱包会确定哪些凭据可以存储在其中。
  2. 请求凭据以授予访问权限或验证身份的应用或服务称为验证方
  3. 创建凭据并断言有关正文(例如大学、政府或科技公司)的声明的实体称为签发者
  4. 凭据呈现在软件中进行,这意味着 API 界面会检索并呈现凭据 - 在 Android 中,这是 Credential Manager。

因此,Credential Manager 承担了之前由用户处理的多个角色:

  1. 在 Android 上,钱包必须向 Credential Manager 注册其凭据元数据,才能在 Credential Manager 界面中列出。
  2. Credential Manager 会根据请求在各个钱包中匹配凭据,并显示一个列表供用户选择。
  3. 当用户选择列表中的凭据时,Credential Manager 会调用钱包,钱包将处理交易的剩余部分(显示界面等),并将凭据返回给应用。

此流程如下所示:

图片:显示数字凭据互动流程
图 2. 数字凭据验证的互动模型。Credential Manager 会使用用户钱包中预注册的凭据元数据来匹配验证方的请求,并提示用户选择凭据。然后,Credential Manager 会将 activity 流定向到相应的钱包,该钱包会处理交易的剩余部分,并将凭据返回给验证方。注意:验证方需要在凭据响应返回后对其进行处理和验证。

可验证的凭据

可验证凭据是受严格标准(例如 W3C 可验证凭据数据模型)约束的数字凭据子集。这些凭据包含以加密方式保护的声明,因此具有防篡改功能,并且可以准确证明凭据的签发者。

并非所有数字凭证都是可验证凭证,但所有可验证凭证都是数字凭证。

声明通过验证意味着什么

当凭据通过 Android Credential Manager API 到达,并且其中的声明被标记为“已验证”时,这意味着签发者声明他们已对该特定数据片段执行检查。不过,这并不意味着数据是绝对的、普遍的真理。“已验证”是对流程的断言,而不是自动保证信任。

此生态系统的核心理念是,信任始终在验证方处得到解决。当验证者(您的应用)收到加密安全的数据并看到签发者将其标记为“已验证”时,必须确定它是否信任签发者已按照其标准验证了声明。

用户体验

如 Android 流程所示,用户只需与 Credential Manager 界面互动一次,即可选择合适的凭据。以下是选择器的示例:

图片:Credential Manager 中的数字凭证界面
图 3. 数字凭证界面。

标准

数字凭证请求是使用 OpenID4VP 标准创建的。您可以在数字凭据演示网站上查看示例请求。

数字凭证响应通常以标准化凭证格式返回。这些标准由不同的标准机构维护,包括 W3C 可验证凭据sd-jwtmdoc

自定义协议也是可行的,不过我们建议您在应用中使用标准协议。

试试看

您可以使用 Android 钱包和基于 Web 的验证器在各个平台上测试数字凭据流程:

  1. 在 Android 手机上安装 CMWallet 公共示例。 为此,您可以从代码库中拉取并直接从 Android Studio 中安装,也可以前往 https://github.com/digitalcredentialsdev/CMWallet/actions,然后选择最新 build 以访问最新的 app-debug.apk 文件。
  2. 打开 CMWallet 以向 Credential Manager 注册元数据。确保蓝牙已启用,以便设备相互连接。
  3. 前往 https://digital-credentials.dev/,然后选择 Request Credentials (OpenID4VP)
  4. 接受警告提示,使用手机扫描二维码,然后选择“使用通行密钥”,并通过点按确认来显示可用的凭据。
  5. 从 CMWallet 中选择凭据,返回到浏览器。浏览器应显示返回的凭据。

另请参阅