このガイドでは、PKCS #11 ライブラリを使用して Debian 11(Bullseye)で Cloud HSM 鍵を使用するサンプル pkcs11-tool
コマンドについて説明します。以下の手順に含まれるコマンドには、OS または 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
: 署名ファイルのパス。