Registre de deplasare liniară cu feedback. Registre de deplasare cu feedback Registrul de deplasare cu feedback liniar

Registre de deplasare liniară cu feedback.  Registre de deplasare cu feedback Registrul de deplasare cu feedback liniar
Registre de deplasare liniară cu feedback. Registre de deplasare cu feedback Registrul de deplasare cu feedback liniar

Secvențele de registru de deplasare sunt utilizate atât în ​​criptografie, cât și în teoria codificării. Teoria lor este bine dezvoltată.

Schimbați registrul cu feedback(denumit în continuare RgCsOS) constă din două părți: un registru de deplasare și o funcție de feedback. Un registru de deplasare este o secvență de biți. Se determină numărul de biți lungimea registrului de deplasare, dacă lungimea este de n biți, atunci registrul este apelat registru cu deplasare de n biți. Ori de câte ori un bit trebuie recuperat, toți biții registrului de deplasare sunt deplasați la dreapta cu 1 poziție. Noul bit din stânga este o funcție a tuturor celorlalți biți din registru. Ieșirea registrului de deplasare este de un bit, de obicei cel mai puțin semnificativ. Perioada registrului de schimb este lungimea secvenței rezultate înainte de a începe repetarea acesteia.

Figura 1. Registrul de deplasare a feedback-ului

Registrele de deplasare și-au găsit rapid folosirea în cifrurile de flux, deoarece au fost implementate cu ușurință folosind hardware digital. În 1965, Ernst Selmer, criptograf șef al guvernului norvegian, a dezvoltat teoria secvenței registrului de deplasare. Solomon Golomb, un matematician NSA, a scris o carte în care prezintă unele dintre rezultatele lui și ale lui Selmer. Cel mai simplu tip de registru cu deplasare cu feedback este un registru cu deplasare cu feedback liniar (LFSR). Feedback-ul unor astfel de registre este pur și simplu un XOR (adăugare modul doi) a unor biți de registru, o listă a acestor biți numită secvență de tape. Uneori, un astfel de registru se numește configurație Fibbonacci. Datorită simplității secvenței de feedback, teoria matematică destul de avansată poate fi utilizată pentru a analiza PrCsVOC. Analizând secvențele rezultate, puteți verifica dacă secvențele sunt suficient de aleatorii pentru a fi sigure. RGCCLOS este folosit mai des decât alte registre de deplasare în criptografie.


Figura 2. PrCsLOS Fibbonacci

În general, un PrCsLOS de n biți poate fi într-una dintre N=2 n -1 stări interne. Aceasta înseamnă că teoretic un astfel de registru poate genera o secvență pseudo-aleatorie cu o perioadă de T=2 n -1 biți. (Numărul de stări interne și perioada sunt egale cu N=T max =2 n -1, deoarece completarea PrCsLOS cu zerouri va face ca registrul de deplasare să producă o succesiune infinită de zerouri, ceea ce este absolut inutil). Numai pentru anumite secvențe de ramificație PrCsLOS va trece ciclic prin toate cele 2 n -1 stări interne, astfel de PrCsLOS sunt RgSsLOS cu perioada maximă. Rezultatul rezultat se numește secvența M.

Exemplu . Figura de mai jos arată un PrCCLOS pe 4 biți cu primul și al patrulea biți atinși. Dacă este inițializat cu valoarea 1111, atunci înainte de a se repeta registrul va avea următoarele stări interne:

Schimbă numărul de ceas (stare internă)

Starea de înregistrare

Bit de ieșire

Valoarea inițială

15 (revenirea la starea inițială)

16 (stări repetate)

Secvența de ieșire va fi un șir de biți mai puțin semnificativi: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 cu o perioadă T=15, numărul total de stări interne posibile (cu excepția zero), N=2 4 -1=16-1= 15=T max , prin urmare, secvența de ieșire este o secvență M.

Pentru ca un anumit PrCsLOS să aibă o perioadă maximă, polinomul format din secvența tape și constanta 1 trebuie să fie primitiv modulo 2. Polinomul este reprezentat ca o sumă de puteri, de exemplu, un polinom de gradul n este reprezentat după cum urmează :

o n x n +a n-1 x n-1 + … +a 1 x 1 +a 0 x 0 =a n x n +a n-1 x n-1 + … +a 1 x+a 0 , unde a i =(0,1) pentru i=1…n, a x i - indică cifra.

Gradul polinomului este lungimea registrului de deplasare. Un polinom primitiv de grad n este un polinom ireductibil care este un divizor al lui x 2n?1 +1, dar nu este un divizor al lui x d +1 pentru toți d care sunt divizori ai lui 2 n -1. Teoria matematică corespunzătoare poate fi găsită în.

In general nu exista mod simplu generați polinoame primitive de un anumit grad modulo 2. Cea mai simplă modalitate este de a selecta un polinom la întâmplare și de a verifica dacă este primitiv. Acest lucru nu este ușor și este un pic ca verificarea pentru a vedea dacă un număr selectat aleatoriu este prim - dar multe pachete de software de matematică pot rezolva această problemă.

Unele, dar cu siguranță nu toate, polinoamele de diferite grade care sunt primitive modulo 2 sunt prezentate mai jos. De exemplu, înregistrați

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

Acest lucru poate fi generalizat cu ușurință la PrCsVOC cu o perioadă maximă. Primul număr este lungimea PrCsLOS. Ultimul număr este întotdeauna 0 și poate fi omis. Toate numerele, cu excepția lui 0, specifică o secvență de atingere, numărată de la marginea din stânga a registrului de deplasare. Adică, termenii unui polinom cu grade mai mici corespund pozițiilor mai apropiate de marginea dreaptă a registrului.

Continuând cu exemplul, scrierea (32, 7, 5, 3, 2, 1, 0) înseamnă că pentru un registru de deplasare de 32 de biți dat, un nou bit este generat prin XOR al treizeci și al doilea, al șaptelea, al cincilea, al treilea, al doilea și primii biți, PrCsLOS rezultat va avea o lungime maximă, parcurgând 2 32 -1 valori înainte de a se repeta.


Figura 4. PrCCLOS pe 32 de biți cu lungime maximă

Să luăm în considerare codul de program PrCsLOS, în care secvența tape este caracterizată de un polinom (32, 7, 5, 3, 2, 1, 0). În C arată așa:

ShiftRegister lung static nesemnat = 1;

/* Totul în afară de 0. */

ShiftRegister = ((((ShiftRegister >> 31)

^(ShiftRegister >> 6)

^(ShiftRegister >> 4)

^(ShiftRegister >> 2)

^(ShiftRegister >> 1)

^ShiftRegister))

| (ShiftRegister >> 1);

returnează ShiftRegister & 0x00000001;)

Dacă registrul de deplasare este mai lung decât un cuvânt de calculator, codul devine mai complicat, dar nu mult. Anexa B conține un tabel al unor polinoame primitive modulo 2 pe care îl vom folosi în viitor pentru a identifica unele proprietăți ale acestor polinoame, precum și în implementarea software-ului pentru a specifica secvența tap.

