Come si presenta la chiave privata per un certificato basato su HSM?

3

Qualcuno può spiegare cosa costituisce l'anatomia della chiave privata di un certificato quando la chiave stessa è memorizzata su un HSM? Sto usando nShield in questo esempio, ma presumo che i principal siano gli stessi per qualsiasi HSM che crea certificati con i puntatori chiave privati HSM.

Ci sono due aree in cui ho difficoltà a capire e non ci sono molte informazioni là fuori ... o sto cercando le parole chiave sbagliate.

  1. Quando apro il certificato nel gestore certificati (Windows) mostra che ho una chiave privata per il certificato. Mi rendo conto che questo è solo il puntatore ma, tuttavia, Windows riconosce i dati come una chiave privata valida, com'è possibile? Come fa credere a Windows che sia una vera chiave privata?
  2. Se tento di utilizzare la chiave privata dal certificato (ad esempio, per firmare qualcosa), reindirizza le operazioni della chiave privata all'HSM. Presumo che il CSP sia responsabile di questo, ma come fa il certificato a sapere quale CSP usare?

Sto cercando di ottenere una migliore comprensione in modo da poter scrivere software che consenta agli utenti di sfruttare i certificati per le operazioni di crittografia anziché dover fare affidamento su PKCS11 o sull'API del fornitore.

Grazie !!

    
posta Brian Mitchell 31.01.2017 - 09:28
fonte

1 risposta

2

A livello teorico ciò è possibile perché la chiave pubblica e la chiave privata di una coppia di chiavi sono collegate matematicamente. Ciò significa che è possibile interrogare un fornitore di archiviazione di chiavi se contiene la chiave privata di un determinato certificato. In Windows, sì, è il provider di servizi di crittografia (CSP) che gestisce questo. Il fornitore HSM ha fornito un software che si integra con l'API di crittografia di Windows. Alcuni dettagli sull'architettura possono essere trovati in questo articolo MSDN: Archiviazione e recupero chiavi

Non è necessario approfondire i dettagli dell'architettura criptata di Windows per scrivere software. Microsoft fornisce API che espongono questa funzionalità agli sviluppatori di applicazioni. Se si utilizza .NET Framework, è possibile esaminare gli spazi dei nomi System.Security.Cryptography e System.Security.Cryptography.X509Certificates.

    
risposta data 01.02.2017 - 13:24
fonte

Leggi altre domande sui tag