Blokkchifferstandarder. DES krypteringsskjema

Den vanligste og mest kjente symmetriske krypteringsalgoritmen er DES (Datakrypteringsstandard). Algoritmen ble utviklet i 1977, og i 1980 ble den tatt i bruk av NIST (National Institute of Standards and Technology, USA) som standard.

DES er et klassisk to-grenet Feistel-nettverk. Data er kryptert i 64-biters blokker ved hjelp av en 56-bits nøkkel. Algoritmen konverterer 64-bits inngang til 64-bits utgang i flere omganger. Nøkkellengden er 56 bits. Krypteringsprosessen har fire stadier. Det første trinnet er å utføre en innledende permutasjon (IP) av 64-biters kilden (whitening), hvor bitene omorganiseres i henhold til en standardtabell. Neste trinn består av 16 runder med samme funksjon som bruker skift- og substitusjonsoperasjoner. På det tredje trinnet reverseres venstre og høyre halvdel av utgangen fra den siste (16.) iterasjonen. Til slutt, i det fjerde trinnet, omorganiseres IP-1-resultatet oppnådd i det tredje trinnet. Permutasjon IP-1 er invers til den opprinnelige permutasjonen.

Fig. 4. DES-algoritme

Figuren viser måten en 56-bits nøkkel brukes på. Til å begynne med mates nøkkelen til inngangen til permutasjonsfunksjonen. Så, for hver av de 16 rundene, er undernøkkelen Ki en venstre syklisk skift- og permutasjonskombinasjon. Permutasjonsfunksjonen er den samme for hver runde, men K i-undernøklene er forskjellige for hver runde på grunn av den gjentatte forskyvningen av nøkkelbitene.

Den innledende permutasjonen og dens inverse bestemmes av standardtabellen. Hvis M er tilfeldig 64 biter, så er X = IP (M) 64 bit permutert. Hvis vi bruker den inverse permutasjonsfunksjonen Y = IP-1 (X) = IP-1 (IP (M)), får vi den opprinnelige bitsekvensen.

Beskrivelse av runden des

Vurder sekvensen av transformasjoner som brukes i hver runde.

Fig. 5. Illustrasjon av en runde med DES-algoritme

64-biters inngangsblokk går gjennom 16 runder, og ved hver iterasjon oppnås en mellomliggende 64-bits verdi. Venstre og høyre side av hver mellomverdi behandles som separate 32-bits verdier, merket med L og R. Hver iterasjon kan beskrives som følger:

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

Dermed er utgangen til venstre halvdel av Li lik inngangen til høyre halvdel av R i-1. Utgangen til høyre halvdel av R i er resultatet av XORing L i-1 og en funksjon F avhengig av R i-1 og Ki.

La oss vurdere funksjonen F mer detaljert. R i, som mates til inngangen til funksjonen F, er 32 biter lang. Til å begynne med utvides R i til 48 biter ved å bruke en tabell som definerer en permutasjon pluss en 16 bits utvidelse. Utvidelsen skjer på følgende måte. De 32 bitene deles inn i grupper på 4 biter og utvides deretter til 6 biter ved å legge til de ytterste bitene fra to tilstøtende grupper. For eksempel hvis en del av inndatameldingen

Efgh ijkl mnop. ... ...

deretter resulterer utvidelsen i meldingen

Defghi hijklm lmnopq. ... ...

Etter det, for den resulterende 48-bits verdien, utføres en XOR-operasjon med en 48-bits undernøkkel Ki. Deretter mates den resulterende 48-bits verdien til inngangen til substitusjonsfunksjonen, resultatet av denne er en 32-bits verdi.

Substitusjonen består av åtte S-bokser, som hver mottar 6 bits som input og produserer 4 bits ved utgangen. Disse transformasjonene bestemmes av spesielle tabeller. Den første og siste biten av S-boks-inngangen bestemmer radnummeret i tabellen, de midterste 4 bitene bestemmer kolonnenummeret. Skjæringspunktet mellom rad og kolonne definerer en 4-bits utgang. For eksempel, hvis inndata er 011011, er radnummeret 01 (rad 1) og kolonnenummeret er 1101 (kolonne 13). Verdien i rad 1 og kolonne 13 er 5, dvs. utgangen er 0101.

Deretter behandles den resulterende 32-bits verdien ved å bruke permutasjonen P, hvis formål er å omorganisere bitene så mye som mulig slik at i neste runde med kryptering, med høy sannsynlighet, vil hver bit bli behandlet av en annen S- eske.

Nøkkelen for en enkelt runde K i består av 48 biter. Nøklene Ki oppnås ved hjelp av følgende algoritme. For 56-bits nøkkelen som brukes som input til algoritmen, utføres først en permutasjon i samsvar med tabellen Permuted Choice 1 (PC-1). Den resulterende 56-bits nøkkelen er delt inn i to 28-biters deler, betegnet henholdsvis C0 og D0. På hver runde blir C i og Di uavhengig syklisk forskjøvet 1 eller 2 biter til venstre, avhengig av rundenummeret. De resulterende verdiene er input til neste runde. De er også en inngang til Permuted Choice 2 (PC-2), som produserer en 48-bits utgang som er inngangen til F (R i-1, Ki).

Dekrypteringsprosessen ligner på krypteringsprosessen. Chifferteksten brukes ved inngangen til algoritmen, men tastene K i brukes i omvendt rekkefølge. Det brukes 16 r i første omgang, 1 r brukes i siste omgang. La utgangen fra den i-te krypteringsrunden være L i || R i. Da vil den tilsvarende inngangen til den (16-i) -te dekrypteringsrunden være R i || L i.

Etter den siste runden av dekrypteringsprosessen, byttes de to halvdelene av utgangen slik at inngangen til den endelige permutasjonen IP-1 er R 16 || L 16. Utdataene fra dette trinnet er ren tekst.

Data Encryption Standard (DES) er en datakrypteringsstandard som ble oppfunnet i USA på 1980-tallet. Blant chifferene regnes han med rette som en "pensjonert", mens han forblir kryptografiens arbeidshest. DES sluttet å være nyttig i forhold til ultrarask teknologi og store datamengder på grunn av begrensningene på 56 biter per nøkkel og 64 biter for data. Den er imidlertid fortsatt i bruk.

Hva er blokkchiffer?

