Versleutelingsschema van het DES-algoritme. Encryptie-algoritmen DES en AES

Het meest voorkomende en bekendste symmetrische versleutelingsalgoritme is DES (Gegevensversleutelingsstandaard). Het algoritme werd ontwikkeld in 1977 en werd in 1980 door NIST (National Institute of Standards and Technology, VS) als standaard aangenomen.

DES is een klassiek Feishtel-netwerk met twee vestigingen. Gegevens worden gecodeerd in 64-bits blokken met behulp van een 56-bits sleutel. Het algoritme zet een 64-bits invoer gedurende meerdere rondes om in een 64-bits uitvoer. De sleutellengte is 56 bits. Het coderingsproces bestaat uit vier fasen. De eerste stap is een initiële permutatie (IP) van de 64-bits brontekst (whitening), waarbij de bits opnieuw worden geordend volgens een standaardtabel. De volgende fase bestaat uit 16 ronden met dezelfde functie, waarbij gebruik wordt gemaakt van de ploegen- en vervangingsoperaties. In de derde fase worden de linker- en rechterhelften van de uitvoer van de laatste (16e) iteratie verwisseld. Ten slotte voert de vierde fase een IP-1-permutatie uit van het resultaat verkregen in de derde fase. De IP-1-permutatie is het omgekeerde van de initiële permutatie.

Afb.4. DES-algoritme

De afbeelding toont een methode die een 56-bits sleutel gebruikt. Aanvankelijk wordt de sleutel geleverd aan de ingang van de permutatiefunctie. Vervolgens is voor elk van de 16 ronden de subsleutel Ki een combinatie van linkse circulaire verschuiving en permutatie. De permutatiefunctie is voor elke ronde hetzelfde, maar de subsleutels Ki voor elke ronde zijn verschillend vanwege het herhaaldelijk verschuiven van de sleutelbits.

De initiële permutatie en de inversie ervan worden bepaald door een standaardtabel. Als M willekeurige 64 bits is, dan is X = IP(M) de opnieuw gerangschikte 64 bits. Als we de inverse permutatiefunctie Y = IP-1 (X) = IP-1 (IP(M)) toepassen, krijgen we de originele bitreeks.

Beschrijving van ronde des

Laten we eens kijken naar de volgorde van de transformaties die in elke ronde worden gebruikt.

Afb.5. Illustratie van een ronde van het DES-algoritme

Een 64-bits invoerblok passeert 16 rondes, waarbij elke iteratie een tussenliggende 64-bits waarde produceert. De linker- en rechterkant van elke tussenwaarde worden behandeld als afzonderlijke 32-bits waarden, aangeduid met L en R. Elke iteratie kan als volgt worden beschreven:

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

De uitvoer van de linkerhelft Li is dus gelijk aan de invoer van de rechterhelft Ri-1. De uitvoer van de rechterhelft van Ri is het resultaat van het toepassen van een XOR-bewerking op Li-1 en een functie F afhankelijk van Ri-1 en Ki.

Laten we functie F in meer detail bekijken. Ri, dat aan de ingang van functie F wordt geleverd, heeft een lengte van 32 bits. Eerst wordt Ri uitgebreid naar 48 bits met behulp van een tabel die de permutatie plus de 16-bits uitbreiding specificeert. De expansie vindt als volgt plaats. 32 bits worden verdeeld in groepen van 4 bits en vervolgens uitgebreid tot 6 bits door de buitenste bits van twee aangrenzende groepen toe te voegen. Bijvoorbeeld als onderdeel van het invoerbericht

Efgh ijkl mnop. . .

dan is het resultaat van de uitbreiding de boodschap

Defghi hijklm lmnopq. . .

De resulterende 48-bits waarde wordt vervolgens XORed met de 48-bits subsleutel Ki. De resulterende 48-bits waarde wordt vervolgens ingevoerd in de substitutiefunctie, wat resulteert in een 32-bits waarde.

Substitutie bestaat uit acht S-boxen, die elk 6 bits als invoer ontvangen en 4 bits als uitvoer produceren. Deze transformaties worden gedefinieerd door speciale tabellen. De eerste en laatste bits van de S-box-ingangswaarde bepalen het rijnummer in de tabel, de middelste 4 bits bepalen het kolomnummer. Het snijpunt van een rij en een kolom bepaalt de 4-bits uitvoer. Als de invoer bijvoorbeeld 011011 is, is het rijnummer 01 (rij 1) en het kolomnummer 1101 (kolom 13). De waarde in rij 1 en kolom 13 is 5, d.w.z. de uitvoer is 0101.

De resulterende 32-bits waarde wordt vervolgens verwerkt met behulp van permutatie P, waarvan het doel is om de bits zoveel mogelijk opnieuw te ordenen, zodat in de volgende versleutelingsronde waarschijnlijk elke bit door een andere S-box wordt verwerkt.

De sleutel voor een individuele ronde Ki bestaat uit 48 bits. Sleutels Ki worden verkregen met behulp van het volgende algoritme. Voor de 56-bits sleutel die als invoer voor het algoritme wordt gebruikt, wordt eerst een permutatie uitgevoerd in overeenstemming met de tabel Permuted Choice 1 (PC-1). De resulterende 56-bits sleutel is verdeeld in twee 28-bits delen, respectievelijk aangeduid als CO en DO. Bij elke ronde worden C i en Di onafhankelijk cyclisch 1 of 2 bits naar links verschoven, afhankelijk van het rondenummer. De resulterende waarden zijn de input voor de volgende ronde. Ze zijn ook de invoer voor Permuted Choice 2 (PC-2), die een 48-bits uitvoerwaarde produceert die de invoer is voor de functie F(R i-1, K i).

Het decoderingsproces is vergelijkbaar met het coderingsproces. De invoer voor het algoritme is cijfertekst, maar de sleutels Ki worden in omgekeerde volgorde gebruikt. K 16 wordt gebruikt in de eerste toer, K 1 wordt gebruikt in de laatste toer. Laat de uitvoer van de i-de encryptieronde Li ||R i zijn. Dan zal de overeenkomstige invoer van de (16-i)-de decoderingsronde R i ||Li zijn.

