Pgp Archiviazione della chiave privata su Windows Server

1

In cerca di un po 'di consigli, ecco la situazione:

  • Al momento ho un cliente orientato alla sicurezza che invierà PGP file crittografati.

  • Devo decodificare i file sul mio server prima di elaborarli. A Per raggiungere questo obiettivo stavo pensando di utilizzare BouncyCastle con C #.

Ok, finora tutto bene ... ma ... Mi stavo chiedendo quale sarebbe il miglior metodo per archiviare la mia chiave privata sul mio server?

  • So che il pensiero di archiviare semplicemente la mia chiave privata in un file (anche se avrà una passphrase) in una cartella limitata sarà sufficiente a rendere insensibile il braccio sinistro del mio cliente!

  • L'opzione più semplice che posso pensare sarebbe quella di utilizzare il keystore di BouncyCastle, tuttavia non sono sicuro quale sia l'opzione più sicura: Keystore.BouncyCastle , Keystore.UBER o Il keystore compatibile PKCS12 . Ad ogni modo dovrei giustificare la decisione (è ancora solo un file in una cartella :( !!), qualcuno sa di qualche lettura rilevante?

  • Non sono sicuro che sarebbe possibile utilizzare CNG di Windows per memorizzare le chiavi anziché il keystore di BouncyCastle?

  • C'è un'altra opzione migliore?

Ooo, solo una piccola nota: non sono attaccato al 100% a BouncyCastle se c'è un'opzione migliore là fuori sarei più che felice di usarlo (specialmente se non comporta la consegna di pugno pieno) di contanti e posso automatizzarlo)

    
posta Wilfred Knievel 14.02.2014 - 10:56
fonte

1 risposta

1

In generale, tutto dipende da cosa è necessario proteggere e in quale contesto: è necessario spiegare prima cosa si desidera proteggere e quindi progettare una strategia ragionevole per questo: proteggere dall'accesso remoto non è la stessa cosa proteggere da qualcuno che ha accesso all'hardware. L'ambiente di esecuzione è altrettanto importante: non è possibile utilizzare un HSC allo stesso modo su un server dedicato situato nel server room e su una VM noleggiata da un cloud pubblico.

Ora, per essere più specifici: in caso di applicazione server, la crittografia viene solitamente eseguita in modo tale da rendere difficile a chiunque abbia acquisito funzioni di lettura dei dati e del codice sorgente dell'applicazione. Ciò suppone che il sistema operativo stesso rimanga (più o meno) sicuro e che l'intruso non abbia accesso al tuo processo in esecuzione (altrimenti, potrebbe anche solo leggere il testo in chiaro dalla memoria).

Per questo, Windows offre un modo conveniente per proteggere i dati attraverso CryptProtectData e CryptUnprotectData API. Queste funzioni ti consentiranno di crittografare un blocco arbitrario di dati utilizzando una chiave legata all'account utente connesso o alla macchina locale (puoi aggiungere una chiave aggiuntiva se lo desideri, anche se dovrai essere in grado di memorizzarlo esternamente in qualche modo: è di uso limitato se non si dispone di spazio di archiviazione sicuro).

Fare quanto sopra è molto semplice e diretto: questo è fondamentalmente il modo in cui la maggior parte di Windows memorizza i dati segreti. Sfortunatamente, ha una limitazione importante: non è di alcuna utilità contro qualsiasi codice che può essere eseguito nello stesso contesto del tuo programma. Ciò significa che non sarà utile in caso di accesso alla macchina fisica o in caso di qualsiasi tipo di difetto di iniezione del codice. Tuttavia, se tieni questo a mente e se ritieni che questa limitazione sia accettabile, puoi utilizzare queste API per memorizzare i passphrase per le tue chiavi private.

    
risposta data 14.02.2014 - 15:14
fonte

Leggi altre domande sui tag