Úvod do základov moderných symetrických kľúčových šifier. Registre posunu spätnej väzby Registre posunu lineárnej spätnej väzby c

  • 06.11.2021

Posunový register s lineárnou spätnou väzbou(RSLOS, angl. posuvný register s lineárnou spätnou väzbou, LFSR) je posuvný register bitových slov, v ktorom sa hodnota vstupného (vloženého) bitu rovná lineárnej booleovskej funkcii z hodnôt zostávajúcich bitov registra pred posunom. Môže byť organizovaná softvérovo aj hardvérovo. Používa sa na generovanie pseudonáhodných bitových sekvencií, čo nachádza uplatnenie najmä v kryptografii.

Popis

Riadenie registra v hardvérových implementáciách sa vykonáva aplikáciou posuvného impulzu (inak nazývaného hodiny alebo synchronizačný impulz) do všetkých buniek. Správa registrov v softvérových implementáciách sa vykonáva vykonávaním slučky. Pri každej iterácii slučky sa vypočíta funkcia spätnej väzby a bity v slove sa posunú.

Princíp činnosti

Lineárna zložitosť

Korelačná nezávislosť

V snahe dosiahnuť vysokú lineárnu zložitosť vygenerovanej sekvencie kryptografy kombinujú výstupy viacerých posuvných registrov nelineárne. V tomto prípade je možné jednu alebo niekoľko výstupných sekvencií (alebo aj výstupov jednotlivých RSLOS) spojiť spoločným tokom a otvoriť kryptoanalytik. Hackovanie založené na takejto zraniteľnosti sa nazýva korelačná pitva... Hlavnou myšlienkou takéhoto hacku je nájsť určitú koreláciu medzi výstupom generátora a výstupmi jeho jednotlivých častí. Potom pozorovaním výstupnej sekvencie môžete získať informácie o týchto medziľahlých pinoch, a tak hacknúť generátor. Thomas Sigenthaler ukázal, že korelačná nezávislosť sa dá presne určiť a že existuje kompromis medzi korelačnou nezávislosťou a lineárnou zložitosťou.

Softvérová implementácia

Softvérové ​​implementácie RSLOS sú dosť pomalé a fungujú rýchlejšie, ak sú napísané v assembleri. Jedným z riešení je paralelné použitie 16 RSLOS (alebo 32, v závislosti od dĺžky slova v architektúre počítača). V takejto schéme sa používa pole slov, ktorých veľkosť sa rovná dĺžke posuvného registra a každý bit slova odkazuje na svoj vlastný RSLOS. Pretože sa používajú rovnaké poradové čísla odbočiek, môže to priniesť výrazné zvýšenie výkonu generátora.

Fibonacciho konfigurácia

Zvážte 32-bitový posuvný register. Existuje na to odbočovacia sekvencia (32, 31, 30, 28, 26, 1) (\ štýl zobrazenia \ vľavo (32, \; 31, \; 30, \; 28, \; 26, \; 1 \ vpravo))... To znamená, že ak chcete vygenerovať nový bit, musíte XOR 31., 30., 29., 27., 25. a 0. bit. Prijaté RSLO má maximálnu periódu 2 32 - 1 (\ štýl zobrazenia 2 ^ (32) -1)... Kód C pre takýto register je nasledujúci:

int LFSR_Fibonacci (neplatné) (statické bez znamienka dlhé S = 0x00000001; S = ((((S >> 31) ^ (S >> 30) ^ (S >> 29) ^ (S >> 27) ^ (S >> 25) ^ S) & 0x00000001)<< 31 ) | (S >> 1); návrat S & 0x00000001; )

Konfigurácia Galois

Tento generátor nemá väčšiu kryptografickú silu, ale poskytuje zvýšenie výkonu: všetky operácie XOR prostredníctvom paralelizácie možno vykonávať v jednej akcii a nie postupne jednu po druhej, ako v konfigurácii Fibonacci. Táto schéma bude ťažiť aj z hardvérovej implementácie.

C kód pre 32-bitový posuvný register je nasledujúci:

int LFSR_Galois (void) (statické bez znamienka dlhé S = 0x00000001; if (S & 0x00000001) (S = (S ^ 0x80000057 >> 1) | 0x80000000; návrat 1;) inak (S >> 0; 1);

Za zmienku stojí, že slučka pevného počtu volaní funkcie LFSR_Galois v konfigurácii Galois je približne 2-krát rýchlejšia ako funkcia LFSR_Fibonacci v konfigurácii Fibonacci (kompilátor MS VS 2010 na Intel Core i5).

Príklad vygenerovanej sekvencie

Fibonacciho konfigurácia

Nech RSLOS je daný charakteristickým polynómom x 3 + x + 1 (\ štýl zobrazenia x ^ (3) + x + 1)... To znamená, že bity kohútika budú 2. a 0. a ten v polynómovom vzorci znamená, že 0. bit je vstup. Funkcia spätnej väzby má tvar Sj = Sj - 1 ⊕ Sj - 3 (\ štýl zobrazenia S_ (j) = S_ (j-1) \ oplus S_ (j-3))... Povedzme, že počiatočný stav posuvného registra bola sekvencia. Ďalšie stavy registra sú uvedené v tabuľke nižšie:

Číslo kroku Štát Generovaný bit
0 [0, 0, 1] (\ štýl zobrazenia \ vľavo) 1
1 0
2 0
3 1
4 1
5 1
6 0
7 [0, 0, 1] (\ štýl zobrazenia \ vľavo) 1

Keďže sa vnútorný stav v siedmom kroku vrátil do pôvodného stavu, budú sa bity počnúc ďalším krokom opakovať. To znamená, že vygenerovaná sekvencia je nasledovná: [1, 0, 0, 1, 1, 1, 0, 1. ... ... ] (\ štýl zobrazenia \ vľavo)(poradie bitov v sekvencii zodpovedá poradiu ich generovania RSLOS). Perióda postupnosti je teda 7, teda maximálna možná hodnota, ktorá sa stala vďaka primitívnosti daného polynómu.

Konfigurácia Galois

Vezmite rovnaký charakteristický polynóm, tj c 3 = c 1 = 1 (\ štýl zobrazenia c_ (3) = c_ (1) = 1), c 2 = 0 (\ štýl zobrazenia c_ (2) = 0)... K výstupnému bitu sa pridá iba 1. bit. Počiatočný stav je rovnaký. V ďalšom registri sa uvádza:

Číslo kroku Štát Generovaný bit
0 [0, 0, 1] (\ štýl zobrazenia \ vľavo) -
1 [1, 0, 0] (\ štýl zobrazenia \ vľavo) 0
2 [0, 1, 1] (\ štýl zobrazenia \ vľavo) 1
3 [1, 0, 1] (\ štýl zobrazenia \ vľavo) 1
4 [1, 1, 1] (\ štýl zobrazenia \ vľavo) 1
5 [1, 1, 0] (\ štýl zobrazenia \ vľavo) 0
6 [0, 1, 0] (\ štýl zobrazenia \ vľavo) 0
7 [0, 0, 1] (\ štýl zobrazenia \ vľavo) 1

Vnútorný stav registra sa v siedmom kroku vrátil do pôvodného stavu, preto je jeho perióda tiež 7. Na rozdiel od Fibonacciho konfigurácie sa vnútorné stavy registra ukázali byť odlišné, ale vygenerovaná sekvencia je rovnaká, iba posunuté o 4 hodinové cykly: [0, 1, 1, 1, 0, 0, 0, 0, 1, 1,. ... ... ] (\ štýl zobrazenia \ vľavo)(poradie bitov v sekvencii zodpovedá poradiu ich generovania RSLOS).

Generovanie primitívnych polynómov

bity, n (\ štýl zobrazenia n) Primitívny polynóm obdobie, 2 n - 1 (\ štýl zobrazenia 2 ^ (n) -1) Počet primitívnych polynómov
2 x 2 + x + 1 (\ štýl zobrazenia x ^ (2) + x + 1) 3 1
3 x 3 + x 2 + 1 (\ štýl zobrazenia x ^ (3) + x ^ (2) +1) 7 2
4 x 4 + x 3 + 1 (\ štýl zobrazenia x ^ (4) + x ^ (3) +1) 15 2
5 x 5 + x 3 + 1 (\ štýl zobrazenia x ^ (5) + x ^ (3) +1) 31 6
6 x 6 + x 5 + 1 (\ štýl zobrazenia x ^ (6) + x ^ (5) +1) 63 6
7 x 7 + x 6 + 1 (\ štýl zobrazenia x ^ (7) + x ^ (6) +1) 127 18
8 x 8 + x 6 + x 5 + x 4 + 1 (\ štýl zobrazenia x ^ (8) + x ^ (6) + x ^ (5) + x ^ (4) +1) 255 16
9 x 9 + x 5 + 1 (\ štýl zobrazenia x ^ (9) + x ^ (5) +1) 511 48
10 x 10 + x 7 + 1 (\ štýl zobrazenia x ^ (10) + x ^ (7) +1) 1023 60
11 x 11 + x 9 + 1 (\ štýl zobrazenia x ^ (11) + x ^ (9) +1) 2047 176
12 x 12 + x 11 + x 10 + x 4 + 1 (\ štýl zobrazenia x ^ (12) + x ^ (11) + x ^ (10) + x ^ (4) +1) 4095 144
13 x 13 + x 12 + x 11 + x 8 + 1 (\ štýl zobrazenia x ^ (13) + x ^ (12) + x ^ (11) + x ^ (8) +1) 8191 630
14 x 14 + x 13 + x 12 + x 2 + 1 (\ štýl zobrazenia x ^ (14) + x ^ (13) + x ^ (12) + x ^ (2) +1) 16383 756
15 x 15 + x 14 + 1 (\ štýl zobrazenia x ^ (15) + x ^ (14) +1) 32767 1800
16 x 16 + x 14 + x 13 + x 11 + 1 (\ štýl zobrazenia x ^ (16) + x ^ (14) + x ^ (13) + x ^ (11) +1) 65535 2048
17 x 17 + x 14 + 1 (\ štýl zobrazenia x ^ (17) + x ^ (14) +1) 131071 7710
18 x 18 + x 11 + 1 (\ štýl zobrazenia x ^ (18) + x ^ (11) +1) 262143 7776
19 x 19 + x 18 + x 17 + x 14 + 1 (\ štýl zobrazenia x ^ (19) + x ^ (18) + x ^ (17) + x ^ (14) +1) 524287 27594
20 - 168
2 - 786, 1024, 2048, 4096

Výhody a nevýhody

Výhody

  • vysoká rýchlosť kryptografických algoritmov vytvorených na báze RSLOS (napríklad prúdové šifry);
  • používanie iba najjednoduchších bitových operácií sčítania a násobenia, hardvér implementovaný takmer vo všetkých výpočtových zariadeniach;
  • dobré kryptografické vlastnosti (RSLOS môže generovať sekvencie s dlhými periódami s dobrými štatistickými vlastnosťami);
  • vďaka svojej štruktúre sa RSLOS ľahko analyzuje pomocou algebraických metód.

nevýhody

Metódy na zlepšenie kryptografickej sily generovaných sekvencií

Generátory s viacerými posuvnými registrami

Generátor tohto typu pozostáva z niekoľkých lineárnych spätnoväzbových posuvných registrov, ktoré generujú bity x 1, i, x 2, i,…, x M, i (\ štýl zobrazenia x_ (1, i), \; x_ (2, i), \; \ bodky, \; x_ (M, i)) resp. Ďalej sú vygenerované bity transformované nejakou boolovskou funkciou f (x 1, i, x 2, i,…, x M, i) (\ štýl zobrazenia f (x_ (1, i), \; x_ (2, i), \; \ bodky, \; x_ (M) , i)))... Treba poznamenať, že pre generátory tohto typu sú dĺžky registra L i (\ štýl zobrazenia L_ (i)), i = 1, 2,…, M (\ štýl zobrazenia i = 1, \; 2, \; \ bodky, \; M) sú navzájom jednoduché.

