Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 7, XP
  • Shembull i regjistrit të zhvendosjes lineare. Regjistri i zhvendosjes së reagimeve lineare

Shembull i regjistrit të zhvendosjes lineare. Regjistri i zhvendosjes së reagimeve lineare

Regjistri i ndryshimit të komenteve ( FSR ) përbëhet nga dy pjesë: regjistri i ndërrimit Dhe funksionet e reagimit .

Një regjistër zhvendosjeje (Gabim: Burimi i referencës nuk u gjet) është një sekuencë bitesh. Kur një bit duhet të merret, të gjithë bitët e regjistrit të zhvendosjes zhvendosen djathtas me 1 pozicion. Biti i ri më i majtë është vlera e funksionit të reagimit nga pjesët e mbetura të regjistrit. Periudha Regjistri i zhvendosjes është gjatësia e sekuencës që rezulton përpara se të fillojë të përsëritet.

Lloji më i thjeshtë i regjistrit të zhvendosjes së reagimeve është regjistri i zhvendosjes lineare me reagime (LFSRMajtas Feedback Zhvendosja Regjistrohu) (Gabim: Burimi i referencës nuk u gjet). Reagimi është thjesht XOR i disa biteve p regjistri, thirret lista e këtyre biteve sekuenca e prekjes.

n-bit LFSR mund të jetë në një nga 2 n -1 gjendjet e brendshme. Kjo do të thotë se, teorikisht, një regjistër i tillë mund të gjenerojë një sekuencë pseudo të rastësishme me një pikë 2 n -1 copa Numri i gjendjeve të brendshme dhe periudha janë të barabarta sepse plotësimi i regjistrit me zero do të bëjë që ai të prodhojë një sekuencë të pafundme zerosh, gjë që është absolutisht e padobishme. Vetëm me sekuenca të caktuara përgjimi, LFSR do të qarkullojë nëpër të gjitha 2 n -1 gjendjet e brendshme. Këto LFSR quhen LFSRme periudhë maksimale.

Në mënyrë që një LFSR e veçantë të ketë një periudhë maksimale, një polinom i formuar nga sekuenca e trokitjes dhe konstanta 1 duhet të jetë modul primitiv 2 .

Llogaritja e primitivitetit të një polinomi është një problem matematikor mjaft kompleks. Prandaj, ekzistojnë tabela të gatshme që tregojnë numrat e sekuencave të trokitjerave që ofrojnë periudhën maksimale të gjeneratorit. Për shembull, për një regjistër të zhvendosjes 32-bit mund të gjeni hyrjen e mëposhtme: (32,7,5,3,2,1,0) . Kjo do të thotë që për të gjeneruar një bit të ri, duhet të përmblidhni bitet e tridhjetë e dytë, të shtatë, të pestë, të tretë, të dytë dhe të parë duke përdorur funksionin XOR.

Kodi për një LFSR të tillë në C++ do të ishte si ky:

// Çdo vlerë tjetër përveç zeros

ShiftRegister = ((((ShiftRegister >> 31)

^ (ShiftRegister >> 6)

^ (ShiftRegister >> 4)

^ (ShiftRegister >> 2)

^ (ShiftRegister >> 1)

^ ShiftRegister)

& 0x00000001)<<31)

| (ShiftRegister >> 1);

kthe ShiftRegister & 0x00000001;

Implementimet e softuerit të LFSR-së janë mjaft të ngadalta dhe funksionojnë më shpejt nëse janë të shkruara në gjuhën assembly dhe jo në C. Një zgjidhje është përdorimi i 16 LFSR-ve paralelisht (ose 32 në varësi të gjatësisë së fjalës në arkitekturën specifike të kompjuterit). Kjo skemë përdor një grup fjalësh, madhësia e të cilave është e barabartë me gjatësinë e LFSR, dhe secila njësi e një fjale në grup i referohet LFSR-së së vet. Me kusht që të përdoren të njëjtët numra të sekuencës së prekjes, kjo mund të sigurojë një fitim të dukshëm të performancës.

ME Qarku i reagimit gjithashtu mund të modifikohet. Në këtë rast, gjeneratori nuk do të ketë forcë më të madhe kriptografike, por do të jetë më e lehtë për t'u zbatuar në softuer. Në vend që të përdorë bitin më të majtë të sekuencës së trokitjes për të gjeneruar bitin e ri më të majtë, ai XORs çdo bit të sekuencës së trokitjes me daljen e gjeneratorit dhe e zëvendëson atë me rezultatin e këtij veprimi, atëherë rezultati i gjeneratorit bëhet i ri. biti më i majtë (Gabim: Burimi i referencës nuk u gjet).

Ky modifikim quhet Konfigurimi Galois. Në C duket kështu:

ShiftRegister i gjatë statik i panënshkruar = 1;