Vă rugăm să rețineți că toate elementele tabelului au un număr impar de coeficienți. Această masă lungă este dată pentru munca in continuare cu RgCsLOS, deoarece RgCsLOC este adesea folosit pentru criptografie cu cifruri de flux și în generatoare de numere pseudoaleatoare. În cazul nostru, putem folosi polinoame cu cel mai mare grad de cel mult șapte.

Dacă p(x) este primitiv, atunci x n p(1/x) este primitiv, deci fiecare element al tabelului definește de fapt două polinoame primitive. De exemplu, dacă (a, b, 0) este primitiv, atunci (a, a-b, 0) este și el primitiv. Dacă (a, b, c, d, 0) este primitiv, atunci (a, a-d, a-c, a-b, 0) este și el primitiv. Din punct de vedere matematic:

dacă x a +x b +1 este primitiv, atunci x a +x a-b +1 este primitiv,

dacă x a +x b +x c +x d +1 este primitiv, atunci x a +x a-d +x a-c +x a-b +1 este primitiv.

Trinoamele primitive sunt cele mai rapide de implementat în software, deoarece pentru a genera un nou bit trebuie să XOR doar doi biți din registrul de deplasare (termenul zero nu este luat în considerare, adică x 0 = 1, vezi exemplul de mai sus). Într-adevăr, toate polinoamele de feedback date în tabel sunt rare, adică au puțini coeficienți. Sparsitatea este întotdeauna o sursă de slăbiciune, care uneori este suficientă pentru a rupe algoritmul. Pentru algoritmii criptografici, este mult mai bine să folosiți polinoame primitive dense, cele cu mulți coeficienți. Folosind polinoame dense, în special ca parte a unei chei, se poate folosi PrCsLOS mult mai scurt.

Generarea de polinoame primitive dense modulo 2 nu este ușoară. În general, pentru a genera polinoame primitive de gradul k, trebuie să cunoașteți factorizarea numărului 2 k -1. Prin ei înșiși, PrCsLOS sunt generatori buni de secvențe pseudo-aleatoare, dar au unele proprietăți nealeatoare (deterministe) nedorite. Biții consecutivi sunt liniari, ceea ce îi face inutili pentru criptare. Pentru un PrCcLOS de lungime n, starea internă este cei n biți de ieșire anteriori ai generatorului. Chiar dacă circuitul de feedback este păstrat secret, acesta poate fi determinat din cei 2n biți de ieșire ai oscilatorului folosind algoritm eficient

În plus, mare numere aleatorii, generați folosind biți consecutivi ai acestei secvențe, sunt foarte corelate și pentru unele tipuri de aplicații nu sunt deloc aleatorii. În ciuda acestui fapt, RgCCLOS sunt adesea folosite pentru a crea algoritmi de criptare ca componente ale sistemelor și algoritmi de criptare.

- „Tetromino tenis”). A creat și rezolvat nenumărate puzzle-uri și jocuri de cuvinte matematice. Acum aproximativ 20 de ani am aflat că el a fost foarte aproape de a descoperi regula mea preferată de 30 pentru automatele celulare, în 1959, când tocmai m-am născut.

Cum l-am cunoscut pe Saul Golomb

Aproape toți oamenii de știință și matematicienii pe care îi cunosc au ajuns să mă cunoască prin relațiile mele profesionale. Dar nu Sola Golomba. Era 1981, iar eu, un fizician de 21 de ani (care devenisem un pic celebru în mass-media pentru că eram cel mai tânăr laureat al Premiului MacArthur la ceremonia inaugurală de premiere), făceam cercetări la . S-a auzit o bătaie la ușa biroului meu și în curând o tânără a trecut pragul. Acest lucru era deja neobișnuit, pentru că în acele vremuri, în care se studia fizica teoretică a energiilor înalte, erau fără speranță puține femei. Deși locuisem în California de câțiva ani, nu părăsisem niciodată campusul și eram prost pregătit pentru explozia de energie din California de Sud care a izbucnit în biroul meu. Femeia s-a prezentat ca fiind Astrid și a spus că a fost la Oxford și că știa pe cineva cu care am fost grădiniţă. Ea a explicat că a fost însărcinată cu strângerea de informații despre oameni interesanți din zona Pasadena. Cred că ea mă considera un caz dificil, dar totuși a insistat să vorbesc. Și într-o zi, când încercam să spun ceva despre ceea ce fac, ea a spus: „ Trebuie să-l cunoști pe tatăl meu. El este deja bătrân dar mintea îi este încă ascuțită „Și s-a întâmplat că Astrid Golomb, fiica cea mare a lui Sol Golomb, mi-a făcut cunoștință cu el.

Familia Golomb locuia într-o casă situată în munți, lângă Pasadena. Au avut două fiice: Astrid - puțin mai mare decât mine, o fată ambițioasă de la Hollywood și Beatrice - cam de vârsta și mintea mea științifică. Surorile Golomb organizau adesea petreceri, de obicei la ei acasă. Temele au fost diferite: o petrecere în grădină și crochet cu flamingo și arici (" Câștigătorul va fi cel al cărui costum se potrivește cel mai bine cu tema menționată"), sau o petrecere în stil Stonehenge, cu instrucțiuni scrise în rune. La aceste petreceri s-au încrucișat tineri și nu atât de tineri, inclusiv diverse luminate locale. Și la ei, puțin în lateral, era mereu un omuleț cu o barbă mare, un pic ca un spiriduș și purtând mereu o haină întunecată – Solomon Golomb însuși.

Treptat am aflat ceva despre el. În ce a fost implicat" teoria informaţiei„. Că a lucrat la Universitatea din California de Sud. Că a avut diverse conexiuni guvernamentale vagi, dar aparent la nivel înalt și alte conexiuni. Am auzit despre registrele de schimb, dar nu știam practic nimic despre ele.

Iată ce se întâmplă după un timp:

După cum puteți vedea, registrul de deplasare deplasează întotdeauna biții la stânga, iar alți biți sunt adăugați la dreapta conform unei reguli simple. Secvența de biți pare să fie aleatorie, deși, așa cum se arată în figură, se repetă în cele din urmă. Sol Golomb a găsit o modalitate matematică elegantă de a analiza astfel de secvențe și modul în care se repetă.

Dacă registrul de deplasare are dimensiune n, atunci are 2 n stări posibile (corespunzătoare tuturor secvențelor posibile de 0 și 1 cu o lungime n). Deoarece regulile pentru un registru de deplasare sunt deterministe, orice poziție dată trebuie să convergă întotdeauna către o altă poziție similară. Aceasta înseamnă că numărul maxim posibil de pași prin care poate parcurge registrul de deplasare înainte ca pașii să înceapă să se repete este 2 n(de fapt 2 n- 1, deoarece o poziție cu toate 0-urile nu poate evolua în altceva).

