Derivazione della chiave all'interno del contenitore sicuro di HSM

3

Devo implementare la funzione di derivazione della chiave personalizzata che funziona fondamentalmente come segue:

Ho la chiave di crittografia K nel contenitore sicuro di HSM. K non può essere esportato e l'unico modo per usarlo è tramite il comando HSM o la funzione PKCS # 11.

La chiave derivata DK è l'output dei dati di crittografia con la chiave K, quindi DK = E (dati, K).

Il mio problema è quando implemento questa funzione tramite i comandi o la funzione PKCS # 11, otterrò un testo in chiaro di DK al di fuori del contenitore sicuro HSM. Devo proteggere la chiave in modo che non lasci mai il contenitore sicuro.

È possibile implementare funzioni personalizzate, come la funzione di derivazione, all'interno del contenitore sicuro di HSM in modo che l'output possa essere protetto come chiave crittografica? Come fare senza ottenere l'output in chiaro di DK?

    
posta user1563721 21.07.2015 - 19:05
fonte

1 risposta

4

Alcuni HSM sono abbastanza configurabili per consentire l'aggiunta di funzionalità all'interno dell'HSM. Tuttavia, questo non sarà possibile tramite PKCS # 11 , che è un'API pensata per invocare l'algoritmo crittografico su dati forniti esternamente. Quello che PKCS # 11 offre ed è il più vicino al tuo problema è C_UnwrapKey() che può prendere come input una chiave crittografata (la chiave è crittografata con un'altra chiave) e la decrittografa. Tuttavia, è probabile che la funzione di derivazione della chiave personalizzata che devi implementare non corrisponda a nessuno dei formati di scartamento chiave conosciuti da HSM (se non altro perché si ricava la chiave con crittografia , non la decrittografia).

Come esteso per le funzionalità HSM, accade al di fuori dell'ambito di PKCS # 11, quindi se questo è supportato dal tuo HSM, sarà fatto con metodi specifici per quell'HSM. Ho una certa esperienza con Thales HSM (precedentemente noto come "nCipher"): alcuni di essi consentono di inserire il codice personalizzato nell'HSM, a condizione che tu abbia attivato (cioè pagato) l'opzione pertinente, chiamata codeSafe . Quando lo stavo facendo (alcuni anni fa), lo sviluppo era fatto in C, con un sottoinsieme molto ridotto della libreria standard; la CPU HSM non era affatto veloce (si pensi megahertz, non gigahertz); ma c'era una quantità notevole di RAM (dozzine di megabyte) e, cosa più importante, gli acceleratori crittografici potevano essere usati per operazioni di crittografia.

    
risposta data 21.07.2015 - 19:30
fonte

Leggi altre domande sui tag