Cryptografie lessen. Moderne blokcijfers. Cyberbeveiligingsdefinities en snelstartgids. Encryptie met publieke sleutel

Sergej Panasenko,
hoofd van de ontwikkelingsafdeling software bedrijf "Ankad"
[e-mailadres beveiligd]

Basisconcepten

Het proces van het omzetten van open data in gecodeerde gegevens en vice versa wordt gewoonlijk encryptie genoemd, en de twee componenten van dit proces worden respectievelijk encryptie en decryptie genoemd. Wiskundig wordt deze transformatie weergegeven de volgende afhankelijkheden, waarbij acties worden beschreven met initiële informatie:

C = Ek1(M)

M" = Dk2(C),

waar M (bericht) - open informatie(in vaak “brontekst” genoemd);
C (cijfertekst) - de cijfertekst (of cryptogram) verkregen als resultaat van codering;
E (codering) - een coderingsfunctie die cryptografische transformaties op de brontekst uitvoert;
k1 (sleutel) - parameter van functie E, de coderingssleutel genoemd;
M" - informatie verkregen als resultaat van decodering;
D (decodering) - decoderingsfunctie die inverse cryptografische transformaties op de cijfertekst uitvoert;
k2 is de sleutel die wordt gebruikt om informatie te decoderen.

Het concept van “sleutel” in de GOST 28147-89-standaard (symmetrisch encryptie-algoritme) wordt als volgt gedefinieerd: “een specifieke geheime status van enkele parameters van het cryptografische transformatie-algoritme, die de selectie van één transformatie uit een reeks mogelijke transformaties garandeert van dit algoritme transformaties". Met andere woorden: de sleutel is een uniek element waarmee je de resultaten van het versleutelingsalgoritme kunt wijzigen: dezelfde brontekst bij gebruik verschillende sleutels wordt anders gecodeerd.

