Stream Cipher vs Block Cipher | Cipria di stato contro cifrario a blocchi
Nella crittografia, i ciprocci Stream e i cifrari a blocchi sono due algoritmi di crittografia / decrittografia che appartengono alla famiglia di cifrari a chiave simmetrica. Tipicamente un cifrario prende un testo in chiaro come input e produce un testo cifrato come output. I codici a blocchi crittografano blocchi di bit a lunghezza fissa utilizzando una trasformazione invariabile. I codici di flusso crittografano flussi di bit di lunghezza variabile e utilizzano una trasformazione variabile su ciascun bit.
Che cos'è un Cipher Stream?
I cifrari Stream appartengono alla famiglia di cifrari a chiave simmetrica. I codici di flusso combinano bit di testo semplice con un flusso di bit di cifratura pseudocasuale con l'uso dell'operazione XOR (esclusiva o). I codici di flusso crittografano le cifre in testo semplice una alla volta con trasformazioni diverse per le cifre successive. Poiché la crittografia di ogni cifra dipende dallo stato corrente del motore di crittografia, i codici di flusso sono noti anche come codici di stato. In genere, bit / morsi singoli vengono utilizzati come cifre singole. Per evitare problemi di sicurezza, è necessario assicurarsi che lo stesso stato iniziale non venga utilizzato più di una volta. La cifratura a flusso più diffusa è RC4.
Che cos'è un cifrario a blocchi?
Un codice a blocchi è un altro codice chiave simmetrico. I codici a blocchi operano su blocchi (gruppi di bit) a lunghezza fissa. I codici a blocchi usano una trasformazione fissa (invariata) per tutte le cifre nel blocco. Ad esempio, quando un blocco di x-bit di testo semplice (insieme a una chiave segreta) viene fornito come input per il motore di cifratura a blocchi, produce il corrispondente blocco x-bit di testo cifrato. La trasformazione effettiva dipende dalla chiave segreta. Allo stesso modo, l'algoritmo di decrittografia recupera il blocco originale di bit in chiaro di testo in chiaro usando come blocco il blocco x-bit del testo cifrato e la chiave segreta precedente. Nel caso in cui il messaggio di input sia troppo lungo rispetto alla dimensione del blocco, verrà suddiviso in blocchi e questi blocchi saranno (singolarmente) crittografati utilizzando la stessa chiave. Tuttavia, poiché viene utilizzata la stessa chiave, ciascuna sequenza ripetuta nel testo semplice diventa la stessa sequenza ripetuta nel testo cifrato e ciò potrebbe causare problemi di sicurezza. I codici a blocchi più diffusi sono DES (Data Encryption Standard) e AES (Advanced Encryption Standard).
Qual è la differenza tra un codice di flusso e un codice di blocco?
Sebbene sia i codici di flusso che i codici di blocco appartengono alla famiglia di cifrari di crittografia simmetrica, esistono alcune differenze chiave. I codici a blocchi codificano blocchi di bit di lunghezza fissa, mentre i codici di flusso combinano bit di testo semplice con un flusso di bit di cifratura pseudocasuale usando l'operazione XOR. Anche se i cifrari a blocchi utilizzano la stessa trasformazione, i codici di flusso utilizzano trasformazioni diverse in base allo stato del motore. I codici di flusso di solito vengono eseguiti più velocemente dei codici a blocchi. In termini di complessità hardware, i codici di flusso sono relativamente meno complessi. I cipri stream sono la tipica preferenza rispetto ai cifrari a blocchi quando il testo semplice è disponibile in quantità variabili (ad esempio, una connessione wifi sicura), poiché i codici a blocchi non possono operare direttamente su blocchi più brevi della dimensione del blocco. Ma a volte, la differenza tra i codici di flusso e i codici a blocchi non è molto chiara. Il motivo è che, quando si usano determinati modi operativi, un cifrario a blocchi può essere usato per agire come un cifrario di streaming permettendo di crittografare la più piccola unità di dati disponibile.