Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

Des modes. Modaliteti i reagimit në dalje

Algoritmi më i zakonshëm dhe më i njohur enkriptimi simetrikështë DES (Standardi i enkriptimit të të dhënave). Algoritmi u zhvillua në 1977, dhe në 1980 NIST (Instituti Kombëtar i Standardeve dhe Teknologjisë, SHBA) u miratua si standard.

DES është rrjeti klasik Feishtel me dy degë. Të dhënat janë të koduara në blloqe 64-bitësh duke përdorur një çelës 56-bit. Algoritmi konverton një hyrje 64-bit në një dalje 64-bit në disa raunde. Gjatësia e çelësit është 56 bit. Procesi i kriptimit përbëhet nga katër hapa. Hapi i parë është kryerja e një ndryshimi fillestar (IP) të tekstit të thjeshtë 64-bit (zbardhja), gjatë së cilës bitet rirenditen sipas tabela standarde. Faza tjetër përbëhet nga 16 raunde të të njëjtit funksion, i cili përdor operacionet e ndërrimit dhe zëvendësimit. Në fazën e tretë, gjysma e majtë dhe e djathtë e prodhimit të përsëritjes së fundit (16-të) shkëmbehen. Së fundi, në fazën e katërt, kryhet ndërrimi IP-1 i rezultatit të marrë në fazën e tretë. Permutacioni IP-1 është e kundërta e ndërrimit fillestar.

Fig.4. Algoritmi DES

Figura tregon një metodë që përdor një çelës 56-bit. Fillimisht, çelësi futet në hyrjen e funksionit të ndërrimit. Pastaj, për secilin nga 16 raundet, nënçelësi K i është kombinimi i një zhvendosjeje ciklike majtas dhe një ndryshimi. Funksioni i ndërrimit është i njëjtë për çdo raund, por nënçelësat K i për çdo raund janë të ndryshëm për shkak të zhvendosjes së përsëritur të bitave të çelësave.

Permutacioni fillestar dhe anasjellta e tij përcaktohen nga një tabelë standarde. Nëse M është arbitrare 64 bit, atëherë X = IP(M) - 64 bit i ndërruar. Nëse aplikojmë funksionin e ndërrimit të anasjelltë Y = IP-1 (X) = IP-1 (IP(M)), marrim sekuencën origjinale të biteve.

Përshkrimi i rrumbullakët des

Merrni parasysh sekuencën e transformimeve të përdorura në çdo raund.

Fig.5. Ilustrimi i një raundi të algoritmit DES

Një bllok i hyrjes 64-bit kalon në 16 raunde, ndërsa në çdo përsëritje fitohet një vlerë e ndërmjetme 64-bitëshe. Pjesa e majtë dhe e djathtë e secilës vlerë të ndërmjetme trajtohen si vlera të veçanta 32-bitësh, të shënuara L dhe R. Çdo përsëritje mund të përshkruhet si më poshtë:

R i = L i -1 F(R i -1, K i)

Kështu, dalja e gjysmës së majtë të L i është e barabartë me hyrjen e gjysmës së djathtë të R i-1. Dalja e gjysmës së djathtë të R i është rezultat i XORing L i-1 dhe një funksioni F në varësi të R i-1 dhe K i .

Le të shqyrtojmë më në detaje funksionin F. R i, i cili futet në hyrjen e funksionit F, ka një gjatësi prej 32 bit. Së pari, R i zgjerohet në 48 bit duke përdorur një tabelë që përcakton një permutacion plus një zgjerim prej 16 bitësh. Zgjerimi shkon kështu. 32 bit ndahen në grupe me 4 bit dhe më pas zgjerohen në 6 bit duke i bashkuar bitet ekstreme nga dy grupe ngjitur. Për shembull, nëse është pjesë e mesazhit hyrës

Efgh ijkl mnop . . .

atëherë rezultati i zgjerimit është mesazhi

Defghi hijklm lmnopq . . .

Vlera 48-bitëshe që rezulton më pas XORohet me nënçelësin 48-bit K i. Vlera rezultuese 48-bit futet më pas në funksionin e zëvendësimit, duke rezultuar në një vlerë 32-bit.

Zëvendësimi përbëhet nga tetë kuti S, secila prej të cilave merr 6 bit si hyrje dhe prodhon 4 bit si dalje. Këto transformime përcaktohen nga tabela të veçanta. Bitët e parë dhe të fundit të vlerës hyrëse të S-box përcaktojnë numrin e rreshtit në tabelë, 4 bitet e mesit përcaktojnë numrin e kolonës. Kryqëzimi i një rreshti dhe një kolone përcakton një dalje 4-bitësh. Për shembull, nëse hyrja është 011011, atëherë numri i rreshtit është 01 (rreshti 1) dhe numri i kolonës është 1101 (kolona 13). Vlera në rreshtin 1 dhe kolonën 13 është 5, d.m.th. dalja është 0101.

Më pas, vlera 32-bitëshe që rezulton përpunohet duke përdorur një permutacion P, qëllimi i të cilit është të rirenditni bitet sa më shumë që të jetë e mundur në mënyrë që në raundin tjetër të enkriptimit, me një probabilitet të lartë, çdo bit të përpunohet nga një S i ndryshëm. -kuti.

Çelësi për një raund të vetëm K i përbëhet nga 48 bit. Tastet K i fitohen me algoritmin e mëposhtëm. Çelësi 56-bit i përdorur si hyrje në algoritëm ndërrohet fillimisht sipas tabelës Zgjedhja e Permuted 1 (PC-1). Çelësi 56-bit që rezulton është i ndarë në dy pjesë 28-bitësh, të shënuara përkatësisht si C0 dhe D0. Në çdo raund, C i dhe D i rrotullohen në mënyrë të pavarur majtas me 1 ose 2 bit, në varësi të numrit të raundit. Vlerat që rezultojnë janë hyrja e raundit tjetër. Ato janë gjithashtu një hyrje në Permuted Choice 2 (PC-2), i cili prodhon një vlerë dalëse 48-bit që është hyrja e funksionit F(R i-1, K i).

Procesi i deshifrimit është i ngjashëm me procesin e enkriptimit. Algoritmi përdor tekstin shifror si hyrje, por çelësat K i përdoren në rend të kundërt. K 16 përdoret në raundin e parë, K 1 përdoret në raundin e fundit. Le të jetë prodhimi i raundit të i-të të enkriptimit L i ||R i. Atëherë hyrja përkatëse e raundit (16-i) të deshifrimit do të jetë R i ||L i .

Pas raundit të fundit të procesit të deshifrimit, dy gjysmat e daljes ndërrohen në mënyrë që hyrja e ndërrimit përfundimtar IP-1 të jetë R 16 ||L 16 . Prodhimi i kësaj faze është tekst i thjeshtë.

  • tutorial