void seed_LFSR (farë e gjatë e panënshkruar)

ShiftRegister = farë;

int Galua_LFSR (i pavlefshëm)

nëse (ShiftRegister & 0x00000001) (

ShiftRegister = (ShiftRegister ^ mask >> 1) | 0x8000000;

ShiftRegister >>= 1;

Përfitimi është se të gjitha XOR-et kryhen në një operacion. Ky qark gjithashtu mund të paralelizohet.

Vetë LFSR-të janë gjeneratorë të mirë të sekuencave pseudo të rastësishme, por ato kanë disa veti të padëshirueshme jo të rastësishme. Bitët e njëpasnjëshme janë lineare, gjë që i bën ata të padobishëm për enkriptim. Për gjatësitë LFSR n gjendja e brendshme përfaqëson të mëparshmen n bitet e daljes së gjeneratorit. Edhe nëse modeli i reagimit mbahet i fshehtë, ai mund të përcaktohet nga 2 n bitet dalëse të gjeneratorit duke përdorur algoritme speciale. Për më tepër, numrat e mëdhenj të rastësishëm të gjeneruar duke përdorur pjesë të njëpasnjëshme të kësaj sekuence janë shumë të ndërlidhura dhe për disa lloje aplikacionesh nuk janë të rastësishëm. Përkundër kësaj, LFSR-të shpesh përdoren për të krijuar algoritme kriptimi. Për këtë qëllim, përdoren LFSR të shumëfishta, zakonisht me gjatësi dhe numra të sekuencës së prekjes. Çelësi është gjendja fillestare e regjistrave. Sa herë që nevojitet një bit i ri, të gjithë regjistrat zhvendosen. Ky operacion quhet duke rrahur. Biti i daljes është një funksion, mundësisht jolinear, i disa biteve LFSR. Ky funksion quhet duke kombinuar, dhe gjeneratori në tërësi - gjenerator i kombinuar. Shumë nga këta gjeneratorë janë ende të sigurt.

deshifrimi - p i = D (k i, c i), siç tregohet në Fig. 7.21.


Oriz. 7.21.

Shifrat e transmetimit janë më të shpejtë se shifrat e bllokut. Zbatimi i harduerit i një shifrimi të transmetimit është gjithashtu më i thjeshtë. Kur na duhet të enkriptojmë rrjedhat binare dhe t'i transmetojmë ato me një shpejtësi konstante, zgjidhja më e mirë është të përdorim një shifër të transmetimit. Shifrat e transmetimit kanë mbrojtje më të madhe kundër korrupsionit të bitit gjatë transmetimit.

Në një shifër moderne të rrjedhës, secili r -fjala bit në rrjedhën e tekstit të thjeshtë kodohet duke përdorur r -fjalë bit në rrjedhën kryesore për të krijuar përkatësin r -fjalë bit në rrjedhën e tekstit të shifruar.


Oriz. 7.22.

Një bllok një herë është shifra e përsosur. Ai është perfekt. Nuk ka asnjë metodë që do të lejonte një kundërshtar të njohë çelësin ose statistikat e tekstit të shifruar dhe tekstit të thjeshtë. Nuk ka asnjë lidhje midis origjinalit dhe tekstit të shifruar. Me fjalë të tjera, teksti i koduar është një rrjedhë e vërtetë e rastësishme e biteve, edhe nëse merren disa mostra të tekstit origjinal. Eva nuk mund ta thyejë shifrën nëse nuk provon të gjitha rrjedhat e mundshme të rastit, të cilat do të ishin 2n nëse madhësia e tekstit të thjeshtë do të ishte n-bit. Megjithatë, ka një problem me këtë. Në mënyrë që transmetuesi dhe marrësi të ndajnë një bllok çelësash një herë, ata duhet të krijojnë një lidhje sa herë që duan të shkëmbejnë informacion. Ata duhet disi të bien dakord për një çelës të rastësishëm. Pra, ky shifër i përsosur dhe ideal është shumë i vështirë për t'u zbatuar.

Shembulli 7.17

Cila është forma e tekstit të shifruar kur përdoret shifra e njëfishtë në secilën prej rasteve të mëposhtme?

A. Teksti burimor përbëhet nga n zero.

b. Teksti burimor përbëhet nga n njësi.

V. Teksti burimor përbëhet nga zero dhe njëshe të alternuara.

d. Teksti burimor është një varg i rastësishëm bitësh.

Zgjidhje

a. Sepse , atëherë rrjedha e tekstit të shifruar do të përputhet me rrjedhën kryesore. Nëse çelësi është i rastësishëm, teksti i koduar është gjithashtu i rastësishëm. Pjesë të tekstit origjinal nuk ruhen në tekstin e koduar.

b. Sepse , ku është komplementi i rrjedhës së tekstit të koduar është plotësimi i rrjedhës kryesore. Nëse rrjedha e çelësit është e rastësishme, atëherë teksti i koduar është gjithashtu i rastësishëm; pjesë të tekstit origjinal nuk ruhen në tekstin e shifruar.

c. Në këtë rast, çdo bit në rrjedhën e tekstit të koduar është ose i njëjtë si në rrjedhën kryesore ose plotësuesi i tij. Prandaj, rezultati është gjithashtu i rastësishëm nëse rrjedha kryesore është e rastësishme.

d. Në këtë rast, teksti i koduar është qartësisht i rastësishëm, sepse kryerja e një operacioni XOR në dy bit të rastësishëm rezulton në një rrjedhë të rastësishme bitësh.

Regjistri i ndërrimit të reagimeve

Një përmirësim në bllokun e njëhershëm është (FSR - Regjistrimi i zhvendosjes së reagimeve). FSR mund të zbatohet si në softuer ashtu edhe në harduer, por për thjeshtësi ne do të shqyrtojmë zbatimin e harduerit. Regjistri i ndërrimit të reagimeve përfshin regjistri i ndërrimit dhe funksionet e reagimit, siç tregohet në Fig. 7.23.


Oriz. 7.23.

Një regjistër zhvendosjeje është një sekuencë m qelizash nga b 0 në b m-1, ku çdo qelizë është projektuar për të ruajtur një bit të vetëm. Qelizat trajtohen si një fjalë n-bit, e quajtur në fillim "vlera e farës" ose burimi. Sa herë që një bit duhet të dalë (për shembull, nga një sinjal në një kohë të caktuar), çdo bit zhvendoset një qelizë në të djathtë. Kjo do të thotë që vlera e secilës qelizë i caktohet qelizës së djathtë ngjitur dhe merr vlerën e qelizës së majtë. Qeliza më e djathtë b 0 konsiderohet si rezultati dhe jep vlerën e daljes (k i ). Qeliza më e majtë, b m-1, e merr vlerën e saj sipas vlerës së informacionit të funksionit të reagimit. Daljen e funksionit e shënojmë me informacion kthyes b m. Funksioni i informacionit të reagimit përcakton se cilat vlera kanë qelizat për të llogaritur b m. Regjistri i zhvendosjes së informacionit të reagimit mund të jetë linear ose jolinear.

Regjistri i zhvendosjes së reagimeve lineare (LFSR). Le të supozojmë se b m është një funksion linear b 0, b 1,......, b m-1, për të cilin

Një regjistër linear i zhvendosjes së reagimit funksionon në shifra binare, kështu që shumëzimi dhe mbledhja janë në fushën GF(2), kështu që vlera e C i është ose 1 ose 0, por C 0 duhet të jetë 1 për të marrë informacion kthyes në dalje. Operacioni i shtimit është një operacion EKSKLUZIV OSE. Me fjale te tjera,

Shembulli 7.18

Le të ndërtojmë një regjistër të zhvendosjes lineare të reagimit me 5 qeliza, në të cilat .

Zgjidhje

Nëse C i = 0, b i nuk luan një rol në llogaritjen e b m, atëherë kjo do të thotë që b i nuk shoqërohet me funksionin e informacionit të reagimit. Nëse c i = 1, b i përfshihet në llogaritjen e b m. Në këtë shembull, c 1 dhe c 3 janë zero, që do të thotë se kemi vetëm tre lidhje. Figura 7.24 tregon qarkun e një regjistri linear të zhvendosjes së reagimit.


Oriz. 7.24.

Shembulli 7.19

Le të ndërtojmë një regjistër të zhvendosjes lineare të feedback-ut me 4 qeliza, në të cilat . Shfaq vlerën e regjistrit pas 20 operacionet (ndërrime), nëse vlera origjinale është (0001) 2 .

Zgjidhje

Figura 7.25 tregon dizajnin dhe përdorimin e një regjistri linear zhvendosjeje me qark të mbyllur për enkriptim.


Oriz. 7.25.

Tabela 7.6. tregon vlerën e rrjedhës së çelësit. Për çdo tranzicion, llogaritet vlera e parë e b 4, dhe më pas çdo bit zhvendoset një qelizë në të djathtë.

Tabela 7.6.
vlera aktuale b 4 b 3 b 2 b 1 b 0 k i
Vlera fillestare 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

Vini re se transmetimi kryesor është 1000100110101111 1001……. Duket, në pamje të parë, si një sekuencë e rastësishme, por nëse shikojmë një numër të madh transaksionesh (ndërrime), mund të shohim se sekuencat janë periodike. Kjo përsëritje prej 15 bitësh tregohet më poshtë.


Çelësi i transmetimit gjenerohet duke përdorur një regjistër linear të zhvendosjes së reagimit sekuencë pseudorandom, në të cilën përsëriten sekuencat e gjatësisë N. Rrjedha është periodike. Varet nga qarku i gjeneratorit dhe informacioni fillestar dhe mund të jetë jo më shumë se 2 m – 1. Çdo qark gjeneron sekuenca m-bit që variojnë nga ato që përmbajnë të gjitha zerot deri tek ato që përmbajnë të gjitha. Sidoqoftë, nëse sekuenca fillestare është të gjitha zero, rezultati është i padobishëm - teksti origjinal do të ishte një rrjedhë e të gjitha zerave. Prandaj, një sekuencë e tillë fillestare është e përjashtuar.

Sekuencat e regjistrit të zhvendosjes përdoren si në kriptografi ashtu edhe në teorinë e kodimit. Teoria e tyre është e zhvilluar mirë; shifrat e rrjedhës së bazuar në regjistrat e ndërrimit ishin puna e kriptografisë ushtarake shumë kohë përpara ardhjes së elektronikës.

Një regjistër zhvendosjeje me qark të mbyllur (në tekstin e mëtejmë i referuar si RGSSOC) përbëhet nga dy pjesë: një regjistër zhvendosjeje dhe një funksion kthyes. Një regjistër zhvendosjeje është një sekuencë bitësh. Përcaktohet numri i biteve gjatësia e regjistrit të ndërrimit, nëse gjatësia është n bit, atëherë thirret regjistri Regjistri i zhvendosjes n-bit. Kurdoherë që një bit duhet të merret, të gjithë bitet në regjistrin e zhvendosjes zhvendosen djathtas me 1 pozicion. Biti i ri më i majtë është funksion i të gjithë biteve të tjerë në regjistër. Prodhimi i regjistrit të zhvendosjes është një bit, zakonisht më pak i rëndësishëm. Periudha e regjistrimit të ndërrimitështë gjatësia e sekuencës që rezulton përpara se të fillojë përsëritja e saj.

Figura 1. Regjistri i zhvendosjes së reagimeve

Regjistrat e zhvendosjes gjetën përdorim shpejt në shifrat e transmetimit sepse ato u zbatuan lehtësisht duke përdorur pajisje dixhitale. Në vitin 1965, Ernst Selmer, kriptograf kryesor i qeverisë norvegjeze, zhvilloi teorinë e sekuencës së regjistrit të zhvendosjes. Solomon Golomb, një matematikan i NSA, shkroi një libër duke paraqitur disa nga rezultatet e tij dhe të Selmerit. Lloji më i thjeshtë i regjistrit të ndryshimit të reagimit është një regjistër linear i zhvendosjes së reagimit (LFSR). Reagimi i regjistrave të tillë është thjesht një XOR (modulo dy shtesë) i disa biteve të regjistrave, një listë e këtyre biteve të quajtur sekuencë trokitjeje. Ndonjëherë një regjistër i tillë quhet konfigurim Fibbonacci. Për shkak të thjeshtësisë së sekuencës së reagimeve, teoria matematikore mjaft e avancuar mund të përdoret për të analizuar PrCsVOC. Duke analizuar sekuencat e daljes që rezultojnë, mund të verifikoni që sekuencat janë mjaft të rastësishme për të qenë të sigurta. RGCCLOS përdoret më shpesh se regjistrat e tjerë të ndërrimit në kriptografi.


Figura 2. PrCsLOS Fibbonacci

Në përgjithësi, një PrCsLOS n-bit mund të jetë në një nga N=2 n -1 gjendjet e brendshme. Kjo do të thotë se teorikisht një regjistër i tillë mund të gjenerojë një sekuencë pseudo të rastësishme me një periudhë prej T=2 n -1 bit. (Numri i gjendjeve të brendshme dhe perioda janë të barabarta me N=T max =2 n -1, sepse mbushja e PrCsLOS me zero do të bëjë që regjistri i zhvendosjes të prodhojë një sekuencë të pafundme zerosh, e cila është absolutisht e padobishme). Vetëm për sekuenca të caktuara të degëve PrCsLOS do të kalojë ciklikisht nëpër të gjitha 2 n -1 gjendjet e brendshme, të tilla PrCsLOS janë RgSsLOS me periudhë maksimale. Rezultati që rezulton quhet M-sekuenca.

Shembull . Figura më poshtë tregon një PrCCLOS 4-bitësh me bitin e parë dhe të katërt të prekur. Nëse inicializohet me vlerën 1111, atëherë para se të përsëritet regjistri do të marrë këto gjendje të brendshme:

Shift numrin e orës (gjendja e brendshme)

Statusi i regjistrimit

Biti i daljes

Vlera fillestare

15 (kthimi në gjendjen fillestare)

16 (përsëritni gjendjet)

Sekuenca e daljes do të jetë një varg bitësh më pak të rëndësishëm: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 me një periudhë T=15, numri i përgjithshëm i gjendjeve të brendshme të mundshme (përveç zeros), N=2 4 -1=16-1= 15=T max, pra, sekuenca e daljes është një sekuencë M.

Në mënyrë që një PrCsLOS të ketë një periudhë maksimale, polinomi i formuar nga sekuenca e trokitjes dhe konstanta 1 duhet të jetë modul 2 primitiv. Polinomi paraqitet si një shumë e fuqive, për shembull, një polinom i shkallës n paraqitet si më poshtë :

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 , ku a i =(0,1) për i=1…n, a x i - tregon shifrën.

Shkalla e polinomit është gjatësia e regjistrit të zhvendosjes. Një polinom primitiv i shkallës n është një polinom i pakalueshëm që është pjesëtues i x 2n?1 +1, por nuk është pjesëtues i x d +1 për të gjitha d që janë pjesëtues të 2 n -1. Teoria përkatëse matematikore mund të gjendet në.

Në përgjithësi, nuk ka asnjë mënyrë të lehtë për të gjeneruar polinome primitive të një moduli të shkallës së caktuar 2. Mënyra më e lehtë është të zgjidhni një polinom në mënyrë të rastësishme dhe të kontrolloni nëse ai është primitiv. Kjo nuk është e lehtë dhe është paksa si të kontrollosh nëse një numër i zgjedhur rastësisht është i thjeshtë - por shumë paketa softuerësh matematikorë mund ta zgjidhin këtë problem.

Disa, por sigurisht jo të gjitha, polinome të shkallëve të ndryshme që janë modul 2 primitiv janë dhënë më poshtë. Për shembull, regjistroni

(32, 7, 5, 3, 2, 1, 0) do të thotë që polinomi i mëposhtëm është moduli primitiv 2: x 32 + x 7 +x 5 + x 3 + x 2 + x + 1.

Kjo mund të përgjithësohet lehtësisht në PrCsVOC me një periudhë maksimale. Numri i parë është gjatësia e PrCsLOS. Numri i fundit është gjithmonë 0 dhe mund të hiqet. Të gjithë numrat përveç 0 specifikojnë një sekuencë prekjeje, të numëruar nga skaji i majtë i regjistrit të ndërrimit. Kjo do të thotë, termat e një polinomi me shkallë më të ulët korrespondojnë me pozicionet më afër skajit të djathtë të regjistrit.

Duke vazhduar me shembullin, shkrimi (32, 7, 5, 3, 2, 1, 0) do të thotë që për një regjistër të caktuar zhvendosjeje 32-bitësh, gjenerohet një bit i ri duke XORuar tridhjetë e dytin, të shtatën, të pestën, të tretën, bitet e dyta dhe të para, PrCsLOS-i që rezulton do të ketë një gjatësi maksimale, duke kaluar në 2 vlera 32 -1 përpara se të përsëritet.


Figura 4. PrCCLOS 32-bitësh me gjatësi maksimale

Le të shqyrtojmë kodin e programit PrCsLOS, në të cilin sekuenca e trokitjes karakterizohet nga një polinom (32, 7, 5, 3, 2, 1, 0). Në C duket kështu:

ShiftRegister i gjatë statik i panënshkruar = 1;

/* Gjithçka përveç 0. */

ShiftRegister = ((((ShiftRegister >> 31)

^(ShiftRegister >> 6)

^(ShiftRegister >> 4)

^(ShiftRegjistrohu >> 2)

^(ShiftRegjistrohu >> 1)

^ShiftRegjistrohu))

| (ShiftRegister >> 1);

kthe ShiftRegister & 0x00000001;)

Nëse regjistri i ndërrimit është më i gjatë se një fjalë kompjuterike, kodi bëhet më i ndërlikuar, por jo shumë. Shtojca B përmban një tabelë të disa polinomeve primitive modul 2; ne do ta përdorim atë në të ardhmen për të identifikuar disa veti të këtyre polinomeve, si dhe në zbatimin e softuerit për të specifikuar sekuencën e tapeve.

Ju lutemi vini re se të gjithë elementët e tabelës kanë një numër tek koeficientët. Kjo tabelë e gjatë ofrohet për punë të mëtejshme me RgCsLOC, pasi RgCsLOC përdoret shpesh për kriptografi me shifra të rrjedhës dhe në gjeneratorë të numrave pseudo të rastësishëm. Në rastin tonë, ne mund të përdorim polinome me një shkallë më të lartë jo më shumë se shtatë.

Nëse p(x) është primitive, atëherë x n p(1/x) është primitiv, kështu që çdo element i tabelës në të vërtetë përcakton dy polinome primitive. Për shembull, nëse (a, b, 0) është primitive, atëherë (a, a-b, 0) është gjithashtu primitive. Nëse (a, b, c, d, 0) është primitive, atëherë (a, a-d, a-c, a-b, 0) është gjithashtu primitive. Matematikisht:

nëse x a +x b +1 është primitiv, atëherë x a +x a-b +1 është primitiv,

nëse x a +x b +x c +x d +1 është primitiv, atëherë x a +x a-d +x a-c +x a-b +1 është primitiv. Trinomialet primitive janë më të shpejtë për t'u zbatuar në softuer, pasi për të gjeneruar një bit të ri ju duhet të XOR vetëm dy bit të regjistrit të zhvendosjes (termi zero nuk merret parasysh, d.m.th. x 0 = 1, shihni shembullin e mësipërm). Në të vërtetë, të gjitha polinomet kthyese të dhëna në tabelë janë të rralla, domethënë kanë pak koeficientë. Spariteti është gjithmonë një burim dobësie, e cila ndonjëherë është e mjaftueshme për të thyer algoritmin. Për algoritmet kriptografike, është shumë më mirë të përdoren polinomet e dendur primitive, ato me shumë koeficientë. Duke përdorur polinome të dendura, veçanërisht si pjesë e një çelësi, mund të përdoret PrCsLOS shumë më i shkurtër.

Gjenerimi i polinomeve primitive të dendur modulo 2 nuk është i lehtë. Në përgjithësi, për të gjeneruar polinome primitive të shkallës k, duhet të dini faktorizimin e numrit 2 k -1.

Në vetvete, PrCsLOS janë gjeneratorë të mirë të sekuencave pseudo të rastësishme, por ato kanë disa veti të padëshirueshme jo të rastësishme (përcaktuese). Bitët e njëpasnjëshme janë lineare, gjë që i bën ata të padobishëm për enkriptim. Për një PrCcLOS me gjatësi n, gjendja e brendshme është n bitet e mëparshme dalëse të gjeneratorit. Edhe nëse qarku i reagimit mbahet i fshehtë, ai mund të përcaktohet nga bitet e daljes 2n të oshilatorit duke përdorur algoritmin shumë efikas Berlekamp-Massey.

Për më tepër, numrat e mëdhenj të rastësishëm të gjeneruar duke përdorur pjesë të njëpasnjëshme të kësaj sekuence janë shumë të ndërlidhura dhe, për disa lloje aplikacionesh, nuk janë aspak të rastësishëm. Përkundër kësaj, RgCCLOS shpesh përdoren për të krijuar algoritme enkriptimi si përbërës të sistemeve dhe algoritme të kriptimit.

Sekuencat e regjistrit të zhvendosjes përdoren si në kriptografi ashtu edhe në teorinë e kodimit. Teoria e tyre është e zhvilluar mirë; shifrat e rrjedhës së bazuar në regjistrat e ndërrimit ishin puna e kriptografisë ushtarake shumë kohë përpara ardhjes së elektronikës.

Një regjistër i ndërrimit të feedback-ut përbëhet nga dy pjesë: një regjistër ndërrimi dhe një funksion kthyes (Figura 1.2.1). Një regjistër zhvendosjeje është një sekuencë bitësh. (Numri i biteve përcaktohet nga gjatësia e regjistrit të zhvendosjes. Nëse gjatësia është n bit, atëherë regjistri quhet regjistër i zhvendosjes n-bit.) Sa herë që duhet të merret një bit, të gjithë bitët e regjistrit të zhvendosjes janë zhvendosur djathtas me 1 pozicion. Biti i ri më i majtë është funksion i të gjithë biteve të tjerë në regjistër. Prodhimi i regjistrit të zhvendosjes është një bit, zakonisht më pak i rëndësishëm. Periudha e regjistrit të zhvendosjes është gjatësia e sekuencës që rezulton përpara se të fillojë të përsëritet.

Oriz. 1.2.1.

Kriptografëve u pëlqenin shifrat e transmetimit bazuar në regjistrat e zhvendosjes: ato ishin të lehta për t'u zbatuar duke përdorur pajisje dixhitale. Do të prek vetëm shkurtimisht teorinë matematikore. Në vitin 1965, Ernst Selmer, kriptograf kryesor i qeverisë norvegjeze, zhvilloi teorinë e sekuencës së regjistrit të zhvendosjes. Solomon Golomb, një matematikan i NSA, shkroi një libër duke paraqitur disa nga rezultatet e tij dhe të Selmerit.

Lloji më i thjeshtë i regjistrit të ndërrimit të feedback-ut është regjistri linear i zhvendosjes së feedback-ut, ose LFSR (Figura 1.2.2). Reagimi është thjesht një XOR i disa biteve të regjistrit, një listë e këtyre biteve të quajtur një sekuencë prekjeje. Ndonjëherë një regjistër i tillë quhet konfigurim Fibbonacci. Për shkak të thjeshtësisë së sekuencës së reagimit, teoria matematikore mjaft e avancuar mund të përdoret për të analizuar LFSR. Kriptografët duan të analizojnë sekuencat, duke e bindur veten se sekuencat janë mjaft të rastësishme për të qenë të sigurta. LFSR-të janë regjistrat e ndërrimit më të përdorur në kriptografi.


Oriz. 1.2.2.

Në Fig. Figura 1.2.3 tregon një LFSR 4-bitësh me trokitje nga biti i parë dhe i katërt. Nëse inicializohet me vlerën 1111, atëherë para se të përsëritet regjistri do të marrë këto gjendje të brendshme:

Oriz. 1.2.3. 4

Sekuenca e daljes do të jetë një varg me bit më pak të rëndësishëm:

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

Një LFSR n-bit mund të jetë në një nga gjendjet e brendshme 2n-1. Kjo do të thotë se, teorikisht, një regjistër i tillë mund të gjenerojë një sekuencë pseudo të rastësishme me një periudhë prej 2n-1 bit. (Numri i gjendjeve të brendshme dhe periodave janë 2n-1 sepse mbushja e LFSR-së me zero do të bëjë që regjistri i zhvendosjes të prodhojë një varg të pafundme zerosh, i cili është krejtësisht i padobishëm.) Vetëm për sekuenca të caktuara trokitjeje, LFSR do të ciklin nëpër të gjitha 2n- 1 gjendje të brendshme, LFSR të tilla janë LFSR me një periudhë maksimale. Rezultati që rezulton quhet një sekuencë M.

Në mënyrë që një LFSR e veçantë të ketë një periodë maksimale, polinomi i formuar nga sekuenca e trokitjes dhe konstanta 1 duhet të jetë modul 2 primitiv. Shkalla e polinomit është gjatësia e regjistrit të zhvendosjes. Një polinom primitiv i shkallës n është një polinom i pakalueshëm që është pjesëtues, por nuk është pjesëtues i xd+1 për të gjitha d që janë pjesëtues të 2n-1.

Në përgjithësi, nuk ka asnjë mënyrë të lehtë për të gjeneruar polinome primitive të një moduli të shkallës së caktuar 2. Mënyra më e lehtë është të zgjidhni një polinom në mënyrë të rastësishme dhe të kontrolloni nëse ai është primitiv. Kjo nuk është e lehtë - dhe është paksa si të kontrollosh nëse një numër i rastësishëm është i thjeshtë - por shumë paketa softuerësh matematikorë mund ta zgjidhin këtë problem.

Disa, por sigurisht jo të gjitha, polinome të shkallëve të ndryshme janë moduli 2 primitiv. Për shembull, shkrimi (32, 7, 5, 3, 2, 1, 0) do të thotë që polinomi i mëposhtëm është moduli primitiv 2:

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

Kjo mund të përgjithësohet lehtësisht në periudhën maksimale LFSR. Numri i parë është gjatësia e LFSR. Numri i fundit është gjithmonë 0 dhe mund të hiqet. Të gjithë numrat përveç 0 specifikojnë një sekuencë prekjeje, të numëruar nga skaji i majtë i regjistrit të ndërrimit. Kjo do të thotë, termat e një polinomi me shkallë më të ulët korrespondojnë me pozicionet më afër skajit të djathtë të regjistrit.

Duke vazhduar me shembullin, shkrimi (32, 7, 5, 3, 2, 1, 0) do të thotë që për një regjistër të caktuar zhvendosjeje 32-bitësh, gjenerohet një bit i ri duke XORuar tridhjetë e dytin, të shtatën, të pestën, të tretën, bitet e dyta dhe të para, LFSR-ja që rezulton do të ketë një gjatësi maksimale, duke kaluar në vlerat 232-1 përpara se të përsëritet.

  • Gumming. Shifra gama. Metodat për gjenerimin e një gama të shifruar. Regjistri i zhvendosjes lineare.
  • Kreu 3. Procedura e regjistrimit të akteve individuale të gjendjes civile
  • Regjistrimi shtetëror i emetimit (emetimit shtesë) të letrave me vlerë.
  • Regjistri Linear Feedback Shift (LFSR) është një mekanizëm për krijimin e një sekuence pseudo të rastësishme të biteve binare. Regjistri (Fig. 1) përbëhet nga një numër qelizash që krijohen nga një vektor inicializimi (më shpesh një çelës sekret). Funksionimi i regjistrit përcaktohet nga prania ose mungesa e komunikimit nga çdo bit në reagime. Trokitjet e regjistrit të reagimeve nuk janë fikse, por janë pjesë e çelësit. Në hapin tjetër, përmbajtja e qelizave të regjistrit zhvendoset një pozicion në të djathtë dhe një bit i mbetur i lirë si rezultat i operacionit XOR vendoset në qelizën më të majtë.


    Oriz. 1. Regjistri i zhvendosjes së feedback-ut linear

    Për të arritur periudhën maksimale të gama të shifrimit, numrin e biteve m regjistri i ndërrimit është zgjedhur të jetë i barabartë me një nga numrat e thjeshtë Mersenne (2, 3, 5, 7, 13, 17, 31, 61, 89, 107, 127, 521, 607, 1279, 2203...), dhe lidhjet e brendshme të regjistrit duhet të zgjidhen sipas polinomeve primitivë të pareduktueshëm me shkallën më të lartë m. Në këtë rast, periudha gama e shifrës mund të arrijë (2 m-1).

    LFSR është i shpejtë dhe i lehtë për t'u zbatuar si në softuer ashtu edhe në harduer. Me zgjedhjen e duhur të biteve të reagimit, sekuencat e gjeneruara kanë veti të mira statistikore. LFSR përdoret si një element bazë për ndërtimin e sistemeve shumë të sigurta.

    Një kaskadë regjistrash është një grup LFSR-sh të lidhura në atë mënyrë që sjellja e një LFSR varet nga sjellja e LFSR-së së mëparshme në kaskadë. Kjo sjellje "e varur" është krijuar zakonisht për të kontrolluar numëruesin e ndërrimit të LFSR-së së ardhshme nga LFSR-ja e parë.

    Për shembull, një regjistër zhvendoset me një hap nëse vlera e regjistrit të mëparshëm është 1, dhe nëse vlera është 0, atëherë regjistri zhvendoset me dy hapa ose në ndonjë mënyrë tjetër. Një numër i madh i kombinimeve të tilla mundëson siguri shumë të lartë.

    Sekuencat më të sigurta prodhohen nga një gjenerator që zvogëlohet bazuar në një ndërveprim të thjeshtë midis rezultateve të dy regjistrave LFSR. Bitët e një rezultati përcaktojnë nëse bitet përkatëse të rezultatit të dytë do të përdoren si pjesë e "çelësit të transmetimit" të plotë. Gjeneratori i kompresimit është i thjeshtë, i shkallëzuar dhe ka veti të mira mbrojtëse. Disavantazhi i tij është se shkalla e gjenerimit të "çelësit të rrjedhës" nuk do të jetë konstante nëse nuk merren disa masa paraprake.



    Metoda Fibonacci me vonesa Një nga gjeneratorët e përdorur gjerësisht Fibonacci bazohet në formulën e mëposhtme përsëritëse:

    Ku Yk- numra realë nga diapazoni

    Oriz. 2. Round-robin encryption

    Modaliteti i reagimit të daljes DES mund të përdoret për të gjeneruar numra pseudorandom, të ngjashëm me mënyrën se si përdoret për enkriptimin e transmetimit. Dalja e çdo faze të kriptimit është një vlerë 64-bitësh, nga e cila vetëm j-bitët më të rëndësishëm kthehen për kriptim. Daljet 64-bit janë një sekuencë numrash pseudo të rastësishëm me veti të mira statistikore.

    Gjeneruesi i numrave pseudo të rastësishëm, i përshkruar në standardin ANSI X9.17, është një nga gjeneruesit më të sigurt të numrave pseudo të rastësishëm. Aplikacionet që përdorin këtë teknologji përfshijnë sigurinë financiare dhe aplikacionet PGP.

    Gjeneratori ANSI X9.17 përbëhet nga pjesët e mëposhtme (Fig. 3):

    1. Hyrja: Gjeneratori kontrollohet nga dy hyrje pseudo të rastësishme. Hyrja e parë është një paraqitje 64-bitëshe e datës dhe kohës aktuale ( DT i), të cilat ndryshojnë sa herë që krijohet një numër. Hyrja e dytë është një bazë 64-bitëshe, e cila inicializohet në një vlerë arbitrare dhe modifikohet gjatë gjenerimit të një sekuence numrash pseudorandom ( V i).

    2. Çelësat: Gjeneratori përdor tre module të trefishta DES me dy çelësa K1, K2. Të tre përdorin të njëjtin çift çelësash 56-bitësh, i cili duhet të mbahet sekret dhe të përdoret vetëm për të gjeneruar një numër pseudo të rastësishëm.

    EDE
    EDE
    EDE
    +
    +
    K1, K2
    DT i
    V i
    R i
    V i+1

    3. Dalja: Dalja përbëhet nga një numër pseudo-rastësor 64-bit R i dhe një vlerë 64-bitëshe që do të përdoret si bazë gjatë krijimit të numrit tjetër ( V i +1) .

    Oriz. 3. ANSI X9.17 gjenerues i numrave pseudorandom

    Artikujt më të mirë mbi këtë temë