# Xifratge de flux

El xifratge de flux, o xiframent de flux és una de les dues categories principals de xifratge modern en criptografia simètrica, l'altra és el xifratge de blocs. Un xifratge de flux pot gestionar dades de qualsevol longitud i no cal dividir-los.
Els xifradors de flux són, de fet, uns algorismes de xifratge que poden realitzar el xifrat incrementalment, convertint el text en clar en text xifrat bit a bit. Això s'aconsegueix construint un generador de flux de clau (keystream). Un flux de clau és una seqüència de bits de mida arbitrària que pot emprar-se per enfosquir els continguts d'un flux de dades combinant el flux de clau amb el flux de dades mitjançant la funció XOR. Si el flux de clau és segur, el flux de dades xifrades també ho serà.

## Ús

El xifratge de flux s'empra en algunes aplicacions, com ara el xifratge de converses telefòniques, en que el xifratge per blocs resulta inadequat perquè els fluxos de dades es produeixen en temps real i en fragments molt petits, fins i tot d'un bit, i seria un malbaratament omplir la resta de bits abans de xifrar les dades i transmetre'ls.
Es pot construir un generador de flux de clau iterant una funció matemàtica sobre un rang de valors d'entrada per produir un flux continu de valors de sortida. Llavors, els valors de sortida es concatenen per construir blocs de text en clar, i els blocs es xifren utilitzant una clau compartida per l'emissor i el receptor.
Per conservar la qualitat de servei del flux de dades, els blocs del flux de clau s'haurien de generar amb certa antelació al moment en què hagin de ser emprats i el procés que els produeix no hauria exigir gaire esforç de processament per no retardar excessivament el flux de dades.. De totes maneres, el xifratge de flux s'executa a major velocitat que el xifratge per blocs i té una menor complexitat a nivell màquina. Això no obstant, aquest xifratge pot veure's seriosament compromès si s'empra incorrectament (especialment si es reutilitza el mateix punt d'inici de xifratge).

## Tipus

Entre els xifratges de flux més corrents hi ha:
* A5/1, algorisme publicat el 1994, utilitzat en telèfons mòbils de tipus GSM per xifrar la comunicació per ràdio entre el mòbil i l'antena de relé més propera ;
* RC4, el més estès, dissenyat l'any 1987 per Ronald Rivest, utilitzat sobretot pel protocol WEP de Wi-Fi ;
* Py, un algorisme recent d' Eli Biham ;
* E0 utilitzat pel protocol Bluetooth.
Un xifratge de flux sovint pren la forma d'un generador de nombres pseudoaleatoris amb el qual es realitza un XOR entre un bit a la sortida del generador i un bit procedent de les dades. Tanmateix, XOR no és l'única operació possible; l'única limitació d'aquesta operació és que ha de ser inversible (la disjunció exclusiva és fins i tot involutiva), ja que l'operació d'addició dins d'un grup també és concebible (per exemple, suma entre dos bytes, mòdul 256). Un xifrat de blocs es pot convertir en un xifrat de flux gràcies a un mode de funcionament que permet encadenar diversos blocs i processar dades de qualsevol mida, .

## Xifratge i desxifratge mitjançant un " OR exclusiu »

Això és $\oplus ~$ l'operació booleana XOR, i $G_{m}:\{0,1\}^{n}\to \{0,1\}^{m}$ un generador pseudoaleatori. Aquest mecanisme basat en el principi de la màscara d'un sol ús utilitza la propietat involutiva de l'OR exclusiu.
* Xifratge de missatges $M\in \{0,1\}^{m}$ amb la clau $K\in \{0,1\}^{n}$ : $M\oplus G_{m}(K)=C$ .
* Desxifrat de missatges $C$ amb la clau $K$ : $C\oplus G_{m}(K)=(M\oplus G_{m}(K))\oplus G_{m}(K)=M\oplus (G_{m}(K)\oplus G_{m}(K))=M~$

## « El xifrat de flux : Viu o mort? »

A la conferència Asiacrypt de 2004, Adi Shamir va plantejar aquesta pregunta . Com a resposta, va néixer el projecte eStream [3] de la xarxa ECRYPT, que al llarg de quatre anys, va tenir com a objectiu, elaborar una cartera per promoure nous xifratges de flux. Com a resultat d'aquests quatre anys d'investigació, la cartera ja està disponible i recomana un total de set algorismes en dues categories diferents: quatre adequats per a ser emprats per programes i tres adequats per execució en màquina (en ordre alfabètic):
| Programa | Equipament |
| HC-128 | Grain v1 |
| Rabbit | MICKEY v2 |
| Salsa20 /12 | Trivium |
| Sosemanuk | |

## Referències

* ↑ Katz i Lindell, 2014.
* ↑ Menezes i CRC Press, 2014.

## Bibliografia

* (anglès) Adi Shamir. « Stream Cipher: Dead or Alive? ». Présentation invitée à Asiacrypt 2004. Lire en ligne PDF
* Jonathan Katz. «Stream Ciphers and Multiple Encryptions.». A: Introduction to Modern Cryptography, 2nd Edition (en anglès). Chapman and Hall, 2014, p. 583. ISBN 978-1-4665-7026-9. .
* Alfred J. Menezes. «Stream Ciphers». A: Handbook of Applied Cryptography (pdf) (en anglès). CRC Press, 2001, p. 816. ISBN 0-8493-8523-7. .
* Matt J. B. Robshaw, Stream Ciphers Technical Report TR-701, version 2.0, RSA Laboratories, 1995 (PDF).
* (1985) "The Stop and Go Generator" a EUROCRYPT '84. : 88–92. DOI:10.1007/3-540-39757-4_9
* Christof Paar, Jan Pelzl, "Stream Ciphers", Chapter 2 of "Understanding Cryptography, A Textbook for Students and Practitioners". (companion web site contains online cryptography course that covers stream ciphers and LFSR), Springer, 2009.

## Enllaços externs

* «Lloc del projecte eStream» (en anglès). Arxivat de l'original el 2017-02-13. [Consulta: 6 abril 2022].
* «Portfolio del projecte eStream» (en anglès). Arxivat de l'original el 2012-08-13. [Consulta: 6 abril 2022].