Che cos'è PKCS#11?

Nick Smith | 30 novembre 2018
pkcs11Tags

PKCS#11 definisce un API per comunicare con token crittografici di sicurezza come Smart card, chiavi USB e Hardware Security Module (HSM). Noto anche come "Cryptoki", PKCS#11 fa parte degli standard di crittografia a chiave pubblica.

PKCS#11 è un API indipendente da piattaforma che può essere utilizzato per gestire e servirsi di hardware di sicurezza con crittografia. Tali dispositivi hardware vengono spesso definiti token crittografici, da qui il nome "Cryptoki" (da Cryptographic Token Interface).

L'hardware di sicurezza con crittografia può includere:

  • Chiavi di protezione USB
  • Smart Card
  • Hardware Security Module (HSM).

L'API PKCS#11 consente la gestione (creazione, modifica, cancellazione) di oggetti crittografici onboard del token, tra cui:

  • Chiavi RSA
  • Certificati X.509
  • Chiavi simmetriche (ad es., AES, 3DES)
  • Chiavi di crittografia ellittica (ECC)

Le applicazioni software possono richiamare l'API per l'utilizzo di questi oggetti per:

  • Criptazione/decriptazione
  • Calcolo e verifica della firma digitale

PKCS#11 nel software dell'applicazione

PKCS#11 riassume i dettagli specifici della comunicazione sottostante tra l'applicazione e la crittografia hardware. Una chiave di applicazione software tipica che utilizza PKCS#11 viene mostrata di seguito.

Chiave di applicazione che utilizza library PKCS#11, middleware e crittografia hardware con token PKI

L'applicazione chiama l'API PKCS#11 che è dotato sia di una library specifica del fornitore che di una library PKCS#11 comune che include la funzionalità di comunicazione con l'hardware da una varietà di fornitori (ad es., OpenSC).

Comunemente l'implementazione PKCS#11 utilizza PC/SC per comunicare con la crittografia hardware. PC/SC è una specifica per l'integrazione delle Smart Card negli ambienti informatici. Il supporto PC/SC è integrato in Windows fin da XP e una implementazione gratuita è disponibile per Linux e Mac.

Sviluppo software PKCS#11

PKCS#11 è principalmente un C API con file di intestazione di riferimento disponibili da OASIS (il Comitato Tecnico OASIS PKCS11 ha intrapreso la manutenzione dello standard PKCS#11 da RSA Security nel 2013).

Porte e wrapper esistono per altri linguaggi, tra cui:

  • C/C++
    • File di intestazione di riferimento disponibili da OASIS. Microcosm PKI SDK include file di intestazione, codice campione C e binari Windows.
  • Java
    • Provider Sun PKCS#11 (nel pacchetto sun.security.pkcs11.SunPKCS11) che è incluso in Java SE.
    • Wrapper IAIK PKCS#11.
    • Esempi dell'utilizzo di entrambi sono inclusi in Microcosm PKI SDK.
  • C# e VB.NET
    • I wrapper esistono ma Microcosm non ne promuove uno specifico. Una rapida ricerca su Google presenta le varie opzioni.
  • Javascript
    • pkcs11.js consente di richiamare i token crittografici direttamente da una pagina web utilizzando Javascript. Questo è incluso come parte di Microcosm PKI SDK.

Per saperne di più su Microcosm PKI