Na de laatste ronde van het decoderingsproces worden de twee helften van de uitvoer verwisseld, zodat de invoer van de uiteindelijke permutatie IP-1 R 16 ||L 16 is. De uitvoer van deze fase is platte tekst.

Annotatie: Een van de bekendste cryptografische systemen met privésleutels is DES – Data Encryption Standard. Dit systeem kreeg als eerste de status van staatsnorm op het gebied van data-encryptie. En hoewel de oude Amerikaanse standaard DES inmiddels zijn officiële status heeft verloren, verdient dit algoritme nog steeds aandacht bij het bestuderen van cryptografie. In deze lezing wordt ook uitgelegd wat dubbele DES is, een meet-in-the-middle-aanval, en hoe u deze kunt verzachten. In deze lezing wordt ook kort ingegaan op de nieuwe Amerikaanse standaard voor blokcijfers, het Rijndael-algoritme.

Doel van de lezing: de student kennis laten maken met de basisinformatie over het DES-encryptie-algoritme.

Basisprincipes

Een van de bekendste cryptografische systemen met privésleutels is DES – Standaard voor gegevenscodering. Dit systeem kreeg als eerste de status van staatsnorm op het gebied van data-encryptie. Het werd ontwikkeld door IBM-specialisten en werd in 1977 in de VS van kracht. Algoritme DES veel gebruikt bij het opslaan en verzenden van gegevens tussen verschillende computersystemen; in postsystemen, elektronische tekensystemen en elektronische uitwisseling commerciële informatie. Standaard DES zowel softwarematig als hardwarematig geïmplementeerd. Bedrijven uit verschillende landen hebben massaproductie van digitale apparaten gelanceerd DES voor gegevensversleuteling. Alle apparaten zijn verplicht gecertificeerd voor naleving van de norm.

Ondanks dat dit systeem al enige tijd niet meer de status van overheidsstandaard heeft, wordt het nog steeds veel gebruikt en verdient het aandacht bij het bestuderen van blokcijfers met een private sleutel.

Sleutellengte in het algoritme DES bedraagt ​​56 bits. Het is met dit feit dat de belangrijkste controverse over het vermogen om DES verschillende aanvallen weerstaan. Zoals u weet, kan elk blokcijfer met een privésleutel worden gekraakt door alle mogelijke sleutelcombinaties uit te proberen. Met een sleutellengte van 56 bits zijn er 2 56 verschillende sleutels mogelijk. Als een computer in één seconde 1.000.000 sleutels doorzoekt (wat ongeveer gelijk is aan 2 20), dan duurt het 2 36 seconden of iets meer dan tweeduizend jaar om alle 2 56 sleutels te doorzoeken, wat uiteraard onaanvaardbaar is voor aanvallers.

Er zijn echter duurdere en snellere computersystemen mogelijk dan persoonlijke computer. Als het bijvoorbeeld mogelijk is om een ​​miljoen processors te combineren voor parallelle berekeningen, wordt de maximale sleutelselectietijd teruggebracht tot ongeveer 18 uur. Deze tijd is niet te lang, en een cryptanalist die met zulke dure apparatuur is uitgerust, kan gemakkelijk DES-gecodeerde gegevens binnen een redelijke tijd ontcijferen.

Tegelijkertijd kan worden opgemerkt dat het systeem DES Het kan in kleine tot middelgrote toepassingen worden gebruikt om gegevens van weinig waarde te versleutelen. Voor het versleutelen van gegevens van nationaal belang of met een aanzienlijke commerciële waarde kan het systeem DES mag op dit moment uiteraard niet worden gebruikt. In 2001 werd, na een speciaal aangekondigde wedstrijd, in de Verenigde Staten een nieuwe blokcoderingsstandaard aangenomen, genaamd AES (geavanceerde coderingsstandaard), dat was gebaseerd op het cijfer Rijndael, ontwikkeld door Belgische specialisten. Dit cijfer wordt aan het einde van de lezing besproken.

Basisparameters DES: blokgrootte 64 bits, sleutellengte 56 bits, aantal rondes – 16. DES is een klassiek Feishtel-netwerk met twee vestigingen. Het algoritme converteert een 64-bits invoergegevensblok gedurende verschillende rondes naar een 64-bits uitvoerblok. Standaard DES gebouwd op het gecombineerde gebruik van permutatie, substitutie en gamma. De gecodeerde gegevens moeten in binaire vorm zijn.

Encryptie

Algemene structuur DES getoond in afb.

  1. 4.1. Het proces van het coderen van elk 64-bits blok ruwe gegevens kan in drie fasen worden verdeeld:
  2. initiële voorbereiding van een datablok;
  3. 16 ronden van de "hoofdcyclus";

eindverwerking van een datablok. In de eerste fase wordt het uitgevoerd initiële permutatie

64-bits brontekstblok, waarbij de bits op een specifieke manier opnieuw worden gerangschikt. In de volgende (hoofd)fase wordt het blok verdeeld in twee delen (takken) van elk 32 bits. De rechtertak wordt getransformeerd met behulp van een functie F en de bijbehorende, verkregen uit de hoofdcoderingssleutel met behulp van een speciaal sleutelconversie-algoritme. Vervolgens worden gegevens uitgewisseld tussen de linker- en rechtertakken van het blok. Dit wordt in een cyclus 16 keer herhaald.

Ten slotte herschikt de derde fase het resultaat dat is verkregen na zestien stappen van de hoofdlus. Deze permutatie is het omgekeerde van de initiële permutatie.


Rijst. 4.1.

Laten we alle stadia van cryptografische conversie volgens de standaard eens nader bekijken DES.

In de eerste fase ondergaat het 64-bits brondatablok een initiële permutatie. In de literatuur wordt deze operatie ook wel ‘bleken’ genoemd. Tijdens de initiële permutatie worden de bits van het datablok op een bepaalde manier herschikt. Deze operatie voegt wat "chaotisch" toe aan het oorspronkelijke bericht, waardoor de mogelijkheid wordt verkleind om cryptanalyse met behulp van statistische methoden te gebruiken.

Gelijktijdig met de initiële permutatie van het datablok wordt een initiële permutatie van de 56 bits van de sleutel uitgevoerd. Vanaf afb.

