Crittografia dei dati e gestione delle chiavi in C #

11

Quale strada prendere, quali sono i pro e i contro, che è più sicuro ..

  1. Genera la chiave AES, crittografare i dati con essa e quindi crittografare la chiave AES con RSA, salvare i dati crittografati e la chiave AES crittografata in un file e la coppia di chiavi RSA in un KeyContainer.

  2. O utilizzare la classe DPAPI ProtectedData per crittografare i dati e salvarli in un file e quindi archiviare l'entropia che cosa ho usato con ProtectedData.Protect () in qualche luogo .. (magari anche crittografarlo con la RSA, archiviare la Keypair RSA a KeyContainer e l'entropia crittografata al file con i dati?)

posta 12.04.2011 - 08:37
fonte

2 risposte

8

Sebbene tu possa probabilmente ottenere una crittografia più strong quando scegli tu stesso gli algoritmi (DPAPI usava usare 3DES, non so se questo è ancora il caso in 7), la parte più debole del tuo cripto-sistema sarà quasi sempre la chiave di gestione. (supponendo che tu usi algoritmi decenti, e anche 3DES non è completamente rotto).

L'uso di DPAPI significa che non devi preoccuparti affatto della gestione delle chiavi (a parte proteggere la tua chiave con DPAPI in primo luogo). Sono sicuro che @Thomas salterà con una risposta dettagliata, ma in genere la mia risposta sarebbe di andare con DPAPI.

    
risposta data 12.04.2011 - 15:30
fonte
0

AES o DPAPI? Dipende dalla tua architettura.

Ad esempio, se sei un utente che desidera un sito Web stateless, vendibile e con bilanciamento del carico, non utilizzare DPAPI per la crittografia cookie / sessione. Se lo fai, stai effettivamente limitando una sessione utente a un singolo host .... a seconda del tuo caso d'uso.

Per quanto riguarda DPAPI e RSA, potresti essere interessato a questo articolo MSDN , whitepaper e questo domanda riguardante le chiavi private di DPAPI.

    
risposta data 29.09.2011 - 06:31
fonte

Leggi altre domande sui tag