Was ist PKCS#11?

Nick Smith | | 2 minute read
PKCS#11 PKI

Da es so viele Normen für Chipkarten gibt, ist es wichtig zu verstehen, was diese bedeuten und inwiefern sie relevant sind. In diesem Artikel geben wir einen Überblick über mehrere Schlüsselstandards und ihre Rolle im Chipkarten-Ökosystem.

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