În exemplul de mai sus, registrul de deplasare este de dimensiunea 7 și se va repeta în exact 2 7 - 1 = 127 de pași. Dar ce registre de deplasare - cu ce aranjamente de tape - vor produce secvențe de lungime maximă? Solomon Golomb a început să exploreze această întrebare în vara anului 1954. Iar răspunsul lui a fost simplu și elegant.

Registrul de deplasare de mai sus are ramuri la pozițiile 7, 6 și 1. Saul a reprezentat acest lucru algebric folosind un polinom X 7 + X 6 + 1. Apoi a arătat că secvența generată va fi de lungime maximă dacă acest polinom " ireductibil modulo 2„; prin urmare, nu poate fi factorizat, ceea ce îl face analogul numărului prim al polinoamelor; iar prezența altor proprietăți îl face un „polinom primitiv”. Astăzi, acest lucru este ușor de verificat folosind Mathematica și Wolfram Language:

Pe atunci, în 1954, Saul trebuia să facă totul manual; el a compilat un tabel destul de lung de polinoame primitive corespunzătoare registrelor de deplasare care au produs secvențe de lungime maximă:

Istoricul registrelor de deplasare

Ideea de a menține RAM prin " linii de întârziere", care transmit impulsuri digitale, datează de la începutul erei computerelor. Până la sfârșitul anilor 1940, astfel de linii de întârziere au fost aplicate digital folosind o serie de tuburi cu vid și au fost numite " registre de deplasare„Nu este încă clar când au fost create primele registre de schimbare a feedback-ului. S-ar putea să fi fost la sfârșitul anilor 1940. Cu toate acestea, acest eveniment este încă învăluit în mister, deoarece au fost folosite pentru prima dată în criptografia militară.

Ideea de bază a criptografiei este de a schimba mesajele semnificative, astfel încât să nu poată fi recunoscute; totuși, dacă cunoașteți cheia, puteți recrea mesajul criptat. Așa-numitele cifruri în flux funcționează pe principiul creării de secvențe lungi de elemente aparent aleatorii și sunt decodificate folosind un receptor care generează în mod independent aceeași secvență de elemente.

Registrele cu deplasare cu feedback liniar au fost apreciate în criptografie datorită perioadelor lungi de repetare. Cu toate acestea, analiza matematică folosită de Saul pentru a găsi aceste perioade arată clar că astfel de registre de deplasare nu sunt potrivite pentru criptografie sigură. Cu toate acestea, la început păreau destul de bune (mai ales în comparație cu pozițiile secvențiale ale rotorului din Enigma); au existat zvonuri persistente că criptosistemele militare sovietice au fost construite pe această bază.

În 2001, când lucram la note istorice pentru cartea mea Un nou tip de știință, Saul și cu mine am avut o lungă conversație la telefon despre schimbarea cazurilor. Saul mi-a spus că, atunci când a început, nu știa nimic despre munca criptografică a registrului de schimb. El a spus că oamenii de la Bell Labs, Lincoln Labs și Jet Propulsion Laboratory au început să lucreze la registrele de schimbare cam în același timp cu el; a reușit totuși să meargă puțin mai departe, ceea ce a notat în raportul său din 1955.

În anii următori, Saul a aflat treptat despre diferitele antecedente ale lucrării sale din literatura de matematică pură. Încă din 1202, Fibonacci vorbea despre ceea ce se numesc acum numere Fibonacci, care sunt generate de o relație de recurență (care poate fi considerată analogă cu un registru de deplasare cu feedback liniar, care funcționează pe numere întregi arbitrare, mai degrabă decât pe unu și zero). Există, de asemenea, lucrări mici de la începutul anilor 1900 cu privire la ciclicitatea lui 0 și 1, dar primul studiu la scară largă a fost lucrarea lui Oystein Åre de la Universitatea din Oslo. Ore a avut un student pe nume Marshall Hall care l-a consiliat pe predecesorul Agenției Naționale de Securitate la sfârșitul anilor 1940. - probabil pe tema registrelor de deplasare. Totuși, tot ceea ce a făcut a fost clasificat și așa a aranjat ca Saul să publice istoria registrelor de deplasare cu feedback linear; Saul și-a dedicat cartea lui Marshall Hall.

Pentru ce sunt secvențele generate de registrele de deplasare?

Am observat de multe ori că sistemele definite prin reguli simple sfârșesc cu multe aplicații posibile; De asemenea, registrele de deplasare urmează acest model. Atât hardware-ul modern, cât și software-ul sunt pline de registre de deplasare: un telefon mobil tipic are probabil o duzină sau două dintre ele, de obicei implementate în hardware și, uneori, în software(atunci când scriu „registru de schimbare” aici, mă refer la registru de deplasare cu feedback liniar - LFSR).