Hej %username%!
Shumë njerëz e dinë se standardi i paracaktuar në fushën e kriptimit simetrik për një kohë të gjatë u konsiderua Algoritmi DES. Sulmi i parë i suksesshëm ndaj këtij algoritmi të pathyeshëm u publikua në vitin 1993, 16 vjet pasi u miratua si standard. Metoda, të cilën autori e quajti kriptanalizë lineare, në prani të 2 47 palë tekstesh të thjeshta/shifrore, lejon hapjen e çelësit sekret të shifrës DES në 2 43 operacione.
Nën prerjen, do të përpiqem të përmbledh pikat kryesore të këtij sulmi.

Kriptanaliza lineare

Kriptanaliza lineare është një lloj i veçantë sulmi ndaj shifra simetrike, që synon të rikuperojë një çelës të panjohur enkriptimi, nga i njohur mesazhet e hapura dhe tekstet e tyre të koduara përkatëse.

AT rast i përgjithshëm sulmi i bazuar në kriptanalizën lineare reduktohet në kushtet e mëposhtme. Sulmuesi ka sasi e madheÇiftet e tekstit të thjeshtë/shifert të përftuara duke përdorur të njëjtin çelës kriptimi K. Qëllimi i sulmuesit është të rikuperojë një pjesë ose të gjithë çelësin K.

Para së gjithash, sulmuesi ekzaminon shifrën dhe gjen të ashtuquajturin. analoge statistikore, d.m.th. një ekuacion i formës së mëposhtme, i cili vlen me probabilitet P ≠ 1/2 për një çift teksti arbitrar publik/privat dhe një çelës fiks:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
ku P n , C n , K n janë bitet e n-të të tekstit, teksti shifror dhe çelësi.
Pasi të gjendet një ekuacion i tillë, sulmuesi mund të rikuperojë 1 bit informacion rreth çelësit duke përdorur algoritmin e mëposhtëm

Algoritmi 1
Le të jetë T numri i teksteve për të cilët ana e majtë e ekuacionit (1) është 0, atëherë
Nëse T>N/2, ku N është numri i teksteve të njohura.
Supozojmë se K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (kur P>1/2) ose 1 (kur P<1/2).
Përndryshe
Supozojmë se K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (kur P>1/2) ose 0 (kur P<1/2).
Natyrisht, suksesi i algoritmit varet drejtpërdrejt nga vlera e |P-1/2| dhe në numrin e çifteve të disponueshme tekst të thjeshtë/tekst privat N. Sa më shumë që probabiliteti P i barazisë (1) të ndryshojë nga 1/2, aq më i vogël është numri i teksteve të thjeshta N që nevojiten për një sulm.

Ekzistojnë dy probleme që duhet të zgjidhen për zbatimin e suksesshëm të sulmit:

  • Si të gjeni një ekuacion efektiv të formës (1).
  • Si të merrni më shumë se një informacion rreth çelësit duke përdorur një ekuacion të tillë.
Konsideroni zgjidhjen e këtyre çështjeve duke përdorur shifrën DES si shembull.

Përshkrimi i DES

Por së pari, le të përshkruajmë shkurtimisht se si funksionon algoritmi. Është thënë mjaft për DES. Një përshkrim i plotë i shifrës mund të gjendet në Wikipedia. Megjithatë, për të shpjeguar më tej sulmin, ne kemi nevojë për një sërë përkufizimesh që prezantohen më së miri paraprakisht.

Pra, DES është një shifër bllok i bazuar në rrjetin Feistel. Shifra ka një madhësi blloku 64 bit dhe një madhësi kryesore prej 56 bit. Merrni parasysh skemën e enkriptimit të algoritmit DES.

Siç shihet nga figura, gjatë kriptimit kryhen veprimet e mëposhtme në tekst:

  1. Ndërrimi fillestar i biteve. Në këtë fazë, pjesët e bllokut të hyrjes përzihen në një renditje të caktuar.
  2. Pas kësaj, pjesët e përziera ndahen në dy gjysma, të cilat futen në hyrjen e funksionit Feistel. Për DES standarde, rrjeti Feistel përfshin 16 raunde, por ka variante të tjera të algoritmit.
  3. Dy blloqet e marra në raundin e fundit të transformimit kombinohen dhe një ndryshim tjetër kryhet në bllokun që rezulton.

Në çdo raund të rrjetit Feistel, 32 bitët më pak të rëndësishëm të mesazhit kalohen përmes funksionit f:

Konsideroni operacionet e kryera në këtë fazë:

  1. Blloku i hyrjes kalon përmes një funksioni shtesë E, i cili konverton bllokun 32-bit në një bllok 48-bitësh.
  2. Blloku që rezulton i shtohet çelësit të rrumbullakët K i.
  3. Rezultati i hapit të mëparshëm ndahet në 8 blloqe me nga 6 bit secili.
  4. Secili prej blloqeve rezultuese B i kalohet përmes një funksioni zëvendësues S-Box i, i cili zëvendëson një sekuencë 6-bitësh me një bllok 4-bit.
  5. Blloku 32-bit që rezulton kalohet përmes permutacionit P dhe kthehet si rezultat i funksionit f.

Me interes më të madh, nga pikëpamja e kriptanalizës së shifrës, për ne janë blloqet S, të krijuara për të fshehur lidhjen midis të dhënave hyrëse dhe dalëse të funksionit f. Për të sulmuar me sukses DES, ne fillimisht ndërtojmë homologët statistikorë për secilën nga kutitë S, dhe më pas i zgjerojmë ato në të gjithë shifrën.

Analiza e blloqeve S

Çdo S-box merr një sekuencë 6-bit si hyrje, dhe një vlerë fikse 4-bit kthehet për çdo sekuencë të tillë. Ato. Ka gjithsej 64 opsione hyrëse dhe dalëse. Detyra jonë është të tregojmë marrëdhënien midis të dhënave hyrëse dhe dalëse të blloqeve S. Për shembull, për kutinë e tretë S të shifrës DES, biti i 3-të i sekuencës hyrëse është i barabartë me bitin e 3-të të sekuencës dalëse në 38 raste nga 64. Prandaj, gjetëm analogun statistikor të mëposhtëm për S-në e tretë -kutia:
S 3 (x) = x, që plotësohet me probabilitet P=38/64.
Të dyja anët e ekuacionit përfaqësojnë 1 bit informacion. Prandaj, nëse pjesa e majtë dhe e djathtë do të ishin të pavarura nga njëra-tjetra, ekuacioni do të duhej të përmbushej me një probabilitet të barabartë me 1/2. Kështu, ne sapo kemi demonstruar marrëdhënien midis hyrjeve dhe daljeve të kutisë së tretë S të algoritmit DES.

Konsideroni se si mund të gjeni një analog statistikor të kutisë S në rastin e përgjithshëm.

Për një kuti S S a , 1 ≤ α ≤ 63 dhe 1 ≤ β ≤ 15, vlera NS a (α, β) përshkruan sa herë nga 64 XOR të mundshme të biteve hyrëse të S një mbivendoset në bitet α. janë të barabarta me XOR-in e biteve të daljes të mbivendosura në bitet β, d.m.th.:
ku simboli është një DHE logjike.
Vlerat e α dhe β për të cilat NS a (α, β) ndryshon më shumë nga 32 përshkruajnë analogun statistikor më efikas të kutisë S S a.