DES er en blokkchifferalgoritme. I løpet av de siste 20-30 årene har det blitt laget mange blokkchiffer, men å lage et godt chiffer som er sikkert er en ganske vanskelig oppgave. Det er viktig at chifferet har egenskaper som gjør at det kan fungere i mange områder og bransjer.

Blokkchiffer består av flere iterasjoner av å bruke noen chiffer etter tur. Hver iterasjon kalles en runde. Som praksis viser, er selv noen av de primitive algoritmene, når de brukes sekvensielt, i stand til å lage pålitelige chiffer. DES er et eksempel som har vært pålitelig og uforgjengelig i 20 år.

Denne tilnærmingen til utvikling av chiffer letter prosessen og forenkler sikkerhetsanalysen. For eksempel begynner et testangrep på et blokkchiffer med et minimum antall runder og fortsetter metodisk med en økning i antall runder.

Bruker DES

Selv om DES anses som foreldet og ikke oppdatert, kan det for eksempel brukes i form av 3DES, når chifferen brukes tre ganger på rad. Denne tilnærmingen fjerner begrensningen på størrelsen på nøkkelen, men blokken med krypterte data forblir den samme. På et tidspunkt var DES et ganske raskt og kryptosterkt chiffer. Nå er ikke dette tilfellet, og 3DES er faktisk tre ganger tregere. Til tross for dette brukes DES fortsatt i en rekke systemer, men bruk i nye prosjekter er forbudt.

DES var den offisielle chifferalgoritmen i USA frem til 1998. I 1997 begynte etableringen av en ny standard kalt System), og selv om kryptoanalyse viser at et forsøk på å bryte DES fører til mange systemer med ikke-lineære ligninger, kan ikke analytiske metoder hjelpe til med å løse problemet - dets svake punkt er det lille settet med mulige nøkler . Antallet deres er lik 2 56 og alle alternativer kan telles opp ved hjelp av moderne teknologier på relativt kort tid.

En runde i algoritmen

For klarhet i presentasjonen og beskrivelse av DES-algoritmen bruker vi figur (linjediagram av beregninger) 4.1, som viser strukturen til en runde.

Hvert rektangel i et linjediagram representerer en form for beregning, og en pil som går ut fra det indikerer hvor resultatene av blokken skal overføres. Plusstegnet, sirklet, angir en "eksklusiv eller" operasjon, kjent i programmering som XOR. Operasjonen kalles også "bitvis addisjon" eller "addisjon uten bære". På nettet kan du finne DES-algoritmen i C og studere den for en bedre forståelse.

DES aksepterer en 64-bits tekstblokk. Den går gjennom den innledende permutasjonen i henhold til et visst prinsipp. Ved analyse av algoritmen viste det seg at det er liten mening med denne permutasjonen, siden den ikke gir noen kryptografisk effekt. Tekstblokken er delt inn i 2 like deler: høyre (R) og venstre (L). Deretter byttes og kombineres de krypterte delene, og på slutten av runden oppnås en 64-bits datablokk, kun kryptert.

Generell algoritme

DES-algoritmen inkluderer 16 runder, utført i henhold til skjemaet beskrevet ovenfor. Alle runder er nummerert til i, hvor i = (1; 16). Hver i-te runde fra paret (Li-1, Ri-1) får et nytt par (Li, Ri) ved å bruke Ki-tasten. Hovedtransformasjonene finner sted inne i funksjonen F.

Algoritme for funksjonen F

Som du kan se fra figur 4.1, går R gjennom "Expand"-operasjonen. Denne blokken dupliserer et antall biter fra R og supplerer den med dem, og får en 48-bits verdi. Det resulterende resultatet går gjennom en bitvis tillegg med en 48-bit Ki-nøkkel. Og resultatet av denne operasjonen overføres til blokk S. Blokk S inneholder 8 små substitusjonsmatriser, som velges på en spesiell måte.

Hver matrise mottar 6 biter med informasjon som input og sender ut en 4-bits verdi. Som et resultat mottar blokk S 48-bits data ved inngangen, og ved utgangen representerer den resultatet som en 32-bits verdi.

Denne 32-bits verdien går gjennom en permutasjonsoperasjon til, hvoretter den summeres av xor-operasjonen med L. Til slutt byttes høyre og venstre side og runden avsluttes. Algoritmen gjør som tidligere nevnt 16 slike runder.

Her skal vi ikke overbelaste artikkelen med eksempler som tar mye plass. DES arbeid og eksempler kan sees på nettet.

Feistel-chiffer

DES er basert på Feistel-chifferet. Ideen er ganske elegant. På hver runde legges L-delen til med verdien av F (R, Ki) og L endrer posisjon med R. Nøkkeltrekket til Feistel-algoritmen er at dekryptering og kryptering består av de samme trinnene: L- og R-delene er byttet, og så utføres addisjonsoperasjonen L og F (R, Ki). Dette gjør kryptering og dekrypteringsprosedyrer enkle og greie.

En interessant endring introduseres ofte i Feistel-siffer - avskaffelsen av permutasjonen av L og R i den siste iterasjonen. Dette gjør krypterings- og dekrypteringsalgoritmene helt symmetriske. Den eneste forskjellen er i rekkefølgen som Ki-tastene brukes i. Dette prinsippet viste seg å være ekstremt praktisk for bruk på programvarenivå, siden kryptering og dekryptering utføres ved hjelp av en funksjon. For eksempel en lakonisk implementering av DES-krypteringsalgoritmen i C.

Krypteringsnøkler

DES bruker seksten 48-biters nøkler for å kryptere data. En nøkkel per runde. Hver nøkkel genereres ved å sample 48 biter fra en 56-bits hovednøkkel. Nøkkelgenerering for en gitt runde bestemmes av en mekanisme beskrevet i DES-dokumentasjonen.

Kort fortalt er algoritmen for å hente i-nøkkelen som følger. Bits legges til hovednøkkelen i posisjonene 8, 16, 24, 32, 40, 48, 56, 64. Dette gjøres på en slik måte at hver byte inneholder et oddetall av enere. Overholdelse av regelen hjelper til med å oppdage nøkkelutvekslingsfeil. Deretter, ved bruk av spesielle tabeller, gjennomgår den polstrede nøkkelen permutasjoner og skift, med unntak av bitene som er lagt til. Dermed oppnås den nødvendige nøkkelen.