4.1. Te zien is dat in elk van de ronden de overeenkomstige 48-bits deelsleutel Ki wordt gebruikt. Sleutels Ki worden verkregen met behulp van een specifiek algoritme, waarbij elk bit van de initiële sleutel meerdere keren wordt gebruikt. In elke ronde wordt de 56-bits sleutel verdeeld in twee 28-bits helften. Afhankelijk van het rondenummer worden de helften vervolgens één of twee bits naar links verschoven. Na de verschuiving worden 48 van de 56 bits op een bepaalde manier geselecteerd. Omdat hiermee niet alleen een subset van bits wordt geselecteerd, maar ook de volgorde ervan verandert, wordt deze bewerking ‘compressiepermutatie’ genoemd. Het resultaat is een set van 48 bits. Gemiddeld wordt elke bit van de oorspronkelijke 56-bits sleutel gebruikt in 14 van de 16 subsleutels, hoewel niet alle bits hetzelfde aantal keren worden gebruikt.


Vervolgens wordt de hoofdtransformatiecyclus uitgevoerd, georganiseerd met behulp van het Feishtel-netwerk en bestaande uit 16 identieke rondes. In dit geval wordt in elke ronde (Fig. 4.2) een tussenliggende 64-bits waarde verkregen, die vervolgens in de volgende ronde wordt verwerkt.

Rijst. 4.2.

Eerst wordt de rechterkant van het blok Ri uitgebreid tot 48 bits met behulp van een tabel die de permutatie plus de uitbreiding met 16 bits specificeert. Deze bewerking stemt de grootte van de rechterhelft af op de grootte van de sleutel om een ​​XOR-bewerking uit te voeren. Bovendien neemt door het uitvoeren van deze handeling de afhankelijkheid van alle bits van het resultaat van de bits van de brondata en de sleutel sneller toe (dit wordt het “lawine-effect” genoemd). Hoe sterker het lawine-effect bij het gebruik van een of ander versleutelingsalgoritme, hoe beter.

Na het uitvoeren van de expansiepermutatie wordt de resulterende 48-bits waarde XORed met de 48-bits subsleutel Ki. Vervolgens wordt de resulterende 48-bits waarde naar de ingang van het substitutieblok S (uit het Engels. Vervanging - vervanging), resultaat wat een 32-bits waarde is. De vervanging wordt uitgevoerd in acht vervangingsblokken of acht S-boxen. Wanneer DES wordt uitgevoerd, ziet het er op papier behoorlijk ingewikkeld uit, laat staan ​​de software-implementatie! Ontwikkel een correct en optimaal werkend programma, volledig in overeenstemming met DES, waarschijnlijk kunnen alleen ervaren programmeurs het doen. Er doen zich enkele problemen voor bij het implementeren van software, bijvoorbeeld initiële permutatie of permutatie met uitbreiding. Deze moeilijkheden houden verband met wat oorspronkelijk gepland was om ten uitvoer te worden gelegd DES alleen hardware. Alle bewerkingen die in de standaard worden gebruikt, kunnen eenvoudig worden uitgevoerd door hardware-eenheden en er doen zich geen implementatieproblemen voor. Enige tijd na de publicatie van de standaard besloten softwareontwikkelaars echter niet aan de kant te blijven staan ​​en ook over te gaan tot het creëren van encryptiesystemen. In de toekomst DES zowel hardware als software geïmplementeerd.

Er zijn meer dan 30 jaar verstreken sinds de adoptie van het DES-algoritme als de Amerikaanse encryptiestandaard. DES is een versleutelingsalgoritme met de rijkste en interessantste geschiedenis.

Geschiedenis van de creatie van het algoritme

Een van de beroemdste cryptologen ter wereld, Bruce Schneier, beschreef begin jaren zeventig in zijn beroemde boek ‘Applied Cryptography’ de problemen van gebruikers van informatiebeveiligingstools. XX eeuw (uiteraard hebben we het over gebruikers aan de andere kant van het IJzeren Gordijn):

Er bestond geen algemeen aanvaarde standaard voor gegevensversleuteling, noch eenvoudigweg veelgebruikte, dus compatibiliteit tussen verschillende software- of hardware-versleutelingstools was uitgesloten;

Bijna elk versleutelingshulpmiddel was een ‘black box’ met nogal onduidelijke inhoud: welk versleutelingsalgoritme wordt gebruikt, hoe cryptografisch sterk het is, of het correct is geïmplementeerd, of versleutelingssleutels correct worden aangemaakt, opgeslagen en gebruikt, of het hulpprogramma ongedocumenteerde gegevens bevat. mogelijkheden toegevoegd door ontwikkelaars en dergelijke - al deze zeer belangrijke informatie was niet toegankelijk voor de overgrote meerderheid van de kopers van cryptografische fondsen.

Het National Bureau of Standards (NBS) van de VS maakte zich zorgen over dit probleem. Als gevolg hiervan werd in 1973 de allereerste open competitie voor een encryptiestandaard aangekondigd. NBS was bereid kandidaat-algoritmen te onderzoeken die aan de volgende criteria voldeden om zo een standaard te selecteren:

Het algoritme moet cryptografisch sterk zijn;

Het algoritme moet snel zijn;

De structuur van het algoritme moet duidelijk en nauwkeurig zijn;

De kracht van encryptie mag alleen afhangen van de sleutel; het algoritme zelf mag niet geheim zijn;

Het algoritme moet eenvoudig toepasbaar zijn voor verschillende doeleinden;

Het algoritme moet eenvoudig in hardware worden geïmplementeerd met behulp van bestaande hardwarecomponenten.

Er werd aangenomen dat geïnteresseerde organisaties of specialisten gedetailleerde specificaties van algoritmen naar de NBS zouden sturen die voldoende waren voor de implementatie ervan, dat wil zeggen zonder enige ‘blinde vlekken’. Ook werd ervan uitgegaan dat het algoritme door de NBS zou worden gecertificeerd voor algemeen gebruik en dat alle patent- en exportbeperkingen eruit zouden worden gehaald, waardoor een dergelijke standaard alle enzou moeten oplossen. Bovendien nam NBS de functies op zich van het certificeren van encryptietools – dat wil zeggen dat “zwarte dozen” tot het verleden hadden moeten behoren.

