Un stream [1] [2] sau stream cipher [3] este un cifru simetric în care fiecare caracter text simplu este convertit într-un caracter criptat, în funcție nu numai de cheia utilizată, ci și de locația sa în fluxul de text simplu. Un cifr de flux implementează o abordare diferită a criptării simetrice decât cifrurile bloc .
Cifrurile în flux bazate pe registre de deplasare au fost utilizate în mod activ în anii de război, cu mult înainte de apariția electronicii. Au fost ușor de proiectat și implementat.
În 1965, Ernst Selmer, criptograful șef al guvernului norvegian, a dezvoltat teoria secvenței registrului de deplasare . Mai târziu, Solomon Golomb , un matematician al Agenției Naționale de Securitate din SUA , a scris o carte numită „Shift Register Sequences” în care a subliniat principalele sale realizări în acest domeniu, precum și pe cele ale lui Selmer.
Lucrarea lui Claude Shannon , publicată în 1949, a adus o mare popularitate cifrurilor în flux , în care Shannon a dovedit securitatea absolută a cifrului Vernam (cunoscut și sub numele de blocul de unică folosință). În cifrul Vernam , cheia are o lungime egală cu lungimea mesajului transmis în sine. Cheia este folosită ca gamma și, dacă fiecare bit al cheii este ales la întâmplare, atunci este imposibil să spargeți cifrul (deoarece toate textele posibile vor fi la fel de probabile). Până în prezent, au fost creați un număr mare de algoritmi de criptare a fluxului , precum: A3 , A5 , A8 , MUGI , PIKE , RC4 , SEAL .
Cea mai simplă implementare a cifrului de flux este prezentată în figură. Generatorul gamma produce un flux cheie (gamma): . Să notăm fluxul de biți text simplu ca . Apoi fluxul de biți de text cifrat este obținut prin aplicarea operației XOR : unde .
Decriptarea se realizează prin operația XOR între același gamma și textul cifrat: .
Evident, dacă secvența de biți gamma nu are perioadă și este aleasă aleatoriu, atunci este imposibil să spargeți cifrul. Dar acest mod de criptare are și caracteristici negative. Astfel, cheile care sunt comparabile ca lungime cu mesajele transmise sunt greu de utilizat în practică. Prin urmare, se utilizează de obicei o lungime mai mică a cheii (de exemplu, 128 de biți). Folosind-o, este generată o secvență de joc pseudo-aleatorie (trebuie să satisfacă postulatele Golomb ). Desigur, pseudo-aleatoria gamma poate fi exploatată într-un atac asupra unui cifr de flux.
Să presupunem, de exemplu, că în modul gamma pentru cifrurile de flux, un caracter al textului cifrat a fost distorsionat în timpul transmisiei pe un canal de comunicație . Evident, în acest caz, toate semnele primite fără distorsiuni vor fi decodificate corect. Se va pierde doar un caracter al textului. Și acum să ne imaginăm că unul dintre caracterele textului cifrat s-a pierdut în timpul transmisiei prin canalul de comunicare. Acest lucru va duce la decodarea incorectă a întregului text care urmează caracterului pierdut.
Practic, toate canalele de transmisie a datelor pentru sistemele de criptare în flux continuu conțin interferențe . Prin urmare, pentru a preveni pierderea de informații, problema sincronizării criptării și decriptării textului este rezolvată. Conform metodei de rezolvare a acestei probleme, sistemele de cifrare sunt împărțite în sisteme sincrone și auto-sincronizate.
Definiție:
Cifrele de flux sincron (SPC) sunt cifruri în care un flux de chei este generat independent de textul simplu și textul cifrat.
Când este criptat, generatorul de flux de cheie produce biți de flux de cheie care sunt identici cu biții de flux de cheie atunci când sunt decriptați. Pierderea semnului de text cifrat va face ca cei doi generatori să nu se sincronizeze, făcând imposibilă decriptarea restului mesajului. Evident, în această situație, emițătorul și receptorul trebuie să se resincronizeze pentru a continua să lucreze.
Sincronizarea se face de obicei prin inserarea unor markeri speciali în mesajul transmis. Ca urmare, un caracter ratat în timpul transmiterii duce la decriptare incorectă numai până când unul dintre jetoane este primit.
Rețineți că sincronizarea trebuie efectuată în așa fel încât să nu se repete nicio parte a fluxului de chei. Prin urmare, nu are sens să transferați generatorul într-o stare anterioară.
Avantajele SPS:
Contra SPS:
Ideea de bază a construcției a fost brevetată în 1946 în SUA .
Definiție:
Cifrele de flux cu auto-sincronizare (cifrele de flux asincrone (ATS)) sunt cifruri în care fluxul de chei este creat de o funcție a cheii și de un număr fix de caractere ciphertext.
Deci, starea internă a generatorului keystream este o funcție a celor N biți anteriori ai textului cifrat. Prin urmare, generatorul de flux de chei de decriptare, după ce a primit N biți, este sincronizat automat cu generatorul de criptare.
Implementarea acestui mod este după cum urmează: fiecare mesaj începe cu un antet aleatoriu de lungime N biți; antetul este criptat, transmis și decriptat; decodarea este greșită, dar după acești N biți ambele generatoare vor fi sincronizate.
Avantajele APS:
Contra ale APS:
Există mai multe motive pentru utilizarea registrelor de deplasare liniară în criptografie:
Definiție: Un registru de deplasare cu feedback liniar de lungime L este format din L celule numerotate , fiecare dintre acestea fiind capabilă să stocheze 1 bit și are o intrare și o ieșire; și un semnal de ceas , care controlează offset-ul datelor. În fiecare unitate de timp se efectuează următoarele operații:
La primul pas:
La al doilea pas:
Următoarea relație descrie funcționarea LFSR în termeni generali:
Dacă scriem biți egali cu zero în toate celulele, atunci sistemul va genera o secvență formată din toate zerourile. Dacă scriem biți diferit de zero, obținem o secvență semi-infinită. Secvența este determinată de coeficienți
Să vedem care poate fi perioada unui astfel de sistem:
Număr de umpluturi nenule: Prin urmare, .
După apariția unei umpleri, care a fost înainte, procesul va începe să se repete. Procesul de completare a registrului, așa cum se arată mai sus, este reprezentat de o ecuație a diferenței liniare. Să transferăm toți termenii într-o singură parte a egalității, obținem: .
Să desemnăm: . Apoi:
O proprietate importantă a acestui polinom este reductibilitatea.
Definiție: Un
polinom se numește reductibil dacă poate fi reprezentat ca produs a două polinoame de grade mai mici cu coeficienți dintr-un câmp dat (în cazul nostru, cu coeficienți binari). Dacă o astfel de reprezentare nu are loc, atunci se spune că polinomul este ireductibil .
Dacă polinomul este ireductibil și primitiv , atunci perioada va fi aceeași cu perioada maximă posibilă, egală cu
Exemplu:
Luați un polinom primitiv ireductibil Acest polinom poate fi scris ca - se scriu grade la care există coeficienți nenuli.
Scriem în starea inițială în celule și determinăm lungimea perioadei generatorului:
Părere | Celula 0 | Celula 1 | celula 2 |
unu | 0 | 0 | unu |
0 | unu | 0 | 0 |
unu | 0 | unu | 0 |
unu | unu | 0 | unu |
unu | unu | unu | 0 |
0 | unu | unu | unu |
0 | 0 | unu | unu |
unu | 0 | 0 | unu |
Perioada generatorului este Ieșirea generatorului va fi secvența:
Să dăm exemple ale unor polinoame primitive modulo 2:
Complexitatea liniară a unei secvențe binare este una dintre cele mai importante caracteristici ale operației LFSR. Prin urmare, ne oprim asupra acestui subiect mai detaliat.
Înainte de a defini complexitatea liniară, introducem câteva notații. - o secvență infinită cu membri - o secvență finită de lungime , ai cărei membri sunt LFSR se
spune că generează o secvență dacă există o stare inițială în care secvența de ieșire LFSR coincide cu . În mod similar, se spune că LFSR generează o secvență finală dacă există o stare inițială pentru care secvența de ieșire LFSR are ca primii termeni membrii secvenței .
În cele din urmă, oferim o definiție a complexității liniare a unei secvențe binare infinite. Definiție: Complexitatea liniară a unei secvențe binare infinite este numărul , care este definit după cum urmează:
Definiție:
Complexitatea liniară a unei secvențe binare finite este numărul , care este egal cu lungimea celui mai scurt LFSR care generează o secvență care are ca primi termeni . Proprietăți de complexitate liniară:
Fie și fie secvențe binare. Atunci:
1. Pentru orice complexitate liniară a subsecvenței satisface inegalitățile
2. dacă și numai dacă este o succesiune zero de lungime .
3. dacă și numai dacă .
4. Dacă este periodic cu o perioadă , atunci
5. Un
algoritm eficient pentru determinarea complexității liniare a unei secvențe binare finite este algoritmul Berlekamp-Massey .
Din păcate, secvența de ieșire LFSR este ușor de previzibil. Deci, cunoscând 2L caractere ale secvenței de ieșire, este ușor să găsiți umplerea inițială a registrului prin rezolvarea unui sistem de ecuații liniare (vezi paragraful „Cifuri de flux bazate pe registre de deplasare cu feedback liniar”).
Se crede că, pentru utilizare criptografică, secvența de ieșire LFSR trebuie să aibă următoarele proprietăți:
Există mai multe metode de proiectare a generatoarelor de flux de cheie care distrug proprietățile liniare ale LFSR și, prin urmare, fac astfel de sisteme mai sigure din punct de vedere criptografic:
1. folosind o funcție neliniară care combină ieșirile mai multor LFSR
2. folosind o funcție de filtrare neliniară pentru conținutul fiecărei celule a unui singur LFSR
3. folosind ieșirea unui LFSR pentru a controla semnalul de ceas al unuia (sau mai multor) LFSR.
Se știe că fiecare funcție booleană poate fi scrisă ca o sumă modulo 2 a produselor de ordine ale variabilelor independente , . Această expresie se numește forma normală algebrică a funcției . Ordinea neliniară a unei funcții este ordinea maximă a termenilor în notația formei sale normale algebrice.
De exemplu, o funcție booleană are o ordine neliniară de 3. Ordinea neliniară maximă posibilă a unei funcții booleene este egală cu numărul de variabile.Să
presupunem că acum avem registre de deplasare cu feedback liniar, lungimile lor sunt diferite pe perechi și mai mare de doi. Toate registrele sunt combinate cu o funcție neliniară , așa cum se arată în figură. Funcția este reprezentată în formă normală algebrică. Atunci complexitatea liniară a fluxului cheie este .
Dacă sunt numere coprime perechi, atunci lungimea perioadei fluxului de chei este egală cu: . De exemplu, dacă , atunci . Și lungimea perioadei fluxului cheie este .
Exemplu (generator Geff):
Acest generator folosește trei LFSR-uri combinate într-un mod neliniar. Lungimile acestor registre sunt numere prime perechi.
Funcția neliniară pentru un generator dat poate fi scrisă după cum urmează:
Durata perioadei:
Complexitate liniară:
Generatorul Geff este slab criptografic deoarece informațiile despre stările generatoarelor LFSR 1 și LFSR 3 sunt conținute în secvența sa de ieșire. Pentru a înțelege acest lucru, să notăm cei --i biți de ieșire ai LFSR 1,2,3 și , respectiv, fluxul de chei . Atunci probabilitatea de corelare a secvenței în raport cu secvența :
În mod similar,
din acest motiv, în ciuda perioadei lungi și a complexității liniare destul de ridicate, generatorul Geff se pretează la atacuri de corelație.
Ieșirea fiecărei celule este transmisă la intrarea unei funcții de filtrare booleană neliniară . Să presupunem că funcția de filtrare este de ordine , atunci complexitatea liniară a fluxului cheie este de cel mult .
În combinațiile neliniare de oscilatoare și oscilatoare cu filtru neliniar, mișcarea datelor în toate LFSR-urile este controlată de un singur semnal de ceas.
Ideea principală a funcționării tipului de generatoare luate în considerare este introducerea neliniarității în funcționarea generatoarelor de flux cheie bazate pe LFSR prin controlul semnalului de ceas al unui registru prin secvența de ieșire a altuia.
Există 2 tipuri de oscilatoare bazate pe controlul ceasului:
1. oscilator cu pas variabil
2. oscilator de compresie.
Ideea principală:
LFSR 1 este folosit pentru a controla mișcarea biților celorlalte două LFSR-uri 2 și 3.
Algoritm de operare:
1. Registrul LFSR 1 este sincronizat cu un semnal de ceas extern
2. Dacă ieșirea registrului LFSR 1 este unu , atunci registrul LFSR 2 este furnizat cu un semnal de ceas, iar LFSR 3 își repetă bitul de ieșire anterior (pentru momentul inițial, bitul de ieșire LFSR 3 anterior este luat egal cu 0)
3. Dacă ieșirea registrului LFSR 1 este zero , atunci un semnal de ceas este aplicat registrului LFSR 3, iar LFSR 2 își repetă ieșirea anterioară bit (pentru timpul inițial, bitul de ieșire anterior LFSR 2 este de asemenea luat egal cu 0)
4. Secvența de biți de ieșire a generatorului cu pas variabil este rezultatul aplicării operației XOR pe biți la secvențele de ieșire ale LFSR 2 și registrele LFSR 3.
Creșterea siguranței generatoarelor cu pas variabil:
Registrul de control LFSR 1 este utilizat pentru a controla ieșirea LFSR 2. Algoritm:
Generatorul de compresie este simplu, scalabil și are proprietăți de securitate bune. Dezavantajul său este că rata de generare a cheilor nu va fi constantă decât dacă se iau unele măsuri de precauție.
Pentru a crește siguranța generatorului de compresie:
Majoritatea codurilor secrete existente pot fi clasificate fără ambiguitate fie ca fiind cifruri flux, fie ca bloc . Dar granița teoretică dintre ele este destul de neclară. De exemplu, algoritmii de criptare bloc sunt utilizați în modul de criptare flux (de exemplu: pentru algoritmul DES , modurile CFB și OFB ).
Luați în considerare principalele diferențe dintre cifrurile de flux și bloc, nu numai în ceea ce privește securitatea și comoditatea lor, ci și în ceea ce privește studiul lor în lume:
Acum despre starea lumii:
Potrivit lui Rainer Rueppel, există patru abordări principale pentru proiectarea cifrului în flux:
Criteriile teoretice ale lui Reiner Rüppel pentru proiectarea sistemelor în linie:
Până acum, aceste criterii nu s-au dovedit a fi necesare sau suficiente pentru securitatea unui sistem de criptare în flux. De asemenea, este de remarcat faptul că, dacă criptoanalistul are timp și putere de calcul nelimitate, atunci singurul cifr de flux realizabil care este sigur împotriva unui astfel de adversar este pad-ul unic.
Toate metodele de criptoanaliza a cifrurilor de flux sunt de obicei împărțite în putere (atac „forță brută”), statistice și analitice.
Această clasă include atacuri care realizează o enumerare completă a tuturor opțiunilor posibile. Complexitatea unei căutări exhaustive depinde de numărul tuturor soluțiilor posibile la problemă (în special, dimensiunea spațiului cheie sau spațiul text simplu). Această clasă de atacuri este aplicabilă tuturor tipurilor de sisteme de criptare a fluxurilor. Atunci când dezvoltă sisteme de criptare, dezvoltatorii se străduiesc să facă acest tip de atac cel mai eficient în comparație cu alte metode existente de hacking.
Atacurile statistice se împart în două subclase:
Ambele metode folosesc principiul complexității liniare.
Acest tip de atac este considerat pe ipoteza că criptoanalistul cunoaște descrierea generatorului, textul public și textul privat corespunzător. Sarcina criptoanalistului este de a determina cheia folosită (umplerea inițială a registrelor). Tipuri de atacuri analitice aplicate cifrurilor de flux sincron:
Sunt cele mai frecvente atacuri pentru spargerea cifrurilor de flux.
Se știe că munca de deschidere a criptosistemului poate fi redusă semnificativ dacă funcția neliniară transmite informații despre componentele interne ale generatorului către ieșire. Prin urmare, pentru a restabili umplerea inițială a registrelor, atacurile de corelare examinează corelația secvenței de ieșire a sistemului de cifrare cu secvența de ieșire a registrelor.
Există următoarele subclase de atacuri de corelare:
Să luăm în considerare exemplul atacului de corelație de bază al lui Siegenthaler ("split and open"), care se bazează pe conceptul de distanță Hamming între două secvențe binare de aceeași lungime. Aplicabil la combinarea generatoarelor.
Pentru a dezvălui influența j-al-lea registru de deplasare liniară (cu secvența de ieșire {x (j) } asupra cifrului gamma {g} , o parte a generatorului este modelată ca un canal simetric binar (BSC). Algoritmul de atac constă din două etape (uneori numite faze ):
Dacă comparația are succes, faza se numește adevărată și are loc trecerea la următorul registru . În caz contrar, faza este numită invalidă și mergeți la . Valorile de ieșire ale acestui algoritm sunt stările care contribuie cu informații la gama.
Acum puțin despre selectarea valorii pragului și a numărului de biți gamma necesari pentru o criptoanaliză de succes :
De exemplu, am ales , unde este lungimea registrului. Și apoi din aceste condiții găsim și .
Atacuri bazate pe verificări de paritate cu greutate redusăUn exemplu al acestei subclase de atacuri este atacul de corelare rapidă al lui Mayer și Staffelbach. Este aplicabil atât generatoarelor de filtre, cât și generatoarelor combinate și este baza pentru toate celelalte atacuri de corelație rapidă de acest tip. Ideea atacului se bazează pe utilizarea ecuațiilor de verificare a parității pentru un polinom de feedback al registrului liniar .
Atacurile rapide de corelareAtacurile cu corelație rapidă sunt înțelese ca atacuri, a căror complexitate computațională este mult mai mică decât complexitatea computațională a atacurilor de putere.
Acest tip de atac reduce problema decodării într-un canal binar simetric la o problemă de criptoanaliza și este modelat ca decodificarea unui cod liniar aleatoriu. Similar atacurilor de corelație de bază, această subclasă folosește noțiunea de distanță Hamming .
Scopul acestui atac este de a restabili starea inițială a registrului de deplasare (găsirea cheii) folosind o schemă de dispozitiv cunoscută și un fragment din secvența de criptare. Complexitatea atacului depinde de dimensiunea cifrului și de lungimea gamma interceptată.
Constă din două etape:
Exemple ale acestei clase de atacuri sunt atacul Steve Babbage și atacul Biryukov-Shamir.
„Asumați și determinați”Atacul se bazează pe presupunerea că criptoanalistul cunoaște gama, polinomul de feedback, numărul de deplasări de registru între ieșirile circuitului și funcția de filtrare. Constă din trei etape:
Complexitatea algoritmului depinde de dispozitivul generatorului și de numărul de ipoteze.
Criptosisteme simetrice | |
---|---|
Cifruri în flux | |
Rețeaua Feistel | |
Rețeaua SP | |
Alte |