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 in dieser Anleitung enthaltenen Befehle müssen je nach Betriebssystem oder Linux-Distribution möglicherweise angepasst werden.
Hinweise
Führen Sie vor dem Fortfahren die Schritte unter Cloud HSM-Schlüssel mit OpenSSL verwenden aus.
Symmetrische Verschlüsselung und Entschlüsselung verwenden
In den folgenden Abschnitten wird gezeigt, wie Sie mit einem symmetrischen Verschlüsselungsschlüssel, OpenSSL und dem pkcs11-Tool verschlüsseln und entschlüsseln.
Vorbereitung
Erstellen Sie einen groben symmetrischen Verschlüsselungsschlüssel für Cloud HSM. Wenn Sie einen Cloud HSM-Schlüssel erstellen möchten, legen Sie beim Erstellen eines neuen Schlüssels die Schutzstufe auf HSM fest.
Notieren Sie sich den reinen symmetrischen Verschlüsselungsalgorithmus, den Sie für den Schlüssel auswählen. Für jeden Algorithmus gelten eigene Anforderungen an Padding, Initialisierungsvektoren und zusätzliche authentifizierte Daten.
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, der für die Verschlüsselung verwendet werden soll.INITIALIZATION_VECTOR
: Der Wert des Initialisierungsvektors, der als Teil der Verschlüsselung verwendet wird.INPUT_TEXT_FILE_PATH
: Pfad zur Eingabedatei, die verschlüsselt werden soll.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, mit dem die Datei verschlüsselt wurde, die Sie entschlüsseln möchten.INITIALIZATION_VECTOR
: Der Wert des Initialisierungsvektors, der als Teil der Verschlüsselung verwendet wird.ENCRYPTED_TEXT_FILE_PATH
: der Pfad zur 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 gezeigt, wie Sie mit einem asymmetrischen Verschlüsselungsschlüssel, OpenSSL und dem pkcs11-Tool verschlüsseln und entschlüsseln.
Vorbereitung
Erstellen Sie einen asymmetrischen Cloud HSM-Entschlüsselungsschlüssel und laden Sie den öffentlichen Schlüssel herunter.
Erstellen Sie eine Eingabedatei mit 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 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 (Pfad/zu/libkmsp11.so).HSM_KEY_NAME
: der Name des Cloud HSM-Schlüssels, der dem öffentlichen Schlüssel entspricht, mit dem die Textdatei verschlüsselt wurde.ENCRYPTED_TEXT_FILE_PATH
: der Pfad zur 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 erfahren Sie, wie Sie mit einem asymmetrischen Signaturschlüssel und einem PKCS11-Tool signieren und prüfen.
Vorbereitung
Erstellen Sie einen asymmetrischen Signaturschlüssel für Cloud HSM.
Erstellen Sie eine Datei mit den gehashten Eingabedaten, die Sie signieren möchten.
Unterzeichnen
Führen Sie 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 für die Signatur verwenden möchten.MECHANISM
: Der zu verwendende Mechanismus, basierend auf dem Schlüsselalgorithmus. Beispiel:ECDSA
.INPUT_TEXT_FILE_PATH
: Der Pfad zur Eingabedatei, die signiert werden soll.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, mit dem die Signatur generiert wurde, die Sie überprüfen möchten.MECHANISM
: Der zu verwendende Mechanismus, basierend auf dem Schlüsselalgorithmus. Beispiel:ECDSA
.INPUT_TEXT_FILE_PATH
: der Pfad zur Datei, die zuvor signiert wurde.SIGNATURE_FILE_PATH
: der Pfad zur Signaturdatei.