Contacte

Un registru de schimbare cu feedback liniar C. Baza teoretică a muncii. Care sunt secvențele generate de registrele de schimbare

Secvența registrelor de forfecare sunt utilizate atât în \u200b\u200bcriptografii, cât și în teoria codării. Teoria lor a elaborat perfect, springi pe baza registrelor de forfecare au fost un cal de lucru în criptografia militară cu mult înainte de apariția electronicii.

Un registru de schimbare a feedback-ului (denumit în continuare "RSHSOS) constă din două părți: registrul de schimbare și funcțiile de feedback. Registrul de schimbare este o secvență de biți. Numărul de biți este determinat lungime Shift Registru.Dacă lungimea este biți n, atunci registrul este numit n-Bit Shift Register. Ori de câte ori trebuie să scoateți bitul, toate biții din registrul de schimbare treceți la poziția dreaptă la 1. Noul bit stâng nou este funcția tuturor celorlalți biți ai registrului. La ieșirea registrului de forfecare se dovedește unul, de obicei sensul mai tânăr, biți. O perioadă de registru de schimbare Se numește lungimea secvenței rezultate înainte de începerea repetării.

Figura 1. Registrul de schimbare a feedback-ului

Registrele de schimbare au găsit foarte repede utilizarea de cifre de streaming, deoarece acestea sunt implementate cu ușurință utilizând echipamente digitale. În 1965, Ernst Selmer (Ernst Selmer), criptograful principal al guvernului norvegian, a dezvoltat teoria secvenței registrelor de forfecare. Solomon Golomb (Solomon Golomb), NSA Matematică, a scris o carte care a stabilit unele dintre rezultatele sale și rezultatele lui Selmer. Cea mai simplă vizualizare a registrului schimbării de feedback este un registru liniar de schimbare a feedback-ului (înregistrare liniară de schimbare a feedback-ului, apoi LFSR sau RGSSLOS). Feedback-ul unor astfel de registre este pur și simplu XOR (adăugarea a două modulo) a unora dintre biții din registru, lista acestor biți se numește o secvență de atingere. Uneori un astfel de registru se numește configurație Fibonaci. Datorită simplității secvenței de feedback, o teorie matematică destul de dezvoltată poate fi utilizată pentru analiza RSSLOS. După analizarea secvențelor de ieșire primite, vă puteți asigura că aceste secvențe sunt destul de aleatoare pentru a fi în siguranță. RSSKSLOS este folosit mai des decât alte registre de forfecare în criptografie.


Figura 2. Fibbonacurile RSSKSLOS

În cazul general, n-biți rgsslos poate fi într-una din statele interne N \u003d 2 N -1. Aceasta înseamnă că teoretic, un astfel de registru poate genera o secvență pseudo-aleatoare cu o perioadă t \u003d 2 n -1 biți. (Numărul de stări interne și perioada sunt n \u003d t max \u003d 2 n -1, deoarece umplerea RSSHSLOS ZERO va avea ca rezultat că registrul de schimbare va produce o secvență infinită de zerouri, care este absolut inutilă). Numai cu anumite secvențe respinse ale RSLOS vor fi ciclic prin toate statele interne 2 N -1, astfel de RSSSLOS sunt RSSKSLOS cu o perioadă maximă. Rezultatul rezultat este numit M-secvența.

Exemplu . Figura de mai jos prezintă un RGSSLOS cu 4 biți cu un robinet de la primul și al patrulea biți. Dacă este inițializată de valoarea 1111, atunci înainte de repetare, registrul va lua următoarele state interne:

Tractul de schimbare (starea internă)

Starea de înregistrare

Bit de ieșire

Sensul inițial

15 (reveniți la un stat inițial)

16 (statele repetate)

Secvența de ieșire va fi o serie de biți semnificativi mai tineri: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 cu o perioadă t \u003d 15, numărul total de stări interne posibile (cu excepția zero), n \u003d 2 4 -1 \u003d 16-1 \u003d 15 \u003d T max, prin urmare, secvența de ieșire este secvența M.

Pentru ca un anumit RSSKSLOS să aibă o perioadă maximă, un polinom, format din secvența de robinet și constantă 1, trebuie să fie primitiv de către modulul 2. Polinomul este reprezentat ca cantitatea de grade, de exemplu, un polinom al gradului n pare ca aceasta:

a. n. x n + a n-1. x N-1 + ... + a 1 x 1 + a 0 x 0 \u003d a n. x n + a n-1. x N-1 + ... + a 1 x + A. 0 unde un. i. \u003d (0,1) pentru i \u003d 1 ... N, și x I - indică descărcarea.

Gradul de polinom este lungimea registrului de schimbare. Gradul de polinom primitiv N este un polinom ireductibil care este un divizor x 2n? 1 +1, dar nu este un divizor x D +1 pentru toate D, care sunt divizori 2 n -1. Teoria matematică corespunzătoare poate fi găsită în.

În general, nu există nici o modalitate simplă de a genera polinomii primitivi dintr-un anumit grad de către modulul 2. Cea mai ușoară modalitate de a alege un polinom la întâmplare și de a verifica dacă este primitiv. Nu este ușor și ceva de genul de a verifica dacă este un număr simplu ales aleatoriu - dar multe pachete de programe matematice sunt capabile să rezolve o astfel de sarcină.

Unii, dar, desigur, nu toți, polinomii de diferite grade, modulo-ul primitiv 2, sunt date mai târziu. De exemplu, scrierea

(32, 7, 5, 3, 2, 1, 0) înseamnă că următorul polinom este primitiv pentru modulul 2: x 32 + x 7 + x 5 + x 3 + x 2 + x + 1.

Acest lucru poate fi rezumat cu ușurință pentru RSSSLOS cu perioada maximă. Primul număr este lungimea RSSSLOS. Ultimul număr este întotdeauna egal cu 0 și poate fi omis. Toate numerele, cu excepția de la 0, setați secvența de îndepărtare care se bazează pe marginea din stânga a registrului de schimbare. Adică, membrii polinomului cu un grad mai mic corespund pozițiilor mai aproape de marginea dreaptă a registrului.

Exemplu continuu, înregistrarea (32, 7, 5, 3, 2, 1, 0) înseamnă că noul bit al unui registru de deplasare pe 32 de biți are un nou bit este generat folosind Xor treizeci de ani, al șaptelea, al cincilea, al treilea, al doilea și Primii biți. RSHSlos rezultat va avea o lungime maximă, trecând ciclic la repetare după 2 32 de valori.


Figura 4. RGSSLOS de 32 de biți cu o lungime maximă

Luați în considerare codul programului RSSLOS, în care secvența de robinet este caracterizată printr-un polinom (32, 7, 5, 3, 2, 1, 0). În limba C arată după cum urmează:

static nesemnat Long Sightregister \u003d 1;

/ * Toate, cu excepția 0. * /

SHIFTREGISTER \u003d ((SHIFTREGISTER \u003e\u003e 31)

^ (ShiftLregister \u003e\u003e 6)

^ (ShiftLregister \u003e\u003e 4)

^ (ShiftLregister \u003e\u003e 2)

^ (ShiftLregister \u003e\u003e 1)

^ Shiftregister))