DES komponenter

Hver komponent i DES-algoritmen løser et spesifikt problem:

  1. Feistels algoritme forenkler kryptering og dekryptering samtidig som den sikrer at begge halvdelene av teksten blandes.
  2. Bitvis summering av deler av tekst med nøkler blander de offentlige dataene med nøkkelen og krypterer den.
  3. S-boks og oppslagstabeller gjør algoritmen ikke-lineær, og øker motstanden mot ulike angrep.
  4. Utvidelse, S-boks og permutasjoner gir diffusjon av algoritmen - skredeffekten. Med andre ord, hvis minst 1 bit i inngangsdataene til funksjonen F endres, vil dette føre til en endring i mange biter på en gang. Hvis skredeffekten i chifferen ikke observeres, vil endringer i åpne data føre til tilsvarende endringer i kryptert form, som kan spores og brukes til cracking. I kryptografi er det et kriterium for skredeffekten. Algoritmen tilfredsstiller det hvis, når 1 bit åpne data endres, minst halvparten av de krypterte dataene endres. DES-algoritmen tilfredsstiller den fra runde 4. Bunnlinjen - å endre 1 bit åpne data i DES-chifferet vil endre 29 biter.

Sikkerhetsproblemer i DES

Det åpenbare problemet med DES er å hente krypteringsnøkler fra en offentlig nøkkel. Hva skjer hvis du velger null som nøkkel (alle biter av nøkkelen er lik 0)? Dette vil føre til at utvalget av alle nøkler for kryptering på hver runde vil være det samme, og alle nøkler vil være lik null. Ikke bare vil 16 krypteringer passere med én nøkkel, men på grunn av at DES-krypterings- og dekrypteringsalgoritmene kun er forskjellige i rekkefølgen nøklene brukes, vil de være nøyaktig like. Hele poenget med kryptering vil gå tapt.

DES har 4 taster, som kalles svake taster, som fører til den beskrevne effekten. DES har 12 halvsvake og 48 pseudo-svake nøkler, som begrenser variasjonen av genererte nøkler i runder. Med andre ord er det en mulighet for at i løpet av kryptering i 16 runder, vil ikke 16 forskjellige nøkler bli brukt, men 8, 4 eller til og med 2.

En mindre åpenbar ulempe med DES er komplementaritetsegenskapen. Det betyr at hvis du bruker klartekstkomplement og nøkkelkomplement for kryptering, ender du opp med en verdi som er komplementet til chifferteksten. Denne latterlige egenskapen kan føre til vellykkede angrep på prosjekter som bruker DES for sikkerhet.

Krypteringsnøkkelproblem

Det er grunnleggende for DES og anses som hovedgrunnen til at denne algoritmen bør forlates. Siden nøkkelstørrelsen i DES er 56 biter, må du se gjennom 2 56 alternativer for å iterere over alle nøklene. Er det så mye?

Hvis du utfører 10 millioner nøkkelkontroller per sekund, vil verifiseringen ta omtrent 2000 år. Algoritmen ser ut til å være ganske robust. Det var slik i forrige århundre, da det å bygge en datamaskin med denne kraften var en nesten umulig oppgave, både fra et teknisk og økonomisk synspunkt.

Hvis du lager en datamaskin med en million sjetonger, vil det ta 20 timer å iterere gjennom hele settet med DES-nøkler. Den første datamaskinen av denne typen for dekryptering ved hjelp av DES-algoritmen dukket opp tilbake i 1998, som taklet oppgaven på 56 timer. Moderne teknologier av nettverk og parallelle prosesser kan redusere denne tiden enda mer.

Krypteringsanalyse og DES

Det kan sies uten å overdrive at DES ga opphav til en anvendt vitenskap kalt "Cryptographic Analysis". Helt fra begynnelsen av utseendet til DES ble det gjort forsøk på å knekke det, vitenskapelig arbeid ble utført for å studere det. Alt dette førte til fødselen av slike områder av matematikk som:

  • lineær kryptoanalyse - studiet og identifiseringen av forholdet mellom ren tekst og chiffertekst;
  • differensiell kryptoanalyse - studiet og analysen av avhengigheter mellom flere åpne tekster og deres krypterte versjoner;
  • kryptanalyse på koblede nøkler - studiet av avhengigheter mellom chiffertekster oppnådd på primærnøkkelen, og nøkler assosiert med primærnøkkelen på noen måte.

DES har motstått 20 år med verdensomspennende kryptoanalyse og angrep, men er fortsatt en sterk chiffer. Men den som søker vil alltid finne...

  1. Biham og Shamir, forskere fra Israel, viste i 1991 ved hjelp av differensiell kryptoanalyse at DES kan angripes der nøkkelen beregnes, forutsatt at angriperen har 2,47 spesielt matchede par med ren tekst og chiffertekst.
  2. Den japanske forskeren Mitsuru Matsui viste i 1993 at nøkkelen kan beregnes ved hjelp av lineær kryptoanalyse. For å gjøre dette trenger du bare å vite 2,47 par ren tekst og den tilsvarende krypterte versjonen.

I fremtiden ble disse hackingmetodene litt forbedret, forbedret og forenklet, og en rekke nye hackingmetoder dukket opp. Men de forblir for kompliserte, mot deres bakgrunn ser en fullstendig oppregning av alle nøkkelvarianter ut som det mest passende angrepet på DES.

  • Opplæringen

Hei% brukernavn%!
Mange vet at DES lenge har vært ansett som standardstandarden for symmetrisk kryptering. Det første vellykkede angrepet på denne udødelige algoritmen ble publisert i 1993, 16 år etter at den ble tatt i bruk som standard. Metoden, som forfatteren kalte lineær kryptoanalyse, i nærvær av 247 par åpne / chiffertekster, gjør det mulig å bryte den hemmelige nøkkelen til DES-chifferet i 243 operasjoner.
Under kuttet vil jeg prøve å oppsummere hovedpunktene i dette angrepet.

Lineær kryptoanalyse

Lineær krypteringsanalyse er en spesiell type angrep på symmetriske chiffer som tar sikte på å gjenopprette en ukjent krypteringsnøkkel fra kjente åpne meldinger og deres tilsvarende chiffertekster.

