La principale differenza tra un codice a blocchi e un codice di flusso è che il codice a blocchi crittografa e decrittografa un blocco del testo alla volta. D'altra parte, lo stream cipher crittografa e decrittografa il testo prendendo l'un byte del testo alla volta.
Grafico comparativo
Base per il confronto | Cifra di blocco | Stream cipher |
---|---|---|
Di base | Converte il testo in chiaro prendendo il suo blocco alla volta. | Converte il testo prendendo un byte del testo normale alla volta. |
Complessità | Design semplice | Complesso relativamente |
Numero di bit utilizzati | 64 bit o più | 8 bit |
Confusione e Diffusione | Usa sia confusione e diffusione | Si basa solo sulla confusione |
Modalità dell'algoritmo utilizzate | ECB (Electronic Code Book) CBC (Cipher Block Chaining) | CFB (Cipher Feedback) OFB (Feedback di uscita) |
Reversibilità | L'inversione del testo crittografato è difficile. | Usa XOR per la crittografia che può essere facilmente invertita nel testo normale. |
Implementazione | Feistel Cipher | Vernam Cipher |
Definizione di Block Cipher
Block Cipher prende un messaggio e lo spezza in una dimensione fissa di blocchi e converte un blocco del messaggio in un istante. Ad esempio, abbiamo un messaggio in testo normale "STREET_BY_STREET" richiesto per essere crittografato. Utilizzando il codice bock, "STREET" deve essere prima crittografato, seguito da "_BY_" e infine "STREET".
Nella pratica, la comunicazione avviene solo in bit. Pertanto, STREET indica effettivamente l'equivalente binario del carattere ASCII di STREET. Successivamente, qualsiasi algoritmo li crittografa; i bit risultanti vengono trasformati nel loro equivalente ASCII.
Un evidente problema riguardante l'utilizzo delle cifrature a blocchi è la ripetizione del testo, per il quale viene generato lo stesso codice. Quindi, darebbe un suggerimento al crittanalista che rende più facile capire le stringhe ricorrenti di testo semplice. Di conseguenza, può rivelare l'intero messaggio.
Per superare questo problema viene utilizzata la modalità concatenamento . In questa tecnica, il precedente blocco di testo cifrato è mescolato con il blocco corrente, in modo tale che il testo cifrato vago, questo evita i pattern ricorrenti di blocchi con lo stesso contenuto.
Definizione di Stream Cipher
Stream Cipher in genere crittografa un byte del messaggio in quel momento invece di utilizzare i blocchi. Facciamo un esempio, supponiamo che il messaggio originale (testo normale) sia "blue sky" in ASCII (cioè in formato testo). Quando converti questi ASCII in valori binari equivalenti, darà l'output in forma 0 e 1. Lascia che sia tradotto in 010111001.
Per la crittografia e la decrittografia, viene utilizzato un generatore di bit pseudocasuali in cui vengono caricati una chiave e un testo normale. Un generatore di bit pseudocasuali crea un flusso di numeri a 8 bit apparentemente casuali noti come keystream . Lascia che la chiave di input sia 100101011. Ora la chiave e il testo in chiaro sono XORed. La logica XOR è semplice da capire.
XOR produce un'uscita di 1 quando un ingresso è 0 e l'altro è 1. L'uscita è 0 se entrambi gli ingressi sono 0 o entrambi gli ingressi sono 1.
La confusione è un metodo che garantisce che un testo cifrato non dia alcun indizio sul testo in chiaro originale.
La diffusione è una strategia utilizzata per migliorare la ridondanza del testo semplice diffondendolo su righe e colonne.
Differenze chiave tra il cifrario a blocchi e il cifrario di flusso
- La tecnica di cifratura a blocchi comporta la crittografia di un blocco di testo alla volta, ad esempio singolarmente. Allo stesso modo, decifrare il testo prendendo un blocco dopo l'altro. Al contrario, la tecnica Stream cipher prevede la crittografia e la decrittografia di un byte del testo alla volta.
- Il cifrario a blocchi utilizza sia la confusione che la diffusione mentre il codice di flusso si basa solo sulla confusione.
- La dimensione normale del blocco potrebbe essere 64 o 128 bit nel codice a blocchi. Per contro, 1 byte (8 bit) alla volta viene convertito nel codice di flusso.
- Il cifrario a blocchi utilizza le modalità dell'algoritmo ECB (Electronic Code Book) e CBC (Cipher Block Chaining) . Al contrario, Stream cipher utilizza le modalità dell'algoritmo CFB (Cipher Feedback) e OFB (Output Feedback) .
- Il cifrario Stream utilizza la funzione XOR per convertire il testo normale in testo cifrato, motivo per cui è facile invertire i bit XORed. Considerando che Block Cipher non usa XOR per farlo.
- Il cifrario a blocchi utilizza la stessa chiave per crittografare ogni blocco mentre il codice di flusso utilizza una chiave diversa per ogni byte.
Conclusione:
Block Cipher e Stream Cipher differiscono nel modo in cui il testo semplice viene crittografato e decrittografato. L'idea alla base del cifrario a blocchi è quella di dividere il testo semplice in blocchi e quindi di crittografarli ulteriormente. Mentre lo stream cipher converte il testo semplice bit per bit in modo simile al flusso.