În cele mai multe cazuri, acele registre de deplasare care produc secvențe de lungime maximă (cunoscute și sub denumirea de „ secvențe M"). Motivele pentru care sunt folosite în general au de-a face cu unele dintre proprietățile lor pe care le-a descoperit Saul. Ele conțin întotdeauna același număr de 0 și 1 (deși, de fapt, există întotdeauna exact un 1 în plus). Saul a arătat ulterior că ei este, de asemenea, obișnuit să aibă același număr de secvențe 00, 01, 10 și 11 - și pentru blocurile mari Această proprietate este ". echilibru„Acest lucru în sine este deja foarte util - de exemplu, dacă testați toate combinațiile posibile de biți ca intrare.

Cu toate acestea, Saul a descoperit o altă proprietate, și mai importantă. Înlocuiți fiecare 0 din secvență cu un 1, apoi înmulțiți fiecare element din versiunea deplasată a secvenței cu elementul corespunzător din original. Saul a arătat că atunci când sunt adăugate, aceste elemente vor fi întotdeauna egale cu zero (cu excepția cazurilor în care nu există nicio schimbare). Adică, secvența nu are nicio corelație cu versiunile deplasate ale ei însăși.

Aceste proprietăți vor fi adevărate pentru orice secvență aleatorie suficient de lungă de 0 și 1 În mod surprinzător, pentru secvențe de lungime maximă, aceste proprietăți sunt întotdeauna adevărate. Secvențele au unele trăsături haotice, dar de fapt nu sunt haotice deloc: au o structură bine definită, organizată.

Această structură inerentă registrelor de deplasare cu feedback liniar le face nepotrivite pentru criptografia serioasă. Dar sunt grozave pentru „permutarea elementului” de bază și criptografia cu costuri reduse și sunt utilizate pe scară largă în aceste scopuri. Adesea, sarcina este pur și simplu să „albiți” semnalul (ca în „zgomotul alb”). Uneori trebuie să transmiteți date cu secvențe lungi de 0 Dar, în acest caz, electronica poate deveni confuză dacă „tăcerea” este prea lungă. Puteți evita această problemă prin amestecarea datelor originale combinându-le cu secvența generată de registrul de deplasare. Este exact ceea ce s-a făcut cu Wi-Fi, Bluetooth, USB, TV digital, internet etc.

Un efect secundar al amestecării registrelor de schimbare este decodarea mai complexă, care este uneori folosită pentru a îmbunătăți securitatea (tehnologia DVD utilizează o combinație de registre de deplasare pe 16 și 24 de biți pentru a codifica datele; multe telefoane GSM folosesc o combinație de trei registre de deplasare pentru codifică toate semnalele).

Saul a creat baza matematică pentru toate acestea și a introdus, de asemenea, o serie de figuri cheie unul altuia. Încă din 1959, l-a cunoscut pe Irwin Jacobs, care și-a primit recent doctoratul de la MIT. Îl cunoștea și pe Andy Viterbi, care lucra la Jet Propulsion Laboratory. Saul le-a prezentat și în 1968 au înființat o companie numită Linkabit, care lucrează la sisteme de codare (în special în scopuri militare).

În 1985, Jacobs și Viterbi au fondat o altă companie numită Qualcomm. Nu s-au descurcat deosebit de bine la început, dar la începutul anilor 1990, când au început să producă componente pentru implementarea CDMA în telefoane mobile, compania a început să crească rapid.

Deci unde sunt aceste registre?

Este surprinzător că majoritatea oamenilor nu au auzit niciodată de registrele de deplasare și totuși interacționează cu ele de fiecare dată când le folosesc sisteme moderne comunicatii, tehnologie informatică etc. Este ușor să fii confuz aici, având în vedere că în spatele diferitelor nume și abrevieri se află aceleași secvențe de registre de deplasare cu feedback liniar (PN, pseudo zgomot, secvențe M-, FSR, LFSR, MLS, SRS, PRBS etc.) .

Când vine vorba de telefoane mobile, utilizarea lor a secvențelor generate de registrul de schimbare a variat de-a lungul anilor, crescând și descrezând. rețelele se bazează pe TDMA, așa că nu folosesc secvențe generate de registrul de deplasare pentru a-și codifica datele, dar încă folosesc adesea CRC (cod de redundanță ciclică) pentru a verifica blocurile de date. rețelele sunt cei mai mari utilizatori de CDMA, astfel încât secvențele generate de registrele de deplasare sunt implicate în transmiterea fiecărui bit. rețelele folosesc de obicei o combinație de intervale de timp și frecvență care nu includ secvențe de registru de deplasare, deși CRC-urile sunt încă folosite: de exemplu, pentru a interacționa cu date integrale atunci când ferestrele de frecvență se suprapun. are o structură mai complexă - cu antene multiple care se adaptează dinamic pentru a utiliza timpul și frecvența optime a sloturilor. Cu toate acestea, jumătate din canalele lor sunt de obicei alocate „semnalelor pilot” care sunt utilizate pentru a deduce mediul radio local; se bazează şi pe secvenţe generate de registrele de deplasare.

În producția de electronice, de obicei încercăm să obținem cel mai mult de mare viteză transmiterea datelor cu un consum minim de energie, permițând biților să depășească pragul de zgomot. Și, de regulă, această cale duce la automatizarea detectării erorilor - și, prin urmare, la utilizarea CRC (cod de redundanță ciclică) și, prin urmare, la secvențe generate de registrul de deplasare. Acest lucru se aplică aproape tuturor tipurilor de magistrale din interiorul unui computer (PCIe, SATA etc.): asigurarea interacțiunii între părțile procesorului central sau primirea datelor de la dispozitive sau conectarea la un afișaj cu HDMI. În cazul discurilor sau al memoriei, CRC și alte coduri bazate pe secvențe generate de registrele de deplasare sunt, de asemenea, folosite aproape universal pentru a funcționa la viteză maximă.

Registrele de deplasare sunt atât de omniprezente încât este aproape imposibil de estimat câți biți generează. Există aproximativ 10 miliarde de computere, puțin mai puține telefoane și un număr mare de dispozitive în IoT încorporat („Internet of Things”). Aproape fiecare mașină din lume (și există mai mult de un miliard dintre ele!) are aproximativ 10 microprocesoare încorporate.

La ce frecvență funcționează registrele de deplasare? Sistemele de comunicații au o frecvență purtătoare de bază în intervalul de herți, precum și o „rată de cip”, care arată cât de repede apar accesările multiple ( despre care vorbim o CDMA) în intervalul MHz. Pe de altă parte, în autobuzele din interiorul computerelor, toate datele sunt transferate folosind registre de deplasare - cu cea mai bună viteză de transfer în intervalul de herți.

Există cel puțin 10 miliarde de linii de comunicație care rulează timp de cel puțin 1/10 miliarde de secunde (aproximativ 3 ani) care folosesc cel puțin 1 miliard de biți din registrele de deplasare în fiecare secundă, ceea ce înseamnă că până în prezent algoritmul lui Saul a fost folosit de cel puțin un octilion de ori. .

Este acesta cel mai des folosit algoritm? Cred ca da. Bănuiesc că numai operațiile aritmetice pot concura. În zilele noastre, procesoarele sunt capabile să proceseze un trilion operatii aritmetice pe secundă, iar astfel de operațiuni sunt necesare pentru aproape fiecare bit generat de un computer. Dar cum se face aritmetica? La un anumit nivel, aceasta este pur și simplu implementarea electronicii digitale.

Cu toate acestea, există „idei algoritmice” care rămân neclare pentru toată lumea, cu excepția designerilor de microprocesoare. Când Babbage și-a făcut diferența (vezi articolul Habré „Dezvăluirea poveștii Adei Lovelace (primul programator din istorie)”), transporturile au devenit o piedică majoră în efectuarea operațiilor aritmetice (de fapt, se poate gândi la un registru de deplasare cu feedback liniar). ca un sistem care face ceva de genul calculelor aritmetice, dar nu se reportează). Există „arbori de propagare a transferului” care optimizează transferul. Există, de asemenea, mici trucuri (cum ar fi „Algoritmul Booth”, „Arborii Wallace”, etc.) care reduc numărul de operații pe biți necesare pentru a crea „internele” aritmeticii. Dar, spre deosebire de registrele de deplasare cu feedback liniar, pur și simplu nu există o idee algoritmică unică care să poată fi folosită aproape oriunde; deci cred că cele mai lungi secvențe generate de registrele de deplasare cu feedback liniar câștigă în continuare printre cele mai utilizate secvențe.

Automate celulare și registre de deplasare cu feedback neliniar

Deși poate să nu pară evident la prima vedere, se pare că există o legătură strânsă între registrele de schimbare a feedback-ului și automatele celulare pe care le-am studiat de mulți ani. Organizarea de bază pentru un registru de schimbare a feedback-ului este de a evalua câte un bit. Într-un automat celular, există o linie de celule și, la fiecare pas, toate celulele sunt actualizate în paralel, pe baza unei reguli care depinde, de exemplu, de valorile celor mai apropiați vecini.

