È possibile ripetere RSA (o qualsiasi algoritmo di chiave pubblica / privata) per grandi quantità di dati?

5

Sto lavorando su un piccolo incarico di sicurezza e mi è stato richiesto di implementare la semplice crittografia / decrittografia dei file utilizzando RSA in C #.

Durante il tentativo di crittografare / decrittografare file di grandi dimensioni, il compilatore mi ha informato che la dimensione del file non può superare la lunghezza della chiave. Posso risolvere questo problema suddividendo i file in blocchi di dimensioni chiave e ripetendo la crittografia, ma questo metterebbe a repentaglio la mia chiave RSA? Perché o perché no?

    
posta Joshc1107 08.04.2011 - 18:55
fonte

2 risposte

11

La crittografia RSA funziona su messaggi che non sono più della dimensione del modulo della chiave pubblica (in realtà il limite è leggermente inferiore a quello, ad esempio 117 byte per una chiave RSA a 1024 bit). Il metodo usuale per crittografare le cose con RSA è di usare una modalità ibrida: si crea una chiave simmetrica casuale (un gruppo di byte casuali, con un generatore di numeri casuali crittograficamente sicuro), si cripta simmetricamente i propri dati con quella chiave (usando una cifra simmetrica come AES) e si cripta la chiave simmetrica con RSA. Le cifre simmetriche possono gestire dati di lunghezza arbitrari. Una chiave simmetrica è piuttosto breve, in genere 16 o 32 byte, quindi non c'è alcun problema nella crittografia con RSA.

Tieni presente che stai progettando il tuo protocollo crittografico, che è una pessima idea. In realtà la prima e la prima di tutte le cattive idee legate alla crittografia. Anche per qualcosa di semplice come la crittografia asimmetrica di un blob, le persone che hanno provato a progettare un tale protocollo hanno attraversato anni di versioni multiple e buchi di sicurezza, dolorosamente tappati uno ad uno. Dovresti davvero usare un protocollo esistente per quello. Uno di questi protocolli è OpenPGP . Bouncy Castle è una libreria opensource con una versione C # e che include un'implementazione OpenPGP. Usalo, e vivrai più a lungo e più felice.

    
risposta data 08.04.2011 - 19:21
fonte
1

Una cosa che perdi con questo metodo è che un utente malintenzionato può rimuovere o riprodurre qualsiasi blocco che desidera; non c'è nessuna verifica Questo potrebbe essere risolto crittografando un hash del contenuto come ultimo blocco, ma probabilmente ci saranno anche altri problemi con questo schema.

    
risposta data 12.04.2011 - 18:23
fonte

Leggi altre domande sui tag