Crittografia con System.Security.Cryptography

giovedì 09 novembre 2006 - 09.06

paolopat Profilo | Junior Member

Ciao a tutti.....è da poco che ho iniziato ad affrontare il problema della crittografia dei dati con il .Net Framework. Ho letto anche i due articoli qui sul sito, per quanto riguarda l'algoritmo DES e Rijndael ed avevo una domanda da porre. Prima di leggere gli articoli avevo già realizzato un programmino per la crittografia e successiva decrittografia di un file di testo, ma al momento della decrittografia veniva sollevata una CryptographyException "dati non validi". Grazie alla lettura di questi articoli, ho capito (ed era anche ovvio .... ma non ci ho pensato) che nella fase di decrittografia veniva utilizzata una Key ed un IV diversi da quelli applicati per la crittografia e giustamente l'algoritmo falliva. Gli articoli suddetti definiscono queste due informazioni in chiaro....ma non è un errore? Nel senso....se qualcuno ottiene il codice sorgente, riesce a risalire anche alla chiave di crittografia / decrittografia. La soluzione sarebbe generarla automaticamente in fase di crittografia e salvarla per poi usarla in decrittografia ?

Grazie mille...

totti240282 Profilo | Guru

di solito per un sistema sicuro le key si criptano in rsa.
C'è solo un capitano !!!!!!

19018 Profilo | Expert

Teoricamente la soluzione ottimale è il one-time-pad, ovvero una chiave nuova per ogni comunicazione. In poche parole non bisogna mai usare la stessa chiave per più di una volta.
Un'altra soluzione (vedi PGP->Pretty Good Privacy) è quella di utilizzare la crittografia asimmetrica (RSA) per scambiare la chiave simmetrica che verrà poi utilizzata durante la comunicazione.
In genere la crittografia asimmetrica non viene usata durante tutta la comunicazione perchè è troppo "pesante" e quindi viene utilizzata solo per scambiare,inizialmente, la chiave che verrà successivamente usata per la comunicazione simmetrica.Infatti, quest'ultima è molto veloce ma ha come neo il fatto di dover scambiare,in qualche modo, la chiave (meglio se lo scambio avviene out-of-band).

Ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

paolopat Profilo | Junior Member

quindi, se io creassi una classe helper che fornisce dei metodi per la crittografia utilizzando quelli messi a disposizione dal framework, dovrei fare in modo da generare una chiave diversa ogni qual volta si esegue un'operazione di crittografia e salvarla per poi riutilizzarla per la decrittografia ? giusto ?

19018 Profilo | Expert

In teoria si...ma in pratica viene usata solo in casi particolari perchè ogni volta dovresti scambiare la chiave e questo in molti casi può costare...soprattutto se lo scambio è out-of-band!
Nel tuo caso...ti conviene farlo??Sono davvero dati che richiedono un tale livello di protezione!?A questo punto fai lo scambio una sola volta usando RSA...forse ti conviene!ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

paolopat Profilo | Junior Member

scusami....cosa significa scambio out-of-bound ?

totti240282 Profilo | Guru

scambiarsi la chiave al di fuori della rete ????
C'è solo un capitano !!!!!!

19018 Profilo | Expert

Esattamente!Nei casi in cui la sicurezza DEVE essere massima la chiave non viene scambiata quasi mai in rete..ma sono casi eccezionali.
Generalmente viene scambiata in rete usando la crittografia asimmettrica, è una soluzione che per il 98% dei casi va più che bene.

ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

paolopat Profilo | Junior Member

scusate se disturbo ancora...conoscete qualche link (magari in italiano) da cui reperire informazioni su questi algoritmi di crittografia...

totti240282 Profilo | Guru

In msdn c'è tutto ,cerca li.
C'è solo un capitano !!!!!!

19018 Profilo | Expert

Anche su wikipedia trovi tanta roba -> http://it.wikipedia.org/wiki/Crittografia


ciao

Stefano Passatordi

http://blogs.dotnethell.it/stem/

paolopat Profilo | Junior Member

grazie per la disponibilità

francescococciola Profilo | Newbie

non so se sono fuori luogo, in tal caso scusatemi.

ho un problema, anzi una curiosita'. ho criptato dei dati e vorrei testarne la sicurezza.

esiste il modo?

ciao e grazie!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5