Was ist PKCS#11?

Nick Smith | | 2 Minuten lesen
PKCS#11 PKI

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.

Anwendungsstapel mit PKCS#11-Bibliothek, Middleware und kryptographischer PKI-Token-Hardware

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..
  • 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.

Erfahren Sie mehr über Mikrokosmos PKI