Obdobie tohto generátora je T = (2 L 1 - 1) ⋅ (2 L 2 - 1) ⋯ (2 LM - 1) ≲ 2 L (\ štýl zobrazenia T = (2 ^ (L_ (1)) - 1) \ cdot (2 ^ ( L_ (2)) - 1) \ cbodky (2 ^ (L_ (M)) - 1) \ lesssim 2 ^ (L)), kde L = ∑ i = 1 M L i (\ štýl zobrazenia L = \ súčet \ limity _ (i = 1) ^ (M) L_ (i))- celkový počet buniek. V dôsledku toho použitie niekoľkých RSLOS zvyšuje periódu generovanej sekvencie v porovnaní s jedným registrom, čo zvyšuje kryptografickú silu generátora. Zvyšuje tiež lineárnu zložitosť alebo dĺžku najkratšieho registra zodpovedajúceho danému generátoru. Takýto register sa nájde pomocou Berlekamp-Masseyho algoritmu z vygenerovanej sekvencie. Jeho dĺžka je v najlepšom prípade úmerná perióde vygenerovanej sekvencie.

Generátory s nelineárnymi transformáciami

Bloková schéma takéhoto generátora sa nelíši od predchádzajúceho generátora. Hlavný rozdiel je v tom, že transformačné zariadenie je špecifikované nelineárnou booleovskou funkciou f (x 1, x 2,…, x M) (\ štýl zobrazenia f (x_ (1), x_ (2), \ bodky, x_ (M)))... Ako takú funkciu si vezmeme napríklad Zhegalkinov polynóm (podľa Zhegalkinovej vety môže byť akákoľvek booleovská funkcia jednoznačne reprezentovaná Zhegalkinovým polynómom).

Nelineárny generátor môže byť tiež implementovaný na nelineárny spätnoväzbový posuvný register... Môže dať 2 2 L - 1 - L (\ štýl zobrazenia 2 ^ (2 ^ (L-1) - L)) varianty sekvencií s maximálnou periódou, čo je viac ako pri RSLOS.

Kryptoodolnosť tohto generátora je zvýšená v dôsledku nelinearity použitej funkcie. Určenie stavu registrov z vygenerovanej postupnosti bitov je zložitý matematický problém, pretože nie je známy žiadny algoritmus na obnovenie pôvodných stavov.

Tento spôsob sa využíva napr Geffov generátor a zovšeobecnený Geffov generátor, avšak takéto generátory môžu byť prelomené korelačným útokom.

Oscilátory s rôznym časovaním posuvných registrov

Generátor stop-and-go

Generátor stop-and-go(anglicky Stop-and-Go, Both-Piper) využíva výstup RSLOS-1 na riadenie taktovacej frekvencie RSLOS-2, takže RSLOS-2 mení svoj stav v určitom časovom okamihu iba vtedy, ak je výstup RSLOS- 1 sa v danom čase rovnala jednotke. Táto schéma neodolala korelačnej pitve.

Aby sa zvýšila kryptografická sila, bolo navrhnuté striedavý generátor stop-and-go... Používa tri posuvné registre rôznych dĺžok. Tu RSLOS-1 riadi taktovaciu frekvenciu 2. a 3. registra, to znamená, že RSLOS-2 mení svoj stav, keď je výstup RSLOS-1 rovný jednej, a RSLOS-3 - keď je výstup RSLOS-1 nula. Výstup generátora je prevádzka prídavného modulo dvoch výstupov RSLOS-2 a RSLOS-3. Tento generátor má dlhú periódu a veľkú lineárnu zložitosť. Existuje spôsob korelačného útoku RSLOS-1, ktorý však veľmi neoslabuje kryptografické vlastnosti generátora.

Používa sa komplikovaná schéma taktovania obojsmerný generátor "stop-and-go", ktorý využíva 2 posuvné registre rovnakej dĺžky. Ak je výstup RSLOS-1 v určitom okamihu t i - 1 (\ štýl zobrazenia t_ (i-1))- jeden, potom RSLOS-2 nie je taktovaný v danom čase t i (\ štýl zobrazenia t_ (i))... Ak je výstup RSLOS-2 v momente času t i - 1 (\ štýl zobrazenia t_ (i-1)) sa rovná nule av čase t i - 2 (\ štýl zobrazenia t_ (i-2))- jeden, a ak je tento register v danom čase taktovaný t i (\ štýl zobrazenia t_ (i)), potom v rovnakom momente RSLOS-1 nie je taktovaný. Lineárna zložitosť tohto obvodu sa približne rovná perióde generovanej sekvencie.

Samoprúdový generátor

Viacrýchlostný generátor s interným produktom

Tento generátor využíva dva posuvné registre RSLOS-1 a RSLOS-2. Frekvencia hodín RSLOS-2 palce d (\ štýl zobrazenia d) krát viac ako RSLOS-1. Určité bity týchto registrov sa navzájom násobia pomocou operácie AND. Výsledky násobení sa XORujú spolu, aby sa vytvorila výstupná sekvencia. Tento generátor má vysokú lineárnu zložitosť a dobré štatistické vlastnosti. Jeho stav však možno určiť z výstupnej postupnosti dĺžky L 1 + L 2 + log 2 ⁡ d (\ štýl zobrazenia L_ (1) + L_ (2) + \ log _ (2) (d)), kde L 1 (\ štýl zobrazenia L_ (1)) a L 2 (\ štýl zobrazenia L_ (2))- dĺžky RSLOS-1 a RSLOS-2, resp d (\ štýl zobrazenia d)- pomer ich hodinových frekvencií.

