La tua domanda mi sembra particolarmente oscura, quindi scriverò qui alcune spiegazioni sul significato dei termini che impieghi, nella speranza che riduca la confusione e porti a una risposta o almeno a una domanda più chiara.
PKCS # 11 è un Application Programming Interface : è un insieme di funzioni, che le applicazioni usano e che sono fornite da un determinato dispositivo o sistema. Dal punto di vista di un'applicazione, un "driver PKCS # 11" è una DLL che l'applicazione può caricare e che la DLL offre alcune funzioni per la creazione e l'uso di chiavi crittografiche. L'applicazione non sa come vengono create, gestite e utilizzate le chiavi, e questo è l'intero punto di utilizzo di un'API standardizzata. Un dispositivo fisico per la gestione delle chiavi (dice, un HSM ) verrà fornito con una DLL fornita dal venditore HSM, la DLL implementando l'interfaccia PKCS # 11. In questo modo, qualsiasi applicazione che sappia come caricare una DLL PKCS # 11 e chiamare le funzioni in essa sarà "istantaneamente" compatibile con tutti gli HSM che forniscono una tale DLL.
Non è necessario che il sistema di gestione delle chiavi sia "fisico". L'applicazione chiama la DLL e la DLL fa ciò che desidera; può utilizzare file e software semplici per eseguire le operazioni crittografiche; può chiamare un server remoto per fare il lavoro; o qualsiasi altra cosa. L'applicazione, per definizione, non conosce e non può sapere cosa fa la DLL.
Presumibilmente, se vuoi simulare cose, allora puoi immaginare di usare una DLL PKCS # 11 che fa cose in puro software, in modo che tu possa sviluppare e testare la tua applicazione prima di acquistare effettivamente un HSM . Questa è la teoria; in pratica non funziona perché PKCS # 11 è un'enorme API e, mentre PKCS # 11 specifica funzioni e argomenti, non annulla tutti i possibili comportamenti , quindi l'implementazione di PKCS # 11 è solo uno passo verso l'interoperabilità. A proposito, non tutti gli HSM sono equivalenti tra loro, quindi fare test con un HSM non significa che la vostra applicazione funzionerà con tutto l'HSM sul mercato.
Per semplificare le cose, se hai bisogno di simulare un HSM dal fornitore XXX, la simulazione migliore e più fedele è probabilmente il simulatore fornito da XXX stesso, perché questo è il punto di tale simulatore . Ricorda che "migliore" non significa automaticamente "buono".
CryptoAPI è un'API di Microsoft che è in qualche modo analoga a PKCS # 11. Le applicazioni chiamano le funzioni di CryptoAPI per eseguire varie operazioni relative alla crittografia (inclusi la firma di documenti o la convalida dei certificati X.509). Alcune di queste operazioni riguardano la creazione, la gestione e l'utilizzo delle chiavi; CryptoAPI li delega a ciò che Microsoft chiama Provider di servizi di crittografia . Il CSP è in realtà DLL caricato da CryptoAPI; il CSP implementa alcune funzioni standardizzate e gestisce l'accesso al sistema (dispositivo fisico o software) che svolge il lavoro. Un CSP è simile nel concetto a una DLL PKCS # 11; la differenza è principalmente che CSP esiste solo in Windows, mentre PKCS # 11 funziona anche su altri sistemi operativi.
Quindi le applicazioni su Windows possono scegliere tra l'utilizzo di CryptoAPI o PKCS # 11. Il browser Web Firefox, ad esempio, utilizza esclusivamente PKCS # 11, quando è necessario parlare con dispositivi hardware crittografici (in particolare le smart card); per gli stessi scopi, Internet Explorer si baserà su CryptoAPI.
Alcuni fornitori di HSM (ad esempio Thales) forniscono sia una PKCS # 11 DLL che un CSP per CryptoAPI con il loro HSM.
"Cloud-based" e HSM sono una strana combinazione. Quando fai cose "nel Cloud", invii i tuoi dati per essere memorizzati ed elaborati da qualche parte a distanza, in modo che l'intera cosa possa essere virtualizzata e spostata senza cambiare nulla dalla tua parte. Normalmente vuoi usare HSM con precisione in modo che ciò accada non .
Probabilmente, potresti voler dire che avrai un "HSM condiviso": l'HSM si troverà in una posizione raggiungibile dalla rete, e vari sistemi client delegheranno le operazioni crittografiche a questo HSM attraverso un protocollo specifico HSM ( presumibilmente un protocollo con crittografia sufficiente a renderlo sicuro). Ancora con Thales HSM, hanno un prodotto chiamato " nShield Connect " che fa esattamente questo.
Chiamare questa condivisione HSM "basata su cloud" è comunque una dichiarazione piuttosto confusa.