In feite was er maar één kandidaat-algoritme: het Lucifer-coderingsalgoritme ontwikkeld door ShM (zie paragraaf 3.31). In de loop van twee jaar werd het algoritme verfijnd:

Ten eerste heeft NBS, samen met de National Security Agency (NSA, National Security Agency) van de Verenigde Staten, een grondige analyse van het algoritme uitgevoerd, wat resulteerde in een vrij ingrijpende herziening ervan;

Ten tweede werd rekening gehouden met de opmerkingen en kritiek van alle geïnteresseerde organisaties en individuen.

Als resultaat van gezamenlijke inspanningen van IBM, NBS en de NSA werd DES in januari 1977 gepubliceerd als een Amerikaanse standaard (de nieuwste versie van deze standaard staat in het document) voor een algoritme voor gegevenscodering (behalve voor zeer gevoelige informatie). Het DES-algoritme was gepatenteerd door YuM, maar NBS kreeg in feite een gratis en onbeperkte licentie om dit algoritme te gebruiken. Een alternatieve, maar minder vaak gebruikte naam voor het algoritme is DEA (Data Encryption Algorithm).

Belangrijkste kenmerken en structuur van het algoritme

Het DES-algoritme codeert informatie in blokken van 64 bits met behulp van een 64-bits coderingssleutel die slechts 56 bits gebruikt (de sleuteluitbreidingsprocedure wordt hieronder in detail beschreven).

Het coderen van informatie wordt als volgt uitgevoerd (Fig. 3.56):

1. Er wordt een initiële permutatie uitgevoerd op een 64-bits datablok volgens de tabel. 3.16.

Tabel 3.16

De tabel wordt als volgt geïnterpreteerd: de waarde van ingangsbit 58 (hierna zijn alle bits genummerd van links naar rechts, beginnend bij 1) wordt in uitgangsbit 1 geplaatst, de waarde van bit 50 wordt in bit 2 geplaatst, enz.



2. Het resultaat van de vorige bewerking wordt verdeeld in 2 subblokken van elk 32 bits (per

rijst. 3.56 gemarkeerd Een 0 en B 0), waarover 16 rondes worden uitgevoerd

de volgende transformaties:

Zoals hierboven vermeld, gebruikt het DES-algoritme van een 64-bits coderingssleutel slechts 56 bits. Elke 8e bit wordt weggegooid en wordt op geen enkele manier gebruikt in het algoritme, en het gebruik van de resterende bits van de encryptiesleutel in implementaties van het DES-algoritme wordt op geen enkele manier beperkt door de standaard. De procedure voor het extraheren van de 56 significante bits van een 64-bits sleutel in Fig. 3.59 wordt aangeduid als E. Naast extractie voert deze procedure ook een herschikking van de sleutelbits uit volgens Tabel. 3.19 en 3.20.


Tabel 3.19

Tabel 3.20


Als resultaat van de permutatie worden twee 28-bits waarden C en D gevormd. Tabel 3.19 definieert de selectie van sleutelbits voor C, tabel. 3,20 - voor D.

Vervolgens worden er 16 transformatieronden uitgevoerd, die elk één van de ronde sleutels Kt opleveren. In elke ronde van de sleuteluitbreidingsprocedure worden de volgende acties uitgevoerd:

1. Huidige waarden van C en D cyclisch naar links verschoven met een variabel aantal bits P. Voor rondes 1, 2, 9 en 16 N= 1, in de resterende rondes wordt een cyclische verschuiving van 2 bits uitgevoerd.

2. C en D worden gecombineerd tot een waarde van 56 bits, waarop de compressiepermutatie CP wordt toegepast, waarvan het resultaat een ronde sleutel K van 48 bits is. De compressiepermutatie wordt uitgevoerd volgens Tabel 3.21.

Tabel 3.21

Bij het ontsleutelen van gegevens kunt u dezelfde sleuteluitbreidingsprocedure gebruiken, maar dan de ronde sleutels in omgekeerde volgorde toepassen. Er is nog een andere optie: voer in elke ronde van de sleuteluitbreidingsprocedure, in plaats van een cyclische verschuiving naar links, een cyclische verschuiving naar rechts uit met n bits, waarbij rc' = 0 voor de eerste ronde, u' = 1 voor rondes 2, 9, 16 en n = 2 voor de overige ronden. Deze sleuteluitbreidingsprocedure levert onmiddellijk de ronde sleutels op die nodig zijn voor decodering.

Het is de moeite waard om te zeggen dat de mogelijkheid om sleuteluitbreiding ‘on the fly’ uit te voeren (vooral als deze mogelijkheid zowel tijdens codering als decodering bestaat) als een voordeel van coderingsalgoritmen wordt beschouwd, omdat in dit geval de sleuteluitbreiding parallel met codering kan worden uitgevoerd. en geen geheugen verspillen aan het opslaan van de sleutels van andere rondes dan de huidige.

  • Handleiding

Hallo %gebruikersnaam%!
Veel mensen weten dat het DES-algoritme lange tijd werd beschouwd als de standaardstandaard op het gebied van symmetrische encryptie. De eerste succesvolle aanval op dit niet te doden algoritme werd gepubliceerd in 1993, 16 jaar nadat het als standaard werd aangenomen. De methode, die de auteur lineaire cryptanalyse noemde, maakt het, in de aanwezigheid van 247 platte/cijferige tekstparen, mogelijk om de geheime sleutel van het DES-cijfer in 243 bewerkingen te openen.
Onder de snede zal ik proberen de belangrijkste punten van deze aanval kort te schetsen.

Lineaire cryptanalyse

Lineaire cryptanalyse is een speciaal soort aanval op symmetrische cijfers, gericht op het achterhalen van een onbekende coderingssleutel uit bekende gewone berichten en de bijbehorende cijferteksten.

Over het algemeen komt een aanval op basis van lineaire cryptanalyse neer op de volgende voorwaarden. De aanvaller beschikt over een groot aantal paren platte tekst/cijfertekst die zijn verkregen met dezelfde coderingssleutel K. Het doel van de aanvaller is om de sleutel K geheel of gedeeltelijk te herstellen.