Pentru a vedea cum sunt legate, trebuie să rulați un registru de schimbare a feedback-ului de dimensiune n, și, în același timp, afișează starea sa numai fiecare n trepte; cu alte cuvinte, lăsați toate biții să fie rescrise înainte de a apărea din nou. Dacă fiecare pas al unui registru de deplasare cu feedback liniar este mapat (aici cu două atingeri), atunci la fiecare pas totul se va deplasa spre stânga - asta este. Dar dacă faci o imagine comprimată, arătând numai fiecare n pași, un model va deveni vizibil.

Acesta este un model imbricat; iar această imagine este foarte asemănătoare cu cea care poate fi obținută dacă un automat celular ia o celulă și vecinul ei și le adaugă modulo 2 (XOR). Iată ce se întâmplă cu un automat celular dacă își aranjează celulele astfel încât să fie într-un cerc de aceeași dimensiune ca registrul de deplasare de mai sus:

La început, automatele celulare și tiparele registrului de schimbare se dovedesc a fi exact aceleași. Dacă te uiți la aceste imagini, devine mai puțin surprinzător că matematica registrelor de deplasare ar trebui să aibă ceva de-a face cu automatele celulare. Și având în vedere repetabilitatea modelelor imbricate, este clar de ce trebuie să existe o teorie matematică elegantă pentru registrele de deplasare.

Registrele de deplasare tipice utilizate în practică nu au astfel de modele care se repetă în mod clar. Iată câteva exemple de registre de deplasare care generează secvențe de lungime maximă. Faptul este că ramurile sunt îndepărtate, ceea ce face dificilă găsirea de urme vizuale de cuibărit.

Cât de largă este corespondența dintre registrele de deplasare și automatele celulare? Pentru automatele celulare, regulile pentru generarea de noi valori de celule pot fi orice. În registrele cu deplasare cu feedback liniar, acestea ar trebui să se bazeze întotdeauna pe adăugarea modulo 2 (sau XOR). Aceasta este ceea ce înseamnă partea „liniară” a unui „registru de deplasare cu feedback liniar”. De asemenea, este posibil să utilizați orice regulă pentru a combina valorile pentru registrele de deplasare cu feedback neliniar (NFSR).

Într-adevăr, când Saul și-a dezvoltat teoria pentru registrele de deplasare cu feedback liniar, a început cu cazul neliniar. Când a ajuns la JPL în 1956, a primit un laborator complet cu rafturi pentru module electronice mici. Saul a spus că modulele (fiecare aproximativ de dimensiunea unui pachet de țigări) au fost construite pentru un proiect Bell Labs pentru a îndeplini o anumită sarcină. operatie logica(ȘI, SAU, NU, ...). Modulele pot fi folosite împreună pentru a implementa orice registre de deplasare a feedback-ului neliniar dorit, oferind aproximativ un milion de biți pe secundă (Sol mi-a spus că cineva a încercat să facă același lucru cu calculator universal, iar ceea ce a durat 1 secundă folosind module hardware a durat 6 săptămâni de lucru pe un computer mainframe).

Când Saul a început să studieze registrele de schimbare a feedback-ului linear, prima sa descoperire majoră au fost perioadele lor de repetiție. Și în cazul celor neliniare, el și-a dedicat majoritatea eforturilor încercării de a înțelege același lucru. A adunat tot felul de date experimentale. Mi-a spus că a testat chiar și secvențe lungi de 2 45, ceea ce a durat un an. A făcut un rezumat ca în imaginea de mai jos (observați vizualizarea secvențelor afișate pe linia formei de undă). Dar nu a reușit niciodată să vină cu vreunul teorie generală, pe care o avea pentru registrele de deplasare cu feedback liniar.

Nu e de mirare că nu a putut să o facă. Încă din anii 1950, au existat rezultate teoretice (în mare parte bazate pe ideile lui Turing despre calculul universal) despre programele care ar putea, în principiu, să facă acest lucru. Nu cred că Saul sau oricine altcineva s-au gândit vreodată că registrele de deplasare cu feedback neliniar ar folosi funcții foarte simple (neliniare).

Și abia mai târziu a devenit clar cât de complex este comportamentul chiar și foarte programe simple. Exemplul meu preferat este Regula 30 pentru un automat celular, în care valorile celulelor învecinate sunt combinate folosind o funcție care poate fi reprezentată ca r + q + r + q*r mod 2(sau r XOR ( q SAU r)). Incredibil, Saul se gândea la registre neliniare de schimbare a feedback-ului bazate pe funcții similare: r + G + s + q*r + q*s + r*s mod 2. Iată mai jos ilustrații despre cum arată funcția lui Saul (care poate fi considerată „regula 29070”), regula 30 și alte câteva reguli similare într-un registru de schimbare:

Și iată-le, nelimitate de un registru de dimensiune fixă, similar cu automatele celulare:

Desigur, Saul nu a făcut niciodată astfel de imagini (și era aproape imposibil de făcut în anii 1950). În schimb, s-a concentrat pe perioada de repetiție ca pe un fel de caracteristică agregată.

Saul s-a întrebat dacă registrele de deplasare cu feedback neliniar ar putea fi surse ale aleatoriei. Din ceea ce se știe în prezent despre automatele celulare, este clar că pot. De exemplu, pentru a crea haos pentru Mathematica, am folosit regula celor 30 de automate celulare timp de 25 de ani (deși recent am abandonat-o în favoarea unei reguli mai eficiente pe care am găsit-o după ce am studiat trilioane de posibilități).

Saul nu a vorbit prea mult despre criptare; deși cred că a lucrat pentru guvern doar pentru o perioadă scurtă de timp. Mi-a spus că, deși în 1959 a descoperit " atacuri de corelație multidimensională asupra secvențelor neliniare„în același timp el” a evitat cu grijă afirmațiile că programul era pentru criptoanaliza„Ideea este că regula 30 pentru automatele celulare (și poate și registrele neliniare cu deplasare cu feedback) pot fi criptosisteme bune - deși datorită faptului că sunt aparent echivalente cu registrele cu deplasare cu feedback liniar (ceea ce nu este așa), nu au fost niciodată folosite. pe cât posibil.

Ca un entuziast, în ultimele decenii am încercat să studiez toți predecesorii lucrării mele despre automatele celulare unidimensionale. Automatele celulare bidimensionale au fost puțin studiate, dar în cazul automatelor celulare unidimensionale s-a găsit o singură lucrare pur teoretică. Mă gândesc la toate lucrurile pe care le-am văzut, registrele neliniare de schimbare a feedback-ului lui Solomon Golomb au fost cele mai apropiate de ceea ce am ajuns să fac un sfert de secol mai târziu.

Polyomino

Auzind numele " Golomb „, mulți își vor aminti registrele de deplasare. Cu toate acestea, majoritatea își vor aminti poliomino. Saul nu a inventat poliominoe, deși a venit cu numele. El a făcut sistematic ceea ce apărea anterior doar în puzzle-uri individuale.

