本页介绍了如何基于 MAC 密钥创建和验证数字签名。
生产者和验证者共享一个密钥,用于根据输入数据计算 MAC 标记。MAC 标记可用作数字签名。验证者收到消息及其关联的 MAC 标记后,会根据消息内容生成自己的标记。然后,验证者可以将收到的标记与其生成的标记进行比较,以查看它们是否匹配。如果这两个标记匹配,验证者就会知道他们收到的消息与生产者签名的消息相同。
准备工作
确保您要签名的文件不超出文件大小限制。使用 Cloud HSM 密钥时,您可以为的文件大小上限为 16 KiB。对于所有其他密钥,文件大小上限为 64 KiB。
所需的角色
如需获得创建和验证签名所需的权限,请让管理员向您授予密钥的以下 IAM 角色:
-
如需创建签名,请使用:
Cloud KMS CryptoKey Signer (
roles/cloudkms.signer
) -
如需验证签名,请使用:
Cloud KMS CryptoKey Verifier (
roles/cloudkms.verifier
) -
如需创建和验证签名,请使用:
Cloud KMS CryptoKey Signer/Verifier (
roles/cloudkms.signerVerifier
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
创建 MAC 签名
gcloud
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms mac-sign \ --version KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --input-file INPUT_FILE_PATH \ --signature-file SIGNED_FILE_PATH
替换以下内容:
KEY_VERSION
:密钥版本号。KEY_NAME
:密钥的名称。KEY_RING
:包含密钥的密钥环的名称。LOCATION
:密钥环的 Cloud KMS 位置。INPUT_FILE_PATH
:您要签名的文件的本地路径。SIGNED_FILE_PATH
:您要保存生成的签名的本地路径。
如需了解所有标志和可能值,请使用 --help
标志运行命令。
C#
要运行此代码,请先设置 C# 开发环境并安装 Cloud KMS C# SDK。
Go
要运行此代码,请先设置 Go 开发环境并安装 Cloud KMS Go SDK。
Java
要运行此代码,请先设置 Java 开发环境并安装 Cloud KMS Java SDK。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Cloud KMS Node.js SDK。
Python
要运行此代码,请先设置 Python 开发环境并安装 Cloud KMS Python SDK。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Cloud KMS Ruby SDK。
API
这些示例使用 curl 作为 HTTP 客户端来演示如何使用 API。如需详细了解访问权限控制,请参阅访问 Cloud KMS API。
使用 CryptoKeyVersions.macSign
方法执行签名。此方法返回的响应包含 base64 编码的签名。
验证 MAC 签名
gcloud
如需在命令行上使用 Cloud KMS,请先安装或升级到最新版本的 Google Cloud CLI。
gcloud kms mac-verify \ --version KEY_VERSION \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --input-file INPUT_FILE_PATH \ --signature-file SIGNED_FILE_PATH
KEY_VERSION
:密钥版本号。KEY_NAME
:密钥的名称。KEY_RING
:包含密钥的密钥环的名称。LOCATION
:密钥环的 Cloud KMS 位置。INPUT_FILE_PATH
:已签名的文件的本地路径。SIGNED_FILE_PATH
:要验证的签名文件的本地路径。
如需了解所有标志和可能值,请使用 --help
标志运行命令。
C#
要运行此代码,请先设置 C# 开发环境并安装 Cloud KMS C# SDK。
Go
要运行此代码,请先设置 Go 开发环境并安装 Cloud KMS Go SDK。
Java
要运行此代码,请先设置 Java 开发环境并安装 Cloud KMS Java SDK。
Node.js
要运行此代码,请先设置 Node.js 开发环境并安装 Cloud KMS Node.js SDK。
Python
要运行此代码,请先设置 Python 开发环境并安装 Cloud KMS Python SDK。
Ruby
要运行此代码,请先设置 Ruby 开发环境并安装 Cloud KMS Ruby SDK。
API
这些示例使用 curl 作为 HTTP 客户端来演示如何使用 API。如需详细了解访问权限控制,请参阅访问 Cloud KMS API。
使用 CryptoKeyVersions.macVerify
方法执行验证。要验证的签名应采用 base64 编码。此方法返回的响应包含布尔值,指示签名是否验证成功。