将签名密钥升级为符合 FIPS 要求

在本文中,我们将查看升级 Microsoft Entra 验证 ID 签名密钥来符合 FIPS 的步骤。 大多数机构已经符合 FIPS 标准。 仅 2024 年 2 月之前使用高级安装程序方法创建的颁发机构才需要进行签名密钥升级。 快速设置颁发机构已符合 FIPS 标准并使用 P-256 签名密钥。

是否需要升级?

P-256K 密钥类型不符合 FIPS。 如果希望验证 ID 系统符合 FIPS,并且使用的是 P-256K 密钥,则需要升级签名密钥。

如果我不需要符合 FIPS 标准,会怎样?

Microsoft 建议无论如何都要升级,因为将来可能会停止对验证 ID 中的 P-256K 签名密钥的支持。

如何检查我是否需要升级?

  1. 检查颁发机构是否是使用 Advanced Setup 设置的。 如果 DID 并非以 did:web:verifiedid.entra.microsoft.com 开头,则表明是使用 Advanced Setup 方法设置的。 可在门户中的 Organization settings 或通过获取颁发机构管理 API 检查 DID。

  2. 检查您的主管机构是否正在使用 P-256K/secp256k1 签名密钥。 可以通过两种方式确定密钥类型:

    1. 在用于进行密钥标识符签名的 Azure 密钥保管库中,检查 Elliptic curve name 的值是否为 P-256K。 密钥保管库密钥在门户中的 Signing key identifierOrganization settings 字段中可见。

    2. 查看 DID 文档,首先检查verificationMethod 集合的第一个条目,并查看 crv 特性的值是否为 secp256k1。 可以通过网址 https://<your-domain>/.well-known/did.json检索到您的 DID 文档。

升级的先决条件

升级签名密钥

升级签名密钥操作需要 7 个步骤:

  1. 调用 didInfo/signingKeys API 在 Key Vault 中创建新的 P-256 签名密钥。 调用中的访问令牌必须适用于有权访问密钥保管库中密钥的管理员用户。 颁发机构的 didDocumentStatus 特性更改为 outOfSync 值,这表明密钥保管库与公开的 did.json 文档中内容不符。

  2. 调用 generateDIDDocument API 以生成新的 DID 文档。 将响应另存为名为 did.json 的文件。 生成的 DID 文档包含新的 P-256 密钥和旧的 P-256K 密钥。

  3. 在之前部署了 did.json 的所有网络服务器上将其进行替换。 在继续之前,请确保可使用浏览器从公共 Internet 中检索新的 did.json 文档。

  4. 调用 synchronizeWithDidDocument API 以开始使用新的 P-256 签名密钥。 此 API 调用将验证 Key Vault 和公共 did.json 文档是否匹配。 如果匹配,则验证 ID 机构使用 Key Vault 中的新密钥开始签名。 从此时开始,机构使用新的 P-256 密钥进行签名。 由于您的 DID 文档还包含一个或多个旧的 P-256K 密钥,之前由 P-256K 密钥签名的凭据仍然在演示中有效。 返回的权限 JSON 对象中的 didDocumentStatus 的值为 published。 如果值仍为 outOfSync,那么 Key Vault 和 did.json 文档之间存在差异,上一个密钥仍用于签名。

  5. 调用 generateWellKnownDidConfiguration API 以重新生成链接的域配置。 将响应另存为名为 did-configuration.json 的文件。 从技术上看,可以延迟此步骤,因为用于对链接域配置进行签名的旧 P-256K 密钥仍可在 DID 文档中使用。 在这里执行此步骤可以很好地测试新的签名密钥处于活动状态。

  6. 在之前部署了 did-configuration.json 的所有网络服务器上将其进行替换。 在继续之前,请确保可使用浏览器从公共 Internet 中检索新的 did-configuration.json 文档。

  7. 调用 validateWellKnownDidConfiguration API,将链接域状态设置为 verified

升级后的注意事项

任何签名活动(如颁发凭据或发出演示请求)现在都用你的新 P-256 密钥签名。

在签名密钥升级之前颁发的凭据由旧的 P-256K 密钥进行签名。 只要 DID 文档中仍有旧的 P-256K 密钥,这些凭据就会继续有效。 需要重新颁发这些凭据时,将使用新的 P-256 密钥对它们进行签名。

最终,你没有由旧密钥签名的凭据,因为它们都已过期,并且颁发了新凭据。 如果你的凭据在过期前有很长的生存期,并且你想要停止使用旧的 P-256K 密钥,则应考虑指示用户提前重新颁发。

如果要从 DID 文档中删除旧的 P-256K 密钥,请确保用户已重新颁发其凭据。 然后,在 Key Vault 中禁用旧的 P-256K 密钥,接着重新生成并重新部署 DID 文档。

后续步骤