În criptografie , MOSQUITO este un cifr de flux cu auto-sincronizare bazat pe hardware, dezvoltat în 2005 de Yoan Dymen și Paris Kitsos . După ce [link 1] MOUSQUITO a fost spart, o a doua versiune a cifrului a fost dezvoltată și trimisă proiectului eSTREAM , unde a ajuns în a treia rundă de selecție. În 2008, a fost spartă și a doua versiune de MOSQUITO, MOUSTIQUE , [link 2] .
Semnificația generală a activității cifrului de flux cu autosincronizare MOSQUITO este similară cu activitatea cifrurilor de flux cu autosincronizare, în care generarea unui flux de cheie este creată de o funcție a biților cheie și a unui bit de text cifrat, care, de fapt, este similară cu funcționarea CFB cu un bloc de permutare. Caracteristicile cifrului MOSQUITO sunt prezența unei conducte în nouă etape care completează dependența condiționată a registrului de schimbare (Conditional Complementing Shift Registers - CCSR [Nota 1] ) și funcțiile de tranziție între etapele conductei de un tip special.
Cifrul MOSQUITO are opt registre de diferite lungimi, să numim registrul CCSR - , primul registru - , al doilea - și așa mai departe până la al șaptelea registru - . Vom desemna poziţia i-a a registrului j astfel: . Lungimi de înregistrare:
CCSR - 128 de biți;
- 53 de biți; - 12 biți; - 3 biți.Esența cifrului este de a calcula, pentru fiecare ciclu, biții oricăruia dintre registre (cu excepția CCSR) pe baza unei combinații de biți ai registrului anterior. Registrul CCSR funcționează ca un registru de deplasare: elementele registrului sunt deplasate și un bit de text cifrat (din ieșirea cifrului) este scris în poziția zero a registrului CCSR. Se notează prin regula prin care se calculează bitul din poziția i-a din registrul j. Apoi:
, unde ; , unde și , dacă indicele inferior al oricărui element din partea dreaptă a egalității devine mai mare de 53, atunci acest element este înlocuit cu 0; , unde ; , unde ;și în cele din urmă bitul keystream .
Este de remarcat faptul că calculul biților de registru se realizează folosind logica combinațională , iar deplasarea, desigur, folosind logica registrului , ceea ce înseamnă că, pentru a preveni funcționarea incorectă a conductei, atunci când biții din registru nu au timp să să fie procesate prin logică combinațională , este necesar ca funcția care implementează calculele să fie relativ simplă.