Dividere la chiave simmetrica per essere in grado di crittografare usando la chiave pubblica RSA a 1024 bit

0

L'applicazione che sto scrivendo genera una chiave simmetrica a 256 bit ogni volta che vuole comunicare con il server e crittografa i dati e li invia al server. Questo per evitare di memorizzare la chiave simmetrica sulla macchina. Ora, per crittografare la chiave simmetrica, sto usando una chiave pubblica RSA 1024 installata sulla macchina la cui chiave privata risiede sul server. L'applicazione invia anche la chiave simmetrica crittografata al server.

Ora, il limite di dimensione per la crittografia che utilizza la chiave pubblica a 1024 bit con PKCS # 1 v1.5 è di 117 byte. È sicuro dividere la chiave simmetrica in più parti e crittografarle separatamente utilizzando la chiave pubblica e inviarle al server. Sul lato server, li decrittano usando la chiave privata, costruisco la chiave simmetrica a 256 bit e decrittografano i dati.

Questo schema è sicuro? Mi scuso se trovi questa domanda stupida.

    
posta Sumeeth 30.07.2013 - 21:34
fonte

1 risposta

4

Innanzitutto, 256 bit sono 32 byte , che è inferiore a 117 byte, quindi si adatta e non è necessario alcun tipo di suddivisione.

Si potrebbe sostenere che è inutile avere una chiave a 256 bit per la crittografia simmetrica se è protetta con una chiave RSA a 1024 bit, perché, a causa della sua struttura matematica (la struttura che abilita la chiave pubblica / privata) magia), la chiave RSA ha una robustezza molto inferiore agli attacchi, fino alla forza relativamente bassa di "circa" 80 bit (che è ancora fuori dalla portata di ciò che può essere fatto in questo momento, ma almeno una macchina che rompe 1024-bit La chiave RSA può essere progettata e il suo prezzo calcolato, contrariamente a una ricerca di forza bruta su uno spazio di chiave simmetrica a 256 bit, che va ben oltre la scienza e persino la fantascienza).

Il tipo di suddivisione che stai chiedendo non sarebbe banale da fare in modo sicuro. Ciò richiederebbe un'analisi attenta. Nessuna analisi del genere è stata ancora eseguita, per quanto ne so, perché non esiste una situazione pratica che lo richieda.

Ma, soprattutto, non devi reinventare la ruota . Stabilire una comunicazione sicura tra un client e un server, con uno scambio di chiavi e quindi una crittografia simmetrica, è molto difficile da fare correttamente. Esiste una soluzione standard chiamata SSL (beh, ora si chiama TLS, ma è lo stesso). Questo protocollo è stato rotto e riparato, analizzato e ottimizzato per quasi due decenni, e ora sembra abbastanza sicuro. È molto dubbio che tu (o, per quella materia, qualsiasi essere umano) possa produrre qualcosa di buono (o almeno "non peggiore") da solo, in un tempo sostanzialmente inferiore. Ci sono milioni di dettagli di progettazione e implementazione che possono andare storto. Quindi fai la cosa intelligente, usa SSL; ancora più intelligente, usa un'implementazione esistente di SSL invece di scrivere la tua. Ti farà risparmiare molte preoccupazioni, tempo e denaro.

    
risposta data 30.07.2013 - 21:52
fonte

Leggi altre domande sui tag