Allereerst onderzoekt de aanvaller het cijfer en vindt het zogenaamde statistische analoog, d.w.z. een vergelijking met de volgende vorm, die geldt met waarschijnlijkheid P ≠ 1/2 voor een willekeurig publiek/privaat tekstpaar en een vaste sleutel:
P I1 ⊕ P I2 ⊕… ⊕ P Ia ⊕ C I1 ⊕ C I2 ⊕… ⊕ C Ib = K I1 ⊕ K I2 ⊕… ⊕ K Ic (1) ,
waarbij Pn, Cn, Kn de n-de bits van de tekst, cijfertekst en sleutel zijn.
Zodra een dergelijke vergelijking is gevonden, kan de aanvaller 1 bit aan sleutelinformatie herstellen met behulp van het volgende algoritme

Algoritme 1
Laat T dan het aantal teksten zijn waarvoor de linkerkant van vergelijking (1) gelijk is aan 0
Als T>N/2, waarbij N het aantal bekende leesbare teksten is.
Neem aan dat K I1 ⊕ K I2 ⊕… ⊕ K Ic = 0 (als P>1/2) of 1 (als P<1/2).
Anders
Neem aan dat K I1 ⊕ K I2 ⊕… ⊕ K Ic = 1 (als P>1/2) of 0 (als P<1/2).
Het is duidelijk dat het succes van het algoritme rechtstreeks afhangt van de waarde van |P-1/2| en op het aantal beschikbare open/gesloten tekstparen N. Hoe meer de waarschijnlijkheid P van gelijkheid (1) verschilt van 1/2, des te minder aantal open teksten N nodig is voor de aanval.

Er zijn twee problemen die moeten worden opgelost om de aanval te laten slagen:

  • Hoe een effectieve vergelijking van de vorm (1) te vinden.
  • Hoe deze vergelijking te gebruiken om meer dan één stukje informatie over de sleutel te krijgen.
Laten we de oplossing voor deze problemen bekijken met behulp van de DES-codering als voorbeeld.

Beschrijving van DES

Maar laten we eerst kort beschrijven hoe het algoritme werkt. Er is al genoeg gezegd over DES. Een volledige beschrijving van het cijfer is te vinden op Wikipedia. Om de aanval verder uit te leggen hebben we echter een aantal definities nodig die het beste vooraf kunnen worden geïntroduceerd.

DES is dus een blokcijfer gebaseerd op het Feistel-netwerk. Het cijfer heeft een blokgrootte van 64 bits en een sleutelgrootte van 56 bits. Laten we eens kijken naar het versleutelingsschema van het DES-algoritme.

Zoals uit de afbeelding blijkt, worden bij het coderen van tekst de volgende bewerkingen uitgevoerd:

  1. Initiële bitpermutatie. In dit stadium worden de bits van het invoerblok in een bepaalde volgorde geschud.
  2. Hierna worden de gemengde bits in twee helften gesplitst, die naar de ingang van de Feistel-functie worden gevoerd. Voor standaard DES omvat het Feistel-netwerk 16 ronden, maar er bestaan ​​ook andere varianten van het algoritme.
  3. De twee blokken die in de laatste transformatieronde zijn verkregen, worden gecombineerd en er wordt een nieuwe permutatie uitgevoerd op het resulterende blok.

In elke ronde van het Feistel-netwerk worden de minst significante 32 bits van het bericht via de functie f doorgegeven:

Laten we eens kijken naar de bewerkingen die in dit stadium worden uitgevoerd:

  1. Het invoerblok wordt doorgegeven via de uitbreidingsfunctie E, die een blok van 32 bits omzet in een blok van 48 bits.
  2. Het resulterende blok wordt toegevoegd aan de ronde sleutel Ki.
  3. Het resultaat van de vorige stap wordt verdeeld in 8 blokken van elk 6 bits.
  4. Elk van de ontvangen blokken Bi wordt door de substitutiefunctie S-Boxi gevoerd, die de reeks van 6 bits vervangt door een blok van 4 bits.
  5. Het resulterende 32-bits blok wordt door de permutatie P geleid en geretourneerd als resultaat van functie f.

Van het grootste belang voor ons vanuit het oogpunt van cijfercryptanalyse zijn S-blokken, ontworpen om de verbinding tussen de invoer- en uitvoergegevens van de functie f te verbergen. Om DES succesvol aan te vallen, zullen we eerst statistische analogen construeren voor elk van de S-boxen, en deze vervolgens uitbreiden naar het gehele cijfer.

S-blokanalyse

Elke S-box neemt een reeks van 6 bits als invoer, en voor elke reeks wordt een vaste waarde van 4 bits geretourneerd. Die. er zijn in totaal 64 invoer- en uitvoeropties. Onze taak is om de relatie tussen de invoer- en uitvoergegevens van S-blokken te tonen. Voor de derde S-box van het DES-cijfer is het derde bit van de invoerreeks bijvoorbeeld in 38 van de 64 gevallen gelijk aan het derde bit van de uitvoerreeks. Daarom hebben we de volgende statistische analoog gevonden voor de derde S -doos:
S 3 (x) = x, waaraan wordt voldaan met waarschijnlijkheid P=38/64.
Beide zijden van de vergelijking vertegenwoordigen 1 bit informatie. Als de linker- en rechterkant onafhankelijk van elkaar zouden zijn, zou de vergelijking dus tevreden moeten zijn met een waarschijnlijkheid van 1/2. We hebben dus zojuist de relatie aangetoond tussen de invoer en uitvoer van de derde S-box van het DES-algoritme.

Laten we eens kijken hoe we in het algemene geval een statistische analoog van de S-box kunnen vinden.

Voor een S-box Sa, 1 ≤ α ≤ 63 en 1 ≤ β ≤ 15, beschrijft de waarde NS a (α, β) hoe vaak van de 64 mogelijke XOR-invoerbits Sa gesuperponeerd op de α-bits gelijk zijn aan de XOR-uitvoerbits gesuperponeerd op de α-bits β, dat wil zeggen:
waarbij het symbool logisch AND is.
De waarden van α en β waarvoor NS a (α, β) het meest verschilt van 32 beschrijven de meest efficiënte statistische analoog van de S-box Sa.

