I messaggi molto brevi sono protetti utilizzando la crittografia a chiave pubblica? [duplicare]

2

Dire che Alice pubblica la sua chiave pubblica e quindi scompare dalla visualizzazione pubblica.

Bob ha quindi bisogno di inviare un messaggio a lei che sia "OK" o ":(", così prende la sua chiave pubblica, crittografa il suo messaggio e poi lo pubblica pubblicamente su Internet.

Che cosa deve impedire a Eve di prendere il messaggio crittografato pubblicamente e quindi eseguire la crittografia bruta forzando ogni combinazione di due lettere con la chiave pubblica di Alice finché non trova una corrispondenza?

    
posta Shalmanese 15.06.2013 - 04:10
fonte

1 risposta

2

Non con RSA "libro di testo", dove codifichi il tuo messaggio come un numero elevato e calcoli direttamente il testo cif c dal testo del messaggio m e la chiave pubblica (e, n) con c = m^e mod n e decifrati usando la chiave segreta (d , n) come m = c^d mod n .

Ma con RSA reale, sicuramente sì, quando viene introdotta la casualità.

Uno schema comune (standard ISO RSA - che è una crittografia ibrida) consiste nel creare prima un numero casuale lungo (ad esempio, se si utilizza RSA a 2048 bit che è n è 2048 bit, scegliere un numero casuale (fino a 2048- bit lunghi), che diventerà il tuo messaggio RSA m rsa . Questo messaggio RSA viene quindi crittografato asimmetricamente. Quindi si crea un hash crittografico (ad esempio, SHA-256) di questo valore casuale per creare un bit symmetric key. Il tuo messaggio reale verrà quindi crittografato con la chiave simmetrica (usando ad esempio AES-256-CBC) e questi due ciphertexts verranno aggiunti insieme.

Concesso in pratica lo schema di crittografia è leggermente più complicato; ad esempio, un protocollo come OAEP viene utilizzato per fornire anche l'autenticazione dei messaggi per prevenire attacchi di testo cifrato più sofisticati e adattivi contro un oracolo decrittante ( che i server HTTPS forniscono). Infatti, come indicato da CodesInChaos, l'utilizzo di un buon schema di riempimento (come OAEP) direttamente per un breve messaggio consente di applicare RSA direttamente al messaggio breve inserito.

Oltre a Ottimizzazione della crittografia asimmetrica ottimale (OAEP)

OAEP funziona come mostrato nello schema seguente. Per concretezza, assumiamo RSA a 2048 bit (che significa n = 2048 bit) e sia H la funzione hash SHA-256 e G be a funzione di generazione maschera basata su una funzione hash (che essenzialmente crea un hash della lunghezza desiderata di bit N-k0 a partire da SHA-256). La scelta della funzione di hash significa che la lunghezza di r (e Y) è k0 = 256 bit. Nota anche il rosso ⊕ (cerchi con più) significa XOR .

Quindi abbiamo un breve messaggio m (di lunghezza n-k0-k1 che è più corto di n-k0 = 2048-256 = 1792 bit) che vogliamo codificare direttamente in RSA. Creiamo una versione imbottita m pad per essere esattamente n-k0 bit (il pad sarà lungo k1 bit e inizierà con un 1 seguito da tutti gli zeri). Creiamo un numero random k0 = 256 bit e lo chiamiamo r. Calcoliamo G (r) e XOR questo valore con il messaggio riempito e questo diventa X. Quindi prendi X e calcoli H (X) e XOR questo con r per fornire Y. Poi con il tuo messaggio OAEP riempito (la concatenazione di X e Y), puoi applicare direttamente la crittografia RSA ad esso.

O per riassumere X = m pad ⊕ G (r) e Y = H (X) ⊕ r, con il messaggio OAEP che entra in RSA come concatenazione (X, Y). Per la decrittografia, prima il messaggio RSA viene decrittografato per il recupero (X, Y). Il decryptor calcola H (X) e lo xors con Y, per trovare r, che è r = Y ⊕ H (X). Quindi il decryptor calcola G (r) e lo aggiorna con X per recuperare il messaggio originale (e il pad può essere troncato lasciando cadere tutto a partire dall'ultimo 1 seguito da tutti gli zeri).

    
risposta data 15.06.2013 - 04:19
fonte

Leggi altre domande sui tag