| (ShiftLregister \u003e\u003e 1);

returnați SHIPFALLGISTER & 0X00000001;)

Dacă registrul de schimbare este mai lung decât un cuvânt de calcul, codul este complicat, dar nu prea mult. Anexa B oferă un tabel de polinomi primitivi în modulul 2, îl va folosi în viitor pentru a identifica unele proprietăți ale acestor polinomiale, precum și în implementarea software-ului pentru a seta secvența de robinet.

Trebuie remarcat faptul că toate elementele de masă reprezintă un număr impar de coeficienți. O astfel de masă lungă este dată pentru lucrări ulterioare cu RSSSLO, deoarece RSLLOS este adesea folosit pentru criptografie cu cifre de streaming și în generatoare de număr pseudo-aleatoriu. În cazul nostru, puteți utiliza polinomii cu un grad mai vechi de cel mult șapte.

Dacă p (x) este primitiv, atunci primitiv și x n p (1 / x), astfel încât fiecare element al tabelului definește de fapt două polinoame primitive. De exemplu, dacă (A, B, 0) este primitiv, apoi primitiv și (A, A-B, 0). Dacă primitiv (A, B, C, D, 0) este primitiv și (A, A-D, A-C, A-B, 0). Matematic:

dacă este primitiv x A + X B +1, apoi primitiv și x A + X A-B +1,

dacă este primitiv x A + X B + X C + X D +1, apoi primitiv și x A + X A-D + X A-C + X A-B +1. Mai repede este implementat programatic de primitiv de trei metri, deoarece pentru a genera un nou bit, este necesar să se efectueze Xor doar două biți ale registrului de schimbare (zero termenul nu este luat în considerare, adică x 0 \u003d 1, a se vedea exemplul de mai sus) . Într-adevăr, toate polinomiile de feedback prezentate în tabel sunt rarefiate, adică au niște coeficienți. Recompensele reprezintă întotdeauna o sursă de slăbiciune, care uneori este suficientă pentru a deschide algoritmul. Pentru algoritmii criptografici, este mult mai bine să folosiți polinomii primitivi densi, cei ai căror mai mulți coeficienți. Aplicarea polinomilor densi, în special ca parte a cheii, puteți utiliza semnificativ mai scurt RSHSLOS.

Generați polinomii primitivi densi în modulul 2 nu este ușor. În general, pentru a genera polinomii primitivi de gradul K, este necesar să se cunoască descompunerea pe multiplicatorii din numărul 2 K -1.

În sine, RSLLOS este generatoare bune de secvențe pseudo-aleatoare, dar au niște proprietăți nedorite (deterministe) nedorite. Bițele seriale sunt liniare, ceea ce le face inutile la criptare. Pentru starea internă RSSLOS Lone N este biții de ieșire anteriori ai generatorului. Chiar dacă schema de feedback este stocată în secret, poate fi determinată de biții de ieșire 2N ai generatorului utilizând un algoritm extrem de eficient de berlekamp-massey.

În plus, numerele aleatorii mari generate cu ajutorul biților acestei secvențe care rulează într-un rând sunt puternic corelate și pentru unele tipuri de aplicații nu sunt la toate aleatorii. În ciuda acestui fapt, RSSLLOS este adesea folosit pentru a crea algoritmi de criptare ca componente ale sistemelor și algoritmilor de criptare.

