Manufatti del file chiave del certificato macchina

1

Quando un nuovo certificato macchina viene importato con una chiave privata, viene generato un file MachineKey in "% ProgramData% \ Microsoft \ Crypto \ RSA \ MachineKeys". Quando si utilizza lo snap-in del certificato MMC o si rimuove un certificato con% co_de di PowerShell, il file MachineKey viene lasciato indietro. Quali sono le implicazioni dell'esistenza degli artefatti?

    
posta Colyn1337 07.11.2014 - 22:26
fonte

1 risposta

2

Windows gestisce separatamente certificati e chiavi private. Ogni certificato può puntare a una chiave privata; diversi certificati possono puntare alla stessa chiave. Ciascuno di questi "puntatori" è dato come il nome del provider di servizi di crittografia (che contiene moralmente la chiave) e il nome della chiave all'interno di quel CSP. Windows non tiene traccia di quanti certificati puntano a una determinata chiave privata, e in effetti questo non è completamente definito (soprattutto perché gli archivi di certificati possono essere estesi con una DLL personalizzata). La principale conseguenza è che quando si elimina un certificato, la chiave privata rimane lì.

Le chiavi private possono essere distrutte, ma ciò richiede la chiamata alla funzione Win32 CryptAcquireContext () con il flag CRYPT_DELETEKEYSET . In alternativa, puoi utilizzare il comando certutil -key per elencare le chiavi private e certutil -delkey per eliminarle. Nessuno di questi comandi è descritto nella documentazione di Certutil ma puoi ricevere assistenza con certutil -key -? e certutil -delkey -? . In entrambi i casi potrebbe essere necessario specificare un nome CSP esplicito con l'opzione -csp (utilizzare certutil -csplist per ottenere l'elenco di CSP installato sulla macchina).

In ogni caso, l'implicazione della sicurezza è la seguente: non fare affidamento sulla cancellazione della chiave privata . Una chiave privata è un oggetto sensibile; deve essere maneggiato con cura. Il ciclo di vita normale per una "chiave macchina" deve essere generato sulla macchina in cui verrà utilizzato e non lasciarlo mai. Dovresti fare in modo che mai debba cancellare una chiave privata. La necessità dell'eliminazione della chiave privata di solito deriva dalle persone che generano chiavi sul proprio sistema desktop, per gestire la registrazione dei certificati dalla comodità della propria scrivania e quindi trasferire la chiave privata e il certificato al sistema che effettivamente la utilizzerà. Questa è una cattiva pratica, perché potrebbe lasciare tracce della chiave privata sul sistema desktop.

La cancellazione della chiave privata non è molto semplice (come mostrato sopra: programma C personalizzato o comando non documentato), e anche quando funziona, è davvero una cancellazione di file, che in realtà non garantisce che i dati non esistano più; la cancellazione dei file segna semplicemente lo spazio corrispondente come "libero da riutilizzare" ma non lo cancella in modo proattivo.

    
risposta data 07.11.2014 - 23:53
fonte

Leggi altre domande sui tag