Om ervoor te zorgen dat het decoderingsresultaat overeenkomt met het originele bericht (dat wil zeggen, voor M" = M), moet er tegelijkertijd aan twee voorwaarden worden voldaan. Ten eerste moet de decoderingsfunctie D overeenkomen met de coderingsfunctie E. Ten tweede moet de decoderingssleutel k2 overeenkomen met de codering. sleutel k1.

Als voor de versleuteling een sterk versleutelingsalgoritme wordt gebruikt, is het bij afwezigheid van de juiste sleutel k2 onmogelijk om M" = M te verkrijgen. Cryptografische sterkte is het belangrijkste kenmerk van versleutelingsalgoritmen en geeft vooral de moeilijkheidsgraad aan van het verkrijgen brontekst van een sleutelloze gecodeerde k2.

Versleutelingsalgoritmen kunnen worden onderverdeeld in twee categorieën: symmetrisch en asymmetrische encryptie. Voor de eerste wordt de verhouding tussen encryptie- en decryptiesleutels gedefinieerd als k1 = k2 = k (dat wil zeggen dat de functies E en D dezelfde encryptiesleutel gebruiken). Bij asymmetrische versleuteling wordt de versleutelingssleutel k1 op een zodanige wijze berekend uit de sleutel k2 dat omgekeerde conversie onmogelijk, bijvoorbeeld door de formule k1 = ak2 mod p te gebruiken (a en p zijn de parameters van het gebruikte algoritme).

Symmetrische codering

Symmetrische encryptie-algoritmen dateren uit de oudheid: het was deze methode om informatie te verbergen die in de 1e eeuw voor Christus werd gebruikt door de Romeinse keizer Gaius Julius Caesar. e., en het algoritme dat hij heeft uitgevonden staat bekend als het ‘Caesar-cryptosysteem’.

Momenteel is het bekendste symmetrische encryptie-algoritme DES (Data Encryption Standard), ontwikkeld in 1977. Tot voor kort was het een “Amerikaanse standaard”, aangezien de regering van dit land het gebruik ervan voor implementatie aanbeveelde. diverse systemen data encryptie. Ondanks het feit dat DES oorspronkelijk niet langer dan 10 tot 15 jaar zou worden gebruikt, begonnen de pogingen om het te vervangen pas in 1997.

We zullen DES niet in detail bespreken (bijna alle boeken op de lijst met aanvullende materialen hebben dit gedetailleerde beschrijving), en laten we ons wenden tot modernere versleutelingsalgoritmen. Het is alleen vermeldenswaard dat de belangrijkste reden voor het wijzigen van de encryptiestandaard de relatief zwakke cryptografische kracht ervan is. De reden hiervoor is dat de DES-sleutellengte slechts 56 is. aanzienlijke stukjes. Het is bekend dat elk sterk versleutelingsalgoritme kan worden gekraakt door alle mogelijke versleutelingssleutels uit te proberen (de zogenaamde method brute kracht- brute aanval). Het is gemakkelijk te berekenen dat een cluster van 1 miljoen processors, die elk 1 miljoen sleutels per seconde berekenen, in bijna 20 uur 256 varianten van DES-sleutels zullen controleren. En aangezien een dergelijke rekenkracht naar huidige maatstaven vrij realistisch is, is het duidelijk dat een sleutel van 56 bits te kort is en dat het DES-algoritme moet worden vervangen door een sterkere sleutel.

Tegenwoordig worden er steeds vaker twee moderne, sterke encryptie-algoritmen gebruikt: de binnenlandse standaard GOST 28147-89 en de nieuwe Amerikaanse cryptostandaard - AES (Advanced Encryption Standard).

Standaard GOST 28147-89

Het algoritme gedefinieerd door GOST 28147-89 (Fig. 1) heeft een coderingssleutellengte van 256 bits. Het codeert informatie in blokken van 64 bits (dergelijke algoritmen worden blokalgoritmen genoemd), die vervolgens worden verdeeld in twee subblokken van 32 bits (N1 en N2). Subblok N1 wordt op een bepaalde manier verwerkt, waarna de waarde ervan wordt opgeteld bij de waarde van subblok N2 (de optelling wordt modulo 2 uitgevoerd, d.w.z. logische werking XOR - "exclusief of"), en vervolgens worden de subblokken verwisseld. Deze transformatie uitgevoerd bepaald aantal tijden (“rondes”): 16 of 32, afhankelijk van de werkingsmodus van het algoritme. In elke ronde worden twee operaties uitgevoerd.

De eerste is sleutelen. De inhoud van deelblok N1 wordt modulo 2 opgeteld met het 32-bits deel van de sleutel Kx. Volledige sleutel encryptie wordt weergegeven als een aaneenschakeling van 32-bits subsleutels: K0, K1, K2, K3, K4, K5, K6, K7. Tijdens het versleutelingsproces wordt één van deze subsleutels gebruikt, afhankelijk van het ronde getal en de werkingsmodus van het algoritme.

Tweede operatie - tafel vervanging. Na het intoetsen wordt subblok N1 verdeeld in 8 delen van 4 bits, waarvan de waarde wordt vervangen in overeenstemming met de vervangingstabel voor dit deel van het subblok. Het subblok wordt vervolgens 11 bits naar links geroteerd.

Tabelvervangingen(Substitutiebox - S-box) worden vaak gebruikt in moderne coderingsalgoritmen, dus het is de moeite waard om uit te leggen hoe een dergelijke operatie is georganiseerd. De uitvoerwaarden van de blokken worden in de tabel vastgelegd. Een datablok van een bepaalde afmeting (in ons geval 4-bit) heeft zijn eigen numerieke representatie, die het nummer van de uitgangswaarde bepaalt. Als de S-box er bijvoorbeeld uitziet als 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 en het 4-bits blok “0100” kwam naar de invoer (waarde 4), dan zal de uitvoerwaarde volgens de tabel 15 zijn, d.w.z. "1111" (0 a 4, 1 a 11, 2 a 2 ...).

Het algoritme, gedefinieerd door GOST 28147-89, biedt vier bedrijfsmodi: eenvoudige vervanging, gamen, gamen met feedback en het genereren van imitatievoorvoegsels. Ze gebruiken dezelfde encryptietransformatie die hierboven is beschreven, maar omdat het doel van de modi verschillend is, wordt deze transformatie in elk van deze modi anders uitgevoerd.

In modus gemakkelijke vervanging Om elk 64-bits informatieblok te coderen, worden de hierboven beschreven 32 ronden uitgevoerd. In dit geval worden 32-bits subsleutels in de volgende volgorde gebruikt:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, etc. - in rondes 1 tot en met 24;

K7, K6, K5, K4, K3, K2, K1, K0 - in rondes 25 tot en met 32.

Decoderen in deze modus wordt op precies dezelfde manier uitgevoerd, maar met een iets andere volgorde van het gebruik van subsleutels:

K0, K1, K2, K3, K4, K5, K6, K7 - in rondes 1 tot en met 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6, etc. - in rondes 9 tot en met 32.

Alle blokken worden onafhankelijk van elkaar gecodeerd, dat wil zeggen dat het encryptieresultaat van elk blok alleen afhankelijk is van de inhoud ervan (het overeenkomstige blok van de originele tekst). Als er meerdere identieke blokken originele (platte) tekst zijn, zullen de corresponderende cijfertekstblokken ook identiek zijn, wat extra bruikbare informatie voor een cryptanalist die een cijfer probeert te kraken. Daarom wordt deze modus voornamelijk gebruikt voor het versleutelen van de versleutelingssleutels zelf (er worden heel vaak schema's met meerdere sleutels geïmplementeerd, waarbij om een ​​aantal redenen de sleutels op elkaar worden versleuteld). Twee andere bedrijfsmodi zijn bedoeld voor het coderen van de informatie zelf: gamma en gamma met feedback.

IN gamma-modus elk blok platte tekst bitsgewijs modulo 2 toegevoegd met een 64-bit cipher gammablok. Het gammacijfer is een speciale reeks die wordt verkregen als resultaat van bepaalde bewerkingen met registers N1 en N2 (zie figuur 1).

1. Hun initiële vulling wordt naar de registers N1 en N2 geschreven - een 64-bits waarde die een synchronisatiebericht wordt genoemd.

2. De inhoud van registers N1 en N2 is gecodeerd (in in dit geval- berichten synchroniseren) in eenvoudige vervangingsmodus.

3. De inhoud van register N1 wordt modulo (232 - 1) opgeteld met de constante C1 = 224 + 216 + 28 + 24, en het resultaat van de optelling wordt naar register N1 geschreven.

4. De inhoud van register N2 wordt modulo 232 opgeteld met de constante C2 = 224 + 216 + 28 + 1, en het resultaat van de optelling wordt naar register N2 geschreven.

5. De inhoud van registers N1 en N2 wordt uitgevoerd als een 64-bits gammablok van het cijfer (in dit geval vormen N1 en N2 het eerste gammablok).

Als het volgende gammablok nodig is (d.w.z. de codering of decodering moet doorgaan), wordt teruggekeerd naar stap 2.

Voor decodering wordt op een vergelijkbare manier gamma gegenereerd en vervolgens opnieuw toegepast op de cijfertekst en gammabits XOR-bediening. Omdat deze bewerking omkeerbaar is, wordt bij een correct ontwikkelde schaal de originele tekst (tabel) verkregen.

Codering en decodering in gammamodus

Om het cijfer te ontwikkelen dat nodig is om het gamma te ontsleutelen, moet de gebruiker die het cryptogram ontsleutelt dezelfde sleutel en dezelfde waarde van het synchronisatiebericht hebben die werden gebruikt bij het versleutelen van de informatie. Anders is het niet mogelijk om de originele tekst uit de gecodeerde tekst te halen.

In de meeste implementaties van het GOST 28147-89-algoritme is het synchronisatiebericht niet geheim, maar er zijn systemen waarbij het synchronisatiebericht hetzelfde geheime element is als de coderingssleutel. Voor dergelijke systemen wordt de effectieve sleutellengte van het algoritme (256 bits) vergroot met nog eens 64 bits van het geheime synchronisatiebericht, dat ook als een sleutelelement kan worden beschouwd.

In de feedback-gammamodus wordt voor het vullen van de N1- en N2-registers, beginnend bij het tweede blok, niet het vorige gammablok gebruikt, maar het resultaat van het coderen van het vorige leesbare tekstblok (Fig. 2). Het eerste blok in deze modus wordt volledig op dezelfde manier gegenereerd als het vorige.

Rijst. 2. Ontwikkeling van een cipher-gamma in de gamma-modus met feedback.

Gezien de modus het genereren van imitatievoorvoegsels moet het concept van het onderwerp generatie worden gedefinieerd. Imitatievoorvoegsel is cryptografisch controlesom, berekend met behulp van de coderingssleutel en ontworpen om de integriteit van berichten te verifiëren. Bij het genereren van een imitatievoorvoegsel worden de volgende bewerkingen uitgevoerd: het eerste 64-bits blok van de informatiearray, waarvoor het imitatievoorvoegsel wordt berekend, wordt naar de registers N1 en N2 geschreven en gecodeerd in de gereduceerde eenvoudige vervangingsmodus (de de eerste 16 van de 32 ronden worden uitgevoerd). Het resulterende resultaat wordt modulo 2 opgeteld bij het volgende informatieblok en het resultaat wordt opgeslagen in N1 en N2.

De cyclus herhaalt zich tot het laatste informatieblok. De resulterende 64-bits inhoud van de N1- en N2-registers of een deel daarvan als resultaat van deze transformaties wordt het imitatievoorvoegsel genoemd. De grootte van het imitatievoorvoegsel wordt geselecteerd op basis van de vereiste betrouwbaarheid van berichten: met de lengte van het imitatievoorvoegsel r bits is de kans dat een verandering in het bericht onopgemerkt blijft gelijk aan 2-r. Er wordt een 32-bits imitatievoorvoegsel gebruikt, d.w.z. de helft van de inhoud van de registers. Dit is voldoende, aangezien de imitatiebijlage, net als elke controlesom, in de eerste plaats bedoeld is om te beschermen tegen onbedoelde vervorming van informatie. Ter bescherming tegen opzettelijke wijziging van gegevens, andere cryptografische methoden- voornamelijk een elektronische digitale handtekening.

Bij het uitwisselen van informatie dient het imitatievoorvoegsel als een soort aanvullende middelen controle. Het wordt berekend voor de leesbare tekst wanneer informatie is gecodeerd en samen met de cijfertekst wordt verzonden. Na decodering wordt een nieuwe waarde van het imitatievoorvoegsel berekend en vergeleken met de verzonden waarde. Als de waarden niet overeenkomen, betekent dit dat de cijfertekst tijdens de verzending beschadigd is of dat er tijdens de decodering onjuiste sleutels zijn gebruikt. Het imitatievoorvoegsel is vooral handig om de juistheid van de decodering te controleren belangrijke informatie bij gebruik van meersleutelschema's.

Het GOST 28147-89-algoritme wordt als een zeer sterk algoritme beschouwd - momenteel is er niet meer voorgesteld voor openbaarmaking ervan effectieve methoden dan de hierboven genoemde "brute force"-methode. De hoge duurzaamheid wordt voornamelijk bereikt door lange lengte sleutel - 256 bits. Bij gebruik van een geheim synchronisatiebericht neemt de effectieve sleutellengte toe tot 320 bits, en neemt de codering van de vervangende tabel toe extra stukjes. Bovendien hangt de cryptografische sterkte af van het aantal transformatierondes, dat volgens GOST 28147-89 32 zou moeten zijn (het volledige effect van de verspreiding van invoergegevens wordt bereikt na 8 ronden).

AES-standaard

In tegenstelling tot het GOST 28147-89-algoritme, dat voor een lange tijd bleef geheim Amerikaanse standaard AES-codering, bedoeld om DES te vervangen, werd geselecteerd via een open competitie waarbij alle geïnteresseerde organisaties en individuen de kandidaat-algoritmen konden bestuderen en erop konden reageren.

Een wedstrijd ter vervanging van DES werd in 1997 aangekondigd door het Amerikaanse National Institute of Standards and Technology (NIST - National Institute of Standards and Technology). Voor de wedstrijd werden 15 kandidaat-algoritmen ingezonden, ontwikkeld door zowel bekende organisaties op het gebied van cryptografie (RSA Security, Counterpane, etc.) als particulieren. De resultaten van de wedstrijd werden in oktober 2000 bekend gemaakt: de winnaar was het Rijndael-algoritme, ontwikkeld door twee cryptografen uit België, Vincent Rijmen en Joan Daemen.

Het Rijndael-algoritme is niet vergelijkbaar met de meeste bekende symmetrische encryptie-algoritmen, waarvan de structuur het “Feistel-netwerk” wordt genoemd en vergelijkbaar is met de Russische GOST 28147-89. De eigenaardigheid van het Feistel-netwerk is dat de invoerwaarde is verdeeld in twee of meer subblokken, waarvan een deel in elke ronde wordt verwerkt bepaalde wet, waarna het wordt gesuperponeerd op onverwerkte subblokken (zie figuur 1).

In tegenstelling tot de binnenlandse encryptiestandaard vertegenwoordigt het Rijndael-algoritme een datablok in de vorm van een tweedimensionale byte-array met de grootte 4X4, 4X6 of 4X8 (het gebruik van meerdere is toegestaan vaste maten gecodeerd informatieblok). Alle bewerkingen worden uitgevoerd op individuele bytes van de array, maar ook op onafhankelijke kolommen en lijnen.

Het Rijndael-algoritme voert vier transformaties uit: BS (ByteSub) - tabelvervanging van elke byte van de array (Fig. 3); SR (ShiftRow) - verschuiving van arrayrijen (Fig. 4). Met deze bewerking blijft de eerste regel ongewijzigd en wordt de rest cyclisch byte voor byte naar links verschoven met een vast aantal bytes, afhankelijk van de grootte van de array. Voor een 4X4-array worden de lijnen 2, 3 en 4 bijvoorbeeld respectievelijk met 1, 2 en 3 bytes verschoven. Vervolgens komt MC (MixColumn) - een bewerking op onafhankelijke arraykolommen (Fig. 5), waarbij elke kolom wordt vermenigvuldigd met een vaste matrix c(x) volgens een bepaalde regel. En tot slot AK (AddRoundKey) - een sleutel toevoegen. Elke bit van de array wordt modulo 2 opgeteld bij de overeenkomstige bit van de ronde sleutel, die op zijn beurt op een bepaalde manier wordt berekend op basis van de encryptiesleutel (Fig. 6).


Rijst. 3. Operatie BS.

Rijst. 4. Operatie SR.

Rijst. 5. Operatie MC.

Het aantal encryptierondes (R) in het Rijndael-algoritme is variabel (10, 12 of 14 ronden) en afhankelijk van de blokgrootte en de encryptiesleutel (er zijn ook meerdere vaste groottes voor de sleutel).

Decodering wordt uitgevoerd met behulp van de volgende omgekeerde bewerkingen. Een tabelinversie en tabelvervanging worden uitgevoerd op de inverse tabel (ten opzichte van de tabel die wordt gebruikt tijdens de codering). De omgekeerde bewerking van SR is het roteren van rijen naar rechts in plaats van naar links. De inverse bewerking voor MC is vermenigvuldiging met dezelfde regels met een andere matrix d(x) die voldoet aan de voorwaarde: c(x) * d(x) = 1. Het optellen van de sleutel AK is het omgekeerde van zichzelf, omdat het alleen de XOR gebruikt operatie. Deze omgekeerde bewerkingen worden tijdens de decodering toegepast in de omgekeerde volgorde als die welke tijdens de codering wordt gebruikt.

Rijndael is de nieuwe standaard voor data-encryptie geworden vanwege een aantal voordelen ten opzichte van andere algoritmen. In de eerste plaats biedt het hoge snelheid encryptie op alle platforms: zowel bij de software- als hardware-implementatie. Het onderscheidt zich onvergelijkbaar beste kansen parallellisatie van berekeningen in vergelijking met andere algoritmen die aan de concurrentie zijn voorgelegd. Bovendien zijn de bronvereisten voor de werking ervan minimaal, wat belangrijk is bij gebruik op apparaten met beperkte computermogelijkheden.

Het enige nadeel van het algoritme kan worden beschouwd als het inherente onconventionele schema ervan. Feit is dat de eigenschappen van algoritmen gebaseerd op het Feistel-netwerk goed zijn bestudeerd, en Rijndael kan, in tegenstelling tot hen, verborgen kwetsbaarheden, die pas kan worden ontdekt nadat enige tijd is verstreken sinds het begin van de wijdverbreide verspreiding ervan.

Asymmetrische encryptie

Asymmetrische encryptie-algoritmen gebruiken, zoals reeds opgemerkt, twee sleutels: k1 - de encryptiesleutel, of openbaar, en k2 - de decryptiesleutel, of geheim. De publieke sleutel wordt berekend op basis van het geheim: k1 = f(k2).

Asymmetrische versleutelingsalgoritmen zijn gebaseerd op het gebruik van eenrichtingsfuncties. Volgens de definitie is een functie y = f(x) unidirectioneel als: deze voor iedereen gemakkelijk te berekenen is mogelijke opties x en voor de meeste mogelijke waarden van y is het vrij moeilijk om een ​​waarde van x zo te berekenen dat y = f(x).

Een voorbeeld van een eenrichtingsfunctie is de vermenigvuldiging van twee grote getallen: N = P*Q. Deze vermenigvuldiging zelf is eenvoudige bediening. De inverse functie (ontleding van N in twee grote factoren), die volgens moderne tijdschattingen factorisatie wordt genoemd, is echter een tamelijk complex wiskundig probleem. Factorisatie N met een afmeting van 664 bits bij P ? Voor Q zijn ongeveer 1023 bewerkingen nodig, en om x omgekeerd te berekenen voor de modulaire exponent y = ax mod p met bekende a, p en y (met dezelfde afmetingen van a en p) moet je ongeveer 1026 bewerkingen uitvoeren. Het laatste gegeven voorbeeld heet het Discrete Logaritme Probleem (DLP), en dit soort functie wordt vaak gebruikt in asymmetrische versleutelingsalgoritmen, maar ook in algoritmen die worden gebruikt om een ​​elektronische digitale handtekening te creëren.

Een andere belangrijke klasse van functies die bij asymmetrische encryptie worden gebruikt, zijn eenrichtingsachterdeurfuncties. Hun definitie stelt dat een functie unidirectioneel is met een achterdeur als deze unidirectioneel is en efficiënt kan worden berekend. omgekeerde functie x = f-1(y), d.w.z. als de “geheime doorgang” bekend is (een bepaald geheim nummer, in toepassing op asymmetrische versleutelingsalgoritmen - de waarde van de geheime sleutel).

One-way backdoor-functies worden gebruikt in het veelgebruikte asymmetrische encryptie-algoritme RSA.

RSA-algoritme

Het werd in 1978 ontwikkeld door drie auteurs (Rivest, Shamir, Adleman) en dankt zijn naam aan de eerste letters van de achternaam van de ontwikkelaars. De betrouwbaarheid van het algoritme is gebaseerd op de moeilijkheid van het ontbinden van grote getallen en het berekenen van discrete logaritmen. Hoofdparameter RSA-algoritme- module van het systeem N, volgens welke alle berekeningen in het systeem worden uitgevoerd, en N = P*Q (P en Q zijn geheim willekeurig eenvoudig grote cijfers, meestal dezelfde maat).

De geheime sleutel k2 wordt willekeurig gekozen en moet aan de volgende voorwaarden voldoen:

1

waarbij GCD de grootste gemene deler is, d.w.z. k1 moet coprime zijn ten opzichte van de waarde van de Euler-functie F(N), waarbij de laatste gelijk is aan het aantal positieve gehele getallen in het bereik van 1 tot N coprime tot N, en wordt berekend als F(N) = (P - 1)*(Q - 1).

Uit de relatie wordt de publieke sleutel k1 berekend (k2*k1) = 1 mod F(N), en voor dit doel wordt het gegeneraliseerde Euclidische algoritme (algoritme voor het berekenen van de grootste gemene deler) gebruikt. Versleuteling van datablok M met behulp van het RSA-algoritme wordt als volgt uitgevoerd: C=M [tot de macht k1] mod N. Merk op dat, aangezien in een echt cryptosysteem dat RSA gebruikt, het getal k1 erg groot is (momenteel kan de afmeting oplopen tot 2048 bits), directe berekening van M [tot de macht k1] onwerkelijk. Om dit te verkrijgen wordt een combinatie van herhaalde kwadratering van M en vermenigvuldiging van de resultaten gebruikt.

Inversie van deze functie voor grote afmetingen is niet haalbaar; met andere woorden, het is onmogelijk om M te vinden gegeven de bekende C, N en k1. Als je echter een geheime sleutel k2 hebt, kun je met behulp van eenvoudige transformaties M = Ck2 mod N berekenen. Uiteraard is het, naast de geheime sleutel zelf, noodzakelijk om de geheimhouding van de parameters P en Q te garanderen. Als een aanvaller hun waarden verkrijgt , zal hij de geheime sleutel k2 kunnen berekenen.

Welke encryptie is beter?

Het grootste nadeel van symmetrische encryptie is de noodzaak om sleutels “van hand tot hand” over te dragen. Dit nadeel is zeer ernstig, omdat het het onmogelijk maakt om symmetrische encryptie te gebruiken in systemen met een onbeperkt aantal deelnemers. Voor het overige heeft symmetrische encryptie echter enkele voordelen die duidelijk zichtbaar zijn tegen de achtergrond van de ernstige nadelen van asymmetrische encryptie.

De eerste daarvan is de lage snelheid van coderings- en decoderingsbewerkingen, vanwege de aanwezigheid van resource-intensieve bewerkingen. Een ander ‘theoretisch’ nadeel is dat de cryptografische kracht van asymmetrische encryptie-algoritmen niet wiskundig is bewezen. Dit komt voornamelijk door het probleem van de discrete logaritme - het is nog niet bewezen dat de oplossing ervan binnen een acceptabele tijd onmogelijk is. Onnodige problemen worden ook gecreëerd door de noodzaak om publieke sleutels te beschermen tegen vervanging – door vervanging publieke sleutel Als legitieme gebruiker kan de aanvaller een belangrijk bericht versleutelen met zijn publieke sleutel en deze vervolgens eenvoudig ontsleutelen met zijn privésleutel.

Deze tekortkomingen verhinderen echter niet het wijdverbreide gebruik van asymmetrische encryptie-algoritmen. Tegenwoordig zijn er cryptosystemen die de certificering van publieke sleutels ondersteunen en symmetrische en asymmetrische encryptie-algoritmen combineren. Maar dit is een onderwerp voor een apart artikel.

Aanvullende informatiebronnen

Voor die lezers die serieus geïnteresseerd zijn in encryptie, raadt de auteur aan om hun horizon te verbreden met behulp van de volgende boeken.

  1. Brassard J. "Moderne cryptologie."
  2. Petrov A. A. "Computerbeveiliging: cryptografische beschermingsmethoden."
  3. Romanets Yu. V., Timofeev P.A., Shangin V.F. "Informatiebescherming in de moderne computersystemen".
  4. Sokolov AV, Shangin VF "Informatiebescherming in gedistribueerde bedrijfsnetwerken en -systemen."

Een volledige beschrijving van versleutelingsalgoritmen kunt u vinden in de volgende documenten:

  1. GOST 28147-89. Informatieverwerkingssysteem. Cryptografische bescherming. Cryptografisch conversie-algoritme. - M.: Staatsnorm van de USSR, 1989.
  2. AES-algoritme: http://www.nist.gov/ae.
  3. RSA-algoritme: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1.

Gegevensversleuteling is uiterst belangrijk om de privacy te beschermen. In dit artikel bespreek ik de verschillende soorten en methoden van codering die tegenwoordig worden gebruikt om gegevens te beschermen.

Wist je dat?
In de Romeinse tijd werd encryptie door Julius Caesar gebruikt om brieven en berichten onleesbaar te maken voor de vijand. Het speelde een belangrijke rol als militaire tactiek, vooral tijdens oorlogen.

Naarmate de mogelijkheden van internet blijven groeien, worden steeds meer van onze activiteiten online uitgevoerd. De belangrijkste hiervan zijn internetbankieren, online betalen, e-mails, de uitwisseling van privé- en officiële berichten, enz., waarbij vertrouwelijke gegevens en informatie worden uitgewisseld. Als deze gegevens in verkeerde handen vallen, kan dit niet alleen schade toebrengen aan de individuele gebruiker, maar ook aan het hele online bedrijfssysteem.

Om dit te voorkomen, zijn er verschillende netwerkbeveiligingsmaatregelen genomen om de overdracht van persoonlijke gegevens te beschermen. De belangrijkste hiervan zijn de processen voor het coderen en decoderen van gegevens, die bekend staan ​​als cryptografie. Er zijn tegenwoordig drie belangrijke versleutelingsmethoden die in de meeste systemen worden gebruikt: hashing, symmetrische en asymmetrische versleuteling. In de volgende regels zal ik meer in detail over elk van deze coderingstypen praten.

Coderingstypen

Symmetrische codering

Bij symmetrische encryptie worden normaal leesbare gegevens, ook wel platte tekst genoemd, gecodeerd zodat deze onleesbaar worden. Deze gegevensversleuteling gebeurt met behulp van een sleutel. Zodra de gegevens zijn gecodeerd, kunnen deze veilig naar de ontvanger worden verzonden. Bij de ontvanger worden de gecodeerde gegevens gedecodeerd met dezelfde sleutel die werd gebruikt voor het coderen.

Het is dus duidelijk dat de sleutel het belangrijkste onderdeel is van symmetrische encryptie. Het moet voor buitenstaanders verborgen blijven, omdat iedereen die er toegang toe heeft, privégegevens kan ontsleutelen. Daarom wordt dit type codering ook wel een ‘geheime sleutel’ genoemd.

In moderne systemen is de sleutel meestal een reeks gegevens die is afgeleid van een sterk wachtwoord of van een volledig willekeurige bron. Het wordt ingevoerd in symmetrische encryptiesoftware, die het gebruikt om de invoergegevens geheim te houden. Het versleutelen van gegevens wordt bereikt met behulp van een symmetrisch versleutelingsalgoritme, zoals Data Encryption Standard (DES), Advanced Encryption Standard (AES) of International Data Encryption Algorithm (IDEA).

Beperkingen

De zwakste schakel bij dit type versleuteling is de veiligheid van de sleutel, zowel wat betreft opslag als verzending naar de geauthenticeerde gebruiker. Als een hacker deze sleutel kan bemachtigen, kan hij de versleutelde gegevens gemakkelijk ontsleutelen, waardoor het hele doel van versleuteling wordt omzeild.

Een ander nadeel is dat de software die de gegevens verwerkt niet met versleutelde gegevens kan werken. Om deze software te kunnen gebruiken, moeten de gegevens daarom eerst worden gedecodeerd. Als de software zelf gecompromitteerd is, kan een aanvaller gemakkelijk de gegevens verkrijgen.

Asymmetrische encryptie

Asymmetrische sleutelversleuteling werkt vergelijkbaar met symmetrische sleutel, omdat er een sleutel wordt gebruikt om de verzonden berichten te versleutelen. In plaats van dezelfde sleutel te gebruiken, gebruikt hij echter een compleet andere sleutel om dit bericht te ontsleutelen.

De sleutel die wordt gebruikt voor het coderen is beschikbaar voor alle netwerkgebruikers. Als zodanig staat het bekend als een "publieke" sleutel. Aan de andere kant wordt de sleutel die voor de decodering wordt gebruikt geheim gehouden en is deze bedoeld voor privégebruik door de gebruiker zelf. Daarom staat het bekend als de "privésleutel". Asymmetrische encryptie wordt ook wel public key encryptie genoemd.

Omdat bij deze methode de geheime sleutel die nodig is om het bericht te ontsleutelen niet elke keer hoeft te worden verzonden, en deze meestal alleen bekend is bij de gebruiker (ontvanger), is de kans groot dat een hacker het bericht kan ontsleutelen. lager.

Diffie-Hellman en RSA zijn voorbeelden van algoritmen die gebruikmaken van codering met openbare sleutels.

Beperkingen

Veel hackers gebruiken man-in-the-middle als aanvalsvorm om dit type codering te omzeilen. Bij asymmetrische encryptie krijgt u een publieke sleutel die wordt gebruikt om veilig gegevens uit te wisselen met een andere persoon of dienst. Hackers gebruiken echter netwerkmisleiding om u ertoe te verleiden met hen te communiceren, terwijl u de indruk krijgt dat u zich op een beveiligde lijn bevindt.

Om dit soort hacking beter te begrijpen, moeten we kijken naar twee samenwerkende partijen, Sasha en Natasha, en een hacker, Sergei, met de bedoeling hun gesprek te onderscheppen. Eerst stuurt Sasha een bericht over het netwerk dat bedoeld is voor Natasha, waarin om haar openbare sleutel wordt gevraagd. Sergei onderschept dit bericht en verkrijgt de openbare sleutel die aan haar is gekoppeld en gebruikt deze om te coderen en een vals bericht naar Natasha te sturen met daarin zijn openbare sleutel in plaats van die van Sasha.

Natasha, die denkt dat dit bericht van Sasha afkomstig is, codeert het nu met de openbare sleutel van Sergei en stuurt het terug. Dit bericht werd opnieuw onderschept door Sergei, gedecodeerd, aangepast (indien gewenst), opnieuw gecodeerd met de openbare sleutel die Sasha oorspronkelijk had verzonden, en teruggestuurd naar Sasha.

Dus wanneer Sasha dit bericht ontvangt, is hij ertoe gebracht te geloven dat het van Natasha kwam en is hij zich nog steeds niet bewust van kwaad opzet.

Hashing

De hash-techniek maakt gebruik van een algoritme dat bekend staat als een hash-functie om uit de gegeven gegevens een speciale string te genereren, ook wel een hash genoemd. Deze hasj heeft de volgende eigenschappen:

  • dezelfde gegevens produceren altijd dezelfde hash.
  • Het is niet mogelijk om op basis van alleen een hash ruwe data te genereren.
  • Het is niet praktisch om verschillende combinaties van invoer te proberen om dezelfde hash te genereren.

Het belangrijkste verschil tussen hashing en de andere twee vormen van gegevensversleuteling is dus dat zodra de gegevens zijn versleuteld (gehasht), deze niet meer in hun oorspronkelijke vorm kunnen worden teruggehaald (gedecodeerd). Dit feit zorgt ervoor dat zelfs als een hacker de hash in handen krijgt, deze voor hem geen nut zal hebben, aangezien hij de inhoud van het bericht niet zal kunnen ontsleutelen.

Message Digest 5 (MD5) en Secure Hashing Algorithm (SHA) zijn twee veelgebruikte hash-algoritmen.

Beperkingen

Zoals eerder vermeld, is het vrijwel onmogelijk om gegevens van een bepaalde hash te decoderen. Dit is echter alleen waar als sterke hashing wordt geïmplementeerd. Bij een zwakke implementatie van de hashtechniek, bij gebruik van voldoende middelen en brute force-aanvallen, kan een volhardende hacker gegevens vinden die overeenkomen met de hash.

Combinatie van encryptiemethoden

Zoals hierboven besproken heeft elk van deze drie encryptiemethoden enkele nadelen. Wanneer echter een combinatie van deze methoden wordt gebruikt, vormen ze een veilig en zeer effectief versleutelingssysteem.

Meestal worden private en publieke sleuteltechnieken gecombineerd en samen gebruikt. De privésleutelmethode maakt een snelle decodering mogelijk, terwijl de openbare sleutelmethode een veiligere en gemakkelijkere manier biedt om de geheime sleutel te verzenden. Deze combinatie van methoden staat bekend als de "digitale envelop". PGP-e-mailversleutelingssoftware is gebaseerd op de "digitale envelop"-techniek.

Hashing wordt gebruikt om de sterkte van een wachtwoord te controleren. Als het systeem een ​​hash van het wachtwoord opslaat in plaats van het wachtwoord zelf, zal het veiliger zijn, want zelfs als een hacker deze hash in handen krijgt, zal hij deze niet kunnen begrijpen (lezen). Tijdens de verificatie controleert het systeem de hash van het binnenkomende wachtwoord en kijkt of het resultaat overeenkomt met wat is opgeslagen. Op deze manier is het daadwerkelijke wachtwoord alleen zichtbaar tijdens korte momenten waarop het moet worden gewijzigd of geverifieerd, waardoor de kans dat het in verkeerde handen valt aanzienlijk wordt verkleind.

Hashing wordt ook gebruikt om gegevens te authenticeren met behulp van een geheime sleutel. Met behulp van de gegevens en deze sleutel wordt een hash gegenereerd. Daarom zijn alleen de gegevens en hash zichtbaar en wordt de sleutel zelf niet verzonden. Op deze manier kunnen wijzigingen in de gegevens of de hash gemakkelijk worden gedetecteerd.

Concluderend kunnen deze technieken worden gebruikt om gegevens efficiënt te coderen in een onleesbaar formaat dat ervoor kan zorgen dat deze veilig blijven. De meeste moderne systemen gebruiken doorgaans een combinatie van deze versleutelingsmethoden en krachtige algoritme-implementaties om de beveiliging te verbeteren. Naast beveiliging bieden deze systemen ook veel extra voordelen, zoals het verifiëren van de identiteit van de gebruiker en het voorkomen dat er met de ontvangen gegevens kan worden geknoeid.

Annotatie: Deze lezing heeft meerdere doelen. Toon het verschil tussen traditionele en moderne cijfers met symmetrische sleutel. Breng modern cijfers blokkeren en bespreek hun kenmerken. Leg uit waarom moderne blokcijfers ontworpen moeten worden als vervangingscijfers. Introduceer de componenten van blokcijfers zoals P-boxen en S-boxen. Bespreek en toon het verschil tussen twee klassen cijfers: Feistel-cijfers en niet-Feistel-cijfers. Bespreek twee soorten aanvallen die specifiek gericht zijn op het breken van moderne blokcijfers: differentiële en lineaire cryptanalyse. Introduceer het concept van "stream ciphers" en laat het verschil zien tussen synchrone en niet-synchrone ciphers. Bespreek lineaire en niet-lineaire schuifregisterfeedback voor het implementeren van stroomcijfers.

Traditionele cijfers met symmetrische sleutel, die we tot nu toe hebben bestudeerd, zijn karaktergericht. Met de komst van de computer werden bit-georiënteerde cijfers noodzakelijk. Omdat de informatie die moet worden gecodeerd niet altijd alleen maar tekst is; het kan ook bestaan ​​uit cijfers, afbeeldingen, audio- en videogegevens. Het is handig om dit soort gegevens om te zetten in een stroom bits, die stroom te versleutelen en vervolgens de versleutelde stroom te verzenden. Wanneer tekst op bitniveau wordt verwerkt, wordt bovendien elk teken vervangen door 8 (of 16) bits, wat betekent dat het aantal tekens 8 (of 16) keer groter wordt. Het mixen van meer karakters verhoogt de veiligheid.

Dit hoofdstuk biedt de noodzakelijke basis voor de studie van moderne blok- en stroomcijfers, die in de volgende drie hoofdstukken worden behandeld. Het grootste deel van dit hoofdstuk is gewijd aan het bespreken van de algemene ideeën van moderne blokcijfers, en slechts een klein deel is gewijd aan de principes van moderne stroomcijfers.

7.1. Moderne blokcijfers

Een modern blokcijfer met symmetrische sleutels codeert een n-bit blok leesbare tekst of decodeert een n-bit blok cijfertekst. Het coderings- of decoderingsalgoritme gebruikt een k-bit-sleutel. Het decoderingsalgoritme moet het omgekeerde zijn van het coderingsalgoritme, en beide werken met dezelfde geheime sleutel, zodat Bob het door Alice verzonden bericht kan reconstrueren. Figuur 7.1 toont het algemene idee van encryptie en decryptie in een modern blokcijfer.


Rijst. 7.1.

Als het bericht kleiner is dan n bits, moet er opvulling worden toegevoegd om dat n-bits blok te maken; als een bericht meer dan n bits heeft, moet het worden verdeeld in blokken van n bits, en moet indien nodig de juiste opvulling aan het laatste blok worden toegevoegd. Gemeenschappelijke waarden voor n zijn meestal 64, 128, 256 of 512 bits.

Voorbeeld 7.1

Hoeveel extra bits moeten worden toegevoegd aan een bericht van 100 tekens als de codering 8-bits ASCII is en de blokcodering 64-bits blokken accepteert?

Oplossing

Codeer 100 tekens met 8-bit ASCII. Dit bericht bevat 800 bits. De brontekst moet deelbaar zijn door 64. Als | M | en | Pad |- berichtlengte en opvullengte, dan

| M | + | Pad | == 0 mod 64 -> | Pad | = -800 mod.64->32 mod.64

Dit betekent dat er 32 bits aan opvulling (zoals nullen) aan het bericht moeten worden toegevoegd. De tekst bestaat dan uit 832 bits, oftewel dertien blokken van 64 bit. Merk op dat alleen het laatste blok opvulling bevat. De encryptor gebruikt het encryptie-algoritme dertien keer om dertien blokken gecodeerde tekst te creëren.

Vervanging of omzetting

Een modern blokcijfer kan worden ontworpen om te fungeren als vervangingscijfer of als transpositiecijfer. Dit is hetzelfde idee dat wordt gebruikt in traditionele cijfers, behalve dat de tekens die worden vervangen of verplaatst bits bevatten in plaats van tekens.

Als het cijfer is ontworpen als vervangingscijfer kunnen bitwaarden van 1 of 0 in de brontekst worden vervangen door 0 of 1 . Dit betekent dat de originele tekst en de cijfertekst kunnen bestaan ander nummer eenheden. Een 64-bits blok platte tekst dat 12 nullen en 52 enen bevat, kan in de cijfertekst worden weergegeven door 34 nullen en 30 enen. Als het cijfer is ontworpen als permutatiecijfer (transpositie), veranderen de bits alleen hun volgorde (verplaatsen), waarbij hetzelfde aantal tekens in het origineel en de cijfertekst behouden blijven. In beide gevallen is het aantal mogelijke n-bit leesbare teksten of cijferteksten 2n, omdat elk van de n bits die in een blok worden gebruikt een van de twee waarden kan hebben: 0 of 1,2 64 blokken van 64 bits om er één te vinden, waardoor gevoel. Als Eve 1 miljard blokken per seconde zou kunnen proberen, zou het honderden jaren duren voordat dit werk zou kunnen slagen.

B. In het tweede geval (transpositie) weet Eva dat er precies 10 enen in de originele tekst staan, omdat de transpositie het aantal enen (of nullen) in de cijfertekst niet verandert. Eve kan een uitgebreide zoekaanval lanceren met alleen die 64-bits blokken die precies 10 enen hebben. Er is enkel (64!) / [(10!) (54!)] = 151 473 214 816 van 2 64 woorden van 64 bits, die precies 10 eenheden hebben. Eve kan ze allemaal in minder dan 3 minuten testen als ze 1 miljard tests per seconde kan doen.

Een modern blokcijfer moet bestand zijn tegen een uitgebreide zoekaanval en moet worden ontworpen als een vervangingscijfer.

De noodzaak om correspondentie te versleutelen ontstond in de oudheid en er verschenen eenvoudige vervangende cijfers. Gecodeerde berichten bepaalden het lot van vele veldslagen en beïnvloedden de loop van de geschiedenis. In de loop van de tijd hebben mensen steeds meer uitgevonden perfecte manieren encryptie.

Code en cijfer zijn trouwens verschillende concepten. De eerste betekent dat elk woord in het bericht wordt vervangen door een codewoord. De tweede is om elk informatiesymbool te coderen met behulp van een specifiek algoritme.

Nadat de wiskunde begon met het coderen van informatie en de theorie van de cryptografie was ontwikkeld, ontdekten wetenschappers er veel gunstige eigenschappen deze toegepaste wetenschap. Decoderingsalgoritmen hebben bijvoorbeeld geholpen bij het ontcijferen van dode talen zoals het Oud-Egyptisch of Latijn.

Steganografie

Steganografie is ouder dan codering en encryptie. Deze kunst verscheen lang geleden. Het betekent letterlijk ‘ verborgen brief"of"geheim schrijven". Hoewel steganografie niet precies overeenkomt met de definitie van een code of cijfer, is het bedoeld om informatie voor nieuwsgierige blikken te verbergen.

Steganografie is het eenvoudigste cijfer. Typische voorbeelden zijn ingeslikte briefjes bedekt met was, of een boodschap op een geschoren hoofd die verborgen zit onder de haargroei. Het duidelijkste voorbeeld Steganografie is een methode die in veel Engelse (en niet alleen) detectiveboeken wordt beschreven, waarbij berichten worden verzonden via een krant, waarbij letters op een onopvallende manier worden gemarkeerd.

Het grootste nadeel van steganografie is dat het voorzichtig is vreemdeling zou haar kunnen opmerken. Daarom in volgorde geheime boodschap niet gemakkelijk leesbaar was, worden encryptie- en coderingsmethoden gebruikt in combinatie met steganografie.

ROT1 en Caesarcijfer

De naam van dit cijfer is 1 letter vooruit draaien, en het is bij veel schoolkinderen bekend. Het is een eenvoudig vervangingscijfer. De essentie ervan is dat elke letter wordt gecodeerd door het alfabet 1 letter vooruit te verschuiven. A -> B, B -> B, ..., I -> A. Laten we bijvoorbeeld de zin "onze Nastya huilt luid" coderen en "obshb Obtua dspnlp rmbsheu" krijgen.

Het ROT1-cijfer kan worden gegeneraliseerd naar willekeurig nummer offsets, dan wordt het ROTN genoemd, waarbij N het getal is waarmee de lettercodering moet worden gecompenseerd. In deze vorm is het cijfer al sinds de oudheid bekend en wordt het het ‘Caesarcijfer’ genoemd.

Het Caesar-cijfer is heel eenvoudig en snel, maar het is een eenvoudig enkelvoudig permutatiecijfer en daarom gemakkelijk te kraken. Met een soortgelijk nadeel is het alleen geschikt voor kindergrappen.

Transpositie- of permutatiecijfers

Dit soort eenvoudige permutatiecijfers zijn serieuzer en worden nog niet zo lang geleden actief gebruikt. Tijdens de Amerikaanse Burgeroorlog en de Eerste Wereldoorlog werd het gebruikt om berichten te verzenden. Het algoritme bestaat uit het herschikken van de letters: schrijf het bericht in omgekeerde volgorde of herschik de letters in paren. Laten we bijvoorbeeld de zinsnede "Morsecode is ook een cijfer" -> "Akubza ezrom - ezhot rfish" coderen.

Met een goed algoritme dat willekeurige permutaties voor elk symbool of elke groep ervan bepaalde, werd het cijfer bestand tegen eenvoudig kraken. Maar! Alleen op zijn tijd. Omdat het cijfer gemakkelijk kan worden gekraakt door simpelweg brute kracht of woordenboekmatching, kan tegenwoordig elke smartphone het ontcijferen. Daarom werd dit cijfer met de komst van computers ook een kindercode.

Morse code

Het alfabet is een middel om informatie uit te wisselen en heeft als hoofdtaak het eenvoudiger en begrijpelijker maken van berichten voor verzending. Hoewel dit in strijd is met waar encryptie voor bedoeld is. Niettemin werkt het als de eenvoudigste cijfers. In het morsesysteem heeft elke letter, cijfer en leesteken zijn eigen code, bestaande uit een groep streepjes en punten. Bij het verzenden van een bericht via de telegraaf geven streepjes en punten een lange en aan korte signalen.

De telegraaf en het alfabet waren degene die in 1840 als eerste ‘zijn’ uitvinding patenteerde, hoewel soortgelijke apparaten vóór hem waren uitgevonden in zowel Rusland als Engeland. Maar wat maakt het nu uit... De telegraaf en de morsecode hadden een zeer grote invloed op de wereld, waardoor berichten vrijwel onmiddellijk over continentale afstanden konden worden verzonden.

Monoalfabetische vervanging

De hierboven beschreven ROTN- en morsecode zijn vertegenwoordigers van mono-alfabetische vervangende lettertypen. Het voorvoegsel "mono" betekent dat tijdens de codering elke letter van het oorspronkelijke bericht wordt vervangen door een andere letter of code uit één enkel coderingsalfabet.

Het ontcijferen van eenvoudige vervangingscijfers is niet moeilijk, en dit is hun grootste nadeel. Ze kunnen worden opgelost door simpelweg te zoeken of. Het is bijvoorbeeld bekend dat de meest gebruikte letters in de Russische taal “o”, “a”, “i” zijn. We kunnen dus aannemen dat in de cijfertekst de letters die het vaakst voorkomen “o”, “a” of “i” betekenen. Op basis van deze overwegingen kan het bericht zelfs zonder computerzoekwerk worden ontcijferd.

Het is bekend dat Mary I, koningin van Schotland van 1561 tot 1567, een zeer complex monoalfabetisch vervangingscijfer met meerdere combinaties heeft gebruikt. Toch konden haar vijanden de berichten ontcijferen, en de informatie was voldoende om de koningin ter dood te veroordelen.

Gronsfeld-cijfer of polyalfabetische vervanging

Eenvoudige cijfers worden door cryptografie als nutteloos beschouwd. Daarom zijn veel ervan aangepast. Het Gronsfeld-cijfer is een wijziging van het Caesar-cijfer. Deze methode is veel beter bestand tegen hacking en bestaat uit het feit dat elk teken van de gecodeerde informatie wordt gecodeerd met behulp van een van de verschillende alfabetten, die cyclisch worden herhaald. We kunnen zeggen dat dit een multidimensionale toepassing is van het eenvoudigste substitutiecijfer. In feite lijkt het Gronsfeld-cijfer sterk op het hieronder besproken cijfer.

ADFGX-coderingsalgoritme

Dit is het beroemdste cijfer uit de Eerste Wereldoorlog dat door de Duitsers werd gebruikt. Het cijfer kreeg zijn naam omdat het alle cijfergrammen herleidde tot het afwisselen van deze letters. De keuze van de letters zelf werd bepaald door hun gemak bij verzending via telegraaflijnen. Elke letter in het cijfer wordt weergegeven door twee. Laten we er nog meer overwegen interessante versie vierkant ADFGX, dat cijfers bevat en ADFGVX wordt genoemd.

A D F G V X
A J Q A 5 H D
D 2 E R V 9 Z
F 8 Y I N K V
G U P B F 6 O
V 4 G X S 3 T
X W L Q 7 C 0

Het algoritme voor het samenstellen van het ADFGX-vierkant is als volgt:

  1. We nemen willekeurige n-letters om kolommen en rijen aan te duiden.
  2. We bouwen een N x N-matrix.
  3. We voeren het alfabet, de cijfers en de tekens in de matrix in, willekeurig verspreid over de cellen.

Laten we een soortgelijk vierkant maken voor de Russische taal. Laten we bijvoorbeeld een vierkant ABCD maken:

A B IN G D
A HAAR N z/b A ik/j
B H V/F H/C Z D
IN Sh/Sh B L X I
G R M OVER YU P
D EN T C Y U

Deze matrix ziet er vreemd uit, aangezien een aantal cellen twee letters bevatten. Dit is acceptabel; de betekenis van de boodschap gaat niet verloren. Het kan gemakkelijk worden hersteld. Laten we de zinsnede “Compact Cipher” coderen met behulp van deze tabel:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
Zin NAAR OVER M P A NAAR T N Y Y Sch EN F R
Cijfer bv bewakers GB gd Ah bv db ab dg hel va hel bb ha

Het uiteindelijke gecodeerde bericht ziet er dus als volgt uit: “bvgvgbgdagbvdbabdgvdvaadbbga.” Natuurlijk hebben de Duitsers een soortgelijke lijn door nog een aantal cijfers gehaald. En het resultaat was een zeer hackbestendig gecodeerd bericht.

Vigenère-cijfer

Dit cijfer is een orde van grootte beter bestand tegen kraken dan mono-alfabetische cijfers, hoewel het een eenvoudig tekstvervangend cijfer is. Dankzij het robuuste algoritme werd het echter lange tijd als onmogelijk beschouwd om te hacken. De eerste vermeldingen dateren uit de 16e eeuw. Vigenère (een Franse diplomaat) wordt ten onrechte als de uitvinder ervan beschouwd. Om beter te begrijpen wat we praten over, overweeg de Vigenère-tabel (Vigenère-vierkant, tabula recta) voor de Russische taal.

Laten we beginnen met het coderen van de zinsnede “Kasperovich lacht.” Maar om de encryptie te laten slagen, heb je een trefwoord nodig, laat het ‘wachtwoord’ zijn. Laten we nu beginnen met encryptie. Om dit te doen, schrijven we de sleutel zo vaak op dat het aantal letters ervan overeenkomt met het aantal letters in de gecodeerde zin, door de sleutel te herhalen of af te snijden:

Nu zoeken we met behulp van het coördinatenvlak naar een cel die het snijpunt is van letterparen, en we krijgen: K + P = b, A + A = B, C + P = B, enz.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Cijfer: Kommersant B IN YU MET N YU G SCH EN E Y X EN G A L

We begrijpen dat “Kasperovich lacht” = “abvyusnyugshch eykhzhgal.”

Het doorbreken van het Vigenère-cijfer is zo moeilijk omdat voor frequentieanalyse het kennen van de lengte vereist is trefwoord. Daarom houdt hacken in dat je willekeurig de lengte van een trefwoord invoert en probeert de geheime boodschap te kraken.

Er moet ook worden vermeld dat naast een volledig willekeurige sleutel een geheel andere Vigenère-tabel kan worden gebruikt. In dit geval bestaat het Vigenère-vierkant uit het Russische alfabet, regel voor regel geschreven met een offset van één. Dat brengt ons bij het ROT1-cijfer. En net als bij het Caesar-cijfer kan de offset van alles zijn. Bovendien hoeft de volgorde van de letters niet alfabetisch te zijn. In dit geval kan de tabel zelf een sleutel zijn, zonder te weten welke het onmogelijk zal zijn om het bericht te lezen, zelfs als u de sleutel kent.

Codes

Echte codes bestaan ​​uit overeenkomsten voor elk woord aparte code. Om ermee te werken heb je zogenaamde codeboeken nodig. In feite is dit hetzelfde woordenboek, dat alleen vertalingen van woorden in codes bevat. Een typisch en vereenvoudigd voorbeeld van codes is ASCII-tabel- internationaal cijfer van eenvoudige karakters.

Het grote voordeel van codes is dat ze erg moeilijk te ontcijferen zijn. Frequentieanalyse werkt bijna niet als je ze hackt. De zwakte van de codes zijn in feite de boeken zelf. Ten eerste is de bereiding ervan een complex en duur proces. Ten tweede veranderen ze voor vijanden in een gewenst object, en het onderscheppen van zelfs een deel van het boek dwingt hen om alle codes volledig te veranderen.

In de 20e eeuw gebruikten veel staten codes om geheime gegevens te verzenden, waardoor het codeboek in de loop van de tijd veranderde. bepaalde periode. En ze gingen actief op jacht naar de boeken van hun buren en tegenstanders.

"Raadsel"

Iedereen weet dat Enigma de belangrijkste nazi-encryptiemachine was tijdens de Tweede Wereldoorlog. De Enigma-structuur omvat een combinatie van elektrische en mechanische circuits. Hoe het cijfer uitpakt, hangt af van de initiële configuratie van de Enigma. Tegelijkertijd verandert Enigma automatisch de configuratie tijdens het gebruik, waarbij één bericht over de gehele lengte op verschillende manieren wordt gecodeerd.

In tegenstelling tot de meesten eenvoudige cijfers Enigma bood biljoenen mogelijke combinaties, waardoor het bijna onmogelijk werd om gecodeerde informatie te kraken. De nazi’s lieten op hun beurt voor elke dag een specifieke combinatie klaarmaken, die ze op een bepaalde dag gebruikten om berichten door te geven. Daarom, zelfs als Enigma in handen van de vijand zou vallen, heeft het op geen enkele manier bijgedragen aan het ontcijferen van berichten zonder de introductie van vereiste configuratie elke dag.

Ze probeerden tijdens de militaire campagne van Hitler actief Enigma te breken. In 1936 werd in Engeland voor dit doel een van de eerste computerapparaten (Turing-machine) gebouwd, die in de toekomst het prototype van computers werd. Zijn taak was om de werking van enkele tientallen Enigma's tegelijkertijd te simuleren en onderschepte nazi-berichten er doorheen te sturen. Maar zelfs de Turingmachine kon slechts af en toe een bericht kraken.

Encryptie met publieke sleutel

Het populairste versleutelingsalgoritme, dat overal in technologie en computersystemen wordt gebruikt. De essentie ervan ligt in de regel in de aanwezigheid van twee sleutels, waarvan er één openbaar wordt verzonden en de tweede geheim (privé). De publieke sleutel wordt gebruikt om het bericht te versleutelen, en de geheime sleutel wordt gebruikt om het te ontsleutelen.

De rol van de publieke sleutel wordt meestal gespeeld door een very groot aantal, die slechts twee delers heeft, één en het getal zelf niet meegerekend. Samen vormen deze twee delers de geheime sleutel.

Laten we naar een eenvoudig voorbeeld kijken. Stel dat de publieke sleutel 905 is. De delers ervan zijn de getallen 1, 5, 181 en 905. Dan is de geheime sleutel bijvoorbeeld het getal 5*181. Zou je zeggen dat het te simpel is? Wat als het openbare nummer een nummer is met 60 cijfers? Het is wiskundig moeilijk om de delers van een groot getal te berekenen.

Voor een realistischer voorbeeld kunt u zich voorstellen dat u geld opneemt bij een geldautomaat. Wanneer een kaart wordt gelezen, worden persoonlijke gegevens gecodeerd met een bepaalde openbare sleutel, en aan de kant van de bank wordt de informatie gedecodeerd met een geheime sleutel. En deze publieke sleutel kan voor elke bewerking worden gewijzigd. Maar er zijn geen manieren om snel de belangrijkste scheidslijnen te vinden bij het onderscheppen ervan.

Duurzaamheid van lettertypen

De cryptografische kracht van een versleutelingsalgoritme is het vermogen om hacking te weerstaan. Deze parameter is het belangrijkste voor elke versleuteling. Het is duidelijk dat een eenvoudig vervangingscijfer iedereen kan ontcijferen elektronisch apparaat, is een van de meest onstabiele.

Bestaat vandaag niet gemeenschappelijke normen, waarmee de sterkte van het cijfer kon worden beoordeeld. Het is arbeidsintensief en lang proces. Er zijn echter een aantal commissies die normen op dit gebied hebben opgesteld. Bijvoorbeeld, minimale eisen volgens het Advanced Encryption Standard- of AES-coderingsalgoritme, ontwikkeld door NIST USA.

Ter referentie: het Vernam-cijfer wordt erkend als het meest resistente cijfer om te kraken. Tegelijkertijd is het voordeel dat het, volgens het algoritme, het eenvoudigste cijfer is.

De laatste keer maakte je kennis met de grote en verschrikkelijke binnenlandse cijfers. Dit was een heel moeilijke les, omdat deze cryptosystemen staatsgeheimen bewaken. Kun je me vertellen wat geavanceerder is? Maar hier, alsjeblieft! In feite hoef je niet bang te zijn, deze keer zullen we niet zo diep in de wiskunde duiken en encryptiemodi overwegen - je hebt hun principes al geleerd (of niet). Laten we de belangrijkste buitenlandse cijfers doornemen en zien hoe ze in de praktijk worden gebruikt.

Routekaart

Dit is de vierde les in de serie “Dive into Crypto”. Alle lessen uit de serie in chronologische volgorde:

  • Grondbeginselen en historische codeerders. Hoe shift-, substitutie-, Richard Sorge-, Vernam- en codeermachines werken (en worden geanalyseerd)
  • Wat is het, hoe wordt sleuteldistributie uitgevoerd en hoe kies je een sterke sleutel
  • Wat is een Feistel-netwerk en wat zijn de binnenlandse blokcijfers die in moderne protocollen worden gebruikt - GOST 28147-89, "Kuznechik"
  • Les 4. Moderne buitenlandse cijfers. Wat is het verschil tussen 3DES, AES, Blowfish, IDEA, Threefish van Bruce Schneier en hoe ze werken (ben je hier)
  • Soorten elektronische handtekeningen hoe ze werken en hoe ze te gebruiken
  • Les 6. Kwantumcryptografie. Wat is het, waar wordt het gebruikt en hoe helpt het bij de distributie? geheime sleutels, generatie willekeurige nummers en elektronische handtekening

3DES

Laten we dus eerst in een reeks buitenlandse cijfers 3DES bekijken, of liever de meest nabije verwant DES (Data Encryption Standard), die, hoewel niet langer als zodanig gebruikt, de voorloper van 3DES is.

DES is ontwikkeld door een team wiskundigen van het IBM Research Laboratory, waartoe ook het al bekende Feistel behoorde. De eerste versie van het cijfer heette "Lucifer", maar werd later gewijzigd en uiteindelijk aangenomen als het officiële Data Encryption Algorithm (DEA). Het bleef ruim twintig jaar de wereldstandaard voordat het werd vervangen door Triple DES.

Laten we eens kijken hoe het DES-coderingsalgoritme werkt. Om dit te doen, moet u de werking van het Feistel-netwerk onthouden. DES is een Feistel-netwerk van 16 ronden met symmetrische coderingssleutels. De lengte van het tekstblok is 64 bits, de lengte van de ronde sleutel is 48 bits. Laten we dus de belangrijkste stappen van DES-codering doornemen, waarbij we de harde wiskundige kant weglaten:

  1. De tekst is, net als bij elke andere versleuteling, verdeeld in blokken van 64 bits.
  2. Uit een 56-bits sleutel worden 16 ronde sleutels van 48-bit gegenereerd.
  3. Elk blok ondergaat permutatie, dat wil zeggen dat alle bits van het invoerblok worden geschud volgens een bepaalde tabel.
  4. Het blok wordt in twee helften gesplitst en komt in het bekende Feistel-netwerk terecht, waar 16 ronden worden gescrolld.
  5. We verbinden de helften.
  6. En nog een verandering.

De begin- en eindpermutaties hebben geen betekenis voor cryptografie in DES. Beide permutaties zijn zonder sleutels en de tabellen daarvoor zijn vooraf gedefinieerd. De reden dat ze in DES zijn opgenomen is onduidelijk en de DES-ontwerpers hebben er niets over gezegd. Er kan worden aangenomen dat het de bedoeling was dat het algoritme in hardware (op chips) zou worden geïmplementeerd en dat deze twee complexe permutaties het moeilijk zouden maken software-modellering versleutelingsmechanisme.

Hier vindt u in feite alles wat u moet weten over de werking van het DES-algoritme. Als we dieper ingaan op de werking van de functie die in het Feistel-netwerk is gedefinieerd, is alles in orde. Het voert zowel permutatie als vervanging uit (S-boxen, zoals je je misschien nog herinnert uit het vorige artikel) en optelling met een ronde sleutel.

Maar laten we terugkeren naar triple DES, of Triple DES. Het werd nodig omdat de 56-bits DES-sleutel kwetsbaar was voor brute kracht en met de groei computer kracht dit probleem werd steeds nijpender. Met behulp van de technologie die vandaag de dag beschikbaar is, kunnen één miljoen sleutels per seconde worden geverifieerd. Dit betekent dat het meer dan tweeduizend jaar zou duren om DES met brute kracht te decoderen met behulp van een computer met slechts één processor.

Maar als je een computer neemt met één miljoen processorkernen, die de sleutels parallel verwerkt, kunnen wij in ongeveer 20 uur de gehele set sleutels controleren. Toen DES werd geïntroduceerd, bedroegen de kosten van zo'n computer enkele miljoenen dollars, maar deze daalden snel. Speciale computer werd opgericht in 1998 - en vond de sleutel in 112 uur.

Het probleem oplossen Snelzoeken sleutel, stelden slimme buitenlandse cryptografen voor om twee sleutels te gebruiken en DES tweemaal te gebruiken. Dubbele DES was echter kwetsbaar voor een meet-in-the-middle-aanval. Om deze aanval uit te voeren heeft de aanvaller de leesbare tekst en de bijbehorende cijfertekst nodig. De aanvaller codeert de leesbare tekst met alle mogelijke sleutels en legt de resultaten vast in Tabel 1. Vervolgens decodeert hij de gecodeerde tekst met alle mogelijke sleutels. mogelijke sleutels en schrijft het resultaat naar tabel 2. Vervolgens zoekt de aanvaller naar overeenkomsten in tabellen 1 en 2.

Aanval van dit type bestaat uit het opsommen van de sleutels aan de cijfertekst- en leesbare tekstzijde en vereist ongeveer vier keer meer berekeningen dan het opsommen van een gewone DES-sleutel, en behoorlijk veel geheugen voor opslag tussenresultaten. In de praktijk is de aanval echter haalbaar, waardoor Double DES onbruikbaar wordt.

Bij Triple DES is het totaal anders. Het gebruik van drie sleutels en de toepassing van algoritmen in de volgorde aangegeven in het diagram verlengden de levensduur van DES met nog een aantal jaren.


Prachtige DES

Wat is er zo geweldig aan DES? Dit versleutelingsalgoritme is onderworpen aan uitgebreide analyse. DES had twee zeer belangrijke eigenschappen van blokcijfers: lawine en volledigheid. Het is tijd om je cryptografische woordenschat uit te breiden!
Het lawine-effect betekent dat kleine veranderingen in de originele tekst (of sleutel) grote veranderingen in de cijfertekst kunnen veroorzaken.

Het is bewezen dat DES alle kenmerken van dit pand bezit.

Hoewel de twee leesbare tekstblokken alleen in het meest rechtse bit verschillen, verschillen de cijfertekstblokken met 29 bits. Dit betekent dat een verandering van ongeveer 1,5% van de leesbare tekst een verandering van ongeveer 45% van de cijfertekst veroorzaakt.

Het volledigheidseffect is dat elk bit van de cijfertekst afhankelijk moet zijn van vele bits van de leesbare tekst. Zoals we al hebben ontdekt, gebruikt DES zowel permutaties als substituties - alle transformaties bepalen de afhankelijkheid van elk cijfertekstbit van verschillende bits van de originele tekst.

Waar wordt DES gebruikt? Ja, bijna overal zijn de implementaties ervan aanwezig in de meeste softwarebibliotheken. Maar wie weet hoe veilig het tegenwoordig is om DES te gebruiken? Hoewel IBM beweerde dat het algoritme het resultaat was van 17 manjaren intensieve cryptanalyse, vreesden sommige mensen dat de NSA een maas in het algoritme had gestoken waardoor de dienst onderschepte berichten gemakkelijk kon ontsleutelen. De inlichtingencommissie van de Amerikaanse Senaat heeft deze kwestie zorgvuldig bestudeerd en uiteraard niets gevonden, de aanklacht tegen de NSA werd ingetrokken en de resultaten van het onderzoek werden niettemin geheim gehouden. Kortom, in Amerika doen al lange tijd geruchten en speculaties de ronde over de vraag of DES wel of niet te vertrouwen is. Maar, zoals ik geloof, wordt de situatie hier beschreven door het gezegde: “Een slim persoon zal het niet vertellen, een dwaas zal het niet begrijpen.” Uiteindelijk gaf de NSA toe dat ze IBM niet kon toevertrouwen met zo’n belangrijke missie en voerde ze verschillende aanpassingen door, zoals het specificeren van S-boxen.

Gedurende het hele bestaan ​​van DES is hij een doelwit geweest verschillende methoden cryptoanalyse. Cryptanalisten zijn nooit gestopt met het testen van DES-breekmachines om te zien hoe lang het zou duren om een ​​tekst te ontcijferen. In dit opzicht zijn er talloze verschillende aanpassingen aan dit algoritme verschenen, en 3DES is verre van de meest geavanceerde daarvan.