Was ist PKCS#11?
PKCS#11 definiert eine API zur Kommunikation mit kryptographischen Sicherheitstoken wie Chipkarten, USB-Schlüsseln und Hardware-Sicherheitsmodulen (HSMs). Auch bekannt als „Cryptoki“, ist PKCS#11 Teil des Public Key Cryptography Standards.
PKCS#11 ist eine plattformunabhängige API, die zur Verwaltung und Nutzung kryptographischer Sicherheitshardware verwendet werden kann. Solche Hardware-Geräte werden oft als kryptographische Token bezeichnet, daher der Name „Cryptoki“ (von Cryptographic Token Interface).
Kryptographische Sicherheitshardware kann Folgendes umfassen:
- USB-Dongles
- Chipkarten
- Hardware-Sicherheitsmodule (HSMs).
Die PKCS#11-API ermöglicht die Verwaltung (Erstellung, Änderung, Löschung) von kryptografischen Objekten an Bord des Token, einschließlich:
- RSA-Schlüssel
- X.509-Zertifikate
- Symmetrische Schlüssel (z. B., AES, 3DES)
- Schlüssel für Elliptic Curve Cryptography (ECC)
Software-Anwendungen können die API aufrufen, um diese Objekte zu verwenden:
- Ver-/Entschlüsselung
- Berechnung und Verifizierung digitaler Signaturen
PKCS#11 in Anwendungssoftware
PKCS#11 abstrahiert die spezifischen Details der zugrunde liegenden Kommunikation zwischen der Anwendung und der kryptographischen Hardware. Ein typischer Software-Anwendungs-Stack mit PKCS#11 ist unten dargestellt.
Die Anwendung ruft die PKCS#11-API auf, die entweder von einer herstellerspezifischen Bibliothek oder einer allgemeinen PKCS#11-Bibliothek bereitgestellt wird, die die Funktionalität zur Kommunikation mit Hardware von verschiedenen Herstellern (z. B. OpenSC) enthält.
In der Regel wird die PKCS#11-Implementierung PC/SC zur Kommunikation mit der Kryptohardware verwenden. PC/SC ist eine Spezifikation für die Integration von Chipkarten in Computerumgebungen. Die PC/SC-Unterstützung ist seit XP in Windows integriert. Eine kostenlose Implementierung ist für Linux und Mac verfügbar.
PKCS#11-Software-Entwicklung
PKCS#11 ist in erster Linie eine C-API mit Referenz-Header-Dateien, die von OASIS zur Verfügung gestellt werden (das OASIS PKCS11 Technical Committee hat 2013 die Pflege des PKCS#11-Standards von RSA Security übernommen).
Portierungen und Wrapper existieren auch für andere Sprachen:
- C/C++
- Referenz-Header-Dateien von OASIS verfügbar. Das Microcosm PKI SDK enthält die Header-Dateien, C-Beispielcode und Windows-Binärdateien.
- Java
- Sun PKCS#11-Provider (im Paket
sun.security.pkcs11.SunPKCS11
), der in Java SE enthalten ist. - IAIK PKCS#11-Wrapper.
- Beispiele für die Verwendung beider sind im Microcosm PKI SDK enthalten..
- Sun PKCS#11-Provider (im Paket
- C# und VB.NET
- Es gibt Wrapper. Microcosm empfiehlt jedoch keine bestimmte. Eine schnelle Google-Suche zeigt mehrere Optionen.
- Javascript
pkcs11.js
kann kryptographische Token direkt von einer Webseite mit Javascript aufrufen. Dies ist als Teil des Microcosm PKI SDK enthalten.