Un “stream cipher” (cifrario a flusso) è un tipo di algoritmo di cifratura che lavora cifrando un messaggio un bit, un byte o una parola di computer alla volta. Questo metodo è in contrasto con i cifrari a blocchi, che cifrano blocchi di dati di dimensioni fisse in una sola operazione.
Funzionamento
Il funzionamento di un stream cipher si basa sulla generazione di una sequenza di bit, detta keystream, che viene combinata con il messaggio originale (testo in chiaro) bit per bit utilizzando operazioni di tipo XOR. La sicurezza del cifrario dipende dalla casualità e dall’imprevedibilità della keystream.
Keystream
La keystream è una sequenza di bit pseudocasuali generata da un generatore di numeri pseudocasuali (PRNG). Il PRNG viene inizializzato con una chiave segreta che deve rimanere sconosciuta a chiunque non sia autorizzato a decifrare il messaggio.
Operazione di XOR
L’operazione di XOR (exclusive OR) è una funzione logica che produce un valore vero (1) solo quando le sue due variabili di input sono diverse. Questa operazione viene applicata tra ogni bit del messaggio originale e il corrispondente bit della keystream. Se un bit del messaggio è 1 e il bit della keystream è 0, il risultato sarà 1, e viceversa.
Esempi di Stream Cipher
Alcuni esempi noti di stream cipher includono:
- RC4: uno dei cifrari a flusso più conosciuti, sebbene oggi sia considerato insicuro per molte applicazioni.
- Salsa20 e ChaCha20: cifrari a flusso moderni progettati per offrire un alto livello di sicurezza e prestazioni elevate.
Vantaggi e Svantaggi
Vantaggi
- Efficienza: I cifrari a flusso sono generalmente più veloci dei cifrari a blocchi perché cifrano i dati bit per bit.
- Flessibilità: Possono cifrare flussi di dati di qualsiasi lunghezza senza dover dividere il messaggio in blocchi.
Svantaggi
- Vulnerabilità agli attacchi: Se la stessa keystream viene utilizzata più volte (ad esempio, se la chiave segreta non viene cambiata), il cifrario a flusso può diventare vulnerabile ad attacchi noti come l’attacco “keystream reuse”.
- Gestione della chiave: La necessità di mantenere la chiave segreta completamente sicura è cruciale, e qualsiasi compromissione della chiave può portare alla compromissione dell’intero sistema di cifratura.
Applicazioni
I stream cipher sono spesso utilizzati in applicazioni in cui la velocità di cifratura è critica, come la cifratura delle comunicazioni in tempo reale (ad esempio, nelle connessioni di rete) o nei sistemi embedded con risorse limitate.
Conclusione
I cifrari a flusso rappresentano un’importante categoria di algoritmi crittografici, apprezzati per la loro velocità e flessibilità. Tuttavia, richiedono una gestione attenta della chiave e una generazione sicura della keystream per garantire la loro efficacia e sicurezza.