Analogu më efikas u gjet në kutinë e 5-të S të shifrës DES për α = 16 dhe β = 15 NS 5 (16, 15)=12. Kjo do të thotë se ekuacioni i mëposhtëm është i vërtetë: Z=Y ⊕ Y ⊕ Y ⊕ Y, ku Z është sekuenca hyrëse e kutisë S dhe Y është sekuenca dalëse.
Ose duke marrë parasysh faktin se në algoritmin DES, para se të futen në kutinë S, të dhënat shtohen moduli 2 me një çelës të rrumbullakët, d.m.th. Z = X ⊕ K marrim
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, ku X dhe Y janë të dhënat hyrëse dhe dalëse të funksionit f pa permutacione.
Ekuacioni që rezulton ekzekutohet në të gjitha raundet e algoritmit DES me të njëjtin probabilitet P=12/64.
Tabela e mëposhtme rendit efektivët, d.m.th. duke pasur devijimin më të madh nga P=1/2, analoge statistikore për çdo bllok s të algoritmit DES.

Ndërtimi i analogëve statistikorë për raunde të shumëfishta DES

Le të tregojmë tani se si mund të kombinohen analogët statistikorë të disa raundeve të DES dhe, si rezultat, të merret një analog statistikor për të gjithë shifrën.
Për ta bërë këtë, merrni parasysh një version me tre raunde të algoritmit:

Le të aplikojmë analogun statistikor efikas të kutisë së 5-të s për të llogaritur pjesë të caktuara të vlerës X(2).
Ne e dimë se me një probabilitet 12/64, funksioni f plotëson barazinë X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, ku X është biti i dytë i hyrjes së kutisë së 5-të S, në thelb është biti i 26-të i sekuencës që merret pas zgjerimit të biteve hyrëse. Duke analizuar funksionin e zgjerimit, mund të konstatohet se biti i 17-të i sekuencës X(1) rezulton të jetë në vend të bitit 26.
Në mënyrë të ngjashme, Y,…, Y janë në thelb bitet e 17-të, 18-të, 19-të dhe 20-të të sekuencës së marrë para ndërrimit P. Duke ekzaminuar permutacionin P, gjejmë se bitet Y,…, Y janë në të vërtetë bit Y(1 ), Y(1), Y(1), Y(1).
Biti kyç K i përfshirë në ekuacione është biti i nënçelës i 26-të i raundit të parë K1 dhe më pas homologu statistikor merr formën e mëposhtme:
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
Rrjedhimisht, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) me probabilitet P=12/64.
Duke ditur 3, 8, 14, 25 bit të sekuencës Y(1), mund të gjeni 3, 8, 14, 25 bit të sekuencës X(2):
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ose duke marrë parasysh ekuacionin (2)
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) me probabilitet 12/64.

Le të gjejmë një shprehje të ngjashme duke përdorur raundin e fundit. Këtë herë kemi ekuacionin
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
Sepse
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = СL ⊕ СL ⊕ СL ⊕ СL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
ne e marrim atë
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = СL ⊕ СL ⊕ СL ⊕ СL ⊕ X(3) ⊕ K3(4) me probabilitet 12/64.

Duke barazuar pjesët e duhura të ekuacioneve (3) dhe (4) marrim
СL ⊕ СL ⊕ СL ⊕ СL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 me probabilitet (12/64) 2 +(1-12/64) 2 .
Duke marrë parasysh faktin se X(1) = PR dhe X(3) = CR, marrim një analog statistikor
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
e cila kryhet me probabilitet (12/64) 2 +(1-12/64) 2 =0.7.
Analogu statistikor i përshkruar më sipër mund të paraqitet grafikisht si më poshtë (bitet në figurë numërohen nga e djathta në të majtë dhe duke filluar nga zero):

Të gjitha pjesët në anën e majtë të ekuacionit janë të njohura për sulmuesin, kështu që ai mund të zbatojë Algoritmin 1 dhe të zbulojë vlerën e K1 ⊕ K3. Le të tregojmë se si, duke përdorur këtë analog statistikor, është e mundur të hapni jo 1, por 12 bit të çelësit të kriptimit K.

Sulmi në DES me tekst të njohur të thjeshtë

Këtu është një mënyrë me të cilën mund të zgjeroni sulmin dhe të merrni menjëherë 6 bit të nënçelësit të raundit të parë.
Gjatë përpilimit të ekuacionit (5), kemi marrë parasysh faktin se nuk e dimë vlerën e F1(PR, K1). Prandaj, ne përdorëm analogun e tij statistikor K1 ⊕ PR.
Në vend të shprehjes K1 ⊕ PR, ne kthejmë vlerën F1(PR, K1) dhe marrim ekuacionin e mëposhtëm:
CL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , i cili do të ekzekutohet me një probabilitet 12/64. Probabiliteti ka ndryshuar pasi kemi lënë vetëm analogun statistikor nga raundi i tretë, të gjitha vlerat e tjera janë fikse.

Tashmë kemi përcaktuar më lart se vlera e F1(PR, K1) ndikohet nga bitet hyrëse të kutisë së 5-të S, përkatësisht bitet e çelësit K1 dhe bitet e bllokut PR. Le të tregojmë se si, duke pasur vetëm një grup tekstesh të hapura/të mbyllura, mund të rikuperohet vlera e K1. Për ta bërë këtë, ne përdorim Algoritmin 2.

