Cloud HSM-Schlüssel mit dem pkcs11-tool verwenden

In diesem Leitfaden finden Sie Beispielbefehle für pkcs11-tool, um einen Cloud HSM-Schlüssel unter Debian 11 (Bullseye) mit der PKCS #11-Bibliothek zu verwenden. Die Befehle in Diese Anleitung kann je nach Betriebssystem oder Linux-Distribution Änderungen erfordern.

Hinweise

Bevor Sie fortfahren, führen Sie die Schritte unter Cloud HSM-Schlüssel mit OpenSSL verwenden

Symmetrische Verschlüsselung und Entschlüsselung verwenden

In den folgenden Abschnitten erfahren Sie, wie Sie mit einer symmetrischen Encryption Key, OpenSSL und pkcs11-tool.

Vorbereitung

  1. symmetrische Rohverschlüsselung durch Cloud HSM erstellen Schlüssel. Legen Sie zum Erstellen eines Cloud HSM-Schlüssels Folgendes fest: setzen Sie das Schutzniveau auf HSM, während Sie einen neuen Schlüssel erstellen.

  2. Notieren Sie sich den symmetrischen Rohalgorithmus des Verschlüsselungsalgorithmus, den Sie für den Schlüssel. Jeder Algorithmus hat eigene Anforderungen Padding, Initialisierungsvektoren und zusätzliche authentifizierte Daten.

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

Verschlüsseln

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

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 die für die Verschlüsselung verwendet werden sollen.
  • INITIALIZATION_VECTOR: Wert der Initialisierung als Teil der Verschlüsselung verwendet werden soll.
  • INPUT_TEXT_FILE_PATH: Pfad zur gewünschten Eingabedatei zu verschlüsseln.
  • ENCRYPTED_TEXT_FILE_PATH: der Pfad, unter dem Sie speichern möchten die verschlüsselte Textdatei an.

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 auf Basis des Schlüssels Algorithmus, z. B. ECDSA.
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels mit dem die zu entschlüsselnde Datei verschlüsselt wurde.
  • INITIALIZATION_VECTOR: Wert der Initialisierung als Teil der Verschlüsselung verwendet werden soll.
  • ENCRYPTED_TEXT_FILE_PATH: der Pfad zur Datei, die Sie entschlüsseln möchten.
  • DECRYPTED_TEXT_FILE_PATH: der Pfad, unter dem Sie speichern möchten in der entschlüsselten Textdatei.

Asymmetrische Verschlüsselung und Entschlüsselung

In den folgenden Abschnitten wird das Ver- und Entschlüsseln mithilfe einer asymmetrischen Encryption Key, OpenSSL und pkcs11-tool.

Vorbereitung

  1. Asymmetrische Entschlüsselung für Cloud HSM erstellen Schlüssel und laden Sie die öffentliche Version herunter .

  2. Erstellen Sie eine Eingabedatei mit etwas Text.

    echo Hello World! >> input.txt
    

Verschlüsseln

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

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: Pfad zur Eingabedatei, die verschlüsselt werden soll.
  • PUBLIC_KEY: der Pfad zum öffentlichen Schlüssel.
  • ENCRYPTED_TEXT_FILE_PATH: der Pfad, unter dem Sie speichern möchten die verschlüsselte Textdatei an.

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 (Pfad/zu/libkmsp11.so).
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels Dies entspricht dem öffentlichen Schlüssel, der zum Verschlüsseln der Textdatei verwendet wurde.
  • ENCRYPTED_TEXT_FILE_PATH: Pfad zur gewünschten Datei zu entschlüsseln.
  • OUTPUT_TEXT_FILE_PATH: der Pfad, unter dem Sie speichern möchten der entschlüsselten Ausgabe.

Signieren und bestätigen

In den folgenden Abschnitten erfahren Sie, wie Sie mit einer asymmetrischen und das PKCS11-Tool.

Vorbereitung

  1. Erstellen Sie einen Asymmetrischen Signierschlüssel für 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: Pfad zum PKCS#11-Modul Beispiel: path/to/libkmsp11.so.
  • HSM_KEY_NAME: der Name des Cloud HSM-Schlüssels das Sie zum Signieren verwenden möchten.
  • MECHANISM: Der zu verwendende Mechanismus, der auf dem Schlüsselalgorithmus basiert. Beispiel: ECDSA.
  • INPUT_TEXT_FILE_PATH: Pfad zur gewünschten Eingabedatei zu unterzeichnen.
  • OUTPUT_SIGNATURE_FILE_PATH: der Pfad, unter dem Sie Speichern Sie die Signaturdatei.

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 das zum Generieren der Signatur verwendet wurde, die Sie überprüfen möchten.
  • MECHANISM: der zu verwendende Mechanismus auf Basis des Schlüssels Algorithmus. Beispiel: ECDSA.
  • INPUT_TEXT_FILE_PATH: Pfad zur Datei, die zuvor zuvor unterzeichnet wurde.
  • SIGNATURE_FILE_PATH: Pfad zur Signaturdatei.