Cea mai simplă vizualizare a funcției de feedback este o funcție liniară, de exemplu, suma modulului 2 al conținutului anumitor descărcări. Un astfel de registru este numit un registru liniar de schimbare a feedback-ului (înregistrare liniară de schimbare a feedback-ului, abreviat LFSR). În cazul general, funcția de feedback liniar este definită prin formula. Aici c K.\u003d 1, dacă k.Sunetul este utilizat în funcția de feedback și c K.\u003d 0 altfel. Simbolul å denotă adăugarea modulului 2 (cu excepția sau).

De exemplu, luați în considerare funcția LFSR cu funcție de feedback (vezi figura).

Dacă starea inițială a registrului este de 1111, atunci în ceasurile ulterioare, va lua următoarele stări de stat: 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011, 1001, 0100, 0010, 0001, 1000, 1100, 1110, 1111, ...

Secvența de ieșire este formată din descărcarea de gestiune mai mică (extremă). Aceasta va arăta astfel: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1. Se poate observa că secvența de biți generată este determinată în întregime de starea inițială a funcției de înregistrare și de feedback. Deoarece numărul tuturor tipurilor de state de înregistrare este, desigur (este egal cu 2 L.), mai devreme sau mai târziu, secvența cheie va începe să repete. Lungimea maximă a părții neintegrante a secvenței-cheie se numește perioada sa. T.. Perioada depinde de funcția de feedback. Perioada maximă posibilă este egală T. Max \u003d 2. L.-1 (Registrul ia toate statele posibile, cu excepția 0000 ... 0). Se numește secvența de ieșire a LFSR care posedă perioada maximă M-secvența.

Pentru a afla condițiile în care LFSR va avea o perioadă maximă, caracteristicile de feedback sunt aliniate cu un polinom caracteristic. Astfel, registrul arătat mai sus ca exemplu corespunde polinomului. Analiza teoretică arată că LFSR va avea o perioadă maximă și numai dacă poliția P.(x.) este an primitiv. Mai jos sunt câteva polinoame primitive recomandate pentru utilizare în practică. Tabelul arată gradul de variabilă x.În înregistrarea polinomului. De exemplu, înregistrarea (31, 3) corespunde polinomului.

P.(x.) P.(x.) P.(x.)
(39, 16, 23, 35) (38, 5, 6, 27) (32, 2, 7, 16)
(30, 6, 4, 1) (31, 6) (31, 7)
(31, 13) (31, 25, 23, 8) (33, 13)
(35, 2) (47, 5) (48, 9, 7, 4)
(47, 11, 24, 32) (46, 18, 31, 40) (53, 6, 2, 1)
(55, 24) (57, 7) (58, 19)
(59, 7, 4, 2) (41, 27, 31, 32) (61, 5, 2, 1)
(42, 30, 31, 34) (51, 15, 24, 46) (50, 17, 31, 34)


Inițial, LFSRS au fost concepute pentru implementarea hardware sub forma unui set de circuite digitale. Implementările software LFSR pierd, de obicei, viteza hardware-ului. Pentru a crește viteza, starea registrului este profitabilă pentru a stoca sub forma unui întreg L.-Număr-număr, ale cărui biți individuali corespund descărcarea binară a registrului. Apoi, pentru accesul la biți individuali, se utilizează operațiionare (schimbare, mascare etc.).

FEEDBACK SHEAR Register ( FSR. ) constă din două părți: registrul de deplasare și funcții de feedback .

Eroare: sursa de referință nu a fost găsită) este o secvență de biți. Când trebuie să scoateți bitul, toate biții din registrul de schimbare treceți la poziția dreaptă la 1. Noul bit stâng nou este valoarea funcției de feedback de la restul biților din registru. Perioadă un registru de schimbare se numește lungimea secvenței rezultate înainte de începerea repetării.

Cel mai simplu tip de registru de forfecare cu feedback este registrul de forfecare liniară cu feedback (LFSR.Stânga. Părere Schimb. Inregistreaza-te) (Eroare: sursa de referință nu a fost găsită). Feedbackul este un biți de biți simxorect egestice, se numește lista acestor biți până la secvență.

n.-Bitfs pot fi localizate într-una din 2 n. -1 statele interne. Aceasta înseamnă că teoretic, un astfel de registru poate genera o secvență pseudo-aleatorie cu o perioadă 2 n. -1 biți. Numărul de state interne și perioada este egal, deoarece registrul de umplere cu zerouri va duce la faptul că va produce o secvență infinită de zerouri, care este absolut inutilă. Numai cu anumite secvențe respinseSfuncționează ciclic prin toate 2 n. -1 statele interne. Cum ar fi LFSR. Cu o perioadă maximă.

Pentru ca perioada maximă specifică LFSRELL, polinomul format din secvența de robinet și constantă 1 trebuie să fie primitiv de către modul 2 .

Calculul primitivității polinomului este o sarcină matematică destul de complicată. Prin urmare, există tabele gata făcute, care oferă numerele secvențelor de robinet care asigură perioada maximă generatorului. De exemplu, pentru un registru de deplasare pe 32 de biți, puteți găsi o astfel de intrare: (32,7,5,3,2,1,0) . Aceasta înseamnă că pentru a genera un nou bit, este necesar să folosiți o funcție xorprix de treizeci și două, al șaptelea, al cincilea, al treia, al doilea și primii biți.

Codul pentru un astfel de LFSR este limba C ++ va fi:

// orice valoare pe lângă zero