Principala întrebare la care Saul la care era interesat să răspundă a fost cum ar putea fi organizate seturi de poliomino pentru a acoperi o anumită zonă. Uneori este destul de evident, iar uneori destul de dificil. Saul a publicat prima lucrare despre poliomino în 1954, dar Martin Gardner a fost cel care a făcut cu adevărat poliominoele populare în 1957 (a scris o rubrică despre jocurile matematice în revistă științific american). După cum a explicat Saul în prefața cărții sale din 1964, rezultatul a fost „ un flux constant de corespondenți din întreaga lume și din toate categoriile sociale: președinți ai consiliilor de administrație ale universităților de top, rezidenți ai mănăstirilor necunoscute, prizonieri din închisori celebre...".

Companiile de jocuri au luat în seamă noile puzzle-uri și în câteva luni au apărut titluri precum „ noi puzzle-uri senzaționale", urmată de zeci de ani de alte puzzle-uri și jocuri pe bază de poliomino (nu, tipul chel înfiorător nu arată ca Saul):

Saul a continuat să publice articole despre poliomino pentru încă 50 de ani de la prima publicare. În 1961, el a introdus „rep-tiles” care ar putea fi folosite pentru a crea modele fractale („Infin-tile”). Dar aproape tot ce a făcut Saul cu poliominoi implica rezolvarea unor probleme specifice.

Mă interesează puțin specificul poliominoelor; Sunt interesat de fenomenele mai generale asociate acestora. Se pare că se poate decide cu câteva forme simple Este ușor să „pavezi” întregul avion. Dar cu poliominoe (și toate jocurile și puzzle-urile bazate pe ele), este clar că lucrurile nu sunt atât de simple. Și într-adevăr, în anii 1960 s-a dovedit că această problemă este teoretic de nerezolvat.

Dacă ne interesează doar o zonă limitată, atunci, în principiu, putem enumera pur și simplu toate aranjamentele imaginabile ale figurilor și apoi să vedem dacă sunt aranjate așa cum ar trebui. Cu toate acestea, dacă suntem interesați de infinit, atunci acest lucru nu trebuie făcut. Poate cineva va găsi o modalitate de a plasa cu succes un milion de cifre, dar nu există nicio garanție că acest rezultat poate fi extins și mai mult.

Se pare că ar putea arăta ca o mașină Turing funcțională - sau un automat celular. Începi cu o linie de plăci. Atunci întrebarea dacă este posibilă placarea infinită este echivalentă cu întrebarea dacă este posibil să se instaleze o mașină Turing care să îi permită să nu se oprească. Ideea este că, dacă o mașină Turing este universală (adică poate fi programată pentru a efectua orice calcul posibil), atunci problema de oprire a acesteia poate fi indecidabilă, ceea ce înseamnă că și problema de tiling va fi indecidabilă.

Desigur, acest lucru depinde de setul original de formulare. Întrebarea este cât de complexe trebuie să fie formele pentru a codifica calculele universale și pentru a duce la o problemă de țiglare de nerezolvat. Solomon Golomb cunoștea literatura pe această temă, dar nu era deosebit de interesat de ea.

Se știe că seturi complexe și atent proiectate de poliominoe suportă de fapt calculul universal. Dar ce zici de un set simplu? Este într-adevăr suficient de simplu pentru a fi dat din întâmplare? Dacă te uiți la toate sistemele pe care le-am studiat, cel mai simplu set se dovedește cu adevărat simplu. Cu toate acestea, este greu de găsit.

O problemă mult mai simplă este să găsești poliomino care să umple cu succes avioanele, deși doar neperiodic. Roger Penrose a găsit un exemplu potrivit în 1994. În cartea mea Un nou tip de știință Am dat un exemplu puțin mai simplu cu 3 poliominoe:

Restul poveștii

Saul avea treizeci de ani când a obținut un succes notabil în domeniul registrelor de schimbare și al poliominoelor... Era o persoană foarte activă. A scris câteva sute de lucrări, dintre care unele au extins lucrările sale anterioare, dintre care unele erau răspunsuri la întrebările care i se adresase, iar unele au fost scrise, se pare, doar pentru distracție - pentru a afla lucruri interesante despre numere, secvențe. , criptosisteme etc. d.

Registrele de deplasare și poliominoele sunt subiecte extinse (sunt chiar clasificate în categorii separate în clasificarea AMS). În ultimele decenii, amândoi au primit o nouă rundă de dezvoltare când au început să fie efectuate experimente pe calculator pe baza lor; Sol a participat activ la ele. Cu toate acestea, multe întrebări rămân fără răspuns. Și dacă pot fi găsite matrici mari Hadamard pentru registrele de deplasare cu feedback liniar, atunci chiar și acum se știe puțin despre registrele de deplasare cu feedback neliniar, ca să nu mai vorbim de toate poliominoele neperiodice și alte exotice.

Saul a fost întotdeauna interesat de puzzle-uri, atât puzzle-uri matematice, cât și cu cuvinte. De ceva vreme a scris o coloană puzzle pentru Los Angeles Timesși timp de 32 de ani a scris „ Gambiturile lui Golomb" în revista pentru absolvenți de la Johns Hopkins. A luat parte la testarea MegaIQ și a câștigat o excursie la Casa Albă când el și șeful său s-au clasat printre primele cinci din țară.

A investit un efort enorm în munca sa la universitate: nu numai că a predat studenți și a supervizat studenți absolvenți și a urcat pe scara administrativă (președinte al consiliului universitar, prorector pentru cercetare etc.), dar și-a exprimat și opiniile cu privire la managementul universitatea în ansamblu (de exemplu, a scris un articol intitulat „Consultanța facultății: îndepărtați sau părăsiți?”; Răspuns: nu, este bine pentru universitate!). La Universitatea din California de Sud, a fost un vânător de capete, iar în timpul petrecut acolo, a ajutat universitatea să se ridice din obscuritate în fruntea clasamentului programelor educaționale.

Și apoi a fost consultanță. Saul a fost meticulos și nu a dezvăluit ce a făcut pentru organizațiile guvernamentale. La sfârșitul anilor 1960, frustrat că toată lumea, în afară de el, vindeau jocuri poliomino, Saul a fondat o companie pe care a numit-o Recreational Technology, Inc. Lucrurile nu mergeau prea bine, dar Saul l-a cunoscut pe Alvin Berlekamp, ​​​​un profesor din Berkeley care era interesat de teorii de codificare și puzzle-uri. Ulterior au fondat compania Cyclotomics (în cinstea polinoamelor ciclotomice de forma x n– 1), care a fost vândut în cele din urmă către Kodak pentru o sumă ordonată (Berlekamp a creat și un sistem de tranzacționare algoritmică, pe care l-a vândut apoi lui Jim Simons și care a devenit punctul de plecare pentru Renaissance Technologies, unul dintre cele mai mari fonduri speculative de astăzi).