Gollmannova kaskáda

Tento diagram je vylepšenou verziou generátora stop-and-go. Pozostáva zo sekvencie RSLOS, pričom taktovanie každého z nich riadi predchádzajúci RSLOS. Ak je výstup RSLOS-1 v tom čase t i (\ štýl zobrazenia t_ (i)) je 1, potom je taktovaný RSLOS-2. Ak je výstup RSLOS-2 v tom čase t i (\ štýl zobrazenia t_ (i)) je 1, potom je taktovaný RSLOS-3 atď. Výstup posledného RSLOS je výstup generátora. Ak je dĺžka všetkých RSLOS rovnaká a rovnaká L (\ štýl zobrazenia L), potom obdobie systému od M (\ štýl zobrazenia M) RSLO sa rovná (2 L - 1) M (\ štýl zobrazenia (2 ^ (L) -1) ^ (M)) a lineárna zložitosť je L (S) = L (2 L - 1) M - 1 (\ štýl zobrazenia L (S) = L (2 ^ (L) -1) ^ (M-1)) .

Táto myšlienka je jednoduchá a možno ju použiť na generovanie sekvencií s obrovskými periódami, veľkou lineárnou zložitosťou a dobrými štatistickými vlastnosťami. Ale bohužiaľ sú citliví na pitvu tzv zamykanie(anglicky lock-in) keď

- "Tetromino tenis"). Vytvoril a vyriešil nespočetné množstvo matematických hádaniek a slovných hier. Asi pred 20 rokmi som zistil, že bol veľmi blízko k objaveniu môjho obľúbeného pravidla 30 pre bunkové automaty v roku 1959, keď som sa práve narodil.

Ako som stretol Saula Golomba

Takmer všetkých vedcov a matematikov, ktorých poznám, som spoznal prostredníctvom svojich profesionálnych kontaktov. Nie však Sol Golomba. Písal sa rok 1981 a ja, 21-ročný fyzik (ktorý sa stal trochu mediálne známym, pretože som bol najmladším držiteľom MacArthurovej ceny na prvom odovzdávaní cien), som robil výskum v. Ozvalo sa zaklopanie na dvere mojej kancelárie a čoskoro do nich vstúpila mladá žena. Už to bolo nezvyčajné, pretože v tých časoch bolo beznádejne málo žien, kde sa zaoberali teoretickou fyzikou vysokých energií. Hoci som žil niekoľko rokov v Kalifornii, napriek tomu som neopustil univerzitu, a preto som bol zle pripravený na príval energie z južnej Kalifornie, ktorý vtrhol do mojej kancelárie. Žena sa predstavila Astrid a povedala, že navštevovala Oxford a pozná niekoho, s kým som bol v škôlke. Vysvetlila, že mala za úlohu zbierať informácie o zaujímavých ľuďoch v oblasti Pasadeny. Myslím, že ma považovala za ťažký prípad, no napriek tomu trvala na tom, aby sa porozprávala. A jedného dňa, keď som sa snažil povedať niečo o tom, čo robím, povedala: " Musíte sa stretnúť s mojím otcom. Je to už starý muž, ale jeho myseľ je stále ostrá. „A stalo sa, že ma s ním zoznámila Astrid Golombová, najstaršia dcéra Saula Golomba.

