numero di testo cifrato - coppie di testo in chiaro necessarie nella doppia crittografia

5

So che nella crittografia singola è sufficiente richiedere almeno 1 paio di testo cifrato in chiaro, per eseguire una ricerca approfondita delle chiavi; continui a provare chiavi diverse finché non trovi una che corrisponde correttamente alla coppia che hai.

Avere più coppie sarebbe idealmente migliore, in quanto potreste scoprire se la chiave è corretta provandola con le altre coppie.

Tuttavia, quando si utilizza la doppia crittografia con due chiavi di k-bit scelte in modo casuale a caso quante coppie di testo cifrato in chiaro dovrebbero essere necessarie per identificare le chiavi K1 e K2 in una ricerca approfondita delle chiavi?

    
posta A.N 25.10.2015 - 00:51
fonte

2 risposte

1

Come minimo non riesco a capire perché ne avresti bisogno più di uno.

In pratica stai semplicemente combinando lo spazio della chiave crittografandolo due volte con due chiavi.

Semplicemente decrittografare il testo cifrato con ogni valore nello spazio K2, quindi decrittografare ogni risultato con ogni valore nello spazio K1. Quando trovi una corrispondenza hai il K1 corretto e un K2.

    
risposta data 25.10.2015 - 04:28
fonte
0

Se invii un messaggio a blocco singolo con crittografia singola, esiste una possibilità diversa da zero che più chiavi distinte mappino uno specifico testo in chiaro a uno specifico testo cifrato o che non ci siano chiavi che funzioneranno.

Un codice a blocchi è semplicemente una permutazione pseudo-casuale. Idealmente, il tasto seleziona semplicemente una permutazione casuale dello spazio di input in uno spazio di output - ed è necessariamente una permutazione, quindi la funzione di decrittografia può invertirla.

Come esempio di giocattolo di una permutazione pseudo-casuale con uno spazio tasti molto piccolo e uno spazio input / output molto piccolo, immagina la seguente funzione di crittografia che ha una chiave a 2 bit (0,1,2 o 3) che consente di inserire un messaggio di input a 2 bit in un messaggio di output a 2 bit. In particolare:

  • con la chiave 0: gli input {0,1,2,3} criptano rispettivamente ai testi cifrati {2,0,3,1}
  • con la chiave 1: {0,1,2,3} criptano rispettivamente a {1,0,3,2}
  • con la chiave 2: {0,1,2,3} criptano rispettivamente a {3,1,2,0}
  • con la chiave 3: {0,1,2,3} criptano rispettivamente a {3,1,0,2}

(Queste permutazioni sono state generate casualmente in python con scipy.random.permutation(range(4)) ).

Nota in questo esempio di giocattolo, che per alcune coppie come (m = 1, c = 2) e (m = 0, c = 0) dove non ci sono chiavi che funzionerebbero. Nel frattempo per altre coppie come (m = 0, c = 3) e (m = 1, c = 1) ci sono più chiavi (in entrambi i casi k = 2 o k = 3) che funzionerebbero.

Quindi, nel peggiore dei casi per questa funzione di crittografia dei giocattoli, sono necessari 3 blocchi per identificarli in modo univoco. (Ad esempio, se i tuoi primi due messaggi erano 0 e 1 non saresti in grado di distinguere tra i tasti 2 e 3 finché non avrai ottenuto un terzo input).

Tuttavia, con blocchi di grandi dimensioni aventi più collisioni tra le stesse due chiavi sarà molto improbabile. Quindi in pratica se si forza bruta due coppie di messaggi cifrati a blocco singolo / testo cifrato con probabilità schiacciante ci sarebbe solo una chiave che funzioni per entrambi.

Nota, fare una doppia crittografia (con due chiavi indipendenti K1, K2) funziona esattamente come l'analisi della singola crittografia di una chiave che è la concatenazione di K1 e K2.

    
risposta data 23.03.2016 - 08:40
fonte

Leggi altre domande sui tag