Algoritmi 2
Le të jetë N numri i çifteve të teksteve të hapura/të mbyllura të njohura përpara sulmit. Më pas, për të hapur çelësin, duhet të bëni hapat e mëposhtëm.
Për (i=0; i<64; i++) do
{
Për(j=0; j {
nëse(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) atëherë
T i =T i +1
}
}
Si një varg i mundshëm K1, merret një vlerë e tillë e i për të cilën shprehja |T i -N/2| ka vlerën maksimale.

Me një numër të mjaftueshëm tekstesh të njohura, algoritmi ka shumë të ngjarë të kthejë vlerën e saktë të gjashtë biteve të nënçelës së raundit të parë K1. Kjo shpjegohet me faktin se nëse ndryshorja i nuk është e barabartë me K1, atëherë vlera e funksionit F1(PR j, K) do të jetë e rastësishme dhe numri i ekuacioneve për një vlerë të tillë të i, në të cilën ana e majtë është e barabartë me zero, do të priret në N/2. Nëse nënçelësi merret me mend saktë, pjesa e majtë do të jetë e barabartë me bitin fiks K3 me një probabilitet 12/64. Ato. do të ketë një devijim të konsiderueshëm nga N/2.

Pasi të keni marrë 6 bit të nënçelës K1, mund të hapni në mënyrë të ngjashme 6 bit të nënçelës K3. Gjithçka që nevojitet për këtë është të zëvendësohet C me P dhe K1 me K3 në ekuacionin (6):
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
Algoritmi 2 do të kthejë vlerën e saktë të K3 sepse procesi i deshifrimit të algoritmit DES është identik me procesin e enkriptimit, vetëm sekuenca e çelësave është e kundërt. Pra, në raundin e parë të deshifrimit, përdoret çelësi K3, dhe në raundin e fundit, çelësi K1.

Pasi ka marrë 6 bit nënçelësash K1 dhe K3, sulmuesi rikuperon 12 bit të çelësit të përbashkët të shifrës K, sepse çelësat e rrumbullakët janë ndërrimi i zakonshëm i çelësit K. Numri i teksteve të thjeshta të nevojshme për një sulm të suksesshëm varet nga probabiliteti i homologut statistikor. Për të thyer një çelës DES 12-bitësh me 3 raunde, mjaftojnë 100 çifte tekstesh publike/private. Për të thyer një çelës DES 12-bitësh 16-rrumbullakët do të duheshin rreth 244 çifte tekstesh. 44 bitet e mbetura të çelësit hapen me numërimin e zakonshëm.

Algoritmi DES

Përparësitë kryesore të algoritmit DES:

Përdoret vetëm një çelës 56-bit;

· Pas enkriptimit të një mesazhi duke përdorur një paketë, mund të përdorni çdo tjetër për ta deshifruar atë;

Thjeshtësia relative e algoritmit siguron shpejtësi të lartë të përpunimit të informacionit;

stabilitet mjaft i lartë i algoritmit.

DES kodon blloqe 64-bitësh të të dhënave duke përdorur një çelës 56-bit. Deshifrimi në DES është operacioni i kundërt i enkriptimit dhe kryhet duke përsëritur operacionet e enkriptimit në mënyrë të kundërt (pavarësisht qartësisë së dukshme, kjo nuk bëhet gjithmonë. Më vonë do të shqyrtojmë shifrat në të cilat kriptimi dhe deshifrimi kryhen duke përdorur algoritme të ndryshme).

Procesi i enkriptimit përbëhet nga një shkëmbim fillestar bit i bllokut 64-bit, gjashtëmbëdhjetë raunde enkriptimi dhe në fund një shkëmbim i kundërt i biteve (Fig. 1).

Duhet të theksohet menjëherë se TË GJITHA tabelat e dhëna në këtë artikull janë STANDARD, dhe për këtë arsye duhet të përfshihen në zbatimin tuaj të algoritmit të pandryshuar. Të gjitha permutacionet dhe kodet në tabela zgjidhen nga zhvilluesit në mënyrë të tillë që të bëjnë sa më të vështirë procesin e deshifrimit duke zgjedhur një çelës. Struktura e algoritmit DES është paraqitur në Figurën 2.

Fig.2. Struktura e Algoritmit të Enkriptimit DES

Le të lexohet nga skedari blloku T i ardhshëm 8 bajt, i cili transformohet duke përdorur matricën IP të ndërrimit fillestar (Tabela 1) si më poshtë: biti 58 i bllokut T bëhet biti 1, biti 50 - biti 2, etj., gjë që do të rezulton në: T(0) = IP(T).

Sekuenca e biteve që rezulton T(0) ndahet në dy sekuenca me nga 32 bit secila: L(0) - bit majtas ose të lartë, R(0) - bit djathtas ose të ulët.

Tabela 1: Matrica e permutacionit fillestar të IP

58 50 42 34 26 18 10 02

60 52 44 36 28 20 12 04

62 54 46 38 30 22 14 06

64 56 48 40 32 24 16 08

57 49 41 33 25 17 09 01

59 51 43 35 27 19 11 03

61 53 45 37 29 21 13 05

63 55 47 39 31 23 15 07

Më pas kryhet kriptimi, i përbërë nga 16 përsëritje. Rezultati i përsëritjes së i-të përshkruhet nga formulat e mëposhtme:

R(i) = L(i-1) xor f(R(i-1), K(i)) ,

ku xor është operacioni EKSKLUZIV OSE.

Funksioni f quhet funksion i enkriptimit. Argumentet e tij janë sekuenca 32-bitëshe R(i-1) e marrë në përsëritjen e (i-1)-të dhe çelësi 48-bit K(i), i cili është rezultat i konvertimit të çelësit 64-bit K. Funksioni i enkriptimit dhe algoritmi për nxjerrjen e çelësave K(i) përshkruhet më poshtë.

Në përsëritjen e 16-të, fitohen sekuencat R(16) dhe L(16) (pa permutacion), të cilat bashkohen në një sekuencë 64-bit R(16)L(16).

Pastaj pozicionet e biteve të kësaj sekuence riorganizohen në përputhje me matricën IP -1 (tabela 2).

Tabela 2: IP-1 Matrica e Permutacionit të anasjelltë

40 08 48 16 56 24 64 32

39 07 47 15 55 23 63 31

38 06 46 14 54 22 62 30

37 05 45 13 53 21 61 29

36 04 44 12 52 20 60 28

35 03 43 11 51 19 59 27

34 02 42 10 50 18 58 26

33 01 41 09 49 17 57 25

Matricat IP -1 dhe IP lidhen si më poshtë: vlera e elementit të parë të matricës IP -1 është 40, dhe vlera e elementit të 40-të të matricës IP është 1, vlera e 2-të. elementi i matricës IP -1 është 8, dhe vlera e elementit të 8-të të matricës IP është 2, e kështu me radhë.

Procesi i deshifrimit të të dhënave është e kundërta e procesit të kriptimit. Të gjitha hapat duhet të kryhen në rend të kundërt. Kjo do të thotë që të dhënat që do të deshifrohen fillimisht riorganizohen sipas matricës IP-1 dhe më pas kryhen të njëjtat operacione në sekuencën e biteve R(16)L(16) si në procesin e enkriptimit, por në rend të kundërt.

Procesi i deshifrimit përsëritës mund të përshkruhet me formulat e mëposhtme:

R(i-1) = L(i), i = 1, 2, ..., 16;

L(i-1) = R(i) xor f(L(i), K(i)), i = 1, 2, ..., 16 .

Në përsëritjen e 16-të, përftohen sekuencat L(0) dhe R(0), të cilat bashkohen në një sekuencë 64-bit L(0)R(0).

Pozicionet e biteve të kësaj sekuence më pas riorganizohen sipas matricës IP. Rezultati i këtij ndryshimi është sekuenca origjinale 64-bit.

Tani merrni parasysh funksionin e enkriptimit f(R(i-1),K(i)). Është paraqitur në mënyrë skematike në Fig. 3.


Fig.3. Llogaritja e funksionit f(R(i-1), K(i))

Funksionet e mëposhtme të matricës përdoren për të llogaritur vlerën e funksionit f:

E - zgjerimi i një sekuence 32-bit në 48-bit,

S1, S2, ... , S8 - konvertimi i një blloku 6-bit në një bllok 4-bit,

P është një ndërrim biti në një sekuencë 32-bitësh.

Funksioni i zgjerimit E është përcaktuar në tabelën 3. Sipas kësaj tabele, 3 bitet e para të E(R(i-1)) janë bitet 32, 1 dhe 2, dhe të fundit janë 31, 32 dhe 1.

Tabela 3: Funksioni i zgjerimit E

32 01 02 03 04 05

04 05 06 07 08 09

08 09 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 01

Rezultati i funksionit E(R(i-1)) është një sekuencë 48-bitësh që i shtohet moduli 2 (operimi xor) me tastin 48-bit K(i). Rezultati është një sekuencë 48-bitëshe që ndahet në tetë blloqe 6-bitësh B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8). Kjo eshte:

E(R(i-1)) xor K(i) = B(1)B(2)...B(8) .

Funksionet S1, S2, ... , S8 janë përcaktuar në tabelën 4.

Tabela 4

Tek tabela.4. nevojiten shpjegime shtesë. Le të jetë hyrja e funksionit të matricës Sj një bllok 6-bitësh B(j) = b1b2b3b4b5b6, atëherë numri dy-bitësh b1b6 tregon numrin e rreshtit të matricës dhe b2b3b4b5 numrin e kolonës. Rezultati i Sj(B(j)) është një element 4-bit i vendosur në kryqëzimin e rreshtit dhe kolonës së specifikuar.

Për shembull, B(1)=011011. Atëherë S1(В(1)) ndodhet në kryqëzimin e rreshtit 1 dhe kolonës 13. Kolona 13 e rreshtit 1 vendoset në 5. Prandaj, S1(011011)=0101.

Duke aplikuar operacionin e përzgjedhjes për secilin prej blloqeve 6-bitësh B(1), B(2), ..., B(8), marrim një sekuencë 32-bitësh S1(B(1))S2(B(2 ))S3(B(3))...S8(B(8)).

Së fundi, për të marrë rezultatin e funksionit të kriptimit, duhet të riorganizoni pjesët e kësaj sekuence. Për këtë përdoret funksioni i ndërrimit P (Tabela 5). Në sekuencën e hyrjes, bitet kthehen mbrapsht në mënyrë që biti 16 të bëhet biti 1, biti 7 të bëhet biti 2, e kështu me radhë.

Tabela 5: Funksioni i permutacionit P

Në këtë mënyrë,

f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

Për të plotësuar përshkrimin e algoritmit të enkriptimit të të dhënave, mbetet të japim një algoritëm për marrjen e çelësave 48-bit K(i), i=1...16. Në çdo përsëritje, përdoret një vlerë e re kryesore K(i), e cila llogaritet nga çelësi fillestar K. K është një bllok 64-bitësh me tetë bit barazi të vendosura në pozicionet 8,16,24,32,40,48, 56, 64.

Për të hequr pjesët e kontrollit dhe për të riorganizuar pjesën tjetër, përdoret funksioni G i përgatitjes fillestare të çelësit (Tabela 6).

Tabela 6

Matrica G e përgatitjes fillestare të çelësit

57 49 41 33 25 17 09

01 58 50 42 34 26 18

10 02 59 51 43 35 27

19 11 03 60 52 44 36

63 55 47 39 31 23 15

07 62 54 46 38 30 22

14 06 61 53 45 37 29

21 13 05 28 20 12 04

Rezultati i transformimit G(K) ndahet në dy blloqe 28-bitësh C(0) dhe D(0), dhe C(0) do të përbëhet nga bitet 57, 49, ..., 44, 36 të K tasti, dhe D(0 ) do të përbëhet nga bitet 63, 55, ..., 12, 4 të çelësit K. Pas përcaktimit të C(0) dhe D(0), C(i) dhe D(i), i =1...16, janë të përcaktuara në mënyrë rekursive. Për këtë, një zhvendosje ciklike majtas zbatohet me një ose dy bit, në varësi të numrit të përsëritjes, siç tregohet në tabelën 7.

Tabela 7

Tabela e ndërrimit për llogaritjen e çelësit

Numri i përsëritjes Shift (bit)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Vlera që rezulton përsëri "përzihet" në përputhje me matricën H (Tabela 8).

Tabela 8: Matrica e përfundimit të çelësit H

14 17 11 24 01 05

03 28 15 06 21 10

23 19 12 04 26 08

16 07 27 20 13 02

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Tasti K(i) do të përbëhet nga bitet 14, 17, ..., 29, 32 të sekuencës C(i)D(i). Në këtë mënyrë:

K(i) = H(C(i)D(i))

Bllokdiagrami i algoritmit të llogaritjes së çelësit është paraqitur në Fig.4.

Fig.4. Bllok diagrami i algoritmit për llogaritjen e çelësit K(i)

Rivendosja e tekstit origjinal kryhet sipas këtij algoritmi, por së pari ju përdorni çelësin

K (15), pastaj - K (14) dhe kështu me radhë. Tani duhet të kuptoni pse autori rekomandon fuqimisht përdorimin e matricave të mësipërme. Nëse filloni të shkoni në mënyrë arbitrare, duhet të merrni një shifër shumë sekrete, por ju vetë nuk do të jeni në gjendje ta hapni më vonë!

Mënyrat e funksionimit të algoritmit DES

Për plotësimin më të plotë të të gjitha kërkesave për sistemet e enkriptimit komercial, janë zbatuar disa mënyra të funksionimit të algoritmit DES. Mënyrat më të përdorura janë:

Libri i kodeve elektronike (Electronic Codebook) - ECB;

një zinxhir blloqesh dixhitale (Cipher Block Chaining) - CBC;

feedback dixhital (Cipher Feedback) - CFB;

Komentet e jashtme (Output Feedback) - OFB.

Në këtë mënyrë, skedari burimor M ndahet në blloqe 64-bitësh (8 bajt secili): M = M(1)M(2)...M(n). Secili prej këtyre blloqeve është i koduar në mënyrë të pavarur duke përdorur të njëjtin çelës enkriptimi (Figura 5). Avantazhi kryesor i këtij algoritmi është lehtësia e zbatimit. Disavantazhi është rezistenca relativisht e dobët kundër kriptanalistëve të aftë.