Rodina Golombovcov bývala v dome, ktorý sa nachádzal v horách neďaleko Pasadeny. Mali dve dcéry: Astrid – o niečo staršiu odo mňa, ambiciózne hollywoodske dievča, a Beatrice – približne v mojom veku a vedeckom myslení. Sestry Golombové často organizovali večierky, zvyčajne u nich doma. Témy boli rôzne: bola to záhradná párty a kroket s plameniakmi a ježkami („ víťazom sa stane ten, ktorého kostým najviac zodpovedá zadanej téme"), alebo párty v štýle Stonehenge s inštrukciami napísanými v runách. Na týchto večierkoch sa krížili mladí a nie až takí ľudia, vrátane rôznych miestnych svetiel. A na nich, trochu bokom, bol vždy malý muž s veľkou bradou. , trochu ako na škriatka a vždy v tmavom kabáte - sám Solomon Golomb.

Postupne som sa o ňom niečo málo dozvedel. Do čoho sa zapojil" informačnej teórie"Že pracoval na Univerzite v Južnej Kalifornii. Že mal rôzne nejasné, ale zjavne vysoké vládne a iné prepojenia. Počul som o posuvných registroch, ale nevedel som o nich takmer nič."

Čo sa stane po chvíli:

Ako môžete vidieť, posuvný register vždy posúva bity doľava a ďalšie bity sa pridávajú doprava podľa jednoduchého pravidla. Postupnosť bitov sa zdá byť náhodná, aj keď, ako je znázornené na obrázku, sa nakoniec opakuje. Sol Golomb našiel elegantný matematický spôsob, ako analyzovať takéto sekvencie a ako sa opakujú.

Ak má posuvný register veľkosť n, potom má 2 n možné stavy (zodpovedajúce všetkým možným sekvenciám 0 a 1 pre dĺžku n). Keďže pravidlá pre posuvný register sú deterministické, každá daná pozícia musí vždy dosiahnuť inú, rovnakú pozíciu. To znamená, že maximálny možný počet krokov, ktoré môže posuvný register prejsť, kým sa kroky začnú opakovať, sú 2 n(v skutočnosti 2 n- 1, keďže pozícia so všetkými 0 sa nemôže vyvinúť na nič iné).

Vo vyššie uvedenom príklade je posuvný register 7 a bude sa opakovať presne v 2 7 - 1 = 127 krokoch. Ale ktoré posuvné registre – s akými miestami vetvenia – vytvoria sekvencie s maximálnou dĺžkou? Solomon Golomb začal túto otázku skúmať v lete 1954. A jeho odpoveď bola jednoduchá a elegantná.

Posuvný register vyššie má vetvy na pozíciách 7, 6 a 1. Saul to prezentoval algebraicky pomocou polynómu NS 7 + NS 6 + 1. Potom ukázal, že vygenerovaná sekvencia bude mať maximálnu dĺžku, ak tento polynóm " neredukovateľný modul 2"; preto ho nemožno faktorizovať, čo ho robí analogickým prvočíslu medzi polynómami; a prítomnosť niektorých ďalších vlastností z neho robí" primitívny polynóm. "Dnes sa to dá ľahko overiť pomocou Mathematica a Wolfram Language:

Potom, v roku 1954, to musel Saul robiť ručne; zostavil pomerne dlhú tabuľku primitívnych polynómov zodpovedajúcich posuvným registrom, ktoré produkovali sekvencie maximálnej dĺžky:

História posuvných registrov

Myšlienka udržiavania pamäte RAM prostredníctvom „ oneskorovacie linky"ktoré vysielajú digitálne impulzy sa datujú do raných čias počítača. Koncom 40. rokov 20. storočia sa takéto oneskorovacie linky aplikovali digitálne pomocou série vákuových elektrónok a boli nazývané" posuvné registre"Zatiaľ nie je jasné, kedy vznikli prvé posuvné registre s uzavretou slučkou. Mohlo to byť koncom 40. rokov 20. storočia. Táto udalosť je však dodnes zahalená rúškom tajomstva, pretože sa prvýkrát začali používať vo vojenskej kryptografii. Doposiaľ to bolo možné až v závere štyridsiatych rokov minulého storočia."

Základnou myšlienkou kryptografie je zmeniť zmysluplné správy tak, aby ich nebolo možné rozpoznať; ak však poznáte kľúč, môžete zašifrovanú správu vytvoriť znova. Takzvané prúdové šifry fungujú na princípe vytvárania dlhých sekvencií zdanlivo náhodných prvkov a sú dekódované pomocou prijímača, ktorý nezávisle generuje rovnakú sekvenciu prvkov.

Lineárne spätnoväzbové posuvné registre boli cenené v kryptografii kvôli ich dlhým periódam opakovania. Avšak matematická analýza, ktorú Saul použil na nájdenie týchto období, jasne ukazuje, že takéto posuvné registre nie sú vhodné na bezpečnú kryptografiu. Na začiatku sa však zdali dobré (najmä v porovnaní s postupnými pozíciami rotorov v Enigme); neustále sa hovorilo, že sovietske vojenské kryptosystémy boli postavené na tomto základe.

V roku 2001, keď som pracoval na historických poznámkach pre moju knihu Nový druh vedy So Saulom sme mali dlhý telefonický rozhovor o posunoch registrov. Saul mi povedal, že keď začínal, nevedel nič o kryptografickej práci na posuvných registroch. Povedal, že Bell Labs, Lincoln Labs a JPL začali pracovať na posuvných registroch približne v rovnakom čase ako on; podarilo sa mu však zájsť ešte o niečo ďalej, čo zaznamenal vo svojej správe z roku 1955.

V priebehu rokov sa Saul postupne dozvedel o rôznych predchodcoch svojho diela z čistej matematickej literatúry. Už v roku 1202 Fibonacci hovoril o tom, čo sa dnes nazýva Fibonacciho čísla a ktoré sú generované rekurenciou (čo možno považovať za analóg lineárneho spätnoväzbového posuvného registra, ktorý pracuje s ľubovoľnými celými číslami, nie nulami a jednotkami). Existujú aj malé práce zo začiatku 20. storočia o cykloch 0 a 1, ale prvou rozsiahlou štúdiou bola práca Oystena Orea z univerzity v Oslo. Ore mal študenta menom Marshall Hall, ktorý radil predchodcovi Národnej bezpečnostnej agentúry koncom 40. rokov 20. storočia. - asi na tému posuvných registrov. Všetko, čo robil, však bolo utajené, a tak sa dohodol so Saulom na zverejnení histórie posuvných registrov s lineárnou spätnou väzbou; Saul venoval svoju knihu Marshallovi Hallovi.

Na čo slúžia sekvencie generované posuvnými registrami?

Mnohokrát som si všimol, že systémy riadené jednoduchými pravidlami končia s mnohými variáciami aplikácií; posuvné registre tiež sledujú tento vzor. Moderný hardvér aj softvér sú preplnené posuvnými registrami: v bežnom mobilnom telefóne ich je pravdepodobne tucet alebo dva, implementované spravidla na hardvérovej úrovni a niekedy aj softvérovo (keď napíšem „posuvný register“ tu mám na mysli posuvný register s lineárnou spätnou väzbou - LFSR).

Vo väčšine prípadov sa používajú posuvné registre, ktoré poskytujú sekvencie maximálnej dĺžky (inak známe ako „ M-sekvencie Dôvody ich použitia sú vo všeobecnosti spôsobené niektorými ich vlastnosťami, ktoré objavil Sol. Vždy obsahujú rovnaký počet 0 a 1 (hoci v skutočnosti je tam vždy presne jedna ďalšia 1). Rovnaký počet sekvencií 00, 01, 10 a 11 je tiež charakteristická - a tiež pre veľké bloky. Táto vlastnosť " rovnováhu„Toto samo o sebe je už veľmi užitočné – napríklad ak testujete všetky možné kombinácie bitov ako vstup.

Sol však objavil inú, ešte dôležitejšiu vlastnosť. Nahraďte každú 0 v sekvencii 1 a potom vynásobte každý prvok v posunutej verzii sekvencie zodpovedajúcim prvkom v origináli. Saul ukázal, že po pridaní budú tieto prvky vždy nulové (pokiaľ nedôjde k žiadnemu posunu). To znamená, že sekvencia nemá žiadnu koreláciu s posunutými verziami samej seba.

Tieto vlastnosti budú platiť pre každú dostatočne dlhú náhodnú sekvenciu 0 a 1. Prekvapivo tieto vlastnosti platia vždy pre sekvencie maximálnej dĺžky. Sekvencie majú niektoré chaotické črty, ale v skutočnosti vôbec chaotické nie sú: majú dobre definovanú, organizovanú štruktúru.

Práve táto vlastná štruktúra posuvných registrov s lineárnou spätnou väzbou ich robí nevhodnými pre serióznu kryptografiu. Ale sú skvelé pre základnú "permutáciu prvkov" a lacnú kryptografiu a sú široko používané na tieto účely. Často je úlohou jednoducho "vybieliť" signál (ako v "bielom šume"). Niekedy je potrebné prenášať dáta s dlhými sekvenciami 0. Ale elektronika sa v tomto prípade môže zmiasť, ak je „ticho“ príliš dlhé. Tomuto problému sa môžete vyhnúť zakódovaním pôvodných údajov ich kombináciou so sekvenciou vygenerovanou posuvným registrom. To je presne to, čo sa stalo s Wi-Fi, Bluetooth, USB, digitálnou TV, internetom atď.

Vedľajším efektom kódovania posuvných registrov je zložitejšie dekódovanie, ktoré sa niekedy používa na zlepšenie bezpečnosti (technológia DVD používa na kódovanie údajov kombináciu 16 a 24 bitových posuvných registrov; mnohé telefóny GSM používajú na zakódovanie všetkých signálov kombináciu troch posuvných registrov ).

Saul vytvoril matematický základ pre toto všetko a tiež si navzájom predstavil niekoľko kľúčových postáv. V roku 1959 sa stretol s Irwinom Jacobsom, ktorý nedávno získal titul Ph.D. na Massachusettskom technologickom inštitúte. Poznal aj Andyho Viterbiho, ktorý pracoval v Jet Propulsion Laboratory. Saul ich predstavil av roku 1968 založili spoločnosť s názvom Linkabit na prácu na kódovacích systémoch (väčšinou na vojenské účely).

V roku 1985 Jacobs a Viterbi založili ďalšiu spoločnosť s názvom Qualcomm. Spočiatku sa im veľmi nedarilo, ale začiatkom 90. rokov, keď začali vyrábať komponenty na nasadenie CDMA na mobilných telefónoch, spoločnosť rýchlo rástla.

Kde sú tieto registre?

Je prekvapujúce, že väčšina ľudí nikdy nepočula o posuvných registroch a zároveň s nimi interaguje, kedykoľvek používajú moderné komunikačné systémy, počítače atď. za rôznymi názvami a skratkami lineárny posun spätnej väzby (PN, pseudo šum, sekvencie M-, FSR, LFSR, MLS, SRS, PRBS atď.).

V mobilných telefónoch sa používanie sekvencií posuvných registrov v priebehu rokov zmenilo, niekedy sa zvýšilo a niekedy sa znížilo. siete sú založené na TDMA, takže na zakódovanie údajov nepoužívajú sekvencie posuvných registrov, avšak na kontrolu dátových blokov sa stále často používa CRC (Cyclic Redundancy Check). siete sú najväčšími používateľmi CDMA, takže sekvencie generované posuvnými registrami sa podieľajú na prenose každého bitu. siete zvyčajne používajú kombináciu časových a frekvenčných slotov, ktoré neobsahujú sekvencie posuvných registrov, hoci CRC sa stále používajú: napríklad na interakciu s integrálnymi údajmi, keď sa frekvenčné okná prekrývajú. má zložitejšiu štruktúru – s mnohými anténami, ktoré sa dynamicky prispôsobujú, aby využívali optimálny čas a frekvenciu slotov. Polovica ich kanálov je však zvyčajne vyhradená pre „pilotné“ signály, ktoré sa používajú na odvodenie miestneho rádiového prostredia; sú tiež založené na sekvenciách generovaných posuvnými registrami.

Výroba elektroniky sa zvyčajne snaží dosiahnuť najvyššiu možnú rýchlosť prenosu dát s najnižšou spotrebou energie, čo umožňuje bitom prekonať hranicu šumu. A táto cesta spravidla vedie k automatizácii detekcie chýb - a teda k využitiu CRC (Cyclic Redundancy Check) a teda sekvencií generovaných posuvným registrom. Týka sa to takmer všetkých typov zberníc vo vnútri počítača (PCIe, SATA atď.): poskytujúcich interakciu medzi časťami centrálneho procesora alebo prijímanie dát zo zariadení alebo pripojenie k displeju pomocou HDMI. V prípade diskov alebo pamätí sa tiež takmer univerzálne používajú CRC a iné kódy založené na sekvenciách generovaných posuvnými registrami na prevádzku pri maximálnej rýchlosti.

Posuvné registre sú také všadeprítomné, že je takmer nemožné odhadnúť, koľko bitov generujú. Vo vstavanom IoT (Internet of Things) je zhruba 10 miliárd počítačov, o niečo menej telefónov a obrovské množstvo zariadení. Takmer každé auto na svete (a je ich viac ako miliarda!) má asi 10 vstavaných mikroprocesorov.

S akou frekvenciou pracujú posuvné registre? V komunikačných systémoch existuje základná nosná frekvencia v pásme Hertz, ako aj „čipová rýchlosť“, ktorá hovorí, ako rýchlo sa v pásme MHz vykonáva viacnásobný prístup (hovoríme o CDMA). Na druhej strane, v zberniciach vo vnútri počítačov sa všetky dáta prenášajú pomocou posuvných registrov – s najlepšou prenosovou rýchlosťou v rozsahu hertzov.

Existuje aspoň 10 miliárd komunikačných liniek, ktoré bežia aspoň 1/10 miliardy sekúnd (približne 3 roky), ktoré využívajú každú sekundu aspoň 1 miliardu bitov z posuvných registrov, čo znamená, že od dnešného dňa sa Solov algoritmus používa aspoň octillion krát.

Je to najčastejšie používaný algoritmus? Myslím, že áno. Mám podozrenie, že súťažiť môžu iba aritmetické operácie. Procesory sú v súčasnosti schopné vykonávať bilión aritmetických operácií za sekundu a takéto operácie sú potrebné pre takmer každý bit generovaný počítačom. Ale ako sa robí aritmetika? Na určitej úrovni je to len implementácia digitálnej elektroniky.

Existujú však „algoritmické nápady“, ktoré zostávajú nepochopiteľné pre každého okrem dizajnérov mikroprocesorov. Keď Babbage robil svoj rozdielový motor (pozri článok o Habrém „Rozlúštenie príbehu Ady Lovelace (prvej programátorky v histórii)“), pomlčky sa stali veľkou prekážkou pri vykonávaní aritmetických operácií (v skutočnosti môže posuvný register s lineárnou spätnou väzbou považovať za systém, ktorý robí niečo ako aritmetika, ale neprenáša sa). Existujú stromy rozmnožovania nositeľov, ktoré optimalizujú nositeľa. Existujú aj malé vylepšenia (ako Boothov algoritmus, Wallaceove stromy atď.), ktoré znižujú počet bitových operácií potrebných na vytvorenie vnútorných prvkov aritmetiky. Ale na rozdiel od posuvných registrov s lineárnou spätnou väzbou jednoducho neexistuje jediný algoritmický nápad, ktorý by sa dal použiť takmer kdekoľvek; preto si myslím, že medzi najpoužívanejšími sekvenciami vyhrávajú čo najdlhšie sekvencie generované lineárnymi spätnoväzbovými posuvnými registrami.

Bunkové automaty a posuvné registre s nelineárnou spätnou väzbou

Aj keď sa to na prvý pohľad nemusí zdať zrejmé, ukázalo sa, že medzi posuvnými registrami s uzavretou slučkou a celulárnymi automatmi, ktoré som študoval mnoho rokov, existuje úzky vzťah. Základnou organizáciou spätnoväzbového posuvného registra je počítať po jednom bite. V celulárnom automate je jeden riadok buniek a v každom kroku sa všetky bunky aktualizujú paralelne na základe pravidla, ktoré závisí napríklad od hodnôt ich najbližších susedov.

Aby sme videli, ako spolu súvisia, musíme spustiť posuvný register veľkosti n, a zároveň zobraziť jeho stav len každý n kroky; inými slovami, pred opätovným zobrazením nechajte všetky bity prepísať. Ak sa zobrazí každý krok posuvného registra s lineárnou spätnou väzbou (tu - s dvoma ťuknutiami), potom sa v každom kroku všetko posunie doľava - a to je všetko. Ak však vytvoríte komprimovaný obrázok, zobrazí sa iba každý n krokoch, vzor bude viditeľný.

Toto je vnorený vzor; a tento obrázok je veľmi podobný tomu, ktorý možno získať, ak bunkový automat vezme bunku a jej susednú a pridá k nim modulo 2 (XOR). Toto sa stane s celulárnym automatom, ak usporiada svoje bunky tak, aby boli v kruhu rovnakej veľkosti ako posuvný register vyššie:

Na začiatku sa ukázalo, že vzory celulárnych automatov a posuvných registrov sú úplne rovnaké. Keď sa pozriete na tieto obrázky, bude menej prekvapujúce, že matematika posuvných registrov má čo do činenia s celulárnymi automatmi. A vzhľadom na opakovateľnosť vnorených vzorov je jasné, prečo by mala existovať elegantná matematická teória posuvných registrov.

Typické posuvné registre používané v praxi nevykazujú takéto zjavne sa opakujúce vzory. Tu je niekoľko príkladov posuvných registrov, ktoré generujú sekvencie s maximálnou dĺžkou. Faktom je, že konáre sú ďaleko od seba, čo sťažuje hľadanie vizuálnych stôp hniezdenia.

Aká široká je korešpondencia medzi posuvnými registrami a celulárnymi automatmi? V prípade celulárnych automatov môžu byť pravidlá generovania nových hodnôt buniek akékoľvek. V posuvných registroch s lineárnou spätnou väzbou by mali byť vždy založené na sčítaní modulo 2 (alebo XOR). To je to, čo znamená "lineárna" časť "lineárneho spätnoväzbového posuvného registra". Je tiež možné použiť ľubovoľné pravidlo na kombinovanie hodnôt pre nelineárne spätnoväzbové posuvné registre (NFSR).

V skutočnosti, keď Saul vyvinul svoju teóriu posuvných registrov s lineárnou spätnou väzbou, začal s nelineárnym prípadom. Keď v roku 1956 prišiel do JPL, dostal laboratórium so stojanmi na malé elektronické moduly. Saul povedal, že moduly (každý o veľkosti škatuľky cigariet) boli vytvorené pre projekt Bell Labs na vykonávanie určitej logickej operácie (AND, OR, NOT, ...). Moduly možno použiť spoločne na implementáciu ľubovoľných požadovaných nelineárnych spätnoväzbových posuvných registrov, ktoré poskytujú približne milión bitov za sekundu (Sol mi povedal, že niekto sa pokúsil urobiť to isté s počítačom na všeobecné použitie a čo trvalo 1 sekundu pri použití hardvérových modulov, vyžaduje 6 týždňov práce na univerzálnom počítači).

Keď Saul začal študovať posuvné registre s lineárnou spätnou väzbou, jeho prvým veľkým objavom boli periódy opakovania. A v prípade nelineárnych venoval väčšinu úsilia tomu, aby sa snažil pochopiť to isté. Zozbieral všetky druhy experimentálnych údajov. Povedal mi, že dokonca testoval sekvencie dĺžky 245, čo trvalo rok. Urobil zhrnutie ako na obrázku nižšie (všimnite si vizualizáciu sekvencií zobrazených na čiare tvaru vlny). Nikdy však neprišiel so všeobecnou teóriou, ktorú mal pre posuvné registre s lineárnou spätnou väzbou.

Nie je prekvapením, že to nedokázal. Už v 50. rokoch sa objavili teoretické výsledky (vo väčšine prípadov založené na myšlienkach Turingovho univerzálneho výpočtu), ktoré programy to v princípe dokázali. Nemyslím si, že by Sol alebo niekto iný niekedy myslel, že veľmi jednoduché (nelineárne) funkcie budú použité v nelineárnych spätnoväzbových posuvných registroch.

Až neskôr sa ukázalo, aké zložité môže byť správanie aj veľmi jednoduchých programov. Mojím obľúbeným príkladom je pravidlo 30 pre celulárny automat, v ktorom sú hodnoty susedných buniek kombinované pomocou funkcie, ktorá môže byť reprezentovaná ako R + q + r + q * r mod 2(alebo R XOR ( q ALEBO r)). Je neuveriteľné, že Saul zvažoval nelineárne spätnoväzbové posuvné registre založené na podobných funkciách: R + G + s + q * r + q * s + r * s mod 2... Nižšie sú uvedené ilustrácie toho, ako funkcia Sol (ktorú možno považovať za „pravidlo 29070“), pravidlo 30 a niekoľko ďalších podobných pravidiel v posuvnom registri:

A tu, nie sú obmedzené na register pevnej veľkosti, sú ako mobilné automaty:

Samozrejme, Saul takto nikdy nefotil (a to bolo v 50. rokoch takmer nemožné). Namiesto toho sa zameral na obdobie opakovania ako na akúsi kumulatívnu charakteristiku.

Saul uvažoval, či nelineárne spätnoväzbové posuvné registre môžu byť zdrojom chaosu. Z toho, čo je dnes známe o celulárnych automatoch, je jasné, že môžu. Napríklad na vytvorenie náhodnosti v Mathematice sme 25 rokov používali pravidlo 30 celulárnych automatov (hoci sme ho nedávno opustili v prospech efektívnejšieho pravidla, ktoré sme našli po preštudovaní biliónov možností).

Sol hovoril málo o šifrovaní; aj keď si myslím, že pre vládu nepracoval dlho. Povedal mi, že hoci v roku 1959 objavil „ multidimenzionálne korelačné útoky na nelineárne sekvencie"kým je" Starostlivo sa vyhýbali tvrdeniam, že program bol určený na kryptoanalýzu Ide o to, že pravidlo 30 pre celulárne automaty (a možno aj nelineárne spätnoväzbové posuvné registre) môžu byť dobrými kryptosystémami – aj keď sa zdajú byť ekvivalentné s lineárnymi spätnoväzbovými posuvnými registrami (ktoré takými nie sú), nikdy sa nepoužívali v maximálnej možnej miere. .

Ako nadšenec som sa za posledných niekoľko desaťročí pokúsil študovať všetkých predchodcov mojej práce na jednorozmerných celulárnych automatoch. Dvojrozmerné bunkové automaty boli málo študované, ale v prípade jednorozmerných automatov sa našla iba jedna čisto teoretická práca. Myslím, že nelineárne spätnoväzbové posuvné registre Solomona Golomba sú najbližšie k tomu, čo som skončil o štvrťstoročie neskôr zo všetkého, čo som kedy videl.

poliomino

Počujem priezvisko" Golomb “, mnohí si spomenú na posuvné registre. Väčšina si však pamätá o polyomino... Sol nevynašiel poliomino, aj keď prišiel s názvom. Systematizoval to, čo sa predtým objavovalo iba v samostatných hádankách.

Hlavnou otázkou, na ktorú sa Sol zaujímal odpovedať, bolo, ako by sa dali zorganizovať sady poliominov, aby pokryli určitú oblasť. Niekedy je to celkom zrejmé a niekedy je to dosť ťažké. Sol publikoval svoj prvý článok o polyomine v roku 1954, ale Martin Gardner ho urobil skutočne populárnym v roku 1957 (v časopise napísal stĺpček o matematických hrách Americký vedecký pracovník). Ako Saul vysvetlil v úvode svojej knihy z roku 1964, výsledkom bolo „ neustály prúd korešpondentov z celého sveta a zo všetkých oblastí života: predsedovia správnej rady popredných univerzít, obyvatelia neznámych kláštorov, väzni zo známych väzníc ...".

Herné spoločnosti si tiež všimli nové hádanky a v priebehu niekoľkých mesiacov sa objavili titulky ako „ nové senzačné hádanky"nasledované desaťročiami ďalších hádaniek a hier na báze polyomina (nie, ten zlovestný holohlavý chlap nevyzerá ako Saul):

Saul publikoval články o poliomine ešte 50 rokov po prvom uverejnení. V roku 1961 predstavil „rep-tiles“, ktoré možno použiť na vytváranie fraktálových vzorov („Infin-tiles“). Ale takmer všetko, čo Sol urobil s poliomino, zahŕňalo riešenie konkrétnych problémov.

V skutočnosti ma nezaujímajú špecifiká polyomina; Zaujímajú ma všeobecnejšie javy, ktoré s nimi súvisia. Zdá sa ľahké rozhodnúť, či dokážete „vydláždiť“ celé lietadlo niekoľkými jednoduchými tvarmi. Ale v prípade poliominoes (ako aj všetkých hier a hádaniek na nich založených) je jasné, že veci nie sú také jednoduché. V 60. rokoch sa totiž dokázalo, že tento problém je teoreticky neriešiteľný.

Ak nás zaujíma len obmedzená oblasť, potom v zásade môžeme jednoducho vymenovať všetky mysliteľné polohy figúrok a potom zistiť, či sú umiestnené tak, ako by mali. Ak nás však zaujíma nekonečno, tak sa to nedá. Možno niekto nájde spôsob, ako úspešne umiestniť milión kusov, ale nie je zaručené, že tento výsledok bude možné rozšíriť ďalej.

Ukazuje sa, že by to mohlo vyzerať ako fungujúci Turingov stroj – alebo celulárny automat. Začnete radom dlaždíc. Potom je otázka, či je možné nekonečné obkladanie, ekvivalentná otázke, či je pre Turingov stroj možné nastavenie, ktoré mu umožní pokračovať ďalej a ďalej. Ide o to, že ak je Turingov stroj univerzálny (to znamená, že môže byť naprogramovaný tak, aby vykonával akýkoľvek možný výpočet), potom problém zastavenia preň môže byť neriešiteľný, čo znamená, že problém s dlaždicami bude tiež neriešiteľný.

Samozrejme to závisí od pôvodnej sady tvarov. Otázkou je, aké zložité musia byť formuláre, aby zakódovali univerzálne výpočty a viedli k neriešiteľnému problému s dlaždicami. Solomon Golomb vedel o literatúre na túto tému, ale nijako sa o ňu zvlášť nezaujímal.

Je známe, že zložité a prepracované sady polyominoes skutočne podporujú univerzálne výpočty. Ale čo jednoduchý set? Je to dosť jednoduché na to, aby ste naň náhodou natrafili? Ak sa pozriete na všetky tie systémy, ktoré som študoval, potom sa najjednoduchšia sada skutočne ukáže ako jednoduchá. Je však ťažké ho nájsť.

Oveľa jednoduchšou úlohou je nájsť poliominy, ktoré úspešne zaplnia lietadlá, aj keď len neperiodicky. Roger Penrose našiel vhodný príklad v roku 1994. V mojej knihe Nový druh vedy Uviedol som trochu jednoduchší príklad s 3 polyominoes:

Zvyšok príbehu

Saul mal niečo po tridsiatke, keď dosiahol pozoruhodný úspech v oblasti posuvných registrov a polyomino... Bol to veľmi aktívny človek. Napísal niekoľko stoviek článkov, z ktorých niektoré rozširujú jeho skoršiu prácu, niektoré boli odpoveďami na otázky, ktoré mu boli položené, a niektoré boli napísané, zdá sa, len pre zábavu – aby sa dozvedeli zaujímavé veci o číslach, postupnostiach, kryptosystémoch, atď atď.

Posunové registre a polyomino sú objemné témy (v klasifikácii AMS sú dokonca zaradené do samostatných kategórií). V posledných desaťročiach sa obaja dočkali nového kola vývoja, keď na ich základe začali vykonávať počítačové experimenty; Aktívne sa na nich podieľal aj Sol. Mnoho otázok však zostáva nezodpovedaných. A ak sa dajú nájsť veľké Hadamardove matice pre posuvné registre s lineárnou spätnou väzbou, potom sa o posuvných registroch s nelineárnou spätnou väzbou vie len málo, nehovoriac o všetkých neperiodických a iných exotických polyominoes.

Sol sa vždy zaujímal o hlavolamy, matematické aj slovné. Chvíľu prebehol stĺpec hádaniek Los Angeles Times a 32 rokov písal „ Golombove gambity do časopisu Johns Hopkins Alumni Magazine. Zúčastnil sa testovania MegaIQ a vyhral výlet do Bieleho domu, keď sa so svojím šéfom umiestnil v prvej päťke v krajine.

Do svojej práce na univerzite vložil obrovské úsilie: nielen vyučoval študentov a dohliadal na postgraduálnych študentov a stúpal po administratívnom rebríčku (predseda univerzitnej rady, prorektor pre výskum atď.), ale vyjadril svoj názor aj na manažment univerzity ako celku (napr. napísal článok „Fakultné poradenstvo: Vezmi to alebo nechaj tak?“ Odpoveď: Nie, je to dobré pre univerzitu!). Pracoval ako headhunter na Univerzite v Južnej Kalifornii a počas svojho pôsobenia tam pomohol univerzite dostať sa z temnoty na vrchol rebríčka vzdelávacích programov.

A potom nasledovalo poradenstvo. Saul bol precízny a neprezradil, čo robil pre vládne agentúry. Koncom šesťdesiatych rokov, frustrovaný tým, že všetci okrem neho predávajú polyomino hry, založil Saul spoločnosť, ktorú nazval Recreational Technology, Inc. Veci nešli dobre, ale Saul sa stretol s Alvinom Berlekampom, profesorom z Berkeley s vášňou pre kódovanie teórií a hádaniek. Následne založili Cyclotomics (na počesť cyklotomických polynómov formy X n- 1), ktorý bol nakoniec predaný spoločnosti Kodak za jednorazovú sumu (Berlekamp tiež vytvoril algoritmický obchodný systém, ktorý potom predal Jimovi Simonsovi a ktorý sa stal východiskovým bodom pre spoločnosť Renaissance Technologies - jeden z najväčších hedžových fondov súčasnosti).

Viac ako 10 000 patentov tak či onak súvisí s prácou Sola, ale Sol sám získal iba jeden patent na kryptosystémy založené na kváziskupinách – a myslím si, že pre komercializáciu svojej práce urobil málo.

Sol pracoval mnoho rokov s Technionom, Izraelským technologickým inštitútom. Hovoril o sebe ako „ nenáboženský ortodoxný žid“, no zároveň občas viedol semináre pre začiatočníkov o Knihe Genezis a pracoval aj na rozlúštení častí zvitkov od Mŕtveho mora (kumránskych rukopisov).

Saul a jeho manželka veľa cestovali, ale „stredom sveta“ pre Saula bola určite jeho kancelária v Los Angeles na University of Southern California a dom, v ktorom s manželkou žili takmer 60 rokov. Vždy bol obklopený priateľmi a študentmi. A mal rodinu. Jeho dcéra Astrid hrala postavu študentky v hre o Richardovi Feynmanovi (pózovala mu) a v románe môjho priateľa ako jednu z postáv. Beatrice zasvätila svoju kariéru aplikácii matematickej úrovne presnosti na rôzne typy medicínskych indikácií a diagnostiky (ochorenia súvisiace s Vojnou v Perzskom zálive, účinky statínov, čkanie atď.). Dokonca som trochu prispel do života Beatrice tým, že som ju predstavil mužovi, ktorý sa neskôr stal jej manželom – Terrymu Seinovskému, jednému zo zakladateľov modernej výpočtovej neurovedy.

Sol sa zdal byť zapletený do množstva udalostí, aj keď detaily príliš nerozvádzal. Z času na čas som sa s ním chcel porozprávať o vede a matematike, ale viac ho zaujímalo rozprávanie príbehov (často veľmi vzrušujúcich) o jednotlivcoch aj organizáciách (“ Verili by ste, že [v roku 1985], po rokoch neprítomnosti na konferenciách, sa Claude Shannon jednoducho objavil bez ohlásenia v bare na výročnej konferencii o teórii informácie?"; "viete, koľko museli zaplatiť šéfovi Kalifornského technologického inštitútu, aby sa dostal do Saudskej Arábie?", atď.).

Keď sa obzriem späť, uvedomujem si, že by som rád zaujal Saula pri riešení niektorých matematických otázok nastolených v mojej práci. Nemyslím si, že som pochopil, do akej miery rád riešil problémy, ktoré navrhli iní ľudia. Napriek svojmu významnému prínosu k rozvoju infraštruktúry výpočtového sveta, sám Sol nikdy vážne nepoužíval počítače. Bol veľmi hrdý na to, že vie s ľahkosťou počítať v hlave. Do 70 rokov nepoužíval elektronickú poštu a doma nikdy nepoužíval počítač, hoci mal mobilný telefón (bežnú poštu takmer vôbec nedostával. Raz som spomínal, že asi pred rokom som študoval príbeh od Ady Lovelace; odpovedal: " Príbeh Ady Lovelace ako programátorky Babbage je taký rozšírený, že sa zdá, že ho každý považuje za samozrejmosť, no nikdy som nevidel zdroje na túto tému.").

Solove dcéry pred pár rokmi zorganizovali oslavu k jeho 80. narodeninám a vytvorili tieto zaujímavé pozvánky:

Saul mal určité zdravotné problémy, aj keď sa nezdalo, že by to veľmi ovplyvnilo jeho životný rytmus. Zdravotný stav jeho manželky sa v posledných týždňoch zhoršuje, a to dosť dramaticky. V piatok išiel Sol ako obvykle do svojej kancelárie a v sobotu večer zomrel v spánku. Jeho manželka Bo ho prežila len o dva týždne a zomrela len dva dni pred 60. výročím svadby.

Hoci Saul je preč, jeho dielo žije v osemhranných častiach digitálneho sveta.

Zbohom Sol. A od nás všetkých - ďakujeme.



Sekvencie posuvných registrov sa používajú v kryptografii aj v teórii kódovania. Ich teória je dobre rozvinutá, prúdové šifry založené na posuvných registroch boli ťahúňom vojenskej kryptografie dávno pred príchodom elektroniky.

Posuvný register so spätnou väzbou (ďalej len РгСсОС) pozostáva z dvoch častí: posuvného registra a funkcie spätnej väzby. Posuvný register je sekvencia bitov. Počet bitov je určený dĺžka posuvného registra, ak je dĺžka n bitov, potom sa volá register n-bitový posuvný register... Kedykoľvek je potrebné získať bit, všetky bity posuvného registra sa posunú doprava o 1 pozíciu. Nový bit úplne vľavo je funkciou všetkých ostatných bitov v registri. Výstupom posuvného registra je jeden, zvyčajne najmenej významný bit. Obdobie posunového registra je dĺžka výslednej sekvencie pred začiatkom jej opakovania.

Obrázok 1. Posuvný register spätnej väzby

Posunové registre si našli cestu do prúdových šifier veľmi rýchlo, pretože sa dali jednoducho implementovať pomocou digitálneho hardvéru. V roku 1965 Ernst Selmer, hlavný kryptograf nórskej vlády, vyvinul teóriu sekvencií posuvných registrov. Solomon Golomb, matematik NSA, napísal knihu, v ktorej načrtol niektoré jeho výsledky a výsledky Selmera. Najjednoduchším typom posuvného registra so spätnou väzbou je posuvný register s lineárnou spätnou väzbou (ďalej len LFSR alebo PrCCLOC). Spätná väzba takýchto registrov je jednoducho XOR (modulo two Adding) niektorých bitov registra, zoznam týchto bitov sa nazýva sekvencia klepnutia. Tento register sa niekedy nazýva Fibbonacciho konfigurácia. Vďaka jednoduchosti sekvencie spätnej väzby možno na analýzu PrCcVOC použiť pomerne dobre rozvinutú matematickú teóriu. Analýzou výsledných výstupných sekvencií môžete overiť, že tieto sekvencie sú dostatočne náhodné, aby boli bezpečné. PrCcLOC je najbežnejšie používaný posuvný register v kryptografii.


Obrázok 2. PrCsLOC Fibbonacci

Vo všeobecnosti môže byť n-bitový PrCcLOC v jednom z N = 2 n-1 vnútorných stavov. To znamená, že teoreticky môže takýto register generovať pseudonáhodnú sekvenciu s periódou T = 2 n-1 bitov. (Počet vnútorných stavov a perióda sa rovná N = T max = 2 n -1, pretože naplnenie PrCcLOC nulami spôsobí, že posuvný register vytvorí nekonečnú postupnosť núl, čo je absolútne zbytočné). Len pre určité odbočovacie sekvencie bude PrCcLOC cyklicky prechádzať všetkými 2 n -1 vnútornými stavmi, ako sú PrCcLOC PrCcLOC s maximálnou periódou... Výsledný výsledok je tzv M-sekvencia.

Príklad ... Obrázok nižšie ukazuje 4-bitový PrCcLOC odpočúvaný z prvého a štvrtého bitu. Ak je inicializovaný s hodnotou 1111, potom pred opakovaním nadobudne register nasledujúce vnútorné stavy:

Číslo posunu hodín (interný stav)

Registrovať štát

Výstupný bit

Pôvodná hodnota

15 (návrat do pôvodného stavu)

16 (opakované stavy)

Výstupná sekvencia bude reťazec najmenej významných bitov: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 s periódou T = 15, celkový počet možných vnútorných stavov (okrem nuly), N = 2 4 -1 = 16-1 = 15 = T max, teda výstupná sekvencia je M-sekvencia.

Aby konkrétny PrCcLOC mal maximálnu periódu, polynóm vytvorený z postupnosti vetvenia a konštanta 1 musí byť primitívny modulo 2. Polynóm je reprezentovaný ako súčet stupňov, napríklad polynóm stupňa n je reprezentovaný ako nasleduje:

a 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 kde i = (0,1) pre i = 1… n, a x i - označuje číslicu.

Stupeň polynómu je dĺžka posuvného registra. Primitívny polynóm stupňa n je ireducibilný polynóm, ktorý delí x 2n? 1 +1, ale nie je deliteľom x d +1 pre všetky d, ktoré sú deliteľmi 2 n -1. Príslušnú matematickú teóriu možno nájsť v.

Vo všeobecnosti neexistuje jednoduchý spôsob, ako generovať primitívne polynómy daného stupňa modulo 2. Najjednoduchší spôsob je vybrať polynóm náhodne a skontrolovať, či je primitívny. Nie je to jednoduché a je to niečo ako kontrola, či náhodne vybrané číslo nie je jednoduché – ale mnohé matematické softvérové ​​balíky dokážu tento problém vyriešiť.

Niektoré, ale určite nie všetky, polynómy rôznych stupňov, primitívny mod 2, sú uvedené nižšie. Napríklad vstup

(32, 7, 5, 3, 2, 1, 0) znamená, že nasledujúci polynóm je primitívny mod 2: x 32 + x 7 + x 5 + x 3 + x 2 + x + 1.

Toto možno ľahko zovšeobecniť pre PrCCLOC s maximálnou periódou. Prvé číslo je dĺžka PrCcLOC. Posledné číslo je vždy 0 a možno ho vynechať. Všetky čísla, okrem 0, určujú poradie prstov, počítané od ľavého okraja posuvného registra. To znamená, že členy polynómu s nižším stupňom zodpovedajú pozíciám bližšie k pravému okraju registra.

Pokračujúc v príklade, zápis (32, 7, 5, 3, 2, 1, 0) znamená, že pre prevzatý 32-bitový posuvný register sa generuje nový bit, nový bit XORingom tridsiateho, siedmeho, piaty, tretí, druhý a prvý bit. , výsledný PrCcLOC bude mať maximálnu dĺžku, pričom bude cyklicky prechádzať 2 32 -1 hodnotami, kým sa nezopakuje.


Obrázok 4.32-bit PrCcLOC s maximálnou dĺžkou

Uvažujme programový kód PgCsLOC, v ktorom je postupnosť vetvenia charakterizovaná polynómom (32, 7, 5, 3, 2, 1, 0). V jazyku C to vyzerá takto:

statický nepodpísaný dlhý ShiftRegister = 1;

/ * Všetko okrem 0. * /

ShiftRegister = (((((ShiftRegister >> 31)

^ (ShiftRegister >> 6)

^ (ShiftRegister >> 4)

^ (ShiftRegister >> 2)

^ (ShiftRegister >> 1)

^ ShiftRegister))

| (ShiftRegister >> 1);

vrátiť ShiftRegister & 0x00000001;)

Ak je posuvný register dlhší ako počítačové slovo, kód sa stáva zložitejším, ale nie príliš. Príloha B obsahuje tabuľku niektorých primitívnych polynómov modulo 2, v budúcnosti ju použijeme na identifikáciu niektorých vlastností týchto polynómov, ako aj v softvérovej implementácii na definovanie postupnosti vetiev.

Treba poznamenať, že všetky prvky tabuľky majú nepárny počet koeficientov. Takáto dlhá tabuľka je určená pre ďalšiu prácu s PrCcLOC, pretože PrCcLOC sa často používa na kryptografiu s prúdovými šiframi a v generátoroch pseudonáhodných čísel. V našom prípade môžete použiť polynómy s najvyšším stupňom najviac sedem.

Ak je p (x) primitívne, potom x n p (1 / x) je tiež primitívne, takže každý prvok tabuľky v skutočnosti definuje dva primitívne polynómy. Napríklad, ak (a, b, 0) je primitívne, potom také je (a, a-b, 0). Ak je primitívna (a, b, c, d, 0), tak je aj primitívna (a, a-d, a-c, a-b, 0). Matematicky:

ak je x a + x b +1 primitívne, potom x a + x a-b +1 je tiež primitívne,

ak je x a + x b + x c + x d +1 primitívne, potom x a + x a-d + x a-c + x a-b +1 je tiež primitívne. Primitívne trinómy sa implementujú najrýchlejšie v softvéri, pretože na vygenerovanie nového bitu je potrebné vykonať XOR iba dva bity posuvného registra (nulový člen sa neberie do úvahy, t.j. x 0 = 1, pozri príklad vyššie). Všetky spätnoväzbové polynómy uvedené v tabuľke sú skutočne riedke, to znamená, že majú málo koeficientov. Zriedkavosť je vždy zdrojom slabosti, čo niekedy stačí na prelomenie algoritmu. Pre kryptografické algoritmy je oveľa lepšie použiť husté primitívne polynómy, tie s mnohými koeficientmi. Použitím hustých polynómov, najmä ako súčasti kľúča, možno použiť oveľa kratšie PsCLOC.

Generovanie hustých primitívnych polynómov mod 2 nie je jednoduché. Vo všeobecnosti na generovanie primitívnych polynómov stupňa k potrebujete poznať faktorizáciu 2 k -1.

PrCcLOC sú samé o sebe dobrými generátormi pseudonáhodných sekvencií, ale majú niektoré nežiaduce nenáhodné (deterministické) vlastnosti. Po sebe idúce bity sú lineárne, vďaka čomu sú na šifrovanie nepoužiteľné. Pre PrCLOC dĺžky n je vnútorný stav predchádzajúcich n výstupných bitov generátora. Aj keď je schéma spätnej väzby utajená, možno ju určiť z 2n výstupných bitov generátora pomocou vysoko efektívneho Berlekamp-Masseyho algoritmu.

Okrem toho veľké náhodné čísla generované pomocou súvislých bitov tejto sekvencie sú vysoko korelované a pre niektoré typy aplikácií nie sú náhodné vôbec. Napriek tomu sa PgCsLOC často používajú na vytváranie šifrovacích algoritmov ako súčasti šifrovacích systémov a algoritmov.

Posuvný register spätnej väzby pozostáva z dvoch častí: posuvného registra a funkcie spätnej väzby.

Obrázok 19. Posuvný register spätnej väzby.

Vo všeobecnosti je posuvný register sekvenciou niektorých prvkov kruhu alebo poľa. Najčastejšie používané trocha posuvné registre. Dĺžka takéhoto registra je vyjadrená počtom bitov. Pri každom získaní bitu sa všetky bity registra posunú o jednu pozíciu doprava. Nový najvýznamnejší bit sa vypočíta ako funkcia všetkých ostatných bitov registra. Výstup je zvyčajne najmenej významný bit. Perióda posuvného registra je dĺžka výstupnej sekvencie pred začiatkom jej opakovania.

Najjednoduchším typom posuvných registrov je posuvný register s lineárnou spätnou väzbou (RSLOS alebo LRS). Spätná väzba je jednoduchá operácia XOR na niektorých bitoch registra. Zoznam týchto bitov je definovaný charakteristický polynóm a volal postupnosť ohybov... Toto sa niekedy nazýva Fibonacciho konfigurácia.

Obr. 20 Konfigurácia RLOS Fibonacci.

V softvérovej implementácii RSLOS sa používa upravená schéma: na vygenerovanie nového významného bitu sa namiesto použitia bitov sekvencie odbočiek vykoná operácia XOR na každom jeho bite s výstupom generátora, čím sa nahradí starý bit. sekvenciu klepnutia. Táto úprava je niekedy tzv Konfigurácia Galois.

Obr. Konfigurácia RSLOS Galois.

n-bit RSLOS môže byť v jednom z 2 n- 1 vnútorné stavy. To znamená, že teoreticky môže takýto register generovať pseudonáhodnú sekvenciu s periódou 2 n- 1 bit (vyplnenie nulami je úplne zbytočné). Absolvovať všetky 2 n- 1 vnútorné stavy sú možné len s určitými sekvenciami ťuknutia. Takéto registre sa nazývajú RSLOS s maximálnou periódou. Na zabezpečenie maximálnej periódy RSLOC je potrebné, aby bol jeho charakteristický polynóm primitívny modulo 2. Stupeň polynómu je dĺžka posuvného registra. Primitívny polynóm stupňa n- je to tak neredukovateľné polynóm, ktorý je deliteľom, ale nie je deliteľom x d+ 1 pre všetkých d ktoré sú deliteľmi 2 n- 1. (Pri diskusii o polynómoch termín prvočíslo sa nahrádza pojmom neredukovateľný polynóm). Charakteristický polynóm uvedený na obrázkoch RSLOS:



X 32 + X 7 + X 5 + X 3 + X 2 + X + 1

je primitívny modulo 2. Perióda takéhoto registra bude maximálna, pričom bude prechádzať všetkými 2 32 - 1 hodnotami, kým sa nezopakujú. Najčastejšie sa používajú stenčené polynómy, t.j. ktoré majú len nejaké koeficienty. najobľúbenejšie sú trojčlenky.

Dôležitým parametrom generátora na báze RSLOS je lineárna zložitosť... Je definovaná ako dĺžka n najkratší RLOS, ktorý dokáže simulovať výstup generátora. Lineárna zložitosť je dôležitá, pretože s jednoduchým Algoritmus Berlenkamp-Massey takýto RSLOS môžete znovu vytvoriť tak, že začiarknete iba 2 n gama bitov. S definíciou požadovaného RSLOS je prúdová šifra skutočne prelomená.

Okrem RSLOS sa používajú aj posuvné registre s nelineárnou spätnou väzbou, prenosovou spätnou väzbou atď.

Množstvo generátorov je vyvinutých na základe číselného teoretického prístupu (Bloom-Micaliho generátory, RSA, BBS, kompresné, aditívne generátory atď.).

Softvér na syntézu prúdových kryptografických algoritmov bol vyvinutý podrobnejšie a v porovnaní s blokovými kryptoalgoritmami. Napriek tomu sa na vytváranie prúdových šifier často používajú blokové kryptoalgoritmy v režimoch OFB alebo CFB.