Cifratura in streaming vs cifratura a blocchi | State Cipher vs Block Cipher
In crittografia, i cifrari a flusso e i cifrari a blocchi sono due algoritmi di crittografia / decrittografia che appartengono alla famiglia dei cifrari a chiave simmetrica. Tipicamente un cifrario accetta un testo normale come input e produce un testo cifrato come output. I cifrari a blocchi crittografano blocchi di bit a lunghezza fissa utilizzando una trasformazione invariabile. I cifrari di flusso crittografano i flussi di bit con lunghezza variabile e utilizzano trasformazioni variabili su ogni bit.
Cos'è uno stream Cipher?
I cifrari a flusso appartengono alla famiglia dei cifrari a chiave simmetrica. I cifrari a flusso combinano bit di testo semplice con un flusso di bit di cifratura pseudocasuale con l'uso dell'operazione XOR (esclusivo-or). I cifrari di flusso crittografano le cifre in testo normale una alla volta con trasformazioni variabili per le cifre successive. Poiché la crittografia di ogni cifra dipende dallo stato corrente del motore di crittografia, le crittografie a flusso sono anche note come crittografie di stato. In genere, singoli bit / morsi vengono utilizzati come cifre singole. Per evitare problemi di sicurezza, è necessario assicurarsi che lo stesso stato iniziale non venga utilizzato più di una volta. Il cifrario a flusso più utilizzato è RC4.
Cos'è un Block Cipher?
Un cifrario a blocchi è un altro cifrario a chiave simmetrica. I cifrari a blocchi operano su blocchi (gruppi di bit) con lunghezza fissa. I codici a blocchi utilizzano una trasformazione fissa (invariabile) per tutte le cifre nel blocco. Ad esempio, quando un blocco di testo in chiaro a x bit (insieme a una chiave segreta) viene fornito come input al motore di cifratura a blocchi, produce il corrispondente blocco di testo cifrato a x bit. La trasformazione effettiva dipende dalla chiave segreta. Allo stesso modo, l'algoritmo di decrittografia recupera il blocco x-bit originale di testo in chiaro utilizzando il blocco x-bit del testo cifrato e la chiave segreta sopra come input. Nel caso in cui il messaggio di input sia troppo lungo rispetto alla dimensione del blocco, verrà suddiviso in blocchi e questi blocchi verranno (singolarmente) crittografati utilizzando la stessa chiave. Tuttavia, poiché viene utilizzata la stessa chiave,ogni sequenza ripetuta nel testo normale 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 cifrario in streaming e un cifrario a blocchi?
Sebbene sia i cifrari a flusso che i cifrari a blocchi appartengano alla famiglia dei cifrari con crittografia simmetrica, esistono alcune differenze fondamentali. I cifrari a blocchi crittografano blocchi di bit a lunghezza fissa, mentre i cifrari a flusso combinano bit di testo normale con un flusso di bit cifrato pseudocasuale utilizzando l'operazione XOR. Anche se i cifrari a blocchi utilizzano la stessa trasformazione, i cifrari a flusso utilizzano trasformazioni variabili in base allo stato del motore. I cifrari a flusso di solito vengono eseguiti più velocemente dei cifrari a blocchi. In termini di complessità hardware, i cifrari a flusso sono relativamente meno complessi. I cifrari a flusso sono la preferenza tipica rispetto ai cifrari a blocchi quando il testo in chiaro è disponibile in quantità variabili (ad esempio una connessione wifi sicura), perché i cifrari a blocchi non possono operare direttamente su blocchi più corti della dimensione del blocco. Ma a volte,la differenza tra cifrari a flusso e cifrari a blocchi non è molto chiara. Il motivo è che, quando si utilizzano determinate modalità di funzionamento, è possibile utilizzare un codice a blocchi per agire come un codice a flusso, consentendo di crittografare la più piccola unità di dati disponibile.