Pseudocodice di crittografia a blocchi

1

Supponiamo di avere un codice a blocchi la cui dimensione della chiave sia 128 bit. ma la lunghezza del blocco è di otto bit. Sia E (m ') un oracle di crittografia che cripta eseguendo il nostro cifrario a blocchi "breve" in modalità CBC.

Come scriverò pseudocodice per un avversario, A (m), che, dato E (m '), può probabilmente decodificare qualsiasi input in un tempo ragionevole usando l'hardware moderno.

I miei pensieri: La m 'che A passa a E non si baserà sulla m data a A. Ma come potrei produrre uno pseudocodice per questo ...?

    
posta Sungwon Lee 26.01.2014 - 01:28
fonte

1 risposta

1

Il termine pertinente è codebook . Un cifrario a blocchi è una permutazione deterministica : per una data chiave, mappa i valori del blocco di input in valori di blocco di output, in modo tale che qualsiasi due valori di blocco di input distinti si associno a valori di blocco di uscita distinti. Il "codebook" è la descrizione completa di tale permutazione: per ogni possibile valore del blocco di input, fornisce l'output corrispondente.

Si può dire che il key-and-algorithm è una rappresentazione compatta del codebook, che consente la valutazione dell'algoritmo su qualsiasi dato input senza dover memorizzare da qualche parte il codebook completo. Tuttavia, se puoi, come utente malintenzionato, ricostruire il libro di codici, quindi puoi decodificare tutto ciò che è crittografato con lo stesso algoritmo e la stessa chiave: hai solo una grande tabella di ricerca.

Con blocchi a 8 bit, ci sono solo 2 8 = 256 possibili valori di blocco, quindi il codebook è molto piccolo: è solo una mappa di 256 valori possibili. Con la crittografia oracle a portata di mano, è facile ottenere una copia del codebook completo, ad es. inviando 256 messaggi di un byte per crittografare all'oracolo. Ci possono essere dettagli, a seconda di quanto segue:

  • L'oracolo sceglie un IV casuale, o userà il valore IV fornito dall'attaccante?
  • È un obiettivo ridurre al minimo il numero di richieste all'oracolo? E / o il numero totale di byte inviati a Oracle?

Qui può esserci un'analisi interessante. Ad esempio, se si invia una richiesta di crittografia per una sequenza di 256 byte di valore 0, il risultato della crittografia descriverà un completo ciclo di permutazione ; l'IV seleziona quale ciclo ottieni. Definire una strategia per il recupero di un libro di codici che riduca al minimo il numero di richieste distinte, imponendo al tempo stesso una dimensione massima bassa per ogni richiesta, può essere difficile, rendendo così buoni i compiti a casa.

    
risposta data 26.01.2014 - 15:51
fonte

Leggi altre domande sui tag