Cosa viene inviato tra un HSM e un'applicazione?

3

Quando un'applicazione chiama un HSM usando PKCS # 11 / KSP / etc. cosa viene effettivamente scambiato tra i due? Ad esempio, se una CA deve firmare un CRL, l'intero CRL è effettivamente inviato all'HSM per la firma?

    
posta meowingtons 18.07.2017 - 07:45
fonte

2 risposte

3

Firmare un CRL è come firmare qualsiasi altro dato e comporta diversi passaggi:

  1. Leggi i dati che desideri firmare.

  2. Calcola un hash dai dati che desideri firmare. Questo hash ha la stessa lunghezza, indipendentemente dalla lunghezza dei dati iniziali e diversi dati generano hash diversi.

  3. Cripta l'hash con la chiave privata. Il risultato di questa operazione è la firma effettiva.

Questa firma può quindi essere aggiunta ai dati firmati (aggiunti al CRL per ottenere il certificato finale firmato per seguire l'esempio) per ottenere i dati firmati.

Come vedi, la chiave privata è coinvolta solo nell'ultimo passaggio. Sarebbe uno spreco di risorse per inviare l'intero dato all'HSM, quindi l'hash viene calcolato sul lato dell'applicazione e solo l'hash viene inviato all'HSM per ottenere la firma.

    
risposta data 18.07.2017 - 16:38
fonte
1

Guarda le funzioni che fanno parte dell'API PKCS # 11. Quando crei un CRL, è necessaria la funzione C_Sign , a cui viene assegnato un valore hash. La maggior parte dei token PKCS # 11 fornisce anche funzionalità hash, ma se ne hai davvero bisogno puoi farlo sul token invece che nel software, ma questo è molto raro.

    
risposta data 18.07.2017 - 16:41
fonte