Stream di chiavi - Keystream
In crittografia , un keystream è un flusso di caratteri casuali o pseudocasuali che vengono combinati con un messaggio di testo in chiaro per produrre un messaggio crittografato (il testo cifrato).
I "caratteri" nel keystream possono essere bit , byte , numeri o caratteri effettivi come AZ a seconda del caso d'uso.
Di solito ogni carattere nel keystream viene aggiunto, sottratto o XORed con un carattere nel testo in chiaro per produrre il testo cifrato, usando l'aritmetica modulare .
I keystream vengono utilizzati nel codice one-time pad e nella maggior parte dei codici a flusso . I cifrari a blocchi possono anche essere usati per produrre keystream. Ad esempio, la modalità CTR è una modalità a blocchi che fa sì che un codice a blocchi produca un flusso di chiavi e quindi trasforma il codice a blocchi in un codice a flusso.
Esempio
In questo semplice esempio usiamo l'alfabeto inglese di 26 caratteri dalla az. Quindi non possiamo crittografare numeri, virgole, spazi e altri simboli. I numeri casuali nel keystream devono quindi essere almeno compresi tra 0 e 25.
Per crittografare aggiungiamo i numeri del flusso di chiavi al testo in chiaro. E per decifrare sottraiamo gli stessi numeri di keystream dal testo cifrato per ottenere il testo in chiaro.
Se un numero di testo cifrato diventa maggiore di 25, lo inseriamo in un valore compreso tra 0-25. Quindi 26 diventa 0 e 27 diventa 1 e così via. (Tale avvolgimento è chiamato aritmetica modulare .)
Qui il messaggio in chiaro "attacco all'alba" è combinato per aggiunta con il keystream "kjcngmlhylyu" e produce il testo cifrato "kcvniwlabluh".
| Testo in chiaro | un | T | T | un | C | K | un | T | D | un | w | n |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Testo in chiaro come numeri | 0 | 19 | 19 | 0 | 2 | 10 | 0 | 19 | 3 | 0 | 22 | 13 |
| Keystream | K | J | C | n | G | m | io | h | sì | io | sì | tu |
| Keystream come numeri | 10 | 9 | 2 | 13 | 6 | 12 | 11 | 7 | 24 | 11 | 24 | 20 |
| Testo cifrato come numeri | 10 | 28 | 21 | 13 | 8 | 22 | 11 | 26 | 27 | 11 | 46 | 33 |
| Testo cifrato come numeri racchiusi tra 0-25 |
10 | 2 | 21 | 13 | 8 | 22 | 11 | 0 | 1 | 11 | 20 | 7 |
| Testo cifrato come testo | K | C | v | n | io | w | io | un | B | io | tu | h |
Riferimenti
- Manuale di crittografia applicata di Menezes, van Oorschot e Vanstone (2001), capitoli 1, 6 e 7.