DES(Standardi i enkriptimit të të dhënave) - Një algoritëm simetrik enkriptimi në të cilin një çelës përdoret për të kriptuar dhe deshifruar të dhënat. DES u zhvillua nga IBM dhe u miratua nga qeveria e SHBA në 1977 si një standard zyrtar (FTPS 46-3). DES ka blloqe 64-bitësh dhe një strukturë rrjeti Feistel me 16 cikle; ai përdor një çelës 56-bit për kriptim. Algoritmi përdor një kombinim të transformimeve jolineare (S-boxes) dhe lineare (E, IP, IP-1 permutations). Për DES rekomandohen disa mënyra:
  • modaliteti i librit elektronik të kodeve (ECB - Electronic Code Book),
  • modaliteti i zinxhirit të bllokut (CBC - Zinxhirimi i Blloqeve Shifrore),
  • Modaliteti i reagimit të tekstit të shifruar (CFB - Kthimi i Shifrave),
  • Modaliteti i reagimit në dalje (OFB - Output Feed Back).

    Blloko shifrën

    Të dhënat hyrëse për një shifër blloku janë një bllok n-bit dhe një çelës k-bit. Në dalje, pas aplikimit të transformimit të kriptimit, merret një bllok i koduar n-bit, dhe ndryshimet e vogla në të dhënat hyrëse, si rregull, çojnë në një ndryshim të rëndësishëm në rezultat. Shifrat e bllokut zbatohen duke aplikuar në mënyrë të përsëritur disa transformime bazë në blloqet e tekstit burimor.
    Transformimet bazë:
  • Transformim kompleks në një pjesë lokale të bllokut.
  • Shndërrim i lehtë midis pjesëve të bllokut. Meqenëse transformimi kryhet bllok pas blloku, si hap i veçantë, kërkohet të ndahen të dhënat burimore në blloqe të madhësisë së kërkuar. Në këtë rast, pavarësisht nga formati i të dhënave burimore, qofshin ato dokumente teksti, imazhe ose skedarë të tjerë, ato duhet të interpretohen në një formë binare dhe vetëm atëherë të ndahen në blloqe. Të gjitha sa më sipër mund të zbatohen me mjete softuerike dhe harduerike.

    Rrjeti Feistel transformohet

    Ky është një transformim mbi vektorët (blloqet) që përfaqësojnë gjysmën e majtë dhe të djathtë të regjistrit të zhvendosjes. Algoritmi DES përdor transformimin përpara nga rrjeti Feistel në enkriptim (shih Fig. 1) dhe transformimin e anasjelltë nga rrjeti Feistel në dekriptim (shih Fig. 2).

    Skema e enkriptimit DES


    Teksti burimor - blloku 64 bit.
    Teksti i koduar është një bllok 64-bitësh.

    Procesi i kriptimit përbëhet nga një ndërrim fillestar, 16 cikle enkriptimi dhe një ndërrim përfundimtar.
    Konsideroni skemën e detajuar të algoritmit DES:
    L i R i =1,2\ldots.gjysma e majtë dhe e djathtë e bllokut 64-bit L i R i
    k i - çelësat 48 bit
    f - funksioni i enkriptimit
    IP - ndërrimi fillestar
    IP -1 është ndërrimi përfundimtar. Sipas tabelës, 3 bitet e para të bllokut IP(T) që rezulton pas ndërrimit fillestar të IP janë bitet 58, 50, 42 të bllokut të hyrjes T, dhe 3 bitat e tij të fundit janë bitet 23, 15, 7 të hyrjes. bllokoj. Më tej, blloku 64-bit IP(T) merr pjesë në 16-cikle të transformimit Feistel.

    16 ciklet e transformimit të Feistel:

    Ndani IP(T) në dy pjesë L 0 , R 0 , ku L 0 , R 0 janë përkatësisht 32 bit të lartë dhe 32 bit të ulët të bllokut T0 IP(T) = L 0 R 0

    Le të jetë T i -1 = L i -1 R i -1 rezultat i përsëritjes (i-1), atëherë rezultati i përsëritjes së i-të T i = L i R i përcaktohet nga:

    L i = R i - 1 Gjysma e majtë e L i është e barabartë me gjysmën e djathtë të vektorit të mëparshëm L i - 1 R i - 1 . Dhe gjysma e djathtë e R i është shtimi në bit i L i - 1 dhe f(R i - 1 , k i) modul 2.

    Në 16-ciklet e transformimit Feistel, funksioni f luan rolin e kriptimit. Le të shqyrtojmë funksionin f në detaje.

    Argumentet për funksionin f janë një vektor 32 bit R i - 1 , një çelës 48 bit k i , të cilat janë rezultat i transformimit të tastit të shifruar origjinal 56 bit k.

    Për të llogaritur funksionin f, përdoret funksioni i shtrirjes E, transformimi S, i përbërë nga 8 transformime të kutive S dhe ndërrimi P.

    Funksioni E zgjeron vektorin 32 bit R i - 1 në vektorin 48 bit E(R i - 1) duke dublikuar disa bit nga R i - 1, ndërsa renditja e biteve të vektorit E(R i - 1) është specifikuar. në tabelën 2. Tre bitet e para të vektorit E(R i - 1) janë bitet 32, 1, 2 të vektorit R i -1 . Tabela 2 tregon se bitet 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29, 32 janë dyfishuar. 3 bitet e fundit te vektorit E(Ri - 1) jane bitet 31, 32, 1 te vektorit R i - 1 . Bllokut E(R i -1) i përftuar pas ndërrimit shtohet moduli 2 me çelësat k i dhe më pas paraqitet si tetë blloqe të njëpasnjëshme B 1 ,B 2 ,...B 8 .
    E(R i - 1) = B 1 B 2 ...B 8
    Çdo B j është një bllok 6-bitësh. Më pas, secili prej blloqeve B j shndërrohet në një bllok 4-bitësh B" j duke përdorur transformimet S j . Transformimet S j përcaktohen nga tabela 3. Le të supozojmë se B 3 = 101111 dhe duam të gjejmë B" 3 . Shifrat e para dhe të fundit të B 3 janë shënimi binar i numrit a, 0 Vlera e funksionit f(R i - 1, k i) (32 bit) merret duke ndryshuar P të aplikuar në një bllok 32-bitësh B " 1 B" 2 ...B" 8. Permutacioni P jepet nga tabela 4.
    f(R i - 1,k i) = P(B" 1 B" 2 ...B" 8)
    Sipas tabelës 4, katër bitet e para të vektorit që rezulton pas veprimit të funksionit f janë bitet 16, 7, 20, 21 të vektorit B" 1 B" 2 ...B" 8

    Gjenerimi i çelësave k i .
    Tastet k i merren nga tasti fillestar k (56 bit = 7 bajt ose 7 karaktere në ASCII) në këtë mënyrë. Tetë bit të vendosur në pozicionet 8, 16, 24, 32, 40, 48, 56, 64 i shtohen çelësit k në mënyrë që çdo bajt të përmbajë një numër tek njësh. Kjo përdoret për të zbuluar gabimet në shkëmbimin dhe ruajtjen e çelësave. Pastaj bëhet një ndryshim për çelësin e zgjeruar (përveç biteve të shtuara 8, 16, 24, 32, 40, 48, 56, 64). Një ndërrim i tillë përcaktohet si në tabelën 5.

    Ky permutacion përcaktohet nga dy blloqe C 0 dhe D 0 nga 28 bit secili. 3 bitet e para të C 0 janë bitet 57, 49, 41 të çelësit të zgjeruar. Dhe tre bitet e para të D 0 janë bitet 63, 55, 47 të çelësit të zgjeruar. C i , D i i=1,2,3… janë marrë nga C i - 1 , D i - 1 nga një ose dy ndërrime ciklike majtas sipas tabelës 6.

    Tasti k i , i=1,…16 përbëhet nga 48 bit të zgjedhur nga bitet e vektorit C i D i (56 bit) sipas tabelës 7. Biti i parë dhe i dytë i k i janë bitet 14, 17 të vektorit C. i D i

    Permutacioni përfundimtar IP - 1 vepron në T 16 dhe përdoret për të rivendosur pozicionin. Është e kundërta e ndërrimit të IP. Ndërrimi përfundimtar përcaktohet nga Tabela 8.
    Mënyrat e përdorimit të DES DES mund të përdoret në katër mënyra.

  • Modaliteti i Librit të Kodit Elektronik (ECB): Përdorimi i zakonshëm i DES si një shifër blloku (shih Figurën 7).
  • Modaliteti i zinxhirit të bllokut (CBC - Zinxhirimi i Blloqeve Shifrore) (shih Fig. 8). Çdo bllok tjetër C i i>=1, përpara kriptimit shtohet moduli 2 me bllokun tjetër të tekstit të thjeshtë M i + 1 . Vektori C 0 është vektori fillestar, ai ndryshon çdo ditë dhe mbahet i fshehtë.
  • Modaliteti i kthimit të kodit (CFB) (shih Figurën 9). Në modalitetin CFB, krijohet një bllok "gama" Z 0 ,Z 1 ,...Z i = DESk(C i - 1). Vektori fillestar C 0 mbahet i fshehtë.
  • Modaliteti i kthimit të kthimit në dalje (OFB) (shih Fig.10). Në modalitetin OFB, krijohet një bllok "gama" Z 0 ,Z 1 ,... , i>=1
  • Mënyra e BQE-së është e lehtë për t'u zbatuar, por analiza kritike është e mundur
  • Në modalitetet ECB dhe OFB, shtrembërimi gjatë transmetimit të një blloku të tekstit të shifruar 64-bit C i çon në shtrembërim pas dekriptimit të vetëm bllokut të hapur përkatës M i, kështu që këto mënyra përdoren për transmetim përmes kanaleve të komunikimit me një numër të madh shtrembërimesh.
  • Në modalitetet CBC dhe CFB, shtrembërimi gjatë transmetimit të një blloku të tekstit të koduar C i çon në shtrembërim tek marrësi i jo më shumë se dy blloqeve të tekstit të thjeshtë M i, M i + 1. Ndryshimi i Mi çon në një ndryshim në të gjitha blloqet e tjera M i + 1 ,M i + 2 ... Kjo veçori përdoret për të gjeneruar një kod vërtetimi të mesazhit.
  • Standardi DES është krijuar për të mbrojtur kundër aksesit të paautorizuar në informacione të ndjeshme, por të paklasifikuara në qeverinë amerikane dhe organizatat tregtare. Algoritmi që qëndron në themel të standardit u përhap mjaft shpejt, dhe tashmë në vitin 1980 u miratua nga Instituti Kombëtar i Standardeve dhe Teknologjisë në SHBA. Që nga ky moment, DES bëhet standard jo vetëm në emër, por edhe në fakt. Ekzistojnë softuer dhe mikrokompjuterë të specializuar të krijuar për të kriptuar dhe deshifruar informacionin në rrjetet e të dhënave.

    Deri më sot, DES është algoritmi më i zakonshëm i përdorur në sistemet komerciale të sigurisë së informacionit. Për më tepër, zbatimi i algoritmit DES në sisteme të tilla bëhet një shenjë e shijes së mirë.

    Përparësitë kryesore të algoritmit DES:

    Përdoret vetëm një çelës 56-bit;

    · Pas enkriptimit të një mesazhi duke përdorur një paketë, mund të përdorni çdo tjetër për ta deshifruar atë;

    Thjeshtësia relative e algoritmit siguron shpejtësi të lartë të përpunimit të informacionit;

    stabilitet mjaft i lartë i algoritmit.

    DES kodon blloqe 64-bitësh të të dhënave duke përdorur një çelës 56-bit. Deshifrimi në DES është operacioni i kundërt i enkriptimit dhe kryhet duke përsëritur operacionet e enkriptimit në mënyrë të kundërt (pavarësisht qartësisë së dukshme, kjo nuk bëhet gjithmonë. Më vonë do të shqyrtojmë shifrat në të cilat kriptimi dhe deshifrimi kryhen duke përdorur algoritme të ndryshme).

    Procesi i kriptimit përbëhet nga një shkëmbim fillestar i biteve të bllokut 64-bit, gjashtëmbëdhjetë raunde enkriptimi dhe në fund një shkëmbim i kundërt i biteve (Figura 1).

    Duhet të theksohet menjëherë se TË GJITHA tabelat e dhëna në këtë artikull janë STANDARD, dhe për këtë arsye duhet të përfshihen në zbatimin tuaj të algoritmit të pandryshuar. Të gjitha permutacionet dhe kodet në tabela zgjidhen nga zhvilluesit në mënyrë të tillë që të bëjnë sa më të vështirë procesin e deshifrimit duke zgjedhur një çelës. Struktura e algoritmit DES është paraqitur në fig. 2.

    Oriz. 2.

    Le të lexohet nga skedari blloku T tjetër prej 8 bajtësh, i cili transformohet duke përdorur matricën IP të ndryshimit fillestar (Tabela 1) si më poshtë: biti 58 i bllokut T bëhet biti 1, biti 50 bëhet biti 2, etj., gjë që do të rezulton në: T(0) = IP(T).

    Sekuenca e biteve që rezulton T(0) ndahet në dy sekuenca me nga 32 bit secila: L(0) - bit majtas ose të lartë, R(0) - bit djathtas ose të ulët.

    Tabela 1: Matrica e permutacionit fillestar të IP

    58 50 42 34 26 18 10 02

    60 52 44 36 28 20 12 04

    62 54 46 38 30 22 14 06

    64 56 48 40 32 24 16 08

    57 49 41 33 25 17 09 01

    59 51 43 35 27 19 11 03

    61 53 45 37 29 21 13 05

    63 55 47 39 31 23 15 07

    Më pas kryhet kriptimi, i përbërë nga 16 përsëritje. Rezultati i përsëritjes së i-të përshkruhet nga formulat e mëposhtme:

    R(i) = L (i-1) xor f (R(i-1), K(i)),

    ku xor është operacioni EKSKLUZIV OSE.

    Funksioni f quhet funksion i enkriptimit. Argumentet e tij janë sekuenca 32-bitëshe R (i-1) e marrë në përsëritjen e (i-1) - dhe çelësi 48-bit K(i), i cili është rezultat i konvertimit të çelësit 64-bit K. Në detaje, funksioni i enkriptimit dhe algoritmi për nxjerrjen e çelësave K(i) përshkruhet më poshtë.

    Në përsëritjen e 16-të, fitohen sekuencat R(16) dhe L(16) (pa permutacion), të cilat bashkohen në një sekuencë 64-bit R(16) L(16).

    Pastaj pozicionet e biteve të kësaj sekuence riorganizohen në përputhje me matricën IP -1 (Tabela 2).

    Tabela 2: IP-1 Matrica e Permutacionit të anasjelltë

    40 08 48 16 56 24 64 32

    39 07 47 15 55 23 63 31

    38 06 46 14 54 22 62 30

    37 05 45 13 53 21 61 29

    36 04 44 12 52 20 60 28

    35 03 43 11 51 19 59 27

    34 02 42 10 50 18 58 26

    33 01 41 09 49 17 57 25

    Matricat IP -1 dhe IP lidhen si më poshtë: vlera e elementit të parë të matricës IP -1 është 40, dhe vlera e elementit të 40-të të matricës IP është 1, vlera e 2-të. elementi i matricës IP -1 është 8, dhe vlera e elementit të 8-të të matricës IP është 2, e kështu me radhë.

    Procesi i deshifrimit të të dhënave është e kundërta e procesit të kriptimit. Të gjitha hapat duhet të kryhen në rend të kundërt. Kjo do të thotë që të dhënat që do të deshifrohen fillimisht riorganizohen sipas matricës IP-1 dhe më pas kryhen të njëjtat operacione në sekuencën e biteve R(16) L(16) si në procesin e enkriptimit, por në rend të kundërt.

    Procesi i deshifrimit përsëritës mund të përshkruhet me formulat e mëposhtme:

    R(i-1) = L(i), i = 1, 2,…, 16;

    L (i-1) = R(i) xor f (L(i), K(i)), i = 1, 2,…, 16.

    Në përsëritjen e 16-të, përftohen sekuencat L(0) dhe R(0), të cilat bashkohen në një sekuencë 64-bit L(0) R(0).

    Pozicionet e biteve të kësaj sekuence më pas riorganizohen sipas matricës IP. Rezultati i këtij ndryshimi është sekuenca origjinale 64-bit.

    Tani merrni parasysh funksionin e enkriptimit f (R(i-1), K(i)). Është paraqitur në mënyrë skematike në Fig. 3.


    Oriz. 3.

    Funksionet e mëposhtme të matricës përdoren për të llogaritur vlerën e funksionit f:

    E - zgjerimi i një sekuence 32-bit në 48-bit,

    S1, S2,…, S8 - konvertimi i bllokut 6-bit në 4-bit,

    P është një ndërrim biti në një sekuencë 32-bitësh.

    Funksioni i zgjerimit E është përcaktuar në tabelë. 3. Sipas kësaj tabele, 3 bitet e para të E (R(i-1)) janë bitet 32, 1 dhe 2, dhe të fundit janë 31, 32 dhe 1.

    Tabela 3: Funksioni i zgjerimit E

    32 01 02 03 04 05

    04 05 06 07 08 09

    08 09 10 11 12 13

    12 13 14 15 16 17

    16 17 18 19 20 21

    20 21 22 23 24 25

    24 25 26 27 28 29

    28 29 30 31 32 01

    Rezultati i funksionit E (R(i-1)) është një sekuencë 48-bitëshe që i shtohet moduli 2 (operimi xor) me tastin 48-bit K(i). Përftohet një sekuencë 48-bitëshe, e cila ndahet në tetë blloqe 6-bitësh B(1) B(2) B(3) B(4) B(5) B(6) B(7) B(8). Kjo eshte:

    E (R(i-1)) xor K(i) = B(1) B(2)… B(8).

    Funksionet S1, S2, ..., S8 janë përcaktuar në tabelë. katër.

    Tabela 4

    Në tryezë. 4. Kërkohen shpjegime shtesë. Le të jetë hyrja e funksionit të matricës Sj një bllok 6-bitësh B(j) = b1b2b3b4b5b6, atëherë numri dy-bitësh b1b6 tregon numrin e rreshtit të matricës dhe b2b3b4b5 numrin e kolonës. Rezultati i Sj (B(j)) do të jetë një element 4-bit i vendosur në kryqëzimin e rreshtit dhe kolonës së specifikuar.

    Për shembull, B(1)=011011. Atëherë S1 (B(1)) ndodhet në kryqëzimin e rreshtit 1 dhe kolonës 13. Kolona 13 e rreshtit 1 vendoset në 5. Pra S1 (011011)=0101.

    Duke zbatuar operacionin e përzgjedhjes për secilin prej blloqeve 6-bitësh B(1), B(2),…, B(8), marrim një sekuencë 32-bitësh S1 (B(1)) S2 (B(2)) S3 (B( 3))… S8 (B(8)).

    Së fundi, për të marrë rezultatin e funksionit të kriptimit, duhet të riorganizoni pjesët e kësaj sekuence. Për këtë përdoret funksioni i ndërrimit P (Tabela 5). Në sekuencën e hyrjes, bitet kthehen mbrapsht në mënyrë që biti 16 të bëhet biti 1, biti 7 të bëhet biti 2, e kështu me radhë.

    Tabela 5: Funksioni i permutacionit P

    Në këtë mënyrë,

    f (R(i-1), K(i)) = P (S1 (B(1)),… S8 (B(8)))

    Për të përfunduar përshkrimin e algoritmit të enkriptimit të të dhënave, mbetet të japim një algoritëm për marrjen e çelësave 48-bit K(i), i=1…16. Në çdo përsëritje, përdoret një vlerë e re kryesore K(i), e cila llogaritet nga çelësi fillestar K. K është një bllok 64-bitësh me tetë bit barazi të vendosura në pozicionet 8,16,24,32,40,48, 56, 64.

    Për të hequr pjesët e kontrollit dhe për të riorganizuar pjesën tjetër, përdoret funksioni G i përgatitjes fillestare të çelësit (Tabela 6).

    Tabela 6

    Matrica G e përgatitjes fillestare të çelësit

    57 49 41 33 25 17 09

    01 58 50 42 34 26 18

    10 02 59 51 43 35 27

    19 11 03 60 52 44 36

    63 55 47 39 31 23 15

    07 62 54 46 38 30 22

    14 06 61 53 45 37 29

    21 13 05 28 20 12 04

    Rezultati i transformimit G(K) ndahet në dy blloqe 28-bitësh C(0) dhe D(0), ku C(0) do të përbëhet nga bitet 57, 49,…, 44, 36 të çelësit K, dhe D(0) do të përbëhet nga bitet 63, 55,…, 12, 4 të çelësit K. Pasi të përcaktohen C(0) dhe D(0), C(i) dhe D(i), i=1 …16, përcaktohen në mënyrë rekursive. Për këtë, një zhvendosje ciklike majtas zbatohet me një ose dy bit, në varësi të numrit të përsëritjes, siç tregohet në tabelën 1. 7.

    Tabela 7. Shift tabelën për llogaritjen e çelësit

    Numri i përsëritjes

    Shift (bit)

    Vlera që rezulton përsëri "përzihet" në përputhje me matricën H (Tabela 8).

    Tabela 8: Matrica e përfundimit të çelësit H

    14 17 11 24 01 05

    03 28 15 06 21 10

    23 19 12 04 26 08

    16 07 27 20 13 02

    41 52 31 37 47 55

    30 40 51 45 33 48

    44 49 39 56 34 53

    46 42 50 36 29 32

    Tasti K(i) do të përbëhet nga bitet 14, 17,…, 29, 32 të sekuencës C(i) D(i). Në këtë mënyrë:

    K(i) = H (C(i) D(i))

    Bllok-diagrami i algoritmit të llogaritjes së çelësit është paraqitur në fig. katër.

    Oriz. katër.

    Rivendosja e tekstit origjinal kryhet sipas këtij algoritmi, por fillimisht përdorni tastin K(15), më pas K(14) e kështu me radhë. Tani duhet të kuptoni pse autori rekomandon fuqimisht përdorimin e matricave të mësipërme. Nëse filloni të shkoni në mënyrë arbitrare, duhet të merrni një shifër shumë sekrete, por ju vetë nuk do të jeni në gjendje ta hapni më vonë!

    Artikujt kryesorë të lidhur