SHIFTREGISTER \u003d ((SHIFTREGISTER \u003e\u003e 31)

^ (ShiftLregister \u003e\u003e 6)

^ (ShiftLregister \u003e\u003e 4)

^ (ShiftLregister \u003e\u003e 2)

^ (ShiftLregister \u003e\u003e 1)

^ Shiftregister)

& 0x00000001)<<31)

| (ShiftLregister \u003e\u003e 1);

returnați SHIPFALLGISTER & 0X00000001;

Implementările software LFRRD sunt lente și mai rapide, dacă sunt scrise pe un asamblator și nu pe S. O soluție este de a utiliza paralel 16-tifsr (sau 32, în funcție de lungimea cuvântului în arhitectura unui anumit computer). Într-o astfel de schemă, se folosește o serie de cuvinte, mărimea căreia este egală cu lunga lungime, iar fiecare cuvinte ale matricei se referă la propriul săuFSR. Cu condiția ca acelorași numere să fie utilizate, acesta poate da un câștig de performanță remarcabil.

DIN feedback-ul Ham poate fi, de asemenea, modificat. În același timp, generatorul nu va avea o rezistență criptică mai mare, dar va fi mai ușor de implementat software-ul. În loc să se utilizeze pentru a genera o nouă extremă stânga a biților secvenței de atingere, biții secvenței de robinet cu ieșirea generatorului și înlocuirea acestuia cu rezultatul acestei acțiuni, apoi rezultatul generatorului devine un nou bit extrem de stânga (Eroare: sursa de referință nu a fost găsită).

Această modificare este numită configurația lui Galoah. În limbă, se pare că:

static nesemnat Long Sightregister \u003d 1;

void semințe_lfsr (semințe lungi nesemnate)

SHIFTREGISTER \u003d semințe;

iNT GALUA_FSR (VOID)

