Testen mit pkcs11-tool
Umfassender Leitfaden zum Testen der DuoKey-PKCS#11-Bibliothek mit OpenSC pkcs11-tool
Gilt für:
OpenSC pkcs11-toolDuoKey-PKCS#11-BibliothekLinux / Windows
Voraussetzungen
Voraussetzungen
- OpenSC pkcs11-tool installiert
- DuoKey-PKCS#11-Bibliothek kompiliert (libdke_pkcs11.so oder dke_pkcs11.dll)
- Eine pkcs11.toml (Pfad in DKE_PKCS11_CONF) oder DKE_PKCS11_*-Variablen konfiguriert (siehe Überblick → Konfiguration)
Hinweis
Der PIN-Wert (z. B.
1234) kann ein beliebiger Wert sein, da er derzeit nicht von der Bibliothek validiert wird. Er ist für die Syntax von pkcs11-tool erforderlich, wird aber von der DuoKey-Bibliothek ignoriert.Allgemeine Informationen
Token-Informationen anzeigen
pkcs11-tool --module ./libdke_pkcs11.so --list-token-slots
Unterstützte Mechanismen auflisten
pkcs11-tool --module ./libdke_pkcs11.so --list-mechanisms
Objekte und Schlüssel auflisten
Alle Objekte auflisten
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so --list-objects
Einen bestimmten Schlüssel anhand des Labels auflisten
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--label "test-key-RSA-2048"
Nach Schlüsseltyp filtern
# List public keys only
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--type pubkey
# List by key type (e.g., AES)
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--list-objects \
--key-type "AES"
Vorsicht
Der
--key-type-Filter ist in pkcs11-tool Version 0.26 defekt (funktioniert nicht).Öffentliche Schlüssel exportieren
Nur öffentliche Schlüssel können exportiert werden. Private Schlüssel bleiben im Cockpit-Backend geschützt.
Öffentlichen RSA-Schlüssel exportieren
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--read-object \
--type pubkey \
--label "test-key-RSA-2048" \
--output-file test-key-RSA-2048.pubkey
Öffentlichen ECC-Schlüssel exportieren
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--read-object \
--type pubkey \
--label "test-key-ECC-256" \
--output-file test-key-ECC-256.pubkey
Verschlüsselung und Entschlüsselung
Wichtig
Bei Ver-/Entschlüsselungsoperationen unterstützt pkcs11-tool die Schlüsselsuche nur nach ID (nicht nach Label). Verwenden Sie den obigen Befehl
--list-objects, um die zu verwendende Schlüssel-ID zu ermitteln.RSA-Ver-/Entschlüsselung
# Encrypt
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file plaintext.txt \
--output-file encrypted.txt
# Decrypt
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism RSA-PKCS-OAEP \
--hash-algorithm sha256 \
--mgf MGF1-SHA256 \
--id "63336235376338372d333734662d346366332d396231332d626532353837333865666336" \
--input-file encrypted.txt \
--output-file plaintext-2.txt
AES-GCM-Ver-/Entschlüsselung
# Encrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes.txt
# Decrypt with AES-GCM
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism AES-GCM \
--iv 000102030405060708090a0b0c0d0e0f \
--aad "48656c6c6f" \
--tag-bits-len 128 \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes.txt \
--output-file plaintext-2-aes.txt
AES-CBC-PAD-Ver-/Entschlüsselung
# Encrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--encrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file plaintext.txt \
--output-file encrypted-aes-cbc.txt
# Decrypt with AES-CBC-PAD
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--decrypt \
--mechanism AES-CBC-PAD \
--iv 000102030405060708090a0b0c0d0e0f \
--id "30613263353462622d643436322d343864632d613132302d343135326661393033323063" \
--input-file encrypted-aes-cbc.txt \
--output-file plaintext-2-aes-cbc.txt
Objektverwaltung
Objekte werden durch die untenstehenden Schlüsselgenerierungsbefehle erstellt oder mit --list-objects entdeckt. Das Erstellen eines Datenobjekts mit --write-object wird nicht unterstützt (C_CreateObject).
Einen Schlüssel löschen
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--delete-object \
--type secrkey \
--label 'test-pkcs11-generated-key-aes-1'
Nicht unterstützt
Das Erstellen von Objekten (--write-object), das Kopieren von Objekten und das Ändern von Attributen werden nicht unterstützt. Siehe Funktionsabdeckung.
Schlüsselgenerierung
RSA-Schlüsselpaar generieren
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--keypairgen \
--label 'test-pkcs11-generated-key-rsa' \
--key-type RSA:2048
AES-Schlüssel generieren
pkcs11-tool -l --pin 1234 --module ./libdke_pkcs11.so \
--keygen \
--label 'test-pkcs11-generated-key-aes-1' \
--key-type AES:256
Vorbehalte
Signieren / Verifizieren sowie Wrap / Unwrap werden unterstützt (für RSA-/EC-Schlüssel; sie gelten nicht für die reinen AES-Masterschlüssel von Oracle TDE). Die tatsächlichen Vorbehalte sind:
| Punkt | Hinweis |
|---|---|
| Objekterstellung (--write-object) | Nicht unterstützt (C_CreateObject / C_CopyObject / C_SetAttributeValue). |
| Mehrteilige Operationen | Nur einteiliges Ver-/Entschlüsseln / Signieren / Verifizieren / Digest werden unterstützt. |
| Schlüsselableitung | Nicht unterstützt (C_DeriveKey). |
| SHA-1-Digest | CKM_SHA_1 wird bekanntgegeben, aber vom Backend abgelehnt — verwenden Sie SHA-256 / 384 / 512. |
| --key-type-Filter | Defekt in pkcs11-tool 0.26 (ein Fehler von pkcs11-tool, nicht der Bibliothek). |