Peste 10.000 de brevete sunt legate într-un fel sau altul de opera lui Saul, dar Saul însuși a primit doar un singur brevet pe criptosisteme bazate pe cvasi-grup - și cred că a făcut puțin pentru a-și comercializa munca.

Timp de mulți ani, Saul a lucrat cu Technion, un institut israelian de tehnologie. El a vorbit despre el ca „ evreu ortodox nereligios„, dar, în același timp, a predat uneori seminarii despre Cartea Genezei pentru începători și a lucrat și la descifrarea părților din Manuscrisele de la Marea Moartă (manuscrisele Qumran).

Saul și soția sa au călătorit mult, dar „centrul lumii” al lui Saul a fost cu siguranță biroul lui din Los Angeles, la Universitatea din California de Sud, și casa în care el și soția sa au locuit timp de aproape 60 de ani. A fost mereu înconjurat de prieteni și studenți. Și avea o familie. Fiica sa Astrid a jucat rolul unui student într-o piesă despre Richard Feynman (ea a pozat pentru el) și în romanul unui prieten ca unul dintre personaje. Beatrice și-a dedicat cariera aplicării unui nivel matematic de precizie diferitelor tipuri de afecțiuni și diagnostice medicale (boli legate de Războiul din Golf, efectele statinelor, sughiț etc.). Am adus chiar și o mică contribuție la viața Beatricei, prezentându-i bărbatului care mai târziu i-a devenit soț - Terry Sejnowski, unul dintre fondatorii neuroștiinței computaționale moderne.

Saul părea implicat în multe lucruri, chiar dacă nu vorbea prea mult despre detalii. Din când în când am vrut să vorbesc cu el despre știință și matematică, dar el era mai interesat să spună povești (deseori foarte incitante) atât despre indivizi cât și despre organizații (" Îți vine să crezi că [în 1985], după ani de absență de la conferințe, Claude Shannon a apărut pur și simplu neanunțat la bar la conferința anuală de teoria informației?"; "știi cât au trebuit să plătească șefului Caltech pentru a-l face să plece în Arabia Saudită?", etc.).

Privind în urmă, îmi dau seama că mi-ar fi plăcut să-l interesez pe Saul să rezolve unele dintre întrebările matematice ridicate în munca mea. Nu cred că mi-am dat seama vreodată în ce măsură îi plăcea să rezolve problemele propuse de alți oameni. În ciuda contribuțiilor sale semnificative la infrastructura lumii computerelor, Saul însuși nu a folosit niciodată în mod serios computerele. Era foarte mândru de faptul că putea face cu ușurință calcule în capul lui. Până la vârsta de 70 de ani, nu a folosit e-mailul și nu a folosit niciodată un computer acasă, totuși telefon mobil el a avut (obișnuit e-mail aproape nimic nu venea de la el. Am menționat odată că în urmă cu aproximativ un an studiam povestea Adei Lovelace; el a raspuns: " Povestea Adei Lovelace ca programatoare a lui Babbage este atât de răspândită încât toată lumea pare să o accepte ca pe un fapt, dar nu am văzut niciodată surse pe acest subiect.").

Fiicele lui Saul au organizat o petrecere de 80 de ani în urmă cu câțiva ani și au creat aceste invitații interesante:

Sol a avut unele probleme de sănătate, deși acest lucru nu părea să-i afecteze foarte mult ritmul de viață. Starea de sănătate a soției sale se înrăutățise, destul de brusc în ultimele săptămâni. Vineri, Saul s-a dus la birou ca de obicei, iar sâmbătă seara a murit în somn. Soția lui Bo i-a supraviețuit cu doar două săptămâni și a murit cu doar două zile înainte de a 60-a aniversare a nunții.

Deși Saul a dispărut, munca lui continuă să trăiască în octlioane de biți în lumea digitală.

La revedere Sol. Și de la noi toți - mulțumesc.



Cel mai simplu tip de funcție de feedback este o funcție liniară, de exemplu, suma modulo 2 a conținutului anumitor biți. Acest registru se numește registru cu deplasare cu feedback liniar (LFSR). În general, funcția de feedback liniar este dată de formula. Aici c k= 1 dacă k Al treilea bit este folosit în funcția de feedback și c k= 0 altfel. Simbolul Å denotă adiție modulo 2 (SAU exclusiv).

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

Dacă starea inițială a registrului este 1111, atunci în tactele ulterioare va accepta următoarele serii de stări: 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011, 1001, 0100, 0001, 0001, 0001, 0001 , 1110, 1111, 1111, 1111 ...

Secvența de ieșire este formată din bitul cel mai puțin semnificativ (cel mai din dreapta) al registrului. 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 în întregime determinată de starea inițială a registrului și de funcția de feedback. Deoarece numărul de stări posibile ale registrului este finit (este egal cu 2 L), apoi, mai devreme sau mai târziu, secvența de taste va începe să se repete. Lungimea maximă a unei părți care nu se repetă a unei secvențe de taste se numește perioadă T. Perioada depinde de funcția de feedback. Perioada maximă posibilă este T max = 2 L-1 (registrul acceptă toate stările posibile cu excepția 0000...0). Se numește secvența de ieșire a LFSR cu perioada maximă secvența M.

Pentru a afla condițiile în care LFSR va avea o perioadă maximă, funcțiile de feedback atribuie un polinom caracteristic. Astfel, registrul dat mai sus ca exemplu corespunde unui polinom. Analiza teoretică arată că LFSR va avea o perioadă maximă dacă și numai dacă polinomul P(x) este primitiv. Mai jos sunt câteva polinoame primitive recomandate pentru utilizare în practică. Tabelul arată puterile variabilei xîn notație polinomială. De exemplu, intrarea (31, 3) corespunde unui polinom.

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)


LFSR-urile au fost proiectate inițial pentru a fi implementate în hardware ca un set circuite digitale. Implementări software LFSR-urile sunt de obicei inferioare ca viteză față de cele hardware. Pentru a crește performanța, este avantajos să stocați starea registrului ca un număr întreg L-număr de biți, ai cărui biți individuali corespund biților binari ai registrului. Apoi, operațiuni pe biți (deplasare, mascare etc.) sunt folosite pentru a accesa biți individuali.

decriptare - p i = D (k i, c i), așa cum se arată în Fig. 7.21.


Orez. 7.21.

Cifrurile flux sunt mai rapide decât cifrurile bloc. Implementarea hardware a unui cifr de flux este, de asemenea, mai simplă. Când trebuie să criptăm fluxurile binare și să le transmitem la o viteză constantă, cea mai buna alegere- utilizați un stream cipher. Cifrurile de flux au o protecție mai mare împotriva coruperii biților în timpul transmisiei.

Într-un cifr de flux modern, fiecare r -bit cuvântul în fluxul de text simplu este criptat folosind r -bit cuvânt în fluxul de chei pentru a crea cel corespunzător r -bit cuvânt în fluxul de text cifrat.


