Perché è necessario ridurre al minimo la ridondanza nel testo cifrato di un codice di flusso?

0

Sono completamente confuso su questo. Capisco perché vorresti minimizzare la ridondanza se stai usando un codice di sostituzione, ma perché è necessario quando usi un codice di flusso come RC4? Dal momento che l'attaccante non ha la chiave, come trarrebbero conclusioni sul contenuto del testo in chiaro sulla base delle frequenze relative dei byte nel testo cifrato? Ad esempio, è stato riscontrato che RC4 presenta una debolezza in quanto i byte zero sono più frequenti. Ma un byte zero può corrispondere potenzialmente a qualsiasi byte nel testo in chiaro, dal momento che si sta eseguendo XOR ogni singolo byte del testo in chiaro con un valore diverso. Quindi, come sarebbe sfruttato? Spero che questa domanda abbia un senso.

    
posta Legend of Overfiend 06.03.2017 - 18:44
fonte

3 risposte

3

Il problema principale con il bug che stai descrivendo è che 0 appare più frequentemente in certi bit del flusso di output. L'attacco più comune è che un utente malintenzionato può creare una vittima che crea milioni di connessioni a un server, mentre osserva il traffico di rete.

Per fare un esempio, cambiamo "bit" in "byte", aumentiamo le possibilità e vediamo cosa succede.

Diciamo:

  • Ho un cookie segreto con il valore 'a';
  • Ho qualche codice stream kick-ass che emette byte casuali;
  • un utente malintenzionato può farmi eseguire milioni di connessioni a un server;
  • su ogni richiesta, il primo carattere per il mio testo in chiaro è il mio cookie ('a') seguito da un altro testo in chiaro;
  • la crittografia
  • è una xor di testo in chiaro con i byte generati dallo stream (come con RC4);
  • quell'attaccante può monitorare il mio traffico di rete.

Con ogni nuova connessione che faccio al server, viene generato un nuovo flusso casuale. Ciò significa che il mio cookie ('a') verrà xo'ed con un byte casuale ogni volta. Poiché ciò accade in modo uniforme a caso, il nostro aggressore non può dedurre informazioni sul cookie, in quanto la possibilità di 'a' xor qualsiasi personaggio è 1/256.

Introduciamo ora un difetto nel nostro codice stream. Per il primo byte, ha la tendenza a produrre 'b' con una probabilità del 10%, e ha una probabilità del 90% di produrre qualsiasi altro carattere. Ora, se l'autore dell'attacco mi ha creato 10 connessioni al server, c'è una possibilità 1/10 che 'b' xor 'a' appaia come il primo byte del testo cifrato, invece del precedente 1/256. Quindi, dopo 100 connessioni, "b" xor "a" dovrebbe essere apparso circa 10 volte, ecc. Ecc.

Ricorda che ci sono anche altri tipi di attacchi su RC4. Il riassunto degli attacchi su Wikipedia è in realtà molto bello:

link

    
risposta data 05.07.2017 - 12:53
fonte
1

La ragione principale per rimuovere la ridondanza dal flusso di testo in chiaro è che il testo in chiaro può essere compresso, ma il testo cifrato non può. Se stai cercando di ridurre la dimensione dei dati, questa è la tua unica opzione.

Un motivo di sicurezza per rimuovere la ridondanza sarebbe se si utilizza un blocco di codice in modalità Libro elettronico di codici . I dati ridondanti sono visibili come blocchi di testo cifrato duplicati. Tuttavia, l'approccio migliore consiste nel non utilizzare la BCE, poiché è intrinsecamente vulnerabile.

Crittograficamente, la ridondanza tra i messaggi ha portato a "presepi". Se il crittoanalista vede messaggi che sospetta che tutti inizino con "Buongiorno, Mr. Phelps", può usarlo per aiutare a decodificare i messaggi. Questo è il modo in cui i Turing's Bombes sono stati usati per spezzare il traffico tedesco di Enigma nella Seconda Guerra Mondiale.

Tuttavia, la rimozione della ridondanza all'interno di un singolo messaggio (comprimendo il testo in chiaro) ha portato ad alcuni nuovi attacchi. L' exploit di sicurezza CRIME usato differenze nelle dimensioni di compressione per recuperare byte di testo in chiaro.

    
risposta data 06.03.2017 - 19:13
fonte
0

Penso che sia necessario distinguere tra un time pad, in cui la ridondanza non conta davvero perché non può mai essere rilevata e le codifiche di stream convenzionali in cui la ridondanza nel testo in chiaro può portare a pattern rilevabili nel testo cifrato se il codice di flusso ha debolezze.

Un esempio molto semplice sarebbe un codice di flusso che ha un periodo molto breve (più corto del testo in chiaro da cifrare). Quindi le ridondanze nel testo in chiaro comparirebbero nel testo cifrato.

Le ridondanze nel testo cifrato spesso ti dicono qualcosa sul testo in chiaro, o almeno qualcosa sulla sua struttura e su quale parte stai guardando.

    
risposta data 06.03.2017 - 21:45
fonte

Leggi altre domande sui tag