# ESTREAM

L'eSTREAM è un progetto europeo sponsorizzato dal consorzio ECRYPT (European Network of Excellence for Cryptology ) per identificare nuovi cifrari a flusso da utilizzare diffusamente. L'eSTREAM è stato avviato ufficialmente nel novembre del 2004 ed è durato 4 anni: ha portato al rilascio, nell'aprile del 2008 di un portafoglio di cifrari a flusso di nuova concezione (rivisitato nel settembre dello stesso anno), suddivisi in due grandi famiglie, una ottimizzata per l'implementazione in software ed una per quella in hardware. L'eSTREAM segue il NESSIE (New European Schemes for Signatures, Integrity and Encryption), un altro progetto europeo per la selezione di primitive crittografiche in essere dal 2000 al 2003 e che ha visto cadere sotto la crittoanalisi tutti i sei algoritmi a flusso presentati.

## I profili

Il progetto eSTREAM inserisce gli algoritmi inviati in uno oppure in entrambi i gruppi seguenti:
* Profilo 1: raccoglie i cifrari a flusso studiati per l'implementazione in software;
* Profilo 2: raccoglie i cifrari a flusso studiati per essere implementati in hardware con limitate risorse tipo dispositivi con piccoli quantitativi di memoria o bassi consumi.
Entrambi i profili contenevano la sotto-categoria "A", che raccoglieva i cifrari che offrivano, oltre alla cifratura, anche l'autenticazione. All'ultima fase del progetto, però, non è arrivato nessun cifrario che implementasse tale caratteristica.

## Le fasi

L'eSTREAM è stato diviso in 3 fasi distinte.

### Fase 1

La Fase 1 ha visto un'analisi generale degli algoritmi presentati per la selezione di quelli ritenuti più interessanti per le fasi successive. In questa prima cernita si sono analizzati i candidati in base a criteri di sicurezza, prestazioni (in relazione principalmente a quelle offerte dall'AES), semplicità e flessibilità del codice, accuratezza e completezza della documentazione. I candidati per il Profilo 1 erano accettati solo se dimostravano prestazioni in software superiori a quelle dell'AES-128 in modalità CTR.
Durante questa fase i candidati sono stati sottoposti ad una notevole serie di analisi, i cui risultati sono stati pubblicati di volta in volta. Il progetto ha anche sviluppato un framework per eseguire i test sulle prestazioni dei candidati.
La Fase 1 si è ufficialmente conclusa il 27 marzo 2006.

### Fase 2

Nel luglio del 2006 è stata avviata ufficialmente la Fase 2. Durante questa fase si sono intensificati gli studi sui candidati accettati nella prima fase e sono stati selezionati, da entrambi i profili, alcuni algoritmi, definiti Focus Phase 2 algorithms, trovati di particolare interesse e su cui si sono concentrati maggiormente la crittoanalisi e lo studio delle prestazioni. Questi algoritmi erano ri-classificati ogni 6 mesi.

### Fase 3

L'ultima fase è iniziata nell'aprile del 2007 ed ha visto coinvolti 16 degli algoritmi inizialmente ammessi al progetto. La Fase 3 è terminata il 15 aprile 2008 con l'annuncio dei candidati che sono stati selezionati per il portafoglio dell'eSTREAM. Per il Profilo 1 essi sono: HC-128, Rabbit, Salsa20/12, SOSEMANUK. Per il Profilo 2 essi sono: F-FCSR-H versione 2, Grain versione 1, MICKEY versione 2, Trivium. Successivamente, l'8 settembre 2008, l'F-FCSR-H è stato tolto dal portafoglio perché studi compiuti nei mesi successivi alla prima pubblicazione della lista dei candidati selezionati hanno portato alla scoperta di alcune vulnerabilità dell'algoritmo.

## Gli algoritmi

Qui di seguito sono riportati gli algoritmi che hanno partecipato al progetto eSTREAM:
eSTREAM - Cifrari del Profilo 1 (SW) :
| Archiviati dopo la Fase 1 | Archiviati dopo la Fase 2 | Archiviati dopo la Fase 3 | Inseriti nel Portafoglio dell'eSTREAM |
| F-FCSR | ABC | CryptMT | HC-128 |
| Fubuki | DICING | Dragon | Rabbit |
| Frogbit(M) | Phelix(M) | LEX | Salsa20/12 |
| Hermes | Polar Bear | NLS | SOSEMANUK |
| MAG | Py | | |
| Mir-1 | | | |
| Pomaranch | | | |
| SSS(M) | | | |
| TRBDK3 YAEA | | | |
| Yamb | | | |
eSTREAM - Cifrari del Profilo 2 (HW) :
| Archiviati dopo la Fase 1 | Archiviati dopo la Fase 2 | Archiviati dopo la Fase 3 | Inseriti nel Portafoglio dell'eSTREAM |
| MAG | Achterbahn | DECIM | Grain |
| SFINKS(M) | Hermes | Edon80 | MICKEY |
| SSS | LEX | Moustique | Trivium |
| TRBDK3 YAEA | NLS | Pomaranch | F-FCSR-H (*) |
| Yamb | Phelix | | |
| | Polar Bear | | |
| | Rabbit | | |
| | Salsa20 | | |
| | TSC-3 | | |
| | VEST(M) | | |
| | WG | | |
| | Zk-Crypt(M) | | |
Note:
* alcuni cifrari sono stati proposti sia per il Profilo 1 che per il Profilo 2;
* i cifrari contrassegnati con sono brevettati e/o presentano alcune limitazioni d'uso;
* * il cifrario F-FCSR-H, inizialmente inserito nel portafoglio dell'eSTREAM, è stato da esso tolto l'8 settembre dopo che è stata scoperta una sua vulnerabilità
* (M) denota un algoritmo dotato di Message authentication code

## Revisioni annuali

Essendo il progetto eSTREAM basato su algoritmi nuovi e sostanzialmente poco studiati, è stato deciso di sottoporli ad una revisione periodica ogni 4 anni circa onde aggiornare il portafoglio tenendo in considerazione gli avanzamenti in campo crittanalatico.
Il primo aggiornamento è stato quello già citato dell'8 settembre 2008 che ha portato all'eliminazione dal portafoglio del cifrario F-FCSR-H.
La prima revisione è datata 31 luglio 2009 e non ha apportato nessuna modifica; il documento è stato poi ripubblicato in versione 1.1 il 1º ottobre 2009.
La seconda revisione è datata 16 gennaio 2012: con essa gli analisti assumono come dato di fatto che il Grain v1 ad 80 bit non è più supportato dai suoi autori, ma decidono di non inserire nel portafoglio dei cifrari il suo successore, il Grain-128a, per via del fatto che quest'ultimo occupa più risorse e lavora ad una velocità dimezzata rispetto al Grain v1.