dacă (ShiftLregister & 0x00000001) (

ShiftLregister \u003d (ShiftLregister ^ Mask \u003e\u003e 1) | 0x8000000;

SHIFTREGISTER \u003e\u003e \u003d 1;

Câștigurile constă în faptul că toate xorii sunt umplute cu o singură operație. Această schemă poate fi, de asemenea, paralelă.

Prin ele însele, LF sunt bune în secvențe pseudo-aleatoare, dar au unele proprietăți nedorite nedorite. Bițele seriale sunt liniare, ceea ce le face inutile la criptare. Forfsrdlin. n.starea internă este cea anterioară n.generator de biți de ieșire. Chiar dacă schema de feedback este stocată în secret, poate fi determinată de 2 n.biți de ieșire al generatorului cu algoritmi speciali. În plus, numerele aleatorii mari generate cu ajutorul biților acestei secvențe care rulează într-un rând sunt puternic corelate și pentru unele tipuri de aplicații nu sunt aleatoare. În ciuda acestui fapt, LFSRS sunt folosite pentru a crea algoritmi de criptare. Pentru aceasta, severalfsr sunt utilizate, de obicei cu diferite lungimi și numere de secvențe de atingere. Cheia este starea inițială a registrelor. De fiecare dată când este nevoie de un nou bit, toate registrele sunt schimbate. Această operațiune este numită totatting. Picturile de ieșire este o funcție, de preferință neliniară, unele BITLFSR. Această caracteristică este numită combinând, și generatorul ca întreg - combinând generatorul. Mulți dintre acești generatori sunt în siguranță până acum.

Schimbarea feedback-ului liniar (RSLO, engleză. schimbarea feedback-ului liniar, LFSR) - registrul de schimbare al cuvântului de biți, care are valoarea de intrare (mobilă) biți egală cu funcția de taur liniar pe valorile biților rămași ai registrului înainte de schimbare. Acesta poate fi organizat atât software, cât și hardware. Se utilizează pentru a genera secvențele pseudo-aleatoare ale biților, care găsește utilizarea, în special, în criptografie.

Descriere

Controlul registrului în implementările hardware se efectuează prin furnizarea unui impuls de schimbare (altfel solicitat takhov. sau synchropulse.) Pe toate celulele. Gestionarea registrului în implementările software este efectuată de ciclu. La fiecare iterație a ciclului, funcția de feedback este calculată și se efectuează schimbarea bitului în cuvânt.

Principiul de funcționare

Complexitate liniară

Independența de corelație

Încercarea de a obține complexitatea liniară ridicată a secvenței generate, criptografiile sunt combinate neliniar de ieșirile mai multor registre de schimbare. În acest caz, una sau mai multe secvențe de ieșire (sau chiar ieșirile RSLOS individuale) pot fi asociate cu un flux total și se deschid cu criptanalitică. Hacking pe baza unor astfel de vulnerabilități sunt numite deschiderea corelației. Ideea principală a acestui hacking este de a detecta o anumită corelație între derivarea generatorului și rezultatele componentelor sale. Apoi, observând secvența de ieșire, puteți obține informații despre aceste concluzii intermediare și, astfel, Hack Generatorul. Thomas SgenrentAler a arătat că este posibil să definească cu precizie independența de corelație și că există un compromis între independența de corelație și complexitatea liniară.

Implementarea software-ului

Implementările software ale RSLOS sunt destul de lente și funcționează mai repede dacă sunt scrise în asamblare. Una dintre soluții este utilizarea paralelă a 16 RSLOS (sau 32, în funcție de lungimea cuvântului în arhitectura calculatorului). Într-o astfel de schemă, se folosește o serie de cuvinte, a căror dimensiune este egală cu lungimea registrului de schimbare, iar fiecare lot de cuvinte se referă la RSLO. Deoarece se utilizează același număr de secvențe de atingere, acesta poate da un câștig remarcabil în performanța generatorului.

Fibonacci configurare

Luați în considerare un registru de deplasare pe 32 de biți. Există o secvență de atingere pentru ea. (32, 31, 30, 26, 1) (\\ DAUNDSYSYL \\ STÂNGA (32, \\; 36, \\;. Aceasta înseamnă că, pentru a genera un nou bit, este necesar să utilizați operațiunea XOR pentru a rezuma pe biții 31, 30, 27, 27, 25 și 0. RSLO-urile rezultate are perioada maximă 2 32 - 1 (\\ DisplayStyle 2 ^ (32) -1). Codul pentru un astfel de registru în limba SI este după cum urmează:

iNT LFSR_FIBONACCI (VOID) (static nesemnat Long S \u003d 0x00000001; S \u003d (((S \u003e\u003e 31) ^ (s \u003e\u003e 29) ^ (s \u003e\u003e 27) ^ (s \u003e\u003e 25) ^s) & 0x00000001)<< 31 ) | (S >\u003e 1); Retur S & 0x00000001; )

Configurația GALUA.

Acest generator nu are o rezistență criptică mai mare, dar oferă un câștig în performanță: toate operațiile Xor pot fi efectuate pentru o acțiune prin paralelizare și nu secvențial una după alta, ca în configurația Fibonacci. Această schemă va da, de asemenea, un câștig atunci când este echipat.

Codul pentru lungimea lungimii lungimii a 32 de biți în limba SI este după cum urmează:

iNT LFSR_GALOIS (VOID) (static nesemnat Long S \u003d 0x00000001; dacă (S & 0x0000000101) (S \u003d (s ^ 0x80000057 \u003e\u003e 1) | 0x80000000; retur 1;) altceva (s \u003e\u003e \u003d 1; retur 0;))

Este demn de remarcat faptul că ciclul unui număr fix de apeluri Funcția LFSR_Galois în configurația Galoa este programată timp de aproximativ 2 ori mai mare decât funcția LFSR_Fibonaci în configurația Fibonacci (compilatorul MS VS 2010 privind Intel Core I5).

Un exemplu de secvență generată

Fibonacci configurare

Lăsați RSLOS să definească polinomul caracteristic X 3 + X + 1 (\\ AfișajStyle x ^ (3) + x + 1). Aceasta înseamnă că biții de descărcare vor fi al II-lea și 0, iar unitatea în formula polinomului înseamnă că bitul 0 este introdus. Funcția de feedback are o vedere S j \u003d s j - 1 ⊕ s j - 3 (\\ displaystyle s_ (j) \u003d s_ (j-1) \\ oplus s_ (J-3)). Să presupunem că starea inițială a registrului de schimbare a fost o secvență. În tabelul de mai jos sunt prezentate alte registre:

Numărul pasului condiție Bit-ul generat
0 [0, 0, 1] (\\ displaystyle \\ stânga) 1
1 0
2 0
3 1
4 1
5 1
6 0
7 [0, 0, 1] (\\ displaystyle \\ stânga) 1

Deoarece statul interior din a șaptea pas a revenit la original, atunci, începând de la următorul pas, va fi o reluare a biților. Adică, secvența generată este după cum urmează: [1, 0, 0, 1, 1, 1, 0, 1. . . ] (\\ Displaystyle \\ stânga) (Ordinea biților din secvență corespunde ordinii generației lor RSLOS). Astfel, perioada de secvență este de 7, adică valoarea maximă posibilă, care sa întâmplat din cauza primitivității polinomului specificat.

Configurația GALUA.

Ia același polinom caracteristic, adică C 3 \u003d C 1 \u003d 1 (\\ DisplayStyle C_ (3) \u003d C_ (1) \u003d 1), C 2 \u003d 0 (\\ DisplayStyle C_ (2) \u003d 0). Pe scurt, există doar primii biți. Starea inițială este aceeași. Alte registre:

Numărul pasului condiție Bit-ul generat
0 [0, 0, 1] (\\ displaystyle \\ stânga) -
1 [1, 0, 0] (\\ displaystyle \\ stânga) 0
2 [0, 1, 1] (\\ displaystyle \\ stânga) 1
3 [1, 0, 1] (\\ displaystyle \\ stânga) 1
4 [1, 1, 1] (\\ displaystyle \\ stânga) 1
5 [1, 1, 0] (\\ displaystyle \\ stânga) 0
6 [0, 1, 0] (\\ displaystyle \\ stânga) 0
7 [0, 0, 1] (\\ displaystyle \\ stânga) 1

Starea interioară a registrului în etapa a șaptea a revenit la original, prin urmare, perioada sa este, de asemenea, 7. Spre deosebire de configurația Fibonacci, registrele interne ale registrului s-au dovedit a fi cealaltă, dar secvența generată este doar deplasată de 4 Ceasuri: [0, 1, 1, 1, 0, 0, 0, 0, 1, 1 ,. . . ] (\\ Displaystyle \\ stânga) (Ordinea biților din secvență corespunde ordinii generației lor RSLOS).

Generarea polinomilor primitivi

Biți N (\\ displaystyle n) Polinomul primitiv Perioadă, 2 N - 1 (\\ displaystyle 2 ^ (n) -1) Numărul polinomilor primitivi
2 x 2 + x + 1 (\\ displaystyle x ^ (2) + x + 1) 3 1
3 X 3 + X2 + 1 (\\ AfișajStyle x ^ (3) + x ^ (2) +1) 7 2
4 X 4 + X 3 + 1 (\\ AfișajStyle x ^ (4) + x ^ (3) +1) 15 2
5 X 5 + X 3 + 1 (\\ AfișajStyle x ^ (5) + x ^ (3) +1) 31 6
6 X 6 + x 5 + 1 (\\ AfișajStyle x ^ (6) + x ^ (5) +1) 63 6
7 X 7 + X 6 + 1 (\\ AfișajStyle x ^ (7) + x ^ (6) +1) 127 18
8 x 8 + x 6 + x 5 + x 4 + 1 (\\ displaystyle x ^ (8) + x ^ (6) + x ^ (5) + x ^ (4) +1) 255 16
9 X 9 + x 5 + 1 (\\ AfișajStyle x ^ (9) + x ^ (5) +1) 511 48
10 X 10 + X 7 + 1 (\\ AfișajStyle x ^ (10) + x ^ (7) +1) 1023 60
11 x 11 + x 9 + 1 (\\ displaystyle x ^ (11) + x ^ (9) +1) 2047 176
12 x 12 + x 11 + x 10 + x 4 + 1 (\\ displaystyle x ^ (12) + x ^ (11) + x ^ (10) + x ^ (4) +1) 4095 144
13 x 13 + x 12 + x 11 + x 8 + 1 (\\ displaystyle x ^ (13) + x ^ (12) + x ^ (11) + x ^ (8) +1) 8191 630
14 x 14 + x 13 + x 12 + x 2 + 1 (\\ displaystyle x ^ (14) + x ^ (13) + x ^ (12) + x ^ (2) +1) 16383 756
15 X 15 + X 14 + 1 (\\ AfișajStyle x ^ (15) + x ^ (14) +1) 32767 1800
16 x 16 + x 14 + x 13 + x 11 + 1 (\\ DisplayStyle x ^ (16) + x ^ (14) + x ^ (13) + x ^ (11) +1) 65535 2048
17 X 17 + X 14 + 1 (\\ AfișajStyle x ^ (17) + x ^ (14) +1) 131071 7710
18 x 18 + x 11 + 1 (\\ displaystyle x ^ (18) + x ^ (11) +1) 262143 7776
19 x 19 + x 18 + x 17 + x 14 + 1 (\\ displaystyle x ^ (19) + x ^ (18) + x ^ (17) + x ^ (14) +1) 524287 27594
20 - 168
2 - 786, 1024, 2048, 4096

Avantaje și dezavantaje

Beneficii

  • viteza mare a algoritmilor criptografici creați pe baza RSLOS (de exemplu cifrele de streaming);
  • folosirea numai a operațiunilor simple de biți și multiplicarea, implementată cu greu în aproape toate dispozitivele de calcul;
  • proprietăți criptografice bune (RSLOS pot genera o secvență mare cu proprietăți statistice bune);
  • datorită structurii sale, RSLOS este ușor de analizat folosind metode algebrice.

dezavantaje

Modalități de îmbunătățire a criptării secvențelor generate

Generatoare cu registre multiple de schimbare

Generatorul de acest tip constă în mai multe registre de schimbare cu feedback liniar care generează biți x 1, i, x 2, i, ..., x m, i (\\ displaystyle x_ (1, i), \\; x_ (2, i), \\ ptots, \\; x_ (m, i)) respectiv. Apoi, biții generați sunt convertiți de o anumită funcție booleană. f (x 1, i, x 2, i, ..., xm, i) (\\ displaystyle f (x_ (1, i), \\; x_ (2, i), \\; \\ puncte, \\; x_ ( m, i))). Trebuie remarcat faptul că generatoarele acestui tip de registre L i (\\ displaystyle l_ (i)), i \u003d 1, 2, ..., m (\\ displaystyle i \u003d 1, \\; 2, \\ ptode, \\; m), Mutual simplu.

Perioada acestui generator este egală T \u003d (2 L 1 - 1) ⋅ (2 L 2 - 1) ⋯ (2 lm - 1) ≲ 2 L (\\ displaystyle t \u003d (2 ^ (1)) - 1) \\ cdot (2 ^ ( L_ (2)) - 1) \\ CDOTS (2 ^ (L_ (m)) - 1) \\ LESSSIM 2 ^ (L))Unde L \u003d Σ i \u003d 1 m L I (\\ displaystyle l \u003d \\ sum \\ limite _ (i \u003d 1) ^ (m) l_ (i)) - Numărul total de celule. În consecință, utilizarea mai multor RSLOS crește perioada de secvență generată în comparație cu un registru, care mărește criptopul generatorului. De asemenea, crește complexitatea sau lungimea liniară a celui mai scurt registru corespunzător acestui generator. Un astfel de registru este cu ajutorul algoritmului Berlekmpa - Massey pentru secvența generată. În cel mai bun caz, lungimea sa este proporțională cu o perioadă de secvență generată.

Generatoare cu transformări neliniare

Diagrama structurală a unui astfel de generator nu este diferită de diagrama generatorului anterior. Diferența principală este că dispozitivul de conversie este setat la funcția de lapte neliniară f (x 1, x 2, ..., x m) (\\ displaystyle f (x_ (1), x_ (2), \\ dots, x_ (m))). Ca o astfel de funcție, este luată, de exemplu, un zhegachin polinomic (în funcție de teorema Zhegakin, fiecare funcție booleană poate fi reprezentată numai de polinomul ZhEgalkin).

Generatorul neliniar poate fi, de asemenea, implementat pe registrul de forfecare cu feedback neliniar. El poate da 2 2 L - 1 - L (\\ DisplayStyle 2 ^ (2 ^ (L-1) -L)) Variante ale secvențelor perioadei maxime, care sunt mai mult decât RSLOS.

Criptopostul acestui generator crește datorită neliniarității funcției utilizate. Determinarea statutului registrelor pe secvența generată de biți este o sarcină matematică complexă, deoarece nu este cunoscută pentru algoritmul care restabilește stările inițiale.

Această metodă este utilizată, de exemplu, în generator Hepfa. Și un generator generalizat de Hethf, totuși, astfel de generatoare pot fi hackate prin deschiderea de corelare.

Generatoare cu tact diferit pentru registrele de schimbare

Generator "Stop-go"

Generator "Stop-go" (Eng. Stop-and-Go, ambele Piper) utilizează retragerea RSLOS-1 pentru a controla frecvența ceasului RSLO-2, astfel încât RSLOS-2 modifică starea la un moment dat, numai dacă ieșirea din RSLOS-1 în momentul timpului a fost unitatea egală. Această schemă nu a rezistat înainte de deschiderea de corelare.

Pentru a crește criptopul a fost propus generator alternativ "STOP-TRAT". Utilizează trei registre de schimb de diferite lungimi. Aici, RSLOS-1 gestionează frecvența ceasului celei de-a doua și 3 registre, adică RSLOS-2 își schimbă starea atunci când ieșirea RSLOS-1 este egală cu cea și RSLOS-3 - când ieșirea din RSLOS-1 este zero. Ieșirea generatorului este operarea adăugării modulului două ieșiri ale RSLOS-2 și RSLOS-3. Acest generator are o lungă perioadă de timp și o complexitate liniară mare. Există o metodă pentru deschiderea de corelare a RSLOS-1, dar acest lucru nu slăbește foarte mult proprietățile criptografice ale generatorului.

Schema de ceas complicată este utilizată în generatorul bilateral "STOP-TRAT"care utilizează 2 registru de schimbare cu aceeași lungime. Dacă ieșirea RSLOS-1 la un moment dat în timp T i - 1 (\\ displaystyle t_ (i-1)) - Unitatea, atunci RSLOS-2 nu este clasificată în momentul timpului T i (\\ displaystyle t_ (i)). Dacă ieșirea RSLOS-2 la timp T i - 1 (\\ displaystyle t_ (i-1)) egală cu zero și la momentul timpului T i - 2 (\\ displaystyle t_ (i-2)) - unitate și dacă acest registru este clasificat în momentul timpului T i (\\ displaystyle t_ (i)), În același timp, RSLOS-1 nu este tactat. Complexitatea liniară a acestei scheme este aproximativ egală cu perioada secvenței generate.

Generator de auto-absorbție

Generator cu multi-viteză cu activitate internă

Acest generator utilizează două RSLOS-1 și RSLO-2 Shift Register. RCLLO-2 Frecvența ceasului în D (\\ displaystyle d) O dată mai mult decât RSLOS-1. Anumiți biți ai acestor registre se înmulțesc reciproc și de funcționare. Rezultatele multiplicării sunt rezumate de operația XOR și se obține secvența de ieșire. Acest generator are o complexitate liniară ridicată și are proprietăți statistice bune. Cu toate acestea, starea sa poate fi determinată de secvența de ieșire a lungimii L 1 + L 2 + log 2 \u2061 D (\\ displaystyle l_ (1) + l_ (2) + \\ log _ (2) (d))Unde L 1 (\\ displaystyle l_ (1)) și L 2 (\\ displaystyle l_ (2)) - lungimile RSLOS-1 și RSLOS-2, respectiv, și D (\\ displaystyle d) - raportul frecvențelor lor de ceas.

Cascadă de Hallmanna.

Această schemă este o versiune îmbunătățită a generatorului "STOP-Trimitere". Se compune din secvența PCLOS, ceasul fiecărui dintre acestea fiind gestionat de RSLO-urile anterioare. Dacă ieșirea RSLOS-1 la timp T i (\\ displaystyle t_ (i)) este 1, atunci RSLOS-2 este clasificat. Dacă ieșirea RSLOS-2 în momentul timpului T i (\\ displaystyle t_ (i)) este 1, atunci RSLOS-3 este clasificat și așa mai departe. Ieșirea ultimului RSLOS este ieșirea generatorului. Dacă lungimea tuturor RSLOS este aceeași și egală L (\\ displaystyle l)Apoi perioada sistemului de la M (\\ displaystyle m) RSLOS este egal (2 L - 1) m (\\ DisplayStyle (2 ^ (L) -1) ^ (m)), și complexitatea liniară - L (S) \u003d L (2 L - 1) M - 1 (\\ DisplayStyle L (S) \u003d L (2 ^ (L) -1) ^ (M-1)) .

Această idee este simplă și poate fi utilizată pentru a genera secvențe cu perioade imense, dificultăți mari și proprietăți statistice bune. Dar, din păcate, ele sunt sensibile la deschidere, numite blocat (Ing. Lock-in) Când

Secvențele registrelor de forfecare sunt utilizate atât în \u200b\u200bcriptografie, cât și în teoria codificării. Teoria lor este absolut elaborată, springi de streaming pe baza registrelor de forfecare au fost un forță de muncă a criptografiei militare cu mult înainte de apariția electronicii.

Un registru de schimbare a feedback-ului constă din două părți: un registru de schimbare și o funcție de feedback (Figura 1.2.1). Registrul de schimbare este o secvență de biți. (Numărul de biți este determinat de lungimea registrului de schimbare. Dacă lungimea este n biți, registrul este numit un registru de schimbare n-biți.) Ori de câte ori trebuie să scoateți bitul, toți biții de înregistrare a înregistrării dreptul la 1 poziție. Noul bit stâng nou este funcția tuturor celorlalți biți ai registrului. La ieșirea registrului de forfecare se dovedește unul, de obicei sensul mai tânăr, biți. Perioada registrului de schimbare se numește lungimea secvenței obținute înainte de a începe repetarea.

Smochin. 1.2.1.

Criptografii îi plăcea cifre de streaming bazate pe registre de forfecare: ele sunt ușor implementate folosind echipamente digitale. Sunt doar puțin sfâșiat pe teoria matematică. În 1965, Ernst Selmer (Ernst Selmer), criptograful principal al guvernului norvegian, a dezvoltat teoria secvenței de registre de forfecare. Solomon Golomb (Solomon Golomb), NSA Matematică, a scris o carte care a stabilit unele dintre rezultatele sale și rezultatele lui Selmer.

Cel mai simplu tip de registru de deplasare cu feedback este un registru de feedback liniar (înregistrare liniară de schimbare a feedback-ului sau LFSR) (Figura 1.2.2). Feedback-ul este pur și simplu xor unii dintre biții de biți, lista acestor biți se numește o secvență de atingere. Uneori un astfel de registru se numește configurație Fibonaci. Datorită simplității secvenței de feedback pentru analiza LFSR, puteți utiliza o teorie matematică destul de dezvoltată. Criptografii iubesc să analizeze secvențele, convingându-se că aceste secvențe sunt destul de aleatoare pentru a fi în siguranță. LFSR este folosit mai des în registrele criptografice.


Smochin. 1.2.2.

În fig. 1.2.3 prezintă un LFSR LFSR cu 4 biți cu un robinet de la primul și al patrulea biți. Dacă este inițializată de valoarea 1111, atunci înainte de repetare, registrul va lua următoarele state interne:

Smochin. 1.2.3. patru.

Secvența de ieșire va fi un șir de biți semnificativi de juniori:

1 1 1 1 0 1 0 1 1 0 0 1 0 0 0....

n-biți LFSR poate fi într-una din statele interne 2N-1. Aceasta înseamnă că, teoretic, un astfel de registru poate genera o secvență pseudo-aleatorie cu o perioadă de biți 2N-1. (Numărul de stări interne și perioada este de 2N-1, deoarece umplerea LFSR Zeros va avea ca rezultat un registru de schimbare pentru a produce o secvență infinită de zerouri, care este absolut inutil.) Numai cu anumite secvențe LFSR diversificate vor fi ciclice Toate statele interne 2N-1. Astfel de LFSRS sunt LFSR cu perioada maximă. Rezultatul rezultat se numește secvența M.

Pentru ca LFSR specific să aibă o perioadă maximă, polinomul, format din secvența de robinet și constantă 1, trebuie să fie primitiv de către modulul 2. Gradul de polinom este o lungime a registrului de schimbare. Gradul de polinom primitiv N este un polinom ireductibil, care este un divizor, dar nu este un dealer XD + 1 pentru toate D, care sunt divizori 2N-1.

În general, nu există nici o modalitate simplă de a genera polinomii primitivi dintr-un anumit grad de către modulul 2. Cea mai ușoară modalitate de a alege un polinom la întâmplare și de a verifica dacă este primitiv. Nu este ușor - și ceva de genul unui cec, indiferent dacă este un număr simplu ales aleatoriu - dar multe pachete de programe matematice sunt capabile să rezolve o astfel de sarcină.

Unele, dar, desigur, nu toate, polinomii de diferite grade, modulo primitiv 2. De exemplu, înregistrarea (32, 7, 5, 3, 2, 1, 0) înseamnă că următorul polinom este primitiv de modulul 2:

x32 + x7 + x5 + x3 + x2 + x + 1

Acest lucru poate fi generalizat cu ușurință pentru LFSR cu o perioadă maximă. Primul număr este lungimea LFSR. Ultimul număr este întotdeauna egal cu 0 și poate fi omis. Toate numerele, cu excepția de la 0, setați secvența de îndepărtare care se bazează pe marginea din stânga a registrului de schimbare. Adică, membrii polinomului cu un grad mai mic corespund pozițiilor mai aproape de marginea dreaptă a registrului.

Exemplu continuu, înregistrarea (32, 7, 5, 3, 2, 1, 0) înseamnă că noul bit al unui registru de deplasare pe 32 de biți are un nou bit este generat folosind Xor treizeci de ani, al șaptelea, al cincilea, al treilea, al doilea și Primii biți. LFSR rezultat va avea o lungime maximă, trecând ciclic până când se repetă după 232-1 valori.



Ți-a plăcut articolul? Împărtășește-l