Generelt reduseres et angrep basert på lineær kryptoanalyse til følgende forhold. Angriperen besitter et stort antall klare / chiffertekst-par oppnådd ved bruk av den samme krypteringsnøkkelen K. Angriperens mål er å gjenopprette deler av eller hele nøkkelen K.

Først av alt undersøker angriperen chifferen og finner den såkalte. statistisk analog, dvs. ligning av følgende form, oppfyller med sannsynlighet P ≠ 1/2 for et vilkårlig åpent/lukket tekstpar og en fast nøkkel:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
hvor P n, C n, K n er de n-te bitene av teksten, chiffertekst og nøkkel.
Etter at en lignende ligning er funnet, kan angriperen gjenopprette 1 bit informasjon om nøkkelen ved hjelp av følgende algoritme

Algoritme 1
La T være antallet tekster der venstre side av ligning (1) er lik 0, da
Hvis T> N / 2, hvor N er antall kjente klartekster.
Anta at K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (når P> 1/2) eller 1 (når P<1/2).
Ellers
Anta at K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (når P> 1/2) eller 0 (når P<1/2).
Selvsagt avhenger suksessen til algoritmen direkte av verdien av | P-1/2 | og på antall tilgjengelige åpne/lukkede tekstpar N. Jo mer sannsynligheten P for likhet (1) er forskjellig fra 1/2, jo mindre er antallet åpne tekster N nødvendig for angrepet.

Det er to problemer som må løses for et vellykket angrep:

  • Hvordan finne en effektiv ligning av formen (1).
  • Hvordan få mer enn én bit informasjon om en nøkkel ved å bruke en slik ligning.
La oss vurdere løsningen av disse spørsmålene ved hjelp av eksemplet med DES-chifferet.

DES beskrivelse

Men først, la oss kort beskrive hvordan algoritmen fungerer. Det er sagt nok om DES. En fullstendig beskrivelse av chifferen finnes på Wikipedia. For å forklare angrepet ytterligere trenger vi imidlertid en rekke definisjoner som best introduseres på forhånd.

Så DES er et blokkchiffer basert på Feistel-nettverket. Chifferen har en blokkstørrelse på 64 biter og en nøkkelstørrelse på 56 biter. La oss vurdere DES-krypteringsskjemaet.

Som du kan se fra figuren, utføres følgende operasjoner på teksten under kryptering:

  1. Innledende bit-permutasjon. På dette stadiet blir bitene i inngangsblokken blandet i en bestemt rekkefølge.
  2. Etter det deles de blandede bitene i to halvdeler, som mates til inngangen til Feistel-funksjonen. For standard DES inkluderer Feistel-nettverket 16 runder, men det finnes andre varianter av algoritmen.
  3. De to blokkene oppnådd i den siste transformasjonsrunden kombineres og ytterligere en permutasjon utføres over den resulterende blokken.

På hver runde av Feistel-nettverket går de minst signifikante 32 bitene av meldingen gjennom funksjonen f:

Vurder operasjonene som utføres på dette stadiet:

  1. Inngangsblokken går gjennom utvidelsesfunksjonen E, som konverterer en 32-bits blokk til en 48-bits blokk.
  2. Den resulterende blokken legges til med den runde nøkkelen K i.
  3. Resultatet av forrige trinn er delt inn i 8 blokker med 6 biter hver.
  4. Hver av de mottatte blokkene Bi passerer gjennom substitusjonsfunksjonen S-Box i, som erstatter 6-bits sekvensen med en 4-bits blokk.
  5. Den resulterende 32-bits blokken går gjennom permutasjonen P og returneres som resultatet av f.

Av størst interesse, fra synspunktet til chifferkryptanalyse, er for oss S-blokker designet for å skjule forbindelsen mellom inngangs- og utdataene til funksjonen f. For å lykkes med å angripe DES, konstruerer vi først statistiske motstykker for hver av S-boksene og utvider dem deretter til hele chifferen.

S blokkanalyse

Hver S-boks aksepterer en 6-bits sekvens som input, og en fast 4-bits verdi returneres for hver slik sekvens. De. det er bare 64 alternativer for inn- og utdata. Vår oppgave er å vise forholdet mellom inngangs- og utdataene til S-blokker. For eksempel, for den tredje S-blokken til DES-chifferet, er den tredje biten av inngangssekvensen lik den tredje biten av utgangssekvensen i 38 tilfeller av 64. Derfor fant vi følgende statistiske analog for den tredje S -blokkere:
S 3 (x) = x, som utføres med sannsynlighet P = 38/64.
Begge sider av ligningen representerer 1 bit informasjon. Derfor, hvis venstre og høyre side var uavhengige av hverandre, ville ligningen måtte oppfylles med en sannsynlighet lik 1/2. Dermed har vi nettopp demonstrert forholdet mellom inngangene og utgangene til den tredje S-boksen til DES-algoritmen.

La oss vurdere hvordan du kan finne en statistisk analog av S-boksen i det generelle tilfellet.

For S-boks Sa, 1 ≤ α ≤ 63 og 1 ≤ β ≤ 15, beskriver verdien NS a (α, β) hvor mange ganger av 64 mulige XOR-inngangsbiter S a overlagret α-biter er lik XOR-utgang biter lagt over biter β, dvs.:
hvor symbolet er et logisk OG.
Verdiene α og β, for hvilke NS a (α, β) er mest forskjellig fra 32, beskriver den mest effektive statistiske analogen til S-boksen Sa.

Den mest effektive analogen ble funnet i den femte S-blokken til DES-chifferet for α = 16 og β = 15 NS 5 (16, 15) = 12. Dette betyr at følgende ligning er sann: Z = Y ⊕ Y ⊕ Y ⊕ Y, hvor Z er inngangssekvensen til S-boksen og Y er utgangssekvensen.
Eller, med tanke på det faktum at i DES-algoritmen, før du går inn i S-blokken, blir data lagt til modulo 2 med en rund nøkkel, dvs. Z = X ⊕ K får vi
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, hvor X og Y er inngangs- og utdataene til funksjonen f, når man ser bort fra permutasjoner.
Den resulterende ligningen er oppfylt i alle runder av DES-algoritmen med samme sannsynlighet P = 12/64.
Tabellen nedenfor gir en liste over effektive, dvs. har det største avviket fra P = 1/2, statistiske analoger for hver s-blokk av DES-algoritmen.

Bygge statistiske analoger for flere DES-runder

