1. 總覽
Cloud KMS 是雲端託管型金鑰管理服務,能讓您比照地端部署方式,管理雲端服務加密編譯金鑰。支援使用各種金鑰類型和來源 (包括 Cloud HSM,可提供硬體支援的金鑰) 進行加密、解密、簽署和驗證。本教學課程說明如何使用非對稱 Cloud KMS 金鑰簽署及驗證資料。
學習內容
- 如何啟用 Cloud KMS API
- 如何建立金鑰環
- 如何建立用於非對稱式簽署/驗證的加密編譯金鑰
2. 設定和需求
自修實驗室環境設定
請記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱 (上述名稱已遭占用,因此不適用於您,抱歉!)。本程式碼研究室稍後會將其稱為 PROJECT_ID。
- 接著,您必須在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。
完成本程式碼研究室的費用應該不高,甚至完全免費。請務必按照「清除」部分的指示操作,瞭解如何停用資源,避免在本教學課程結束後繼續產生帳單費用。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。
啟動 Cloud Shell
在本程式碼研究室中,您將使用 Cloud Shell。這是在 Google Cloud 上執行的免費虛擬化環境。在 GCP 主控台,按一下右上角工具列的 Cloud Shell 圖示:
佈建並連線至環境的作業需要一些時間才能完成。完成後,您應該會看到如下的內容:
這部虛擬機器搭載各種您需要的開發工具,並提供永久的 5GB 主目錄,而且可在 Google Cloud 運作,大幅提升網路效能並強化驗證功能。除非另有指示,否則請透過這個殼層執行所有指令。
3. 啟用 Cloud KMS 服務
如要使用 Cloud KMS,請先在專案中啟用這項服務。每項專案只需要執行一次。如要啟用 Cloud KMS 服務,請執行下列指令:
$ gcloud services enable cloudkms.googleapis.com \
--project "${GOOGLE_CLOUD_PROJECT}"
啟用程序最多需要一分鐘。指令完成時會回報成功。
4. 建立 KMS 金鑰
建立 Cloud KMS 金鑰環。在 Cloud KMS 中,金鑰環是加密編譯金鑰的邏輯集合。金鑰環包含金鑰的中繼資料,例如金鑰位置。在 global 區域中建立名為 my-keyring 的金鑰環:
$ gcloud kms keyrings create "my-keyring" \
--location "global"
現在,在您剛建立的金鑰環中,建立名為 my-asymmetric-signing-key 的 CryptoKey,並將用途設為 asymmetric-signing。
$ gcloud kms keys create "my-asymmetric-signing-key" \
--location "global" \
--keyring "my-keyring" \
--purpose "asymmetric-signing" \
--default-algorithm "rsa-sign-pkcs1-4096-sha512"
5. 簽署資料
與加密不同,解密使用非對稱 Cloud KMS 金鑰加密的資料時,需要線上存取 Cloud KMS 服務。使用 gcloud 指令列工具解密檔案中的密文:
建立含有待簽署資料的檔案,並使用 gcloud 指令列工具,透過 Cloud KMS 金鑰簽署資料:
$ echo "my-contents" > ./data.txt
$ gcloud kms asymmetric-sign \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--version "1" \
--digest-algorithm "sha512" \
--input-file ./data.txt \
--signature-file ./data.txt.sig
簽名會儲存在磁碟上的 data.txt.sig 中。開啟 data.txt.sig 檔案後,您會發現檔案含有無法列印的奇怪字元。這是因為產生的資料是二進位格式。
將簽章儲存在資料庫中,或透過 HTTP 要求傳輸簽章時,您可能需要編碼資料。常見的編碼機制是 Base64。
6. 驗證資料
使用非對稱金鑰時,Cloud KMS 不會直接執行驗證。而是提供公開金鑰的存取權,您可以使用該公開金鑰透過公開金鑰密碼編譯技術驗證資料。使用非對稱金鑰時,驗證完全可以離線進行,不需要存取 Cloud KMS 或任何其他 Google Cloud API。驗證作業會使用 openssl 等密碼編譯工具,或支援公開金鑰密碼編譯的程式設計語言或程式庫執行。
從 Cloud KMS 下載公開金鑰:
$ gcloud kms keys versions get-public-key "1" \
--location "global" \
--keyring "my-keyring" \
--key "my-asymmetric-signing-key" \
--output-file ./key.pub
使用 openssl 指令列工具,根據公開金鑰驗證簽章:
$ openssl dgst -sha256 \
-verify ./key.pub \
-signature ./data.txt.sig ./data.txt
控制台會列印成功訊息,表示數位簽章有效。
Verified OK
7. 恭喜!
您已啟用 Cloud KMS API、建立非對稱簽署金鑰,並簽署及驗證資料!Cloud KMS 是一項功能強大的產品,簽署/驗證只是其功能的冰山一角。
清理
探索完畢後,請考慮刪除專案。
- 前往 Cloud Platform Console。
- 選取要關閉的專案,然後按一下頂端的「刪除」。系統會排定刪除專案的時間。
瞭解詳情
授權
這項內容採用的授權為 創用 CC 姓名標示 2.0 通用授權。