Orez. 7.22.

Un bloc unic este cifrul perfect. El este perfect. Nu există nicio metodă care să permită unui adversar să recunoască cheia sau statisticile textului cifrat și textului simplu. Nu există nicio relație între original și text cifrat. Cu alte cuvinte, textul cifrat este un adevărat flux aleatoriu de biți, chiar dacă sunt obținute unele mostre din textul original. Eve nu poate rupe cifrul decât dacă încearcă toate fluxurile de chei aleatorii posibile, care ar fi 2n dacă dimensiunea textului simplu ar fi de n-biți. Cu toate acestea, există o problemă cu aceasta. Pentru ca transmițătorul și receptorul să partajeze un bloc de taste unic, trebuie să stabilească o conexiune de fiecare dată când doresc să facă schimb de informații. Trebuie să fie de acord cumva asupra unei chei aleatorii. Deci, acest cifru perfect și ideal este foarte greu de implementat.

Exemplul 7.17

Care este aspectul textului cifrat atunci când se folosește cifrul cu pad unic în fiecare dintre următoarele cazuri?

O. Textul sursă este format din n zerouri.

b. Textul sursă este format din n unități.

V. Textul sursă este alternând zerouri și unu.

d. Textul sursă este un șir aleatoriu de biți.

Soluţie

o. Deoarece , atunci fluxul de text cifrat se va potrivi cu fluxul cheie. Dacă cheia este aleatorie, textul cifrat este, de asemenea, aleatoriu. Părți din textul original nu sunt stocate în textul cifrat.

b. Deoarece , unde este complementul fluxului de text cifrat este complementul fluxului cheie. Dacă fluxul de chei este aleatoriu, atunci și textul cifrat este, de asemenea, aleatoriu;

c. În acest caz, fiecare bit din fluxul de text cifrat este fie același cu cel din fluxul cheie, fie complementul acestuia. Prin urmare, rezultatul este, de asemenea, aleatoriu dacă fluxul de cheie este aleatoriu.

d. În acest caz, textul cifrat este în mod clar aleatoriu, deoarece efectuarea unei operații XOR pe doi biți aleatori are ca rezultat un flux aleatoriu de biți.

Registrul de schimbare a feedback-ului

O îmbunătățire a pad-ului unic este (FSR - Feedback Shift Register). FSR poate fi implementat fie în software, fie în hardware, dar pentru simplitate vom lua în considerare implementarea hardware. Registrul de schimbare a feedback-ului consta din registru de schimbare și funcții de feedback, așa cum se arată în fig. 7.23.


Orez. 7.23.

Un registru de deplasare este o secvență de m celule de la b 0 la b m-1, în care fiecare celulă este proiectată pentru a stoca un singur bit. Celulele sunt tratate ca un cuvânt de n biți, numit la început „valoarea semințelor” sau sursă. Ori de câte ori un bit trebuie să fie scos (de exemplu, dintr-un semnal la un anumit moment), fiecare bit este deplasat cu o celulă la dreapta. Aceasta înseamnă că valoarea fiecărei celule este atribuită celulei adiacente din dreapta și ia valoarea celulei din stânga. Celula din dreapta b 0 este considerată ieșire și dă valoarea de ieșire (k i ). Celula din stânga, b m-1, își primește valoarea în funcție de valoarea informațiilor funcției de feedback. Notăm ieșirea funcției cu informații de feedback b m . Funcția de informații de feedback determină ce valori trebuie să calculeze celulele b m .

Registrul de deplasare a informațiilor de feedback poate fi liniar sau neliniar. Registrul linear de schimbare a feedback-ului (LFSR)

. Să presupunem că b m este o funcție liniară b 0, b 1,…..., b m-1, pentru care

Un registru de deplasare cu feedback liniar operează pe cifre binare, astfel încât înmulțirea și adunarea sunt în câmpul GF(2), deci valoarea lui C i este fie 1, fie 0, dar C 0 trebuie să fie 1 pentru a obține informații de feedback la ieșire. Operația de adăugare este o operațiune SAU EXCLUSIVĂ. Cu alte cuvinte,

Exemplul 7.18

Soluţie

Să construim un registru de deplasare cu feedback liniar cu 5 celule, în care .


Dacă C i = 0, b i nu joacă un rol în calculul lui b m, atunci aceasta înseamnă că b i nu este asociat cu funcția de informații de feedback. Dacă c i = 1, b i este inclus în calculul lui b m. În acest exemplu, c 1 și c 3 sunt zerouri, ceea ce înseamnă că avem doar trei conexiuni. Figura 7.24 prezintă circuitul unui registru de deplasare cu feedback liniar.

Orez. 7.24.

Exemplul 7.19 Să construim un registru de deplasare cu feedback liniar cu 4 celule, în care . Afișați valoarea registrului după 20 operațiuni (ture

Soluţie

), dacă valoarea inițială este (0001) 2 .


Figura 7.25 prezintă proiectarea și utilizarea unui registru de deplasare liniar în buclă închisă pentru criptare.

Orez. 7.25.

Tabelul 7.6. arată valoarea fluxului cheie. Pentru fiecare tranziție, se calculează prima valoare a lui b 4 și apoi fiecare bit este deplasat cu o celulă la dreapta.
Tabelul 7.6. Valoarea curentă b 4 b 3 b 2 b 1 b 0
k i 1 0 0 0 1
1 0 1 0 0 0 1
2 0 0 1 0 0 0
3 1 0 0 1 0 0
4 1 1 0 0 1 0
5 0 1 1 0 0 1
6 1 0 1 1 0 0
7 0 1 0 1 1 0
8 1 0 1 0 1 1
9 1 1 0 1 0 1
10 1 1 1 0 1 0
11 1 1 1 1 0 1
12 0 1 1 1 1 0
13 0 0 1 1 1 1
14 0 0 0 1 1 1
15 1 0 0 0 1 1
16 0 1 0 0 0 1
17 0 0 1 0 0 0
18 1 0 0 1 0 0
19 1 1 0 0 1 0
20 1 1 1 0 0 1

Rețineți că fluxul cheie este 1000100110101111 1001……. Arată, la prima vedere, ca o secvență aleatorie, dar dacă ne uităm la un număr mare de tranzacții (schimbări), putem vedea că secvențele sunt periodice. Această repetiție de 15 biți este prezentată mai jos.


Cheia de flux este generată folosind un registru de deplasare cu feedback liniar secvență pseudoaleatoare, în care se repetă secvențe de lungime N. Debitul este periodic. Depinde de circuitul generatorului și de informațiile inițiale și nu poate fi mai mare de 2 m – 1. Fiecare circuit generează secvențe de m biți, de la cele care conțin toate zerourile până la cele care le conțin pe toate. Cu toate acestea, dacă secvența inițială este cu toate zerourile, rezultatul este inutil - textul original ar fi un flux de toate zerourile. Prin urmare, o astfel de secvență inițială este exclusă.