本頁說明如何根據 MAC 金鑰建立及驗證數位簽名。
產生者和驗證者共用的單一金鑰,用於根據輸入資料計算 MAC 標記。MAC 標記可做為數位簽章。驗證者收到訊息及其相關 MAC 標記後,會根據訊息內容產生自己的標記。驗證者接著可以將收到的標記與他們產生的標記進行比較,看看是否相符。如果兩個標記相符,驗證者就會知道收到的訊息與製作者簽署的訊息相同。
事前準備
請確認您要簽署的檔案大小符合限制。使用 Cloud HSM 金鑰時,您最多可為 16 KiB 的檔案建立 MAC 簽名。其他所有金鑰的檔案大小上限為 64 KiB。
必要的角色
如要取得建立及驗證簽章所需的權限,請要求管理員將下列 IAM 角色授予您:
-
如要建立簽章:
Cloud KMS CryptoKey 簽署者 (
roles/cloudkms.signer
) -
如要驗證簽名,請按照下列步驟操作:
Cloud KMS CryptoKey 驗證器 (
roles/cloudkms.verifier
) -
如要建立及驗證簽名,請按照下列步驟操作:
Cloud KMS CryptoKey 簽署者/驗證者 (
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 編碼。這個方法的回應包含布林值,指出是否已成功驗證簽名。