Zum Hauptinhalt springen
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:

PunktHinweis
Objekterstellung (--write-object)Nicht unterstützt (C_CreateObject / C_CopyObject / C_SetAttributeValue).
Mehrteilige OperationenNur einteiliges Ver-/Entschlüsseln / Signieren / Verifizieren / Digest werden unterstützt.
SchlüsselableitungNicht unterstützt (C_DeriveKey).
SHA-1-DigestCKM_SHA_1 wird bekanntgegeben, aber vom Backend abgelehnt — verwenden Sie SHA-256 / 384 / 512.
--key-type-FilterDefekt in pkcs11-tool 0.26 (ein Fehler von pkcs11-tool, nicht der Bibliothek).