La oss nå vise hvordan vi kan kombinere statistiske analoger av flere DES-runder og som et resultat få en statistisk analog for hele chifferen.
For å gjøre dette, vurder en tre-rundt versjon av algoritmen:

La oss bruke en effektiv statistisk analog av den 5. s-boksen for å beregne visse biter av verdien til X (2).
Vi vet at med sannsynlighet 12/64 tilfredsstiller f-funksjonen likheten X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, hvor X er den andre inngangsbiten til den 5. S-boksen, er den i hovedsak den 26. biten i sekvensen oppnådd etter utvidelse av inngangsbitene. Ved å analysere utvidelsesfunksjonen kan vi fastslå at i stedet for den 26. biten er det den 17. biten i X (1)-sekvensen.
Tilsvarende er Y, ..., Y i hovedsak de 17., 18., 19. og 20. bitene av sekvensen oppnådd før permutasjonen P. Etter å ha undersøkt permutasjonen P, får vi at bitene Y, ..., Y faktisk er biter Y (1), Y (1), Y (1), Y (1).
Biten av nøkkelen K som er involvert i ligningene er den 26. biten av undernøkkelen til den første runden av K1, og deretter har den statistiske analogen følgende form:
X (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y1 ⊕ Y (1) = K1.
Derfor, X (1) ⊕ K1 = Y (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y (1)(2) med sannsynlighet P = 12/64.
Når du kjenner 3, 8, 14, 25 biter av Y (1)-sekvensen, kan du finne 3, 8, 14, 25 biter av X (2)-sekvensen:
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y (1) ⊕ Y (1) ⊕ Y (1) ⊕ Y (1) eller tar i betraktning ligning (2)
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X (1) ⊕ K1 (3) med en sannsynlighet på 12/64.

La oss finne et lignende uttrykk ved å bruke siste runde. Denne gangen har vi ligningen
X (3) ⊕ K3 = Y (3) ⊕ Y (3) ⊕ Y (3) ⊕ Y (3).
Fordi
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y (3) ⊕ Y (3) ⊕ Y (3) ⊕ Y (3)
det skjønner vi
X (2) ⊕ X (2) ⊕ X (2) ⊕ X (2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X (3) ⊕ K3(4) med en sannsynlighet på 12/64.

Ved å likestille høyresiden av ligningene (3) og (4), får vi
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X (3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X (1) ⊕ K1 med sannsynlighet (12/64) 2 + (1-12 / 64) 2.
Ta i betraktning at X (1) = PR og X (3) = CR, får vi en statistisk analog
CL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
som kjører med sannsynlighet (12/64) 2 + (1-12 / 64) 2 = 0,7.
Den statistiske analogen beskrevet ovenfor kan representeres grafisk som følger (bitene i figuren er nummerert fra høyre til venstre og starter fra null):

Alle bitene på venstre side av ligningen er kjent for angriperen, derfor kan han bruke Algoritme 1 og finne ut verdien av K1 ⊕ K3. La oss vise hvordan denne statistiske analogen kan brukes til å bryte ikke 1, men 12 biter av krypteringsnøkkelen K.

DES-angrep med kjent klartekst

Her er en metode der du kan utvide angrepet og få 6 biter av undernøkkelen til første runde på en gang.
Når vi komponerte ligning (5), tok vi hensyn til at vi ikke vet verdien av F1 (PR, K1). Derfor brukte vi dens statistiske analog K1 ⊕ PR.
La oss returnere verdien av F1 (PR, K1) i stedet for uttrykket K1 ⊕ PR og få følgende ligning:
CL ⊕ CR ⊕ PL ⊕ F1 (PR, K1) = K3 (6) som vil bli utført med en sannsynlighet på 12/64. Sannsynligheten har endret seg siden vi bare forlot den statistiske analogen fra tredje runde, alle andre verdier er faste.

Ovenfor har vi allerede bestemt at verdien til F1 (PR, K1) påvirkes av inngangsbitene til den 5. S-boksen, nemlig bitene til K1-tasten og bitene til PR-blokken. La oss vise hvordan du kan gjenopprette verdien til K1, med bare et sett med åpne/lukkede tekster. For å gjøre dette bruker vi Algoritme 2.

Algoritme 2
La N være antallet åpne/lukkede tekstpar kjent før angrepet. Deretter, for å åpne nøkkelen, må du gjøre følgende trinn.
For (i = 0; i<64; i++) do
{
For (j = 0; j {
hvis (CL j ⊕ CR j ⊕ PL j ⊕ F1 (PR j, i) = 0) så
Ti = Ti +1
}
}
Som en sannsynlig sekvens K1 tas en slik verdi av i som uttrykket |T i -N / 2 | har en maksimal verdi.

Gitt et tilstrekkelig antall kjente klartekster, vil algoritmen mest sannsynlig returnere de riktige seks bitene av første runde K1 undernøkkel. Dette forklares med det faktum at hvis variabelen i ikke er lik K1, vil verdien av funksjonen F1 (PR j, K) være tilfeldig og antall ligninger for en slik verdi av i som venstre side er på. lik null vil ha en tendens til N / 2. Hvis undernøkkelen er gjettet riktig, vil venstre side være lik den faste biten K3 med en sannsynlighet på 12/64. De. det vil være et betydelig avvik fra N/2.

Etter å ha mottatt 6 biter av K1-undernøkkelen, kan du åpne de 6 biter av K3-undernøkkelen på samme måte. Alt som trengs for dette er å erstatte i ligning (6) C med P og K1 med K3:
PL ⊕ PR ⊕ CL ⊕ F3 (CR, K3) = K1.
Algoritme 2 vil returnere riktig verdi K3 fordi dekrypteringsprosessen til DES-algoritmen er identisk med krypteringsprosessen, bare rekkefølgen av nøkler er reversert. Så på den første runden med dekryptering brukes nøkkelen K3, og på den siste runden er nøkkelen K1.

Etter å ha mottatt 6 biter av undernøkler K1 og K3 hver, gjenoppretter angriperen 12 biter av den generelle nøkkelen til K-chifferet, siden de runde tastene er den vanlige permutasjonen av nøkkelen K. Antall klartekster som kreves for et vellykket angrep avhenger av sannsynligheten for et statistisk motstykke. For å bryte de 12 bitene av en 3-runders DES-nøkkel, er 100 klartekst / klartekst-par tilstrekkelig. For å bryte de 12 bitene til en 16-runders DES-nøkkel, kreves det omtrent 244 tekstpar. De resterende 44 bitene av nøkkelen åpnes med et vanlig brute-force angrep.

DES-standarden er utformet for å beskytte mot uautorisert tilgang til sensitiv, men uklassifisert informasjon i amerikanske myndigheter og kommersielle organisasjoner. Algoritmen som ligger til grunn for standarden spredte seg ganske raskt, og allerede i 1980 ble den godkjent av US National Institute of Standards and Technology. Siden den gang har DES blitt en standard, ikke bare i navn, men faktisk. Det finnes programvare og spesialiserte mikrodatamaskiner designet for kryptering og dekryptering av informasjon i dataoverføringsnettverk.

DES er den desidert mest utbredte algoritmen som brukes i systemer for å beskytte kommersiell informasjon. Dessuten blir implementeringen av DES-algoritmen i slike systemer et tegn på god form.

De viktigste fordelene med DES-algoritmen:

· Bare én nøkkel på 56 biter brukes;

· Etter å ha kryptert en melding med én pakke, kan du bruke hvilken som helst annen for å dekryptere;

· Den relative enkelheten til algoritmen gir en høy hastighet på informasjonsbehandlingen;

· Tilstrekkelig høy robusthet av algoritmen.

DES krypterer 64-bits blokker med data ved hjelp av en 56-bits nøkkel. DES-dekryptering er den omvendte operasjonen av kryptering og utføres ved å gjenta krypteringsoperasjonene i omvendt rekkefølge (til tross for den tilsynelatende selvfølgeligheten, gjøres dette ikke alltid. Senere skal vi ta for oss chiffer der kryptering og dekryptering utføres ved hjelp av forskjellige algoritmer).

Krypteringsprosessen består av en innledende bitbytting av en 64-bits blokk, seksten krypteringssykluser og til slutt en omvendt bitbytte (fig. 1).

Det bør bemerkes med en gang at ALLE tabeller gitt i denne artikkelen er STANDARD, og ​​bør derfor inkluderes i implementeringen av algoritmen uendret. Alle permutasjoner og koder i tabellene ble valgt av utviklerne på en slik måte at dekrypteringsprosessen ble så vanskelig som mulig ved å gjette nøkkelen. Strukturen til DES-algoritmen er vist i fig. 2.

Ris. 2.

La neste 8-byte blokk T leses fra filen, som transformeres ved hjelp av IP initial permutasjonsmatrisen (tabell 1) som følger: bit 58 i T blokken blir bit 1, bit 50 blir bit 2 osv., som vil resultere i: T (0) = IP (T).

Den resulterende sekvensen av biter T (0) er delt inn i to sekvenser på 32 biter hver: L (0) - venstre eller mest signifikante biter, R (0) - høyre eller minst signifikante biter.

Tabell 1: IP Initial Permutation Matrix

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

Deretter utføres kryptering, bestående av 16 iterasjoner. Resultatet av den i-te iterasjonen beskrives med følgende formler:

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

hvor xor er EXCLUSIVE OR-operasjonen.

Funksjonen f kalles krypteringsfunksjonen. Argumentene er 32-bits sekvensen R (i-1), oppnådd ved (i-1) iterasjonen, og 48-bits nøkkelen K (i), som er resultatet av transformasjon av 64-bits nøkkelen K. I detalj er krypteringsfunksjonen og algoritmen for å oppnå nøkler K(i) beskrevet nedenfor.

Ved den 16. iterasjonen oppnås sekvensene R (16) og L (16) (uten permutasjon), som er sammenkoblet til en 64-bits sekvens R (16) L (16).

Deretter permuteres posisjonene til bitene i denne sekvensen i samsvar med matrisen IP-1 (tabell 2).

Tabell 2: IP -1 omvendt permutasjonsmatrise

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

Matrisene IP -1 og IP er relatert som følger: verdien av det første elementet i IP -1-matrisen er 40, og verdien av det 40. elementet i IP-matrisen er 1, verdien av det 2. element i IP -1-matrisen er 8, og verdien av den åttende elementet i IP-matrisen er lik 2, og så videre.

Datadekrypteringsprosessen er omvendt til krypteringsprosessen. Alle trinn må utføres i omvendt rekkefølge. Dette betyr at de dekrypterte dataene først omorganiseres i henhold til IP-1-matrisen, og deretter utføres de samme handlingene på R (16) L (16) bitsekvensen som i krypteringsprosessen, men i omvendt rekkefølge.

Den iterative dekrypteringsprosessen kan beskrives med følgende formler:

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

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

Ved den 16. iterasjonen oppnås sekvensene L (0) og R (0), som er sammenkoblet til en 64-bits sekvens L (0) R (0).

Bitposisjonene til denne sekvensen blir deretter omorganisert i henhold til IP-matrisen. Resultatet av en slik permutasjon er den opprinnelige 64-bits sekvensen.

Vurder nå krypteringsfunksjonen f (R (i-1), K (i)). Det er vist skjematisk i fig. 3.


Ris. 3.

For å beregne verdien av funksjonen f, brukes følgende matrisefunksjoner:

E - utvidelse av en 32-bits sekvens til 48-bit,

S1, S2, ..., S8 - konvertering av en 6-bits blokk til en 4-bits blokk,

P - permutasjon av biter i en 32-bits sekvens.

Utvidelsesfunksjonen E er definert i tabell. 3. I følge denne tabellen er de første 3 bitene av E (R (i-1)) bitene 32, 1 og 2, og de siste er 31, 32 og 1.

Tabell 3: Utvidelsesfunksjon 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

Resultatet av funksjonen E (R (i-1)) er en 48-bits sekvens, som er lagt til modulo 2 (operasjon xor) med en 48-bits nøkkel K (i). Den resulterende 48-bits sekvensen er delt inn i åtte 6-bits blokker B (1) B (2) B (3) B (4) B (5) B (6) B (7) B (8). Det er:

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

Funksjonene S1, S2, ..., S8 bestemmes av tabell. 4.

Tabell 4

Til bord. 4. Krever ytterligere avklaring. La 6-bits blokken B (j) = b1b2b3b4b5b6 angi inngangen til matrisefunksjonen Sj, så indikerer to-bits nummeret b1b6 radnummeret til matrisen, og b2b3b4b5 er kolonnenummeret. Resultatet av Sj (B (j)) er et 4-bits element plassert i skjæringspunktet mellom den angitte raden og kolonnen.

For eksempel, B (1) = 011011. Da er S1 (B (1)) plassert i skjæringspunktet mellom rad 1 og kolonne 13. Kolonne 13 i rad 1 er satt til 5. Så S1 (011011) = 0101.

Ved å bruke valgoperasjonen på hver av 6-bits blokkene B (1), B (2), ..., B (8), får vi en 32-bits sekvens S1 (B (1)) S2 (B (2) )) S3 (B ( 3))... S8 (B (8)).

Til slutt, for å få resultatet av krypteringsfunksjonen, må bitene i denne sekvensen byttes. Til dette brukes permutasjonsfunksjonen P (tabell 5). I inngangssekvensen byttes bitene slik at bit 16 blir bit 1, bit 7 blir bit 2, og så videre.

Tabell 5: Overføringsfunksjon P

Og dermed,

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

For å fullføre beskrivelsen av datakrypteringsalgoritmen, gjenstår det å gi en algoritme for å oppnå 48-bits nøkler K(i), i = 1 ... 16. Ved hver iterasjon brukes en ny nøkkelverdi K(i), som beregnes ut fra startnøkkelen K. K er en 64-bits blokk med åtte paritetsbiter plassert i posisjonene 8,16,24,32,40,48, 56, 64.

For å fjerne kontrollbitene og permutere resten, brukes funksjonen G for den innledende nøkkelforberedelsen (tabell 6).

Tabell 6

Innledende nøkkelforberedelsesmatrise G

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

Resultatet av transformasjonen G (K) er delt inn i to 28-bits blokker C (0) og D (0), og C (0) vil bestå av bits 57, 49, ..., 44, 36 av nøkkelen K, og D (0) vil bestå av bit 63, 55, ..., 12, 4 av nøkkelen K. Etter å ha definert C (0) og D (0), C (i) og D (i), i = 1 ... 16, er rekursivt bestemt. For å gjøre dette, bruk et syklisk venstreskift med én eller to biter, avhengig av iterasjonsnummeret, som vist i tabellen. 7.

Tabell 7. Skifttabell for beregning av nøkkel

Iterasjonsnummer

Shift (bit)

Den resulterende verdien blir igjen "blandet" i samsvar med matrisen H (tabell 8).

Tabell 8: Nøkkeletterbehandlingsmatrise 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

Nøkkelen K(i) vil bestå av bitene 14, 17, ..., 29, 32 i sekvensen C(i)D(i). Og dermed:

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

Blokkdiagrammet for nøkkelberegningsalgoritmen er vist i fig. 4.

Ris. 4.

Gjenoppretting av originalteksten utføres ved hjelp av denne algoritmen, men først bruker du tasten K (15), deretter K (14), og så videre. Nå skal det være klart for deg hvorfor forfatteren på det sterkeste anbefaler å bruke de gitte matrisene. Hvis du begynner å være selvrettferdig, må du ha mottatt en veldig hemmelig kode, men du kan da ikke avsløre den selv!

Algoritme DES

De viktigste fordelene med DES-algoritmen:

· Bare én nøkkel på 56 biter brukes;

· Etter å ha kryptert en melding med én pakke, kan du bruke hvilken som helst annen for å dekryptere;

· Den relative enkelheten til algoritmen gir en høy hastighet på informasjonsbehandlingen;

· Tilstrekkelig høy robusthet av algoritmen.

DES krypterer 64-bits blokker med data ved hjelp av en 56-bits nøkkel. DES-dekryptering er den omvendte operasjonen av kryptering og utføres ved å gjenta krypteringsoperasjonene i omvendt rekkefølge (til tross for den tilsynelatende selvfølgeligheten, gjøres dette ikke alltid. Senere skal vi ta for oss chiffer der kryptering og dekryptering utføres ved hjelp av forskjellige algoritmer).

Krypteringsprosessen består av en innledende permutering av bitene i en 64-bits blokk, seksten krypteringssykluser, og til slutt en omvendt permutasjon av biter (fig. 1).

Det bør bemerkes med en gang at ALLE tabeller gitt i denne artikkelen er STANDARD, og ​​bør derfor inkluderes i implementeringen av algoritmen uendret. Alle permutasjoner og koder i tabellene ble valgt av utviklerne på en slik måte at dekrypteringsprosessen ble så vanskelig som mulig ved å gjette nøkkelen. Strukturen til DES-algoritmen er vist i fig. 2.

Fig. 2. DES-krypteringsalgoritmestruktur

La neste 8-byte blokk T leses fra filen, som transformeres ved hjelp av IP initial permutasjonsmatrisen (tabell 1) som følger: bit 58 i T blokken blir bit 1, bit 50 blir bit 2 osv., som vil resultere i: T (0) = IP (T).

Den resulterende sekvensen av biter T (0) er delt inn i to sekvenser på 32 biter hver: L (0) - venstre eller mest signifikante biter, R (0) - høyre eller minst signifikante biter.

Tabell 1: IP Initial Permutation Matrix

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

Deretter utføres kryptering, bestående av 16 iterasjoner. Resultatet av den i-te iterasjonen beskrives med følgende formler:

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

hvor xor er EXCLUSIVE OR-operasjonen.

Funksjonen f kalles krypteringsfunksjonen. Argumentene er 32-bits sekvensen R (i-1), oppnådd ved (i-1) iterasjonen, og 48-bits nøkkelen K (i), som er resultatet av transformasjon av 64-bits nøkkelen K. I detalj er krypteringsfunksjonen og algoritmen for å oppnå nøkler K(i) beskrevet nedenfor.

Ved den 16. iterasjonen oppnås sekvensene R (16) og L (16) (uten permutasjon), som er sammenkoblet til en 64-bits sekvens R (16) L (16).

Deretter permuteres posisjonene til bitene i denne sekvensen i samsvar med matrisen IP-1 (tabell 2).

Tabell 2: IP -1 omvendt permutasjonsmatrise

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

Matrisene IP -1 og IP er relatert som følger: verdien av det første elementet i IP -1-matrisen er 40, og verdien av det 40. elementet i IP-matrisen er 1, verdien av det 2. element i IP -1-matrisen er 8, og verdien av den åttende elementet i IP-matrisen er lik 2, og så videre.

Datadekrypteringsprosessen er omvendt til krypteringsprosessen. Alle trinn må utføres i omvendt rekkefølge. Dette betyr at de dekrypterte dataene først omorganiseres i henhold til IP-1-matrisen, og deretter utføres de samme handlingene på R (16) L (16) bitsekvensen som i krypteringsprosessen, men i omvendt rekkefølge.

Den iterative dekrypteringsprosessen kan beskrives med følgende formler:

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

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

Ved den 16. iterasjonen oppnås sekvensene L (0) og R (0), som er sammenkoblet til en 64-bits sekvens L (0) R (0).

Bitposisjonene til denne sekvensen blir deretter omorganisert i henhold til IP-matrisen. Resultatet av en slik permutasjon er den opprinnelige 64-bits sekvensen.

Vurder nå krypteringsfunksjonen f (R (i-1), K (i)). Det er vist skjematisk i fig. 3.


Fig. 3. Beregning av funksjonen f (R (i-1), K (i))

For å beregne verdien av funksjonen f, brukes følgende matrisefunksjoner:

E - utvidelse av en 32-bits sekvens til 48-bit,

S1, S2, ..., S8 - konverter 6-bits blokk til 4-bit,

P - permutasjon av biter i en 32-bits sekvens.

Utvidelsesfunksjonen E er definert i tabell 3. I følge denne tabellen er de første 3 bitene av E (R (i-1)) bitene 32, 1 og 2, og de siste er 31, 32 og 1.

Tabell 3: Utvidelsesfunksjon 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

Resultatet av funksjonen E (R (i-1)) er en 48-bits sekvens, som er lagt til modulo 2 (operasjon xor) med en 48-bits nøkkel K (i). Den resulterende 48-bits sekvensen er delt inn i åtte 6-bits blokker B (1) B (2) B (3) B (4) B (5) B (6) B (7) B (8). Det er:

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

Funksjonene S1, S2, ..., S8 er definert i tabell 4.

Tabell 4

Tabell 4. ytterligere avklaring er nødvendig. La 6-bits blokken B (j) = b1b2b3b4b5b6 angi inngangen til matrisefunksjonen Sj, så indikerer to-bits nummeret b1b6 radnummeret til matrisen, og b2b3b4b5 er kolonnenummeret. Resultatet av Sj (B (j)) er et 4-bits element plassert i skjæringspunktet mellom den angitte raden og kolonnen.

For eksempel, B (1) = 011011. Da er S1 (B (1)) plassert i skjæringspunktet mellom rad 1 og kolonne 13. Kolonne 13 i rad 1 er satt til 5. Så S1 (011011) = 0101.

Ved å bruke valgoperasjonen på hver av 6-bits blokkene B (1), B (2), ..., B (8), får vi en 32-bits sekvens S1 (B (1)) S2 (B (2) )) S3 ( B (3)) ... S8 (B (8)).

Til slutt, for å få resultatet av krypteringsfunksjonen, må bitene i denne sekvensen byttes. Til dette brukes permutasjonsfunksjonen P (tabell 5). I inngangssekvensen byttes bitene slik at bit 16 blir bit 1, bit 7 blir bit 2, og så videre.

Tabell 5: Overføringsfunksjon P

Og dermed,

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

For å fullføre beskrivelsen av datakrypteringsalgoritmen, gjenstår det å gi en algoritme for å oppnå 48-bits nøkler K(i), i = 1 ... 16. Ved hver iterasjon brukes en ny nøkkelverdi K(i), som beregnes ut fra startnøkkelen K. K er en 64-bits blokk med åtte paritetsbiter plassert i posisjonene 8,16,24,32,40,48, 56, 64.

For å fjerne kontrollbitene og permutere resten, brukes funksjonen G for den innledende nøkkelforberedelsen (tabell 6).

Tabell 6

Innledende nøkkelforberedelsesmatrise G

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

Transformasjonsresultatet G (K) er delt inn i to 28-bits blokker C (0) og D (0), og C (0) vil bestå av bit 57, 49, ..., 44, 36 av nøkkelen K, og D (0 ) vil bestå av bits 63, 55, ..., 12, 4 av nøkkelen K. Etter å ha definert C (0) og D (0), C (i) og D (i), i = 1 ... 16, er rekursivt definert. For å gjøre dette, bruk et syklisk venstreskift med én eller to biter, avhengig av iterasjonsnummeret, som vist i tabell 7.

Tabell 7

Skifttabell for beregning av nøkkel

Iterasjonsnummer 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

Den resulterende verdien blir igjen "blandet" i samsvar med matrisen H (tabell 8).

Tabell 8: Nøkkel etterbehandlingsmatrise 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

Nøkkelen K(i) vil bestå av bitene 14, 17, ..., 29, 32 i sekvensen C(i)D(i). Og dermed:

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

Blokkdiagrammet for nøkkelberegningsalgoritmen er vist i fig. 4.

Fig. 4. Blokkdiagram av algoritmen for beregning av nøkkelen K (i)

Gjenoppretting av den opprinnelige teksten utføres ved hjelp av denne algoritmen, men først bruker du nøkkelen

K (15), deretter - K (14) og så videre. Nå skal det være klart for deg hvorfor forfatteren på det sterkeste anbefaler å bruke de gitte matrisene. Hvis du begynner å være selvrettferdig, må du ha mottatt en veldig hemmelig kode, men du kan da ikke avsløre den selv!

DES driftsmoduser

For å fullt ut tilfredsstille alle kravene til kommersielle krypteringssystemer, er flere driftsmåter for DES-algoritmen implementert. De mest utbredte modusene er:

· Elektronisk kodebok (Elektronisk kodebok) - ECB;

Cipher Block Chaining - CBC;

· Digital tilbakemelding (Cipher Feedback) - CFB;

· Ekstern tilbakemelding (Output Feedback) - OFB.

I denne modusen deles kildefilen M i 64-bits blokker (8 byte hver): M = M (1) M (2) ... M (n). Hver av disse blokkene er kryptert uavhengig ved bruk av den samme krypteringsnøkkelen (figur 5). Den største fordelen med denne algoritmen er dens enkle implementering. Ulempen er den relativt svake motstanden mot dyktige kryptoanalytikere.