Che cos’è un cifrario a flusso?

Un cifrario a flusso è un tipo di algoritmo utilizzato nella crittografia dei dati in cui l’origine che deve essere crittografata viene elaborata in base a una sequenza di chiavi che appare casuale. Questo tipo di cifratura è alquanto flessibile, nel senso che può variare la cifratura durante l’elaborazione del testo. A volte vengono anche indicati come cifrari di stato perché la crittografia dipende anche dallo stato corrente dell’operazione. A differenza dei cifrari a blocchi, che funzionano su blocchi di dati a 64 bit alla volta, un cifrario a flusso può operare su un singolo bit. Per questo motivo, un flusso può essere elaborato ad alta velocità con una potenza di elaborazione molto ridotta.

Il primo cifrario a flusso è stato ideato da Gilbert Vernam nel 1917. Vernam in seguito ha anche contribuito a creare un codice noto come one-time pad, che è una forma di cifrario a flusso che utilizza una chiave una tantum per crittografare i dati. In un one-time pad, la chiave generata ha la stessa lunghezza dei dati che devono essere crittografati, è completamente casuale e non viene mai più utilizzata da nessun’altra parte, da cui il nome.

Quando viene elaborato rispetto ai dati da crittografare, in genere indicati come testo in chiaro, il testo cifrato risultante è impossibile da decifrare senza la chiave. L’one-time pad è difficile da affrontare nella maggior parte degli scenari, e viene quindi utilizzato solo per situazioni molto esclusive. Tuttavia, un cifrario a flusso è generalmente considerato utile, quindi le chiavi sono state accorciate e rese pseudocasuali, il che significa che sono statisticamente casuali ma in realtà non lo sono.

Il cifrario a flusso ha la capacità di crittografare al volo. In questo modo, è persino facile che le persone eseguano semplici cifrature a flusso da persone su carta e penna, mentre una cifratura a blocchi richiede in genere l’uso di un computer per l’elaborazione. Il testo in chiaro scorre attraverso il processo di crittografia insieme al keystream, la sequenza pseudocasuale che costituisce la chiave, dove viene convertito ed esce dall’altra parte come testo cifrato.

Di solito, questa crittografia avviene tramite un’operazione esclusiva o (XOR) sui singoli bit mentre passano attraverso la crittografia. Un semplice cifrario XOR utilizza un tipo di disgiunzione logica come base, che essenzialmente afferma che il risultato può essere vero se uno degli operandi è vero, ma non entrambi. Ad esempio, se un bit che si muove attraverso il processo di crittografia è uno zero o uno e il bit del flusso di chiavi accoppiato non corrisponde, l’output risultante è uno. Se il bit e il bit del keystream accoppiato corrispondono, dove entrambi sono uno o entrambi sono zero, il risultato è zero. Il flusso crittografato di uno e zero viene quindi decifrato dall’altra parte della trasmissione utilizzando lo stesso flusso di chiavi per convertire i bit nel loro testo in chiaro originale.

Esistono due tipi di cifratura a flusso. Utilizzando un metodo sincrono, il flusso di chiavi viene creato separato dal testo in chiaro o dal testo cifrato e quindi unito per fornire la crittografia o la decrittografia. Con questo metodo, entrambe le estremità trasmittente e ricevente della trasmissione devono rimanere sincronizzate laddove operano sulla stessa chiave e nella stessa posizione nella chiave. Se si verifica un problema, la decrittazione deve ricominciare da capo oppure potrebbero essere presenti flag posizionati a intermittenza in tutto il testo cifrato che indicano nuovi punti di partenza. Un cifrario autosincronizzante, d’altra parte, aggiornerà il flusso di chiavi in ​​base a un certo numero di cifre precedenti nel testo cifrato.
Uno dei cifrari a flusso più utilizzati, chiamato RC4, è stato creato da RSA Data Security®. Viene concesso in licenza e utilizzato in numerosi prodotti software, nonché nel protocollo SSL (Secure Socket Layer) utilizzato nelle comunicazioni Internet sicure e nella crittografia WEP (wired equivalent privacy) utilizzata con i dispositivi wireless. Un altro cifrario spesso utilizzato è noto come ORYX, che ha trovato impiego nelle trasmissioni di dati dei telefoni cellulari che devono essere crittografate. IBM® ha anche sviluppato un metodo di crittografia del flusso noto come SEAL, che ha trovato impiego nella crittografia del disco rigido.