Stream cipher

Cifrari a flusso. Molto simili a One time pad, ma, essendo deterministico, utilizzano delle chiavi pseudo-random.

Questo tipo di algoritmo prende come input una chiave di piccole dimensioni, su cui genera un dato (keystream) pseudo random. Questo keystream sembra un dato random.

Per la encryption si fa una operazione di xor tra il messaggio e la keystream.

Dal momento che è un algoritmo deterministico, serve un modo per evitare gli attacchi con analisi di frequenza. Si introduce quindi il nonce, un dato, che può essere un contatore, sempre diverso per ogni encryption, e che rende il dato finale sempre differente.

Se si utilizza sempre lo stesso nonce, è molto pericoloso.

Gli schemi stream cipher possono essere nativi, oppure possono essere utilizzati come primitiva.

Nativi

Quasi tutti gli standard sono deprecati. Uno dei pochi ancora in uso è ChaCha20.