De meest effectieve analoog werd gevonden in de 5e S-box van het DES-cijfer voor α = 16 en β = 15 NS 5 (16, 15) = 12. Dit betekent dat de volgende vergelijking geldt: Z=Y ⊕ Y ⊕ Y ⊕ Y, waarbij Z de invoerreeks van de S-box is en Y de uitvoerreeks.
Of rekening houdend met het feit dat in het DES-algoritme, voordat de S-box wordt ingevoerd, de gegevens modulo 2 worden opgeteld met een ronde sleutel, d.w.z. Z = X ⊕ K krijgen we
X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, waarbij X en Y de invoer- en uitvoergegevens zijn van de functie f zonder rekening te houden met permutaties.
De resulterende vergelijking wordt uitgevoerd in alle ronden van het DES-algoritme met dezelfde waarschijnlijkheid P = 12/64.
De volgende tabel toont een lijst met effectieve, d.w.z. met de grootste afwijking van P=1/2, statistische analogen voor elk s-blok van het DES-algoritme.

Statistische analogen construeren voor meerdere DES-rondes

Laten we nu laten zien hoe we de statistische analogen van verschillende DES-ronden kunnen combineren en uiteindelijk een statistische analoog voor het hele cijfer kunnen verkrijgen.
Om dit te doen, overweeg een drierondeversie van het algoritme:

Laten we een efficiënte statistische analoog van de 5e s-box gebruiken om bepaalde bits van de X(2)-waarde te berekenen.
We weten dat met waarschijnlijkheid 12/64 de gelijkheid geldt in de f-functie X ⊕ Y ⊕ Y ⊕ Y ⊕ Y = K, waar X het tweede invoerbit van de 5e S-box is, is dit in wezen het 26e bit van de reeks die wordt verkregen na het uitbreiden van de invoerbits. Door de uitbreidingsfunctie te analyseren, kunnen we vaststellen dat het 26e bit wordt vervangen door het 17e bit van de X(1)-reeks.
Op dezelfde manier zijn Y,..., Y in wezen de 17e, 18e, 19e en 20e bits van de reeks verkregen vóór de permutatie P. Als we de permutatie P onderzoeken, ontdekken we dat de bits Y,..., Y feitelijk bits Y zijn (1), Y(1), Y(1), Y(1).
Het sleutelbit K dat bij de vergelijkingen betrokken is, is het 26e bit van de subsleutel K1 van de eerste ronde, waarna de statistische analoog de volgende vorm aanneemt:
X(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y1 ⊕ Y(1) = K1.
Vandaar, X(1) ⊕ K1 = Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1)(2) met waarschijnlijkheid P=12/64.
Als je 3, 8, 14, 25 bits van de reeks Y(1) kent, kun je 3, 8, 14, 25 bits van de reeks X(2) vinden:
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) ⊕ Y(1) of rekening houdend met vergelijking (2)
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 (3) met een waarschijnlijkheid van 12/64.

Laten we een soortgelijke uitdrukking vinden met behulp van de laatste ronde. Deze keer hebben we de vergelijking
X(3) ⊕ K3 = Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3).
Omdat
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ Y(3) ⊕ Y(3) ⊕ Y(3) ⊕ Y(3)
wij snappen dat
X(2) ⊕ X(2) ⊕ X(2) ⊕ X(2) = CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3(4) met een waarschijnlijkheid van 12/64.

Door de rechterkant van de vergelijkingen (3) en (4) gelijk te stellen, verkrijgen we
CL ⊕ CL ⊕ CL ⊕ CL ⊕ X(3) ⊕ K3 = PL ⊕ PL ⊕ PL ⊕ PL ⊕ X(1) ⊕ K1 met waarschijnlijkheid (12/64) 2 +(1-12/64) 2.
Rekening houdend met het feit dat X(1) = PR en X(3) = CR verkrijgen we een statistische analoog
СL ⊕ CR ⊕ PL ⊕ PR = K1 ⊕ K3 (5) ,
die wordt uitgevoerd met waarschijnlijkheid (12/64) 2 + (1-12/64) 2 =0,7.
De hierboven beschreven statistische analoog kan als volgt grafisch worden weergegeven (bits in de figuur zijn genummerd van rechts naar links en beginnend bij nul):

Alle bits aan de linkerkant van de vergelijking zijn bekend bij de aanvaller, dus hij kan algoritme 1 toepassen en de waarde van K1 ⊕ K3 achterhalen. Laten we laten zien hoe u met behulp van deze statistische analoog niet 1, maar 12 bits van de coderingssleutel K kunt openen.

Aanval op DES met bekende platte tekst

Laten we een methode presenteren waarmee u de aanval kunt uitbreiden en onmiddellijk 6 bits van de eerste ronde connect kunt verkrijgen.
Bij het opstellen van vergelijking (5) hebben we rekening gehouden met het feit dat we de waarde van F1(PR, K1) niet kennen. Daarom hebben we de statistische analoog K1 ⊕ PR gebruikt.
Laten we de waarde F1(PR, K1) retourneren in plaats van de uitdrukking K1 ⊕ PR en de volgende vergelijking verkrijgen:
СL ⊕ CR ⊕ PL ⊕ F1(PR, K1) = K3 (6) , die zal worden uitgevoerd met waarschijnlijkheid 12/64. De waarschijnlijkheid is veranderd sinds we alleen de statistische analoog uit de derde ronde hebben achtergelaten, alle andere waarden staan ​​vast.

We hebben hierboven al vastgesteld dat de waarde van F1(PR, K1) wordt beïnvloed door de ingangsbits van de 5e S-box, namelijk de sleutelbits K1 en de bits van het PR-blok. Laten we laten zien hoe u, met slechts een set open/gesloten teksten, de waarde van K1 kunt herstellen. Om dit te doen, zullen we algoritme 2 gebruiken.

