本頁說明如何根據 MAC 金鑰建立及驗證數位簽章。
產生者和驗證者共用單一金鑰,用來從輸入資料計算 MAC 標記。MAC 標記可做為數位簽章。驗證者收到訊息和相關聯的 MAC 標記後,會根據訊息內容產生自己的標記。驗證者接著可以比較收到的代碼與產生的代碼是否相符。如果這兩個標記相符,驗證者就會知道收到的訊息與製作人簽署的訊息相同。
事前準備
必要的角色
如要取得建立及驗證簽章所需的權限,請要求管理員在金鑰上授予下列 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 編碼。這個方法的回應包含布林值,指出簽名是否已成功驗證。