Ce guide fournit des exemples de commandes pkcs11-tool
pour utiliser une clé Cloud HSM sur Debian 11 (Bullseye) à l'aide de la bibliothèque PKCS #11. Les commandes incluses dans ces instructions peuvent nécessiter des modifications en fonction de votre OS ou de votre distribution Linux.
Avant de commencer
Avant de continuer, suivez la procédure décrite dans la section Utiliser une clé Cloud HSM avec OpenSSL.
Utiliser le chiffrement et le déchiffrement symétriques
Les sections suivantes vous expliquent comment chiffrer et déchiffrer à l'aide d'une clé de chiffrement symétrique, d'OpenSSL et de l'outil pkcs11.
Prérequis
Créez une clé de chiffrement symétrique brute Cloud HSM. Pour créer une clé Cloud HSM, définissez le niveau de protection sur HSM lorsque vous créez une clé.
Notez l'algorithme de chiffrement symétrique brut que vous choisissez pour la clé. Chaque algorithme a ses propres exigences en termes de remplissage, de vecteurs d'initialisation et de données authentifiées supplémentaires.
Créez un fichier d'entrée contenant les données que vous souhaitez chiffrer.
Chiffrer
Pour chiffrer un fichier texte, exécutez la commande suivante:
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
Remplacez les éléments suivants :
PATH_TO_LIBKMSP11_SO
: chemin d'accès au module PKCS#11 (par exemple,/usr/local/lib/libkmsp11.so
).MECHANISM
: mécanisme à utiliser, en fonction de l'algorithme de clé (par exemple,AES-CBC-PAD
).HSM_KEY_NAME
: nom de la clé Cloud HSM à utiliser pour le chiffrement.INITIALIZATION_VECTOR
: valeur du vecteur d'initialisation à utiliser dans le chiffrement.INPUT_TEXT_FILE_PATH
: chemin d'accès au fichier d'entrée que vous souhaitez chiffrer.ENCRYPTED_TEXT_FILE_PATH
: chemin d'accès dans lequel vous souhaitez enregistrer le fichier texte chiffré.
Déchiffrer
Pour déchiffrer un fichier texte, exécutez la commande suivante:
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
Remplacez les éléments suivants :
PATH_TO_LIBKMSP11_SO
: chemin d'accès au module PKCS#11 (par exemple,/usr/local/lib/libkmsp11.so
).MECHANISM
: mécanisme à utiliser, en fonction de l'algorithme de clé (par exemple,ECDSA
).HSM_KEY_NAME
: nom de la clé Cloud HSM utilisée pour chiffrer le fichier que vous souhaitez déchiffrer.INITIALIZATION_VECTOR
: valeur du vecteur d'initialisation à utiliser dans le chiffrement.ENCRYPTED_TEXT_FILE_PATH
: chemin d'accès au fichier que vous souhaitez déchiffrer.DECRYPTED_TEXT_FILE_PATH
: chemin d'accès dans lequel vous souhaitez enregistrer le fichier texte déchiffré.
Utiliser le chiffrement et le déchiffrement asymétriques
Les sections suivantes vous expliquent comment chiffrer et déchiffrer à l'aide d'une clé de chiffrement asymétrique, d'OpenSSL et de l'outil pkcs11.
Prérequis
Créez une clé de déchiffrement asymétrique Cloud HSM et téléchargez sa clé publique.
Créez un fichier d'entrée contenant du texte.
echo Hello World! >> input.txt
Chiffrer
Pour chiffrer un fichier texte, exécutez la commande suivante:
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
Remplacez les éléments suivants :
INPUT_TEXT_FILE_PATH
: chemin d'accès au fichier d'entrée que vous souhaitez chiffrer.PUBLIC_KEY
: chemin d'accès à la clé publique.ENCRYPTED_TEXT_FILE_PATH
: chemin d'accès dans lequel vous souhaitez enregistrer le fichier texte chiffré.
Déchiffrer
Pour déchiffrer un fichier texte, exécutez la commande suivante:
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
Remplacez les éléments suivants :
PATH_TO_LIBKMSP11_SO
: chemin d'accès au module PKCS#11 (chemin/vers/libkmsp11.so).HSM_KEY_NAME
: nom de la clé Cloud HSM qui correspond à la clé publique utilisée pour chiffrer le fichier texte.ENCRYPTED_TEXT_FILE_PATH
: chemin d'accès au fichier que vous souhaitez déchiffrer.OUTPUT_TEXT_FILE_PATH
: chemin d'accès où vous souhaitez enregistrer la sortie déchiffrée.
Signature et validation
Les sections suivantes vous expliquent comment signer et vérifier à l'aide d'une clé de signature asymétrique et de l'outil pkcs11.
Prérequis
Créez une clé de signature asymétrique Cloud HSM.
Créez un fichier contenant les données d'entrée hachées que vous souhaitez signer.
Signer
Pour signer un fichier texte, exécutez la commande suivante:
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
Remplacez les éléments suivants :
PATH_TO_LIBKMSP11_SO
: chemin d'accès au module PKCS#11, par exemplepath/to/libkmsp11.so
.HSM_KEY_NAME
: nom de la clé Cloud HSM que vous souhaitez utiliser pour la signature.MECHANISM
: mécanisme à utiliser, en fonction de l'algorithme de clé. Exemple :ECDSA
INPUT_TEXT_FILE_PATH
: chemin d'accès au fichier d'entrée que vous souhaitez signer.OUTPUT_SIGNATURE_FILE_PATH
: chemin d'accès où vous souhaitez enregistrer le fichier de signature.
Valider
Pour vérifier un fichier de signature, exécutez la commande suivante:
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
Remplacez les éléments suivants :
PATH_TO_LIBKMSP11_SO
: chemin d'accès au module PKCS#11, par exemplepath/to/libkmsp11.so
.HSM_KEY_NAME
: nom de la clé Cloud HSM utilisée pour générer la signature que vous souhaitez vérifier.MECHANISM
: mécanisme à utiliser, en fonction de l'algorithme de clé. Exemple :ECDSA
INPUT_TEXT_FILE_PATH
: chemin d'accès au fichier précédemment signé.SIGNATURE_FILE_PATH
: chemin d'accès au fichier de signature.