Algoritme 2
Laat N het aantal open/gesloten tekstparen zijn dat bekend was vóór de aanval. Om vervolgens de sleutel te openen, moet u de volgende stappen uitvoeren.
Voor (i=0; ik<64; i++) do
{
Voor(j=0; j {
als(СL j ⊕ CR j ⊕ PL j ⊕ F1(PR j , i)=0) dan
T ik =T ik +1
}
}
Als een waarschijnlijke reeks K1 wordt een waarde van i genomen zodat de uitdrukking |T i -N/2| heeft de maximale waarde.

Gegeven een voldoende aantal bekende leesbare teksten, zal het algoritme een grote waarschijnlijkheid hebben om de juiste waarde van de zes bits van de eerste ronde subsleutel K1 terug te geven. Dit wordt verklaard door het feit dat als de variabele i niet gelijk is aan K1, de waarde van de functie F1(PR j, K) willekeurig zal zijn en het aantal vergelijkingen voor een dergelijke waarde van i waarvoor de linkerkant gelijk is gelijk aan nul zal neigen naar N/2. Als de subsleutel correct wordt geraden, is de linkerkant gelijk aan het vaste bit K3 met een waarschijnlijkheid van 12/64. Die. er zal een significante afwijking zijn van N/2.

Nadat u 6 bits van subsleutel K1 heeft ontvangen, kunt u op dezelfde manier 6 bits van subsleutel K3 openen. Het enige wat u hoeft te doen is C vervangen door P en K1 door K3 in vergelijking (6):
PL ⊕ PR ⊕ CL ⊕ F3(CR, K3) = K1.
Algoritme 2 retourneert de juiste K3-waarde omdat het decoderingsproces van het DES-algoritme identiek is aan het coderingsproces, alleen de sleutelreeks is omgekeerd. Dus in de eerste decoderingsronde wordt de sleutel K3 gebruikt, en in de laatste ronde wordt de sleutel K1 gebruikt.

Nadat de aanvaller 6 bits van de subsleutels K1 en K3 heeft ontvangen, herstelt hij 12 bits van de gemeenschappelijke sleutel van het cijfer K, omdat ronde sleutels zijn de gebruikelijke permutatie van de sleutel K. Het aantal leesbare teksten dat nodig is voor een succesvolle aanval hangt af van de waarschijnlijkheid van de statistische analoog. Om een ​​12-bits DES-sleutel met drie rondes te kraken, zijn 100 openbare/private tekstparen voldoende. Om 12 bits van een 16-ronde DES-sleutel te openen, zijn ongeveer 244 tekstparen nodig. De resterende 44 bits van de sleutel worden geopend met normaal brute kracht.

Algoritme DES

De belangrijkste voordelen van het DES-algoritme:

· er wordt slechts één sleutel met een lengte van 56 bits gebruikt;

· nadat u een bericht met één pakket hebt gecodeerd, kunt u elk ander pakket gebruiken om het te decoderen;

· de relatieve eenvoud van het algoritme zorgt voor een hoge snelheid van informatieverwerking;

· voldoende hoge stabiliteit van het algoritme.

DES codeert 64-bits gegevensblokken met behulp van een 56-bits sleutel. Decodering in DES is de omgekeerde bewerking van codering en wordt uitgevoerd door de coderingsbewerkingen in omgekeerde volgorde te herhalen (ondanks de schijnbare voor de hand liggende wordt dit niet altijd gedaan. Later zullen we kijken naar cijfers waarin codering en decodering worden uitgevoerd met behulp van verschillende algoritmen).

Het versleutelingsproces bestaat uit een initiële permutatie van de bits van een blok van 64 bits, zestien versleutelingscycli en tenslotte een omgekeerde permutatie van de bits (Fig. 1).

Er moet onmiddellijk worden opgemerkt dat ALLE tabellen in dit artikel STANDAARD zijn en daarom ongewijzigd in uw implementatie van het algoritme moeten worden opgenomen. Alle permutaties en codes in de tabellen worden door de ontwikkelaars zo geselecteerd dat het decoderingsproces zo moeilijk mogelijk wordt gemaakt door het selecteren van een sleutel. De structuur van het DES-algoritme wordt getoond in figuur 2.

Afb.2. Structuur van het DES-coderingsalgoritme

Laat het volgende blok T van 8 bytes als volgt uit het bestand worden gelezen, dat als volgt wordt getransformeerd met behulp van de initiële permutatiematrix IP (Tabel 1): bit 58 van blok T wordt bit 1, bit 50 wordt bit 2, enz., waardoor geef het resultaat: T(0) = IP(T).

De resulterende bitreeks T(0) wordt verdeeld in twee reeksen van elk 32 bits: L(0) - linker- of hoge-orde bits, R(0) - rechter- of lage-orde bits.

Tabel 1: IP-initiële permutatiematrix

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

Vervolgens wordt encryptie uitgevoerd, bestaande uit 16 iteraties. Het resultaat van de i-de iteratie wordt beschreven door de volgende formules:

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

waarbij xor de EXCLUSIEVE OF-bewerking is.

De functie f wordt de encryptiefunctie genoemd. De argumenten zijn de 32-bits reeks R(i-1), verkregen bij de (i-1)th iteratie, en de 48-bits sleutel K(i), die het resultaat is van het converteren van de 64-bits sleutel K. In detail worden hieronder de encryptiefunctie en het algoritme voor het verkrijgen van sleutels K(i) beschreven.

Bij de 16e iteratie worden de reeksen R(16) en L(16) (zonder permutatie) verkregen, die worden samengevoegd tot een 64-bits reeks R(16)L(16).

Vervolgens worden de posities van de bits van deze reeks opnieuw gerangschikt in overeenstemming met de matrix IP-1 (Tabel 2).

Tabel 2: Inverse permutatiematrix IP -1

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

De IP -1- en IP-matrices zijn als volgt gerelateerd: de waarde van het 1e element van de IP -1-matrix is ​​40, en de waarde van het 40e element van de IP-matrix is ​​1, de waarde van de 2e element van de IP -1-matrix is ​​8, en de waarde van het 8e IP-matrixelement is gelijk aan 2, enz.

Het proces van gegevensdecodering is omgekeerd aan het coderingsproces. Alle stappen moeten in omgekeerde volgorde worden uitgevoerd. Dit betekent dat de gedecodeerde gegevens eerst opnieuw worden gerangschikt volgens de IP-1-matrix, en vervolgens dezelfde acties worden uitgevoerd op de reeks bits R(16)L(16) als bij het coderingsproces, maar in omgekeerde volgorde.

Het iteratieve decoderingsproces kan worden beschreven met de volgende formules:

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

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

Bij de 16e iteratie worden de reeksen L(0) en R(0) verkregen, die worden samengevoegd tot een 64-bits reeks L(0)R(0).

De bitposities van deze reeks worden vervolgens opnieuw gerangschikt volgens de IP-matrix. Het resultaat van een dergelijke permutatie is de oorspronkelijke 64-bits reeks.

Beschouw nu de encryptiefunctie f(R(i-1),K(i)). Het is schematisch weergegeven in Fig. 3.


Afb.3. Berekening van functie f(R(i-1), K(i))

Om de waarde van de functie f te berekenen, worden de volgende matrixfuncties gebruikt:

E - uitbreiding van een reeks van 32 bits naar 48 bits,

S1, S2, ..., S8 - conversie van een 6-bits blok naar een 4-bits blok,

P - permutatie van bits in een reeks van 32 bits.

De expansiefunctie E is gedefinieerd in Tabel 3. Volgens deze tabel zijn de eerste 3 bits van E(R(i-1)) bits 32, 1 en 2, en de laatste 31, 32 en 1.

Tabel 3: Uitbreidingsfunctie 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

Het resultaat van de functie E(R(i-1)) is een reeks van 48 bits die modulo 2 (xor-bewerking) wordt opgeteld met de 48-bits sleutel K(i). De resulterende reeks van 48 bits wordt verdeeld in acht blokken van 6 bits B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8). Dat is:

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

