本主题介绍如何基于 MAC 密钥创建和验证数字签名。
提供方和验证程序共用一个密钥,用于计算 输入数据中的 MAC 标记。MAC 标记用作数字签名。当 验证者收到该消息及其关联的 MAC 标记后,会生成自己的 标记自己的标记。然后,验证程序可以将收到的 代码与其生成的代码相关联,看看它们是否匹配。如果这两个代码匹配 验证程序知道他们收到的消息就是 签名。
准备工作
确保您要签署的文件不超出文件大小限制。时间 使用 Cloud HSM 密钥创建或验证 MAC 签名时,文件大小上限为 为 16 KiB。对于所有其他密钥,文件大小上限为 64 KiB。
所需的角色
如需获取创建和验证签名所需的权限, 请让管理员授予您 针对密钥的以下 IAM 角色:
-
如需创建签名,请执行以下操作:
Cloud KMS CryptoKey Signer (
roles/cloudkms.signer
) -
如需验证签名,请执行以下操作:
Cloud KMS CryptoKey 验证程序 (
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 编码。此方法返回的响应包含布尔值,指示签名是否验证成功。