Cloud HSM-Schlüssel mit pkcs11-tool verwenden

Diese Anleitung enthält pkcs11-tool-Beispielbefehle zur Verwendung eines Cloud HSM-Schlüssels unter Debian 11 (Bullseye) mit der PKCS #11-Bibliothek. Die in dieser Anleitung enthaltenen Befehle können je nach Betriebssystem- oder Linux-Distribution angepasst werden.

Hinweise

Führen Sie die Schritte unter Cloud HSM-Schlüssel mit OpenSSL verwenden aus, bevor Sie fortfahren.

Symmetrische Verschlüsselung und Entschlüsselung verwenden

In den folgenden Abschnitten wird beschrieben, wie Sie mit einem symmetrischen Verschlüsselungsschlüssel, OpenSSL und dem pkcs11-Tool verschlüsseln und entschlüsseln.

Vorbereitung

  1. Erstellen Sie einen symmetrischen rohen Verschlüsselungsschlüssel für Cloud HSM. Legen Sie zum Erstellen eines Cloud HSM-Schlüssels das Schutzniveau auf HSM fest und erstellen Sie einen neuen Schlüssel.

  2. Notieren Sie sich den symmetrischen RAW-Verschlüsselungsalgorithmus, den Sie für den Schlüssel ausgewählt haben. Jeder Algorithmus hat seine eigenen Anforderungen an das Padding, Initialisierungsvektoren und zusätzliche authentifizierte Daten.

  3. Erstellen Sie eine Eingabedatei mit den Daten, die Sie verschlüsseln möchten.

Verschlüsseln

Um eine Textdatei zu verschlüsseln, führen Sie den folgenden Befehl aus:

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

Ersetzen Sie Folgendes:

  • PATH_TO_LIBKMSP11_SO: Der Pfad zum PKCS#11-Modul, z. B. /usr/local/lib/libkmsp11.so.
  • MECHANISM: Der zu verwendende Mechanismus basierend auf dem Schlüsselalgorithmus, z. B. AES-CBC-PAD.
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels, der für die Verschlüsselung verwendet werden soll.
  • INITIALIZATION_VECTOR: der Wert des Initialisierungsvektors, der als Teil der Verschlüsselung verwendet werden soll.
  • INPUT_TEXT_FILE_PATH: Der Pfad zur Eingabedatei, die Sie verschlüsseln möchten.
  • ENCRYPTED_TEXT_FILE_PATH: der Pfad, unter dem Sie die verschlüsselte Textdatei speichern möchten.

Decrypt

Führen Sie den folgenden Befehl aus, um eine Textdatei zu entschlüsseln:

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

Ersetzen Sie Folgendes:

  • PATH_TO_LIBKMSP11_SO: Der Pfad zum PKCS#11-Modul, z. B. /usr/local/lib/libkmsp11.so.
  • MECHANISM: Der zu verwendende Mechanismus basierend auf dem Schlüsselalgorithmus, z. B. ECDSA.
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels, der zum Verschlüsseln der Datei verwendet wurde, die Sie entschlüsseln möchten.
  • INITIALIZATION_VECTOR: der Wert des Initialisierungsvektors, der als Teil der Verschlüsselung verwendet werden soll.
  • ENCRYPTED_TEXT_FILE_PATH: Der Pfad zu der Datei, die Sie entschlüsseln möchten.
  • DECRYPTED_TEXT_FILE_PATH: der Pfad, unter dem Sie die entschlüsselte Textdatei speichern möchten.

Asymmetrische Verschlüsselung und Entschlüsselung verwenden

In den folgenden Abschnitten wird beschrieben, wie Sie mit einem asymmetrischen Verschlüsselungsschlüssel, OpenSSL und mit dem pkcs11-Tool verschlüsseln und entschlüsseln.

Vorbereitung

  1. Erstellen Sie einen asymmetrischen Entschlüsselungsschlüssel von Cloud HSM und laden Sie dessen öffentlichen Schlüssel herunter.

  2. Erstellen Sie eine Eingabedatei mit Text.

    echo Hello World! >> input.txt
    

Verschlüsseln

Um eine Textdatei zu verschlüsseln, führen Sie den folgenden Befehl aus:

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

Ersetzen Sie Folgendes:

  • INPUT_TEXT_FILE_PATH: Der Pfad zur Eingabedatei, die Sie verschlüsseln möchten.
  • PUBLIC_KEY: der Pfad zum öffentlichen Schlüssel.
  • ENCRYPTED_TEXT_FILE_PATH: der Pfad, unter dem Sie die verschlüsselte Textdatei speichern möchten.

Decrypt

Führen Sie den folgenden Befehl aus, um eine Textdatei zu entschlüsseln:

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

Ersetzen Sie Folgendes:

  • PATH_TO_LIBKMSP11_SO: der Pfad zum PKCS#11-Modul (path/to/libkmsp11.so).
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels, der dem öffentlichen Schlüssel entspricht, der zum Verschlüsseln der Textdatei verwendet wurde.
  • ENCRYPTED_TEXT_FILE_PATH: Der Pfad zu der Datei, die Sie entschlüsseln möchten.
  • OUTPUT_TEXT_FILE_PATH: der Pfad, unter dem Sie die entschlüsselte Ausgabe speichern möchten.

Signieren und bestätigen

In den folgenden Abschnitten wird beschrieben, wie Sie mit einem asymmetrischen Signaturschlüssel und einem pkcs11-Tool signieren und verifizieren.

Vorbereitung

  1. Erstellen Sie einen asymmetrischen Signaturschlüssel von Cloud HSM.

  2. Erstellen Sie eine Datei mit den gehashten Eingabedaten, die Sie signieren möchten.

Unterzeichnen

Führen Sie den folgenden Befehl aus, um eine Textdatei zu signieren:

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

Ersetzen Sie Folgendes:

  • PATH_TO_LIBKMSP11_SO: der Pfad zum PKCS#11-Modul, z. B. path/to/libkmsp11.so.
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels, den Sie zum Signieren verwenden möchten.
  • MECHANISM: Der zu verwendende Mechanismus auf Basis des Schlüsselalgorithmus. Beispiel: ECDSA.
  • INPUT_TEXT_FILE_PATH: Der Pfad zur Eingabedatei, die Sie signieren möchten.
  • OUTPUT_SIGNATURE_FILE_PATH: der Pfad, unter dem Sie die Signaturdatei speichern möchten.

Bestätigen

Führen Sie den folgenden Befehl aus, um eine Signaturdatei zu überprüfen:

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

Ersetzen Sie Folgendes:

  • PATH_TO_LIBKMSP11_SO: der Pfad zum PKCS#11-Modul, z. B. path/to/libkmsp11.so.
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels, der zum Generieren der Signatur, die Sie prüfen möchten, verwendet wurde.
  • MECHANISM: Der zu verwendende Mechanismus auf Basis des Schlüsselalgorithmus. Beispiel: ECDSA.
  • INPUT_TEXT_FILE_PATH: Der Pfad zu der Datei, die zuvor signiert wurde.
  • SIGNATURE_FILE_PATH: der Pfad zur Signaturdatei.