De functies S1, S2, ..., S8 zijn gedefinieerd in Tabel 4.

Tabel 4

Naar Tabel 4. verdere verduidelijking is vereist. Stel dat de invoer van de matrixfunctie Sj een 6-bits blok B(j) = b1b2b3b4b5b6 is, dan geeft het twee-bits getal b1b6 het rijnummer van de matrix aan, en b2b3b4b5 het kolomnummer. Het resultaat van Sj(B(j)) zal een 4-bits element zijn dat zich op het snijpunt van de gespecificeerde rij en kolom bevindt.

Bijvoorbeeld B(1)=011011. Dan bevindt S1(B(1)) zich op het snijpunt van rij 1 en kolom 13. In kolom 13 van rij 1 is de waarde 5. Dit betekent S1(011011)=0101.

Door de selectiebewerking toe te passen op elk van de 6-bits blokken B(1), B(2), ..., B(8), verkrijgen we de 32-bits reeks S1(B(1))S2(B(2) ))S3(B(3))...S8(B(8)).

Ten slotte moeten, om het resultaat van de encryptiefunctie te verkrijgen, de bits van deze reeks opnieuw worden gerangschikt. Voor dit doel wordt de permutatiefunctie P gebruikt (Tabel 5). In de invoerreeks worden de bits opnieuw gerangschikt, zodat bit 16 bit 1 wordt, bit 7 bit 2, enzovoort.

Tabel 5: Permutatiefunctie P

Dus,

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

Om de beschrijving van het gegevenscoderingsalgoritme te voltooien, moet nog het algoritme worden gepresenteerd voor het verkrijgen van 48-bits sleutels K(i), i=1...16. Bij elke iteratie wordt een nieuwe sleutelwaarde K(i) gebruikt, die wordt berekend op basis van de initiële sleutel K. K is een 64-bits blok met acht pariteitsbits op posities 8,16,24,32,40,48, 56. 64.

Om controlebits te verwijderen en de rest opnieuw te rangschikken, wordt functie G van de initiële toetsvoorbereiding gebruikt (Tabel 6).

Tabel 6

Matrix G van initiële toetsvoorbereiding

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

Het resultaat van de transformatie G(K) wordt verdeeld in twee 28-bits blokken C(0) en D(0), en C(0) zal bestaan ​​uit de bits 57, 49, ..., 44, 36 van de sleutel K, en D(0 ) zullen bestaan ​​uit bits 63, 55, ..., 12, 4 van sleutel K. Na het definiëren van C(0) en D(0), C(i) en D(i), i= 1...16, worden recursief bepaald. Om dit te doen, past u een cyclische verschuiving naar links toe met één of twee bits, afhankelijk van het iteratienummer, zoals weergegeven in Tabel 7.

Tabel 7

Shift-tabel voor sleutelberekening

Iteratienummer Verschuiving (bits)
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

De resulterende waarde wordt opnieuw “gemengd” volgens de matrix H (Tabel 8).

Tabel 8: Sleutelinvulmatrix 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

De sleutel K(i) zal bestaan ​​uit de bits 14, 17, ..., 29, 32 van de reeks C(i)D(i). Dus:

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

Het blokdiagram van het sleutelberekeningsalgoritme wordt getoond in figuur 4.

Afb.4. Blokdiagram van het algoritme voor het berekenen van de sleutel K(i)

Het herstellen van de originele tekst wordt uitgevoerd met behulp van dit algoritme, maar eerst gebruikt u de sleutel

K(15), dan K(14) enzovoort. Nu zou je moeten begrijpen waarom de auteur met klem aanbeveelt om de gegeven matrices te gebruiken. Als je roekeloos gaat, kun je eindigen met een zeer geheime code, maar je kunt deze niet zelf kraken!

Bedrijfsmodi van het DES-algoritme

Om zo goed mogelijk aan alle vereisten voor commerciële encryptiesystemen te voldoen, zijn verschillende werkingsmodi van het DES-algoritme geïmplementeerd. De meest gebruikte modi zijn:

· elektronisch codeboek (Electronic Codebook) - ECB;

· keten van digitale blokken (Cipher Block Chaining) - CBC;

· digitale feedback (Cipher Feedback) - CFB;

· externe feedback (uitgangsfeedback) - OFB.

In deze modus wordt het bronbestand M verdeeld in blokken van 64 bits (elk 8 bytes): M = M(1)M(2)...M(n). Elk van deze blokken wordt onafhankelijk gecodeerd met dezelfde coderingssleutel (Fig. 5). Het belangrijkste voordeel van dit algoritme is het gemak van implementatie. Het nadeel is dat het relatief zwak is tegen ervaren cryptanalisten.