Perché la crittografia con lo stesso one-time-pad non è buona?


20

Per crittografare un messaggio con un tasto per una sola volta k , fai E n c ( m 1 , k ) = m 1k .m1kEnc(m1,k)=m1k

Se usi lo stesso per crittografare un messaggio diverso m 2 ottieni E n c ( m 2 , k ) = m 2k e se esegui Xor del testo cifrato che ottieni ( m 1k ) ( m 2k ) = m 1m 2km2Enc(m2,k)=m2k

(m1k)(m2k)=m1m2

quindi, OK, c'è qualche perdita di informazioni perché impari m1m2 , ma perché non è sicuro? Non ho modo di imparare (diciamo) se non conosco m 2 . Quindi perché è sbagliato usare k due volte ??m1m2k


si, questa è semina. Principalmente, seminando il dibattito sul confine tra crypto.se e cs.se.
Ran G.

Si prega di consultare qui per una discussione dei tag utilizzati.
Raffaello

Ricordo di aver visto una visualizzazione che lo rende davvero chiaro, ma non riesco a trovarlo ora. Qualcuno sa di cosa sto parlando? (Spero di non confonderlo con un'altra immagine crittografica come ECB linux-pinguin, ecc.)
Ran G.

1
@Suonò. : giusto - la domanda crypto.se corrispondente è su Come trarre vantaggio dal riutilizzo dei tasti del pad singolo?
David Cary,

Risposte:


14

m1m2

(m2k)m2=k

k

Questa strategia generale per la rottura di un sistema crittografico è nota come noto attacco in chiaro . Molti sistemi, come AES e RSA, sono ritenuti sicuri contro questi attacchi. Ma un pad una tantum diventa completamente insicuro nei loro confronti a meno che non venga utilizzato un pad nuovo per ogni crittografia, motivo per cui vengono chiamati "pad one-time".


11

È insicuro proprio per il motivo che hai citato: c'è qualche perdita di informazioni.

Fondamentalmente, se hai delle ipotesi sui caratteri semplici (testo in inglese, file con struttura nota, ecc.), Si ottiene una facile analisi statistica. Probabilmente usarlo due volte non cambia significativamente la praticità dell'attacco, ma usandolo molte volte con un testo in chiaro non casuale, alla fine rivela abbastanza informazioni per recuperare la chiave.

Infine, se hai la possibilità di usarlo solo due volte , hai anche la possibilità di usarlo solo una volta - la restrizione è che questi one-time-pad non devono essere usati potenzialmente sconosciuti e nel tempo, danneggiando il numero di volte.

m1m2 .

Gli attacchi di testo normale noti sono abbastanza comuni, è ragionevolmente facile forzare un meccanismo di crittografia per crittografare qualcosa che conosci a priori. In caso contrario, di solito è possibile fare ipotesi statistiche ragionevoli.


Inoltre, i time pad hanno la proprietà che se si conosce il testo cifrato e anche parte del testo in chiaro, è possibile recuperare immediatamente la parte corrispondente della chiave, il che significa che parte di tutti i messaggi futuri crittografati con lo stesso pad vengono effettivamente inviati nel chiaro (rendendo più facile indovinare un po 'più di testo in chiaro, rivelando più della chiave, ecc.). Se stai crittografando molte cose come e-mail o richieste HTTP, l'aggressore può quasi sempre conoscere parte del testo in chiaro semplicemente grazie alla struttura di questi protocolli.
Ben

6

(m1k)(m2k)=m1m2

log226=4.7

Se si desidera utilizzare un pad una tantum due volte, è necessario prima comprimere il messaggio. E anche in questo caso, se non si utilizza un algoritmo di compressione quasi perfetto e si utilizza il pad una tantum più volte, rimarrà abbastanza entropia per recuperare teoricamente i messaggi. Non so quanto sarebbe difficile in pratica.


4

m1m2m1m2

In realtà, per molti casi, è molto semplice. Ecco una semplice visualizzazione.


2

Ecco un modo intuitivo di rappresentare l'approccio senza ricorrere alla matematica. Supponiamo che tu abbia due messaggi crittografati che sono stati crittografati dallo stesso time pad.

  1. Fai un'ipotesi su una parola o frase che può essere contenuta in uno dei messaggi. Diciamo la frase "Bollettino meteorologico"
  2. A partire dal messaggio 1, supponi che "Bollettino meteorologico" si verifichi nella posizione della prima lettera.
  3. Calcola indietro i primi 14 caratteri del time pad.
  4. Decifrare i primi 14 caratteri del messaggio 2 utilizzando l'OTP ricalcolato.
  5. Se il testo in chiaro sembra gobble-di-gook, torna al passaggio 2 e ripeti alla posizione della 2a lettera. Tuttavia, se ricevi un testo significativo (ad esempio "Buongiorno I", quindi congratulazioni, hai elaborato i primi 14 caratteri dell'OTP (e i primi 14 caratteri di ogni lettera)
  6. Se arrivi alla fine del messaggio 1 senza vomitare altro che lettere casuali, puoi concludere che la frase "Bollettino meteorologico" non compare nel messaggio 1. Torna al passaggio 1 con una frase diversa come "Caro colonnello "
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.