本指南提供範例 pkcs11-tool
指令,可在 Debian 11 (Bullseye) 上使用 PKCS #11 程式庫的 Cloud HSM 金鑰。這些操作說明中的指令可能需要根據作業系統或 Linux 發行版進行變更。
事前準備
請先完成「使用 OpenSSL 搭配 Cloud HSM 金鑰」中的步驟,再繼續操作。
使用對稱式加密與解密
以下各節說明如何使用對稱加密金鑰、OpenSSL 和 pkcs11-tool 進行加密和解密。
事前準備
建立 Cloud HSM 原始對稱式加密金鑰。如要建立 Cloud HSM 金鑰,請在建立新金鑰時將「防護等級」設為「HSM」。
請記下您為金鑰選擇的原始對稱加密演算法。每個演算法都有自己的填充、初始化向量和其他已驗證資料規定。
建立包含要加密資料的輸入檔案。
加密
如要加密文字檔案,請執行下列指令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --encrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file INPUT_TEXT_FILE_PATH \
--output-file ENCRYPTED_TEXT_FILE_PATH
更改下列內容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模組的路徑,例如/usr/local/lib/libkmsp11.so
。MECHANISM
:要使用的機制,取決於鍵值演算法,例如AES-CBC-PAD
。HSM_KEY_NAME
:用於加密的 Cloud HSM 金鑰名稱。INITIALIZATION_VECTOR
:要用於加密的初始化向量值。INPUT_TEXT_FILE_PATH
:要加密的輸入檔案路徑。ENCRYPTED_TEXT_FILE_PATH
:您要儲存加密文字檔的路徑。
解密
如要解密文字檔,請執行下列指令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --decrypt \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
--iv INITIALIZATION_VECTOR \
--input-file ENCRYPTED_TEXT_FILE_PATH \
--output-file DECRYPTED_TEXT_FILE_PATH
更改下列內容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模組的路徑,例如/usr/local/lib/libkmsp11.so
。MECHANISM
:要使用的機制,取決於鍵演算法,例如ECDSA
。HSM_KEY_NAME
:用於加密要解密的檔案的 Cloud HSM 金鑰名稱。INITIALIZATION_VECTOR
:要用於加密的初始化向量值。ENCRYPTED_TEXT_FILE_PATH
:要解密的檔案路徑。DECRYPTED_TEXT_FILE_PATH
:要儲存解密文字檔案的路徑。
使用非對稱式加密和解密
以下各節說明如何使用非對稱加密金鑰、OpenSSL 和 pkcs11-tool 進行加密和解密。
事前準備
加密
如要加密文字檔案,請執行下列指令:
openssl pkeyutl -in INPUT_TEXT_FILE_PATH -encrypt -pubin \
-inkey PUBLIC_KEY \
-pkeyopt rsa_padding_mode:oaep \
-pkeyopt rsa_oaep_md:sha256 \
-pkeyopt rsa_mgf1_md:sha256 > ENCRYPTED_TEXT_FILE_PATH
更改下列內容:
INPUT_TEXT_FILE_PATH
:要加密的輸入檔案路徑。PUBLIC_KEY
:公開金鑰的路徑。ENCRYPTED_TEXT_FILE_PATH
:您要儲存加密文字檔案的路徑。
解密
如要解密文字檔,請執行下列指令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO \
--decrypt --mechanism RSA-PKCS-OAEP --slot 0 --hash-algorithm=sha256 \
--mgf MGF1-SHA256 --label HSM_KEY_NAME --type privkey \
-i ENCRYPTED_TEXT_FILE_PATH \
-o OUTPUT_TEXT_FILE_PATH
更改下列內容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模組的路徑 (path/to/libkmsp11.so)。HSM_KEY_NAME
:Cloud HSM 金鑰的名稱,對應用於加密文字檔的公開金鑰。ENCRYPTED_TEXT_FILE_PATH
:要解密的檔案路徑。OUTPUT_TEXT_FILE_PATH
:要儲存解密輸出內容的路徑。
簽署及驗證
以下各節說明如何使用非對稱簽署金鑰和 pkcs11-tool 進行簽署和驗證。
事前準備
建立 Cloud HSM 非對稱式簽署金鑰。
建立檔案,其中包含要簽署的雜湊輸入資料。
簽名
如要為文字檔案簽署,請執行下列指令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --sign \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
-o OUTPUT_SIGNATURE_FILE_PATH
更改下列內容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模組的路徑,例如path/to/libkmsp11.so
。HSM_KEY_NAME
:您要用於簽署的 Cloud HSM 金鑰名稱。MECHANISM
:根據金鑰演算法,要使用的機制。例如:ECDSA
。INPUT_TEXT_FILE_PATH
:您要簽署的輸入檔案路徑。OUTPUT_SIGNATURE_FILE_PATH
:您要儲存簽名檔案的路徑。
驗證
如要驗證簽章檔案,請執行下列指令:
pkcs11-tool --module PATH_TO_LIBKMSP11_SO --verify \
--mechanism MECHANISM \
--slot 0 \
--label HSM_KEY_NAME \
-i INPUT_TEXT_FILE_PATH \
--signature-file SIGNATURE_FILE_PATH
更改下列內容:
PATH_TO_LIBKMSP11_SO
:PKCS#11 模組的路徑,例如path/to/libkmsp11.so
。HSM_KEY_NAME
:用於產生要驗證的簽章的 Cloud HSM 金鑰名稱。MECHANISM
:根據金鑰演算法,要使用的機制。例如:ECDSA
。INPUT_TEXT_FILE_PATH
:先前簽署檔案的路徑。SIGNATURE_FILE_PATH
:簽名檔案的路徑。