Utiliser une clé Cloud HSM avec pkcs11-tool

Ce guide fournit des exemples de commandes pkcs11-tool permettant d'utiliser une clé Cloud HSM sur Debian 11 (Bullseye) avec la bibliothèque PKCS #11. Les commandes incluses dans ces instructions peuvent nécessiter des modifications en fonction de votre système d'exploitation ou de votre distribution Linux.

Avant de commencer

Avant de continuer, suivez les étapes du Utiliser une clé Cloud HSM avec OpenSSL

Utiliser le chiffrement et le déchiffrement symétriques

Les sections suivantes expliquent comment chiffrer et déchiffrer les données à l'aide d'une requête la clé de chiffrement, OpenSSL et pkcs11-tool.

Prérequis

  1. Créer un chiffrement symétrique brut Cloud HSM clé. Pour créer une clé Cloud HSM, définissez Niveau de protection sur HSM lors de la création d'une clé.

  2. Prenez note de l’algorithme de chiffrement symétrique brut que vous choisissez pour la clé. Chaque algorithme a ses propres exigences pour le remplissage, les vecteurs d'initialisation et d'autres données authentifiées.

  3. 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 fichier PKCS#11 module (par exemple, /usr/local/lib/libkmsp11.so).
  • MECHANISM: mécanisme à utiliser en fonction de la clé algorithme, par exemple, AES-CBC-PAD.
  • HSM_KEY_NAME: nom de la clé Cloud HSM pour le chiffrement.
  • INITIALIZATION_VECTOR: valeur de l'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 fichier PKCS#11 module (par exemple, /usr/local/lib/libkmsp11.so).
  • MECHANISM: mécanisme à utiliser en fonction de la clé algorithme, par exemple, ECDSA.
  • HSM_KEY_NAME: nom de la clé Cloud HSM qui a été utilisé pour chiffrer le fichier que vous souhaitez déchiffrer.
  • INITIALIZATION_VECTOR: valeur de l'initialisation à utiliser dans le chiffrement.
  • ENCRYPTED_TEXT_FILE_PATH: chemin d'accès au fichier souhaité à déchiffrer.
  • DECRYPTED_TEXT_FILE_PATH: chemin d'accès à l'emplacement d'enregistrement le fichier texte déchiffré.

Utiliser le chiffrement et le déchiffrement asymétriques

Les sections suivantes expliquent comment chiffrer et déchiffrer les données à l'aide d'une méthode la clé de chiffrement, OpenSSL et pkcs11-tool.

Prérequis

  1. Créez un service de déchiffrement asymétrique en fonction de Cloud HSM. et télécharger sa clé publique .

  2. Créez un fichier d'entrée avec 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 à l'emplacement d'enregistrement 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 (path/to/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 à l'emplacement d'enregistrement la sortie déchiffrée.

Signer et valider

Les sections suivantes expliquent comment signer et vérifier à l'aide d'une méthode une clé de signature et l'outil pkcs11-tool.

Prérequis

  1. Créez une clé de signature asymétrique Cloud HSM.

  2. 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 Exemple : path/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 la clé algorithme. Exemple :ECDSA
  • INPUT_TEXT_FILE_PATH: chemin d'accès au fichier d'entrée souhaité à 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 Exemple : path/to/libkmsp11.so.
  • HSM_KEY_NAME: nom de la clé Cloud HSM utilisée pour générer la signature que vous souhaitez valider.
  • MECHANISM: mécanisme à utiliser en fonction de la clé algorithme. Exemple :ECDSA
  • INPUT_TEXT_FILE_PATH: le chemin d'accès au fichier qui a été déjà signés.
  • SIGNATURE_FILE_PATH: chemin d'accès au fichier de signature.