Symmetrische cryptosystemen. Soorten symmetrische cijfers. Werkingsprincipe van asymmetrische systemen

Er zijn twee methodologieën voor de verwerking van cryptografische informatie met behulp van sleutels: symmetrisch en asymmetrisch.

Symmetrisch (geheim) een methodologie waarbij zowel voor de encryptie als de decryptie de afzender en de ontvanger dezelfde sleutel gebruiken, waarvan zij het gebruik overeenkwamen vóór het begin van de interactie (Fig. 2.1). Als de sleutel niet is aangetast, authenticeert de decodering automatisch de afzender, aangezien alleen de afzender de sleutel heeft waarmee de informatie kan worden gecodeerd, en alleen de ontvanger de sleutel heeft waarmee de informatie kan worden gedecodeerd. Omdat de afzender en de ontvanger de enige mensen zijn die deze symmetrische sleutel kennen, zal alleen de interactie tussen deze twee gebruikers in gevaar komen als de sleutel wordt gecompromitteerd.

Rijst. 2.1

Symmetrische encryptie-algoritmen maken niet zo goed gebruik van sleutels lange lengte en kan snel grote hoeveelheden gegevens versleutelen.

Tegenwoordig beschikbare tools die gebruik maken van symmetrische methodologie zijn bijvoorbeeld ATM-netwerken. Deze systemen zijn originele ontwikkelingen van de banken die ze bezitten en zijn niet te koop.

Van de symmetrische versleutelingsalgoritmen is het meest gebruikte algoritme DES-codering(uitgevonden door IBM), dat wordt aanbevolen in open sectoren van de Amerikaanse economie. Dit algoritme was aanvankelijk gedoemd tot een beperkte levensduur omdat de sleutellengte beperkt was tot 56 bits.

Begin 1997 werd het DES-algoritme, dat een sleutel van 56 bits heeft, uitgedaagd. Op 17 juni 1997, na 140 dagen, werd de sleutel gedecodeerd. Dit betekende de virtuele dood van DES als encryptiestandaard. Toen begin 1998 de volgende wedstrijd om de DES-sleutel te vinden binnen slechts 39 dagen slaagde, kondigde het Amerikaanse National Institute of Standards (NIST) een wedstrijd aan om de nieuwe AES-standaard (Advanced Encryption Standard) goed te keuren. AES is een volledig open symmetrisch algoritme geworden met sleutelgroottes van 128, 192, 256 bits.

De situatie wordt verergerd door het feit dat volgens de Amerikaanse wet encryptiesystemen met een sleutel van niet meer dan 128 bits mogen worden geëxporteerd als softwareproducten. Dat wil zeggen dat wanneer u een coderingssysteem koopt met een sleutel van 1024 of 2048 of meer bits, u moet weten dat wanneer de sleutel wordt gewijzigd, het actieve (veranderende) deel het 128-bits deel van de sleutel zal zijn. Symmetrische encryptiesystemen hebben één gemeenschappelijk nadeel, namelijk de moeilijkheid om sleutels te distribueren. Als de sleutel door een derde partij wordt onderschept, komt een dergelijk cryptografisch beveiligingssysteem in gevaar. Wanneer de sleutel wordt vervangen, moet deze dus vertrouwelijk worden doorgestuurd naar de deelnemers aan de coderingsprocedures. Het is duidelijk dat deze methode niet geschikt is als u veilige verbindingen tot stand moet brengen met duizenden of meer internetabonnees. Het grootste probleem is hoe sleutels kunnen worden gegenereerd en veilig kunnen worden verzonden naar de deelnemers aan de interactie. Hoe kan een veilig kanaal voor informatieoverdracht tussen deelnemers aan de interactie tot stand worden gebracht om sleutels via onbeveiligde communicatiekanalen over te dragen? Het ontbreken van een veilige sleuteluitwisselingsmethode beperkt de verspreiding van symmetrische encryptietechnieken op internet.

Ze probeerden dit probleem op te lossen door te ontwikkelen asymmetrisch (open) encryptiemethodologie. Het codeert een document met één sleutel en decodeert het met een andere. Elke deelnemer aan de overdracht van informatie genereert onafhankelijk twee willekeurige getallen (geheime en publieke sleutels).

De publieke sleutel wordt via open communicatiekanalen verzonden naar een andere deelnemer aan het cryptobeschermingsproces, maar de privésleutel wordt geheim gehouden.

De afzender codeert het bericht met de publieke sleutel van de ontvanger, A Alleen de eigenaar van de privésleutel kan deze ontsleutelen(Afb. 2.2).

Rijst. 2.2

De publieke sleutel hoeft niet verborgen te zijn. Het maakt niet uit wie het weet gegeven sleutel, omdat het alleen bedoeld is voor gegevensversleuteling. Deze methode is geschikt voor brede toepassing. Als u elke gebruiker op internet een eigen paar sleutels toewijst en openbare sleutels publiceert als getallen in telefoonboek, dan kan vrijwel iedereen versleutelde berichten met elkaar uitwisselen. Het ziet eruit als een doos met twee deuren aan verschillende kanten. Elke deur heeft zijn eigen slot. Het document wordt in de doos geplaatst, vergrendeld en aan de andere kant ontgrendeld met de sleutel van de ontvanger. Hierbij wordt gebruik gemaakt van de priemgetaltheorie. Dit cryptografische beveiligingsalgoritme wordt RSA genoemd.

Alle asymmetrische cryptosystemen zijn onderhevig aan aanvallen met brute kracht en moeten daarom veel langere sleutels gebruiken dan de sleutels die in symmetrische cryptosystemen worden gebruikt om een ​​gelijkwaardig beveiligingsniveau te bieden. Dit heeft een onmiddellijke impact op de computerbronnen die nodig zijn voor encryptie. RSA is een industriestandaard asymmetrisch sleutelalgoritme geworden dat door bedrijven wordt gebruikt voor digitale handtekening en codering.

Symmetrische en asymmetrische encryptiesystemen hebben elk hun eigen voor- en nadelen. De nadelen van een symmetrisch encryptiesysteem zijn de moeilijkheid om een ​​gecompromitteerde sleutel te vervangen, en de nadelen van een asymmetrisch systeem zijn de relatief lage werkingssnelheid. In termen van cryptografische sterkte komt een sleutellengte van 128 bits in een symmetrisch systeem overeen met een sleutel van 2304 bits in een asymmetrisch systeem.

Momenteel zijn encryptiesystemen die gebruik maken van een gecombineerd algoritme wijdverspreid, waardoor het gebruik van open overdracht van encryptiesleutels (zoals in RSA) mogelijk is met de hoge encryptiesnelheid die inherent is aan AES.

Om de lage snelheid van asymmetrische versleutelingsalgoritmen te vermijden, wordt voor elk bericht een tijdelijke symmetrische sleutel gegenereerd. Het bericht wordt gecodeerd met behulp van deze tijdelijke symmetrische sessiesleutel. Deze sessiesleutel wordt vervolgens gecodeerd met behulp van de asymmetrische openbare sleutel van de ontvanger en een asymmetrisch coderingsalgoritme. Omdat de sessiesleutel veel korter is dan het bericht zelf, zal de versleutelingstijd relatief kort zijn. Hierna wordt deze gecodeerde sessiesleutel samen met het gecodeerde bericht naar de ontvanger verzonden (Fig. 2.3).

Rijst. 2.3

De ontvanger gebruikt hetzelfde asymmetrische versleutelingsalgoritme en zijn geheime sleutel om de sessiesleutel te ontsleutelen, en de resulterende sessiesleutel wordt gebruikt om het bericht zelf te ontsleutelen (Figuur 2.4).

Rijst. 2.4

Cryptografische systemen met publieke sleutels worden momenteel op grote schaal gebruikt in verschillende sectoren netwerkprotocollen, in het bijzonder bij TLS-protocollen en zijn voorganger SSL (onderliggende HTTPS), SSH. Wordt ook gebruikt in PGP, S/MIME.

¦ Encryptie-algoritmen en standaarden

¦ Elektronische digitale handtekening

¦ Moderne authenticatietechnologieën. Slimme kaarten

Cryptografie is de wetenschap van wiskundige methoden om de vertrouwelijkheid (onmogelijkheid om informatie door vreemden te lezen) en authenticiteit (integriteit en authenticiteit van auteurschap) van informatie te garanderen. Met andere woorden, cryptografie bestudeert methoden voor het coderen van informatie, dat wil zeggen methoden voor het beschermen van gegevens die worden gebruikt om kritieke gegevens op te slaan belangrijke informatie in onbetrouwbare bronnen of via onbeveiligde communicatiekanalen.

Encryptie als proces gaat eeuwen terug. Vervangingscodes bestaan ​​dus al ongeveer 2500 jaar. Een sprekend voorbeeld hiervan is het Atbash-cijfer, dat rond 600 voor Christus ontstond. De essentie van zijn werk was om het Hebreeuwse alfabet in omgekeerde volgorde te gebruiken. Julius Caesar gebruikte ook een vervangingscijfer, dat naar hem vernoemd was: het Caesarcijfer. De essentie van het Caesarcijfer was om elke letter te vervangen door een andere in het alfabet, drie plaatsen verder van de originele. Dus de letter A veranderde in D, B veranderde in E, ik veranderde in G, enz.

Encryptie kan ongetwijfeld een van de volgende worden genoemd het belangrijkste middel het garanderen van de veiligheid. We mogen echter niet vergeten dat encryptie zelf geenszins een wondermiddel is voor alle problemen. Encryptiemechanismen kunnen en moeten dat zijn integraal onderdeel uitgebreid beveiligingsprogramma.

Volgens de klassieke canons van informatiebeveiliging waarborgt encryptie drie fundamentele toestanden van informatiebeveiliging.

¦ Vertrouwelijkheid. Versleuteling wordt gebruikt om informatie tijdens verzending of opslag te verbergen voor ongeautoriseerde gebruikers.

¦ Integriteit. Encryptie wordt gebruikt om te voorkomen dat informatie tijdens verzending of opslag wordt gewijzigd. Een sprekend voorbeeld - controlesom, verkregen met behulp van een hash-functie (wat te zien is op FTP-servers naast het bestand (zoiets als dit - dpofgj 0 93utm34tdfgb45ygf) dat we gaan downloaden).

¦ Identificeerbaarheid. Encryptie wordt gebruikt om de informatiebron te authenticeren en te voorkomen dat de afzender van informatie ontkent dat de gegevens door hem zijn verzonden.

Het is bekend dat elk encryptiesysteem kan worden gehackt. Het punt is eenvoudigweg dat het onaanvaardbaar kan zijn om toegang te krijgen tot gecodeerde informatie groot aantal tijd en middelen.

Wat betekent dit en hoe ziet het er uit echte leven? Stel je deze situatie eens voor: een aanvaller slaagde er op de een of andere manier in om gecodeerde informatie te onderscheppen. Verdere acties van de hacker kunnen worden teruggebracht tot twee hackopties (een derde is ook mogelijk, wat neerkomt op het uitbuiten van kwetsbaarheden in de werkomgeving):

¦ “brute force”-aanval, of Brute Force (“brute force”-aanvallen impliceren de selectie van alle mogelijke sleutelopties);

¦ zoeken naar kwetsbaarheden in het algoritme.

Gezien het feit dat de momenteel gebruikte versleutelingsalgoritmen al door vuur en tijd zijn getest, ligt het vrij voor de hand dat een aanvaller Brute Force zal gebruiken. Hacken vertrouwelijke informatie, gecodeerd met een sterk algoritme en een voldoende lange sleutel (bijvoorbeeld 512 bits), vereist dat de aanvaller een ‘leger’ supercomputers of een distributienetwerk van enkele honderdduizenden machines gebruikt, plus veel tijd en geld. Maar als je geld hebt, waarom niet! Daarom kondigde de Electronic Frontier Foundation (EFF) in 1997 een computersysteem aan dat binnen vier dagen een DES-sleutel kon vinden. De creatie van een dergelijk systeem kostte het bedrijf $ 250.000 met de hulp moderne apparatuur het is mogelijk om in 35 minuten een DES-sleutel te bepalen via een brute force-aanval.

2.1. Encryptie-algoritmen en standaarden

Afhankelijk van de gebruikte sleutels kan de codering in de volgende typen worden verdeeld.

¦ Symmetrische codering, waarbij de sleutel voor codering en decodering dezelfde sleutel is (op het gewone niveau - alleen een wachtwoord).

¦ Asymmetrische encryptie: omvat het gebruik van twee verschillende sleutels: openbaar en privé. De publieke sleutel wordt doorgaans in gewone tekst verzonden, terwijl de private sleutel altijd geheim wordt gehouden.

Er zijn ook andere vormen van encryptie bekend, zoals geheim schrijven. Om bekende redenen zijn geheime schrijfalgoritmen niet openbaar: het versleutelingsalgoritme zelf is onbekend bij buitenstaanders; De transformatiewet is alleen bekend bij de afzender en ontvanger van het bericht. Een van heldere voorbeelden Dergelijke systemen kunnen als eenmalige pads worden beschouwd. One-time Pads (One-time Pad of OTP) kunnen het enige theoretisch onbreekbare encryptiesysteem worden genoemd. Een one-time pad is een lijst met getallen in willekeurige volgorde die wordt gebruikt om een ​​bericht te coderen. Zoals de naam al doet vermoeden, kan OTP slechts één keer worden gebruikt. Eenmalige pads worden veel gebruikt in informatieomgevingen met zeer hoog niveau beveiliging (maar alleen voor korte berichten). Zo werd OTP in de Sovjet-Unie gebruikt om inlichtingenofficieren met Moskou te verbinden.

Symmetrische codering

Zoals hierboven vermeld, wordt bij symmetrische encryptie dezelfde sleutel gebruikt om gegevens te coderen en te decoderen. Het is duidelijk dat de algoritmesleutel door beide partijen geheim moet worden gehouden. Simpel gezegd betekent de sleutel in dit geval een wachtwoord, dat uiteraard geheim moet worden gehouden.

Populaire symmetrische encryptie-algoritmen zijn:

¦ DES (aanzienlijk verouderd) en TripleDES (3DES);

¦ AES (Rijndael);

¦ GOST 28147-89;

De belangrijkste parameters van symmetrische encryptie-algoritmen kunnen worden overwogen:

¦ duurzaamheid;

¦ sleutellengte;

¦ aantal rondes;

¦ lengte van het verwerkte blok;

¦ complexiteit van hardware-/software-implementatie.

Dus laten we beginnen.

Gegevenscoderingsstandaard (DES). Het Data Encryption Standard (DES)-algoritme werd begin jaren zeventig door IBM ontwikkeld. Het Amerikaanse National Institute of Standards and Technology (NIST) heeft in 1977 een algoritme (FIPS-publicatie 46) voor DES aangenomen. Het algoritme werd verder gewijzigd in 1983, 1988, 1993 en 1999.

Tot voor kort was DES een ‘Amerikaanse standaard’ omdat de regering van dat land het gebruik ervan voor verschillende gegevensversleutelingssystemen aanbeveelde. 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.

DES gebruikt een 56-bits sleutel. Volgens de huidige normen is een dergelijke sleutellengte onaanvaardbaar. DES is een blokversleutelingsalgoritme dat één 64-bits blok platte tekst tegelijk verwerkt. Het DES-algoritme voert 16 versleutelingscycli uit met in elke cyclus een andere subsleutel. De sleutel wordt onderworpen aan zijn eigen algoritme om 16 subsleutels te vormen (Figuur 2.1).

Rijst. 2.1. Hoe DES werkt

Laten we de werking van het algoritme in meer detail bekijken. Het invoerdatablok, bestaande uit 64 bits, wordt omgezet in een uitvoerblok van identieke lengte. De encryptiesleutel moet bekend zijn bij zowel de verzendende als de ontvangende partij. Het algoritme maakt uitgebreid gebruik van permutaties van tekstbits.

Er wordt een functie F geïntroduceerd die werkt op 32-bits bronwoorden® en een 48-bits sleutel (J) als parameter gebruikt. Het werkingsdiagram van functie F wordt getoond in Fig. 2.1. Eerst worden de 32 invoerbits uitgebreid tot 48, waarbij enkele bits worden herhaald.

Voor de resulterende 48-bits code en sleutel wordt een modulo-2-optelbewerking uitgevoerd. De resulterende 48-bits code wordt geconverteerd naar 32-bits met behulp van S-matrices.

De originele 48-bits code is verdeeld in acht groepen van zes bits. Het eerste en laatste cijfer in de groep worden gebruikt als rijadres en de middelste vier cijfers worden gebruikt als kolomadres. Als gevolg hiervan worden elke zes bits code omgezet in vier bits, en wordt de volledige 48-bits code omgezet in 32-bits (hiervoor zijn acht S-matrices nodig). Er zijn ontwikkelingen die het mogelijk maken om encryptie binnen de DES-standaard uit te voeren in hardware, wat redelijk hoge prestaties levert.

Om nog steeds alle fijne kneepjes van het DES-algoritme te begrijpen, zou het heel passend zijn om een ​​beschrijving te geven van het zogenaamde Feistel-netwerk (ook wel het Feistel-netwerk genoemd), dat de basis vormt van DES.

In 1973 publiceerde Horst Feistel een artikel in Scientific American getiteld "Cryptography and Computer Privacy", waarin hij enkele belangrijke aspecten encryptie, en introduceerde ook een ontwerp dat later het Feishtel-netwerk werd genoemd. Dit circuit werd gebruikt in het Lucifer-project van IBM, waaraan Feistel en Don Coppersmith werkten. Dit project was nogal experimenteel, maar werd de basis voor de Data Encryption Standard (DES). De iteratieve structuur van het algoritme maakte het mogelijk de implementatie ervan in hardwareomgevingen te vereenvoudigen.

Het is passend op te merken dat de volgende blokcijfers het klassieke of gemodificeerde Feishtel-netwerk als basis gebruiken: Blowfish, Camellia, CAST, DES, FEAL, GOST 28147-89, KASUMI, LOKI97, Lucifer, MacGuffin, MARS, MAGENTA, MISTY1, RC2, RC5, RC6, Skipjack, TEA, Triple DES, Twofish, XTEA.

TripleDES (3DES). De duidelijke instabiliteit van DES leidde tot de zoektocht naar een alternatief. In 1992 bleek uit onderzoek dat DES drie keer kon worden gebruikt om sterkere encryptie te bieden. Zo werd triple DES (3DES) geboren. Triple DES wordt gebruikt met twee of drie sleutels. De sleutel die in dit geval wordt gebruikt, biedt meer vermogen vergeleken met conventionele DES.

Geavanceerde coderingsstandaard (AES). Kort na de release van DES werd een duidelijke zwakte van het algoritme ontdekt. De behoefte aan een nieuwe standaard was meer dan duidelijk: de kleine lengte van de DES-sleutel (56 bits) maakte het mogelijk om tegen dit algoritme een brute force-methode te gebruiken. Bovendien was de DES-architectuur gericht op hardware-implementatie en leverde de software-implementatie van het algoritme op platforms met beperkte middelen niet de vereiste prestaties. De TDES-modificatie had voldoende sleutellengte, maar was zelfs langzamer. TDES bestond niet lang genoeg om te kunnen zeggen dat het algoritme robuust en betrouwbaar is. Het werd, zoals je zou verwachten, vervangen door een stabieler en betrouwbaarder algoritme: AES, dat overigens werd gekozen als resultaat van een concurrentiestrijd en door de Amerikaanse overheid werd aangenomen als de Amerikaanse encryptiestandaard. Nog even iets over de wedstrijd zelf.

Op 2 januari 1997 kondigde NIST (National Institute of Standards and Technology) zijn voornemen aan om een ​​vervanger voor DES te vinden. Amerikaanse standaard sinds 1977. NIST heeft een behoorlijke hoeveelheid input ontvangen van geïnteresseerde partijen over de manier waarop het algoritme moet worden geselecteerd. Actieve reactie van de open cryptografiegemeenschap leidde tot de aankondiging van de wedstrijd op 12 september 1997. Het algoritme zou door vrijwel elke organisatie of groep onderzoekers kunnen worden voorgesteld. De minimumvereisten voor de nieuwe standaard waren als volgt:

¦ het moet een blokcijfer zijn;

¦ de bloklengte moet 128 bits zijn;

¦ het algoritme moet werken met sleutels met een lengte van 128, 192 en 256 bits;

¦ bewerkingen gebruiken die gemakkelijk kunnen worden geïmplementeerd, zowel in hardware (in microchips) als in software (op personal computers en servers);

¦ focus op 32-bits processors;

¦ maak de structuur van het cijfer niet onnodig ingewikkeld, zodat alle geïnteresseerde partijen onafhankelijk een onafhankelijke cryptanalyse van het algoritme kunnen uitvoeren en ervoor kunnen zorgen dat het geen ongedocumenteerde mogelijkheden bevat.

Naast al het bovenstaande moet een algoritme dat claimt een standaard te worden over de hele wereld worden verspreid zonder patentkosten te betalen.

Op 20 augustus 1998 werd tijdens de eerste AES-conferentie een lijst van 15 kandidaten bekend gemaakt, te weten: CAST-256, CRYPTON, DEAL, DFC, E2, FROG, HPC, LOKI97, MAGENTA, MARS, RC6, Rijndael, SAFER+, Slang en Tweevissen.

Het is duidelijk dat deze algoritmen in daaropvolgende discussies aan de meest zorgvuldige analyse zijn onderworpen, waarbij niet alleen cryptografische eigenschappen zijn onderzocht, zoals weerstand tegen bekende aanvallen en de afwezigheid van zwakke sleutels, maar ook praktische aspecten van de implementatie. Speciale aandacht bij het kiezen van een algoritme was dus gericht op het optimaliseren van de snelheid van code-uitvoering verschillende architecturen(van pc tot smartcards en hardware-implementaties), de mogelijkheid om de codegrootte te optimaliseren, de mogelijkheid om te parallelliseren.

De tweede AES-conferentie werd gehouden in maart 1999 en in augustus 1999 werden vijf finalisten bekend gemaakt, waaronder: MARS, RC6, Rijndael, Serpent en Twofish. Ze zijn allemaal ontwikkeld door gerenommeerde cryptografen met wereldwijde erkenning. Op de derde AES-conferentie in april 2000 presenteerden alle auteurs hun algoritmen.

De derde AES-conferentie werd op 13 en 14 april 2000 in New York gehouden, kort voor het einde van de tweede fase. De tweedaagse conferentie was verdeeld in acht sessies, vier per dag. Tijdens de eerste dagsessies werden kwesties besproken die verband houden met field programmable arrays (FGPA's), waarbij de implementatie van algoritmen op verschillende platforms werd geëvalueerd, waaronder PA-RISC, IA-64, Alpha, high-level smartcards en signaal processors werden de prestaties van aanvragers voor de standaard vergeleken en werd het aantal rondes in kandidaat-algoritmen geanalyseerd. Op de tweede dag werd Rijndael geanalyseerd met een beperkt aantal rondes en werd de zwakte ervan in dit geval aangetoond, werd de kwestie van het integreren van alle vijf kandidaat-algoritmen in de uiteindelijke standaard besproken en werden alle algoritmen opnieuw getest. Aan het einde van de tweede dag werd een presentatie gehouden waarin de aanvragers vertelden over hun algoritmen en hun voor- en nadelen. Vincent Rijmen sprak over Rijndael als leider en noemde de betrouwbaarheid van de bescherming, de hoge algehele prestaties en de eenvoud van de architectuur van zijn kandidaat.

Op 2 oktober 2000 werd het Rijndael-algoritme uitgeroepen tot winnaar van de wedstrijd en begon de standaardisatieprocedure. Op 28 februari 2001 werd het ontwerp gepubliceerd en op 26 november 2001 werd AES aangenomen als FIPS 197.

Strikt genomen zijn TTW en Rijndael niet hetzelfde, aangezien Rijndael dit ondersteunt breed bereik lengtes van sleutels en blokken.

Bijzonder opmerkelijk is het feit dat het Rijndael-algoritme niet vergelijkbaar is met de meeste bekende symmetrische encryptie-algoritmen, die gebaseerd zijn op het Feishtel-netwerk. Laten we onze lezers eraan herinneren dat een kenmerk van het Feishtel-netwerk is dat de invoerwaarde is verdeeld in twee of meer subblokken, waarvan sommige in elke ronde worden verwerkt. bepaalde wet, waarna het op onverwerkte subblokken wordt gesuperponeerd.

In tegenstelling tot GOST 28147, dat hieronder zal worden besproken, vertegenwoordigt het Rijndael-algoritme een datablok in de vorm van een tweedimensionale byte-array met de grootte 4 x 4, 4 x 6 of 4 x 8 (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 rijen.

Het Rijndael-algoritme omvat het uitvoeren van vier opeenvolgende transformaties.

1. BS (ByteSub) – tabelvervanging van elke byte van de array (Fig. 2.2).


Rijst. 2.2. Vervanging in tabelvorm van elke byte van de array

2. SR (ShiftRow) – verschuiving van arrayrijen. 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 array van 4 x 4 worden rijen 2, 3 en 4 bijvoorbeeld respectievelijk 1, 2 en 3 bytes verschoven (Afbeelding 2.3).

3. Vervolgens komt MC (MixColumn) - een bewerking op onafhankelijke kolommen van een array, waarbij elke kolom wordt vermenigvuldigd met een vaste matrix C(X) volgens een bepaalde regel (Fig. 2.4).

4. De laatste fase is AK (AddRoundKey) - het toevoegen van een sleutel. 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. 2.5).


Rijst. 2.3. Array-rijverschuiving


Rijst. 2.4. Operatie MixColumn


Rijst. 2.5. Sleutelbediening toevoegen

De bovenstaande transformaties van gecodeerde gegevens worden in elke ronde achtereenvolgens uitgevoerd (Fig. 2.6).

Rijst. 2.6. Rondereeks Rijndael

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

Waarom werd Rijndael de nieuwe encryptiestandaard, vóór andere algoritmen? In de eerste plaats biedt het hoge snelheid encryptie, en op alle platforms: zowel bij de software- als hardware-implementatie. Het algoritme onderscheidt zich door een succesvol mechanisme voor het parallelliseren 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.

Met alle voordelen en originaliteit AES-algoritme kan worden beschouwd als het absolute van betrouwbaarheid en duurzaamheid, maar zoals altijd zijn er geen perfecte producten.

Op 26 mei 2006 presenteerde Nicolas Tadeusz Courtois (een Poolse cryptograaf die in Frankrijk woont) op de Quo Vadis IV-conferentie een praktisch bewijs van het bestaan ​​van algebraïsche aanvallen die zijn geoptimaliseerd tegen het AES-Rijndael-cijfer. In anderhalf uur voerde hij op zijn laptop een demo-hack uit met slechts enkele cijferteksten van een nauwe analoog van Rijndael. Hoewel het slechts een modelcijfer was, was het net zo sterk, er werden geen noemenswaardige zwakke punten aan toegevoegd, het had dezelfde goede diffusie-eigenschappen en weerstand tegen alle eerder bekende vormen van cryptanalyse. Het enige verschil was dat de S-box-parameters werden gewijzigd binnen het raamwerk van het algebraïsche aanvalsmodel en dat het aantal rondes voor de duidelijkheid werd verminderd. Dit was echter voldoende om sceptici te overtuigen van de realiteit van algebraïsche aanvallen en de onvolkomenheid van zelfs zo’n ogenschijnlijk perfecte encryptiemethode.

GOST 28147. Het volgende symmetrische versleutelingsalgoritme dat we zullen overwegen is GOST 28147-89. Dit is een Sovjet- en Russische symmetrische encryptiestandaard die op 1 juli 1990 werd geïntroduceerd. De standaard is verplicht voor organisaties, ondernemingen en instellingen die gebruik maken van cryptografische bescherming van gegevens die zijn opgeslagen en verzonden in computernetwerken, in afzonderlijke computersystemen of computers.

Het algoritme is ontwikkeld in het voormalige hoofddirectoraat van de KGB van de USSR of in een van de geheime onderzoeksinstituten in zijn systeem. Aanvankelijk had het een rating (OB of SS - het is niet precies bekend), daarna werd de rating achtereenvolgens verlaagd en tegen de tijd dat het algoritme officieel werd uitgevoerd via de USSR State Standard in 1989, werd het verwijderd. Het algoritme blijft spaanplaat (zoals u weet wordt spaanplaat niet als toets beschouwd). In 1989 werd het de officiële standaard van de USSR, en later, na de ineenstorting van de USSR, de federale standaard van de Russische Federatie.

Sinds de publicatie van GOST werd het gemarkeerd met het beperkende stempel "Voor officieel gebruik", en formeel werd het cijfer pas in mei 1994 "volledig open" verklaard. Om bekende redenen zijn de geschiedenis van de creatie van het cijfer en de criteria voor het ontwerp ervan nog steeds onbekend.

GOST 28147-89 is een blokcijfer met een 256-bits sleutel en 32 conversiecycli, werkend op 64-bits blokken. De basis van het algoritme is het bij ons bekende Feishtel-netwerk. De belangrijkste coderingsmodus volgens GOST 28147-89 is de eenvoudige vervangingsmodus (er zijn ook complexere gamma- en feedbackgamma-modi gedefinieerd). Laten we het werkingsmechanisme van het algoritme in meer detail bekijken.

Wanneer GOST 28147-89 werkt, wordt informatie gecodeerd in blokken van 64 bits (dergelijke algoritmen worden blokalgoritmen genoemd), die vervolgens worden verdeeld in twee subblokken van 32 bits (N1 en N2). Nadat de verwerking van subblok N1 is voltooid, wordt de waarde ervan opgeteld bij de waarde van subblok N2 (de optelling wordt uitgevoerd modulo 2, dat wil zeggen: logische werking XOR - exclusief OR), en vervolgens worden de subblokken verwisseld. Deze transformatie wordt een bepaald aantal keren (ronden) uitgevoerd: 16 of 32, afhankelijk van de werkingsmodus van het algoritme. In elke ronde worden twee operaties uitgevoerd (Fig. 2.7).

Rijst. 2.7. De conversie wordt een bepaald aantal keren uitgevoerd

De eerste handeling omvat het aanbrengen van een sleutel. De inhoud van deelblok N1 wordt modulo 2 opgeteld met het 32-bits deel van de sleutel Kx. De volledige coderingssleutel wordt weergegeven als een aaneenschakeling van 32-bits subsleutels: K0, K1, K2, K3, K4, K5, K6, K7. Het versleutelingsproces maakt gebruik van een van deze subsleutels, afhankelijk van het ronde getal en de werkingsmodus van het algoritme.

Met de tweede bewerking wordt een tafelvervanging uitgevoerd. Na het intoetsen wordt subblok N1 verdeeld in acht delen van vier bits, waarvan de waarde wordt vervangen in overeenstemming met de vervangingstabel voor dit deel van het subblok. Hierna wordt een bitsgewijze cyclische verschuiving van het subblok met 11 bits naar links uitgevoerd.

Het algoritme, gedefinieerd door GOST 28147-89, kan in vier modi werken:

¦ eenvoudige vervanging;

¦ gokken;

¦ gamen met feedback;

¦ generatie van imitatievoorvoegsels.

Bij het genereren van imitatievoorvoegsels wordt dezelfde encryptietransformatie gebruikt als hierboven beschreven, maar aangezien het doel van de modi verschillend is, wordt deze transformatie in elk ervan anders uitgevoerd.

In de eenvoudige vervangingsmodus worden de hierboven beschreven 32 ronden uitgevoerd om elk 64-bits informatieblok te coderen. Elk blok wordt onafhankelijk van het andere versleuteld, dat wil zeggen dat het versleutelingsresultaat van elk blok alleen afhankelijk is van de inhoud ervan (het corresponderende blok met brontekst). Als er meerdere identieke blokken originele (platte) tekst zijn, zullen de corresponderende cijfertekstblokken ook identiek zijn, wat extra nuttige 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 de gammamodus wordt elk leesbare tekstblok bit voor bit modulo 2 toegevoegd aan een 64-bits gecodeerd gammablok. Een cipher-gamma is een speciale reeks die wordt verkregen als resultaat van bepaalde bewerkingen met registers N1 en N2.

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 (in dit geval het synchronisatiebericht) wordt gecodeerd in een eenvoudige vervangingsmodus.

3. De inhoud van register N1 wordt modulo (2 32 – 1) opgeteld met constante C1 gelijk aan 2 24 + 2 16 + 2 8 + 2 4, en het resultaat van de optelling wordt naar register N1 geschreven.

4. De inhoud van register N2 wordt modulo 2 32 opgeteld met constante C2 gelijk aan 2 24 + 2 16 + 2 8 + 1, en het resultaat van de optelling wordt naar register N2 geschreven.

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

Als het volgende gammablok nodig is (dat wil zeggen, u moet doorgaan met coderen of decoderen), keert u terug naar stap 2.

Voor decodering wordt gamma op een vergelijkbare manier gegenereerd, en vervolgens worden de cijfertekst en gammabits opnieuw XORed.

Om het cijfergamma te ontwikkelen dat nodig is voor decodering, moet de gebruiker die het cryptogram ontsleutelt, dezelfde sleutel en dezelfde synchronisatieberichtwaarde hebben die werden gebruikt bij het coderen 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 geclassificeerd, 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 gammamodus met gesloten lus wordt voor het vullen van registers N1 en N2, beginnend bij het tweede blok, niet het vorige gammablok gebruikt, maar het resultaat van het coderen van het vorige leesbare tekstblok. Het eerste blok binnen deze modus wordt volledig op dezelfde manier gegenereerd als de vorige.

Wanneer we de generatiewijze van imitatievoorvoegsels beschouwen, is het noodzakelijk om het concept van het onderwerp generatie te definiëren. Een voorvoegsel is een cryptografische controlesom die wordt berekend met behulp van een coderingssleutel en is 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^ Er wordt een -bit-imitatievoorvoegsel gebruikt, dat wil zeggen 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 extra controlemiddel. 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 tijdens de decodering de verkeerde sleutels zijn gebruikt. Het imitatievoorvoegsel is vooral handig voor het controleren van de juiste decodering van sleutelinformatie bij gebruik van schema's met meerdere sleutels.

Het GOST 28147-89-algoritme wordt als behoorlijk sterk beschouwd - momenteel zijn er geen effectievere methoden voor de openbaarmaking ervan dan de hierboven genoemde Brute Force. De hoge sterkte van het algoritme wordt voornamelijk bereikt door de grote sleutellengte, gelijk aan 256 bits. Bovendien neemt bij gebruik van een geheim synchronisatiebericht de effectieve sleutellengte toe tot 320 bits, en neemt de codering van de vervangende tabel toe extra stukjes. Bovendien kan de cryptografische kracht van GOST 28147-89, zelfs na 32 ronden, als ruim voldoende worden beschouwd, en dit ondanks het feit dat het volledige effect van het verspreiden van de invoergegevens na acht ronden wordt bereikt.

Tegenwoordig voldoet het GOST 28147-89-algoritme volledig aan alle cryptografievereisten en heeft het dezelfde voordelen als andere algoritmen, maar zonder de nadelen ervan. De voor de hand liggende voordelen van dit algoritme zijn onder meer:

¦ efficiënte implementatie en daarmee hoge prestaties op moderne computers;

¦ nutteloosheid van een krachtaanval (XSL-aanvallen worden niet in aanmerking genomen, omdat hun effectiviteit beperkt is op dit moment niet volledig bewezen).

Zoals altijd is het algoritme echter niet zonder nadelen: het is triviaal bewezen dat GOST "zwakke" sleutels en S-boxen heeft, maar de standaard beschrijft niet de criteria voor het selecteren en elimineren van "zwakke" sleutels. Bovendien specificeert de standaard geen algoritme voor het genereren van S-boxen (vervangingstabellen). Enerzijds kan dit aanvullende geheime informatie zijn (naast de sleutel), anderzijds roept het een aantal problemen op: het is onmogelijk om de cryptografische sterkte van een algoritme te bepalen zonder vooraf de substitutietabel te kennen. ; implementatie van het algoritme uit diverse fabrikanten kunnen verschillende vervangende tafels gebruiken en zijn mogelijk incompatibel met elkaar.

Laten we kort kijken naar enkele andere symmetrische versleutelingsalgoritmen.

Kogelvis. Blowfish is een 64-bit blokcode ontwikkeld door Schneier in 1993. Dit cijfer is, net als vele andere, gebaseerd op het Feishtel-netwerkalgoritme. Een aparte encryptieronde van dit algoritme bestaat uit een sleutelafhankelijke permutatie en een sleutelafhankelijke vervanging door data. Alle bewerkingen zijn gebaseerd op XOR's en toevoegingen op 32-bits woorden. De sleutel heeft een variabele lengte ( maximale lengte 448 bits) en wordt gebruikt om verschillende subsleutelarrays te genereren. De codering is speciaal gemaakt voor 32-bits machines en is aanzienlijk sneller dan het DES-algoritme dat we eerder hebben overwogen.

IDEE(International Data Encryption Algorithm) werd eind jaren tachtig ontwikkeld door K. Lai en D. Massey. Het is een cijfer dat bestaat uit herhalende blokken van 64 bits met een sleutel van 128 bits en acht ronden. Opgemerkt moet worden dat IDEA, in tegenstelling tot de versleutelingsalgoritmen die we eerder hebben besproken, niet gebaseerd is op het Feishtel-netwerk, hoewel het decoderingsproces vergelijkbaar is met het versleutelingsproces. IDEA is ontworpen om eenvoudig te implementeren in zowel software als hardware. Bovendien is de veiligheid van IDEA gebaseerd op het gebruik van drie incompatibele typen rekenkundige bewerkingen meer dan 16-bits woorden.

Een van de principes achter de oprichting van IDEA was om de differentiële cryptanalyse zo moeilijk mogelijk te maken, wat momenteel tot uiting komt in de afwezigheid van algebraïsch zwakke punten in het algoritme. Ook al zou de grote klasse (2,51) zwakke sleutels die door een zekere "Daemen" zijn ontdekt, het algoritme theoretisch in gevaar kunnen brengen, IDEA blijft een redelijk betrouwbaar algoritme, aangezien er 2.128 mogelijke sleutels zijn, wat het kraken ervan moeilijk maakt.

RC5 is een redelijk snel blokcijfer ontwikkeld door Ronald Linn Rivest speciaal voor RSA Data Security. Dit algoritme is parametrisch, dat wil zeggen dat het blok, de sleutellengte en het aantal doorgangen (rondes) variabel zijn.

De blokgrootte kan 32, 64 of 128 bits zijn. Het aantal doorgangen kan variëren van 0 tot 2048 bits. Dit soort parametriciteit maakt de RC5 uiterst flexibel en efficiënt algoritme in jouw klas.

De uitzonderlijke eenvoud van de RC5 maakt hem gemakkelijk te gebruiken. RC5, met een blokgrootte van 64 bits en 12 of meer passages, biedt goede weerstand tegen differentiële en lineaire cryptanalyse.

Asymmetrische encryptie

In tegenstelling tot symmetrische encryptie-algoritmen, die dezelfde sleutel gebruiken voor zowel decryptie als encryptie, gebruiken asymmetrische encryptie-algoritmen publieke (voor encryptie) en private of geheime (voor decryptie) sleutels.

In de praktijk wordt de ene sleutel geheim genoemd en de andere openbaar. De privésleutel wordt geheim gehouden door de eigenaar van het sleutelpaar. De publieke sleutel wordt publiekelijk in leesbare tekst verzonden. Opgemerkt moet worden dat als een abonnee één van een paar sleutels heeft, de andere sleutel niet kan worden berekend.

De publieke sleutel wordt berekend op basis van het geheim: kl = f(k2). Asymmetrische versleutelingsalgoritmen zijn gebaseerd op het gebruik van eenrichtingsfuncties. Per definitie is een functie y = f(x) unidirectioneel als deze eenvoudig kan worden berekend voor alle mogelijke waarden van x, en voor de meeste mogelijke waarden van y is het vrij moeilijk om een ​​waarde van x te berekenen waarvoor y = f(x) .

Een voorbeeld van een eenrichtingsfunctie is de vermenigvuldiging van twee grote getallen: N = S x G. Op zichzelf is een dergelijke vermenigvuldiging vanuit wiskundig oogpunt eenvoudige bediening. De inverse bewerking (ontleding van N in twee grote factoren), ook wel factorisatie genoemd, is volgens moderne tijdschattingen echter een tamelijk complex wiskundig probleem.

Laten we eens kijken naar enkele asymmetrische versleutelingsalgoritmen.

Diffie-Hellman-algoritme. In 1976 ontwikkelden Whitfield Diffie en Martin Hellman hun coderingssysteem met openbare sleutels. Het Diffie-Hellman-systeem is ontwikkeld om het probleem van sleuteldistributie bij het gebruik van geheime sleutelcoderingssystemen op te lossen. Het idee was om op een veilige manier overeenstemming te bereiken over een geheime sleutel, zonder de sleutel op een andere manier te delen. Daarom was het noodzakelijk om een ​​veilige manier te vinden om de privésleutel te verkrijgen via dezelfde communicatiemethode waarvoor de beveiliging was ontworpen. De essentie van het Diffie-Hellman-algoritme is als volgt. Laten we aannemen dat twee punten (S1 en S2) onderling een veilige verbinding tot stand moeten brengen, waarvoor het noodzakelijk is om overeenstemming te bereiken over een coderingssleutel.

¦ S1 en S2 accepteren twee grote gehele getallen a en b, en 1< a < b.

¦ S1 kiest willekeurig nummer i en berekent I = ai ? mod b. S1 zendt I naar abonnee S2.

¦ S2 selecteert een willekeurig getal j en berekent J = aj? mod b. S2 zendt J naar abonnee S1.

¦ S1 berekent k1 = Ji? mod b.

¦ S2 berekent k2 = Ij? mod b.

We hebben k1 = k2 = ai? j x mod b, daarom zijn k1 en k2 geheime sleutels bedoeld voor gebruik bij het verzenden van andere gegevens.

Zelfs als we aannemen dat een aanvaller er op de een of andere manier in slaagt om naar het verzonden verkeer te luisteren, zal hij a, b, I en J kennen. I en j blijven echter geheim. Het beveiligingsniveau van het systeem hangt af van de moeilijkheid om i te vinden voor een bekende I = ai? mod b. Dit probleem wordt het discrete logaritmeprobleem genoemd en wordt als zeer moeilijk beschouwd (dat wil zeggen, het is bijna onmogelijk op te lossen met behulp van moderne computerapparatuur) als de getallen erg groot zijn. Daarom moeten a en b zeer zorgvuldig worden gekozen. Zowel b als (b – 1)/2 moeten bijvoorbeeld een priemgetal zijn en minimaal 512 bits lang zijn. De aanbevolen nummerlengte is 1024 bits.

RSA-algoritme werd in 1978 ontwikkeld door drie co-auteurs en dankt zijn naam aan de eerste letters van de achternaam van de ontwikkelaars (Rivest, Shamir, Adleman). De kracht van het algoritme is gebaseerd op de moeilijkheid van het ontbinden van grote getallen en het berekenen van discrete logaritmen. De belangrijkste parameter van het RSA-algoritme is de systeemmodule N, volgens welke alle berekeningen in het systeem worden uitgevoerd, en N = R x S (R en S zijn geheim, willekeurig, eenvoudig grote cijfers, meestal dezelfde maat).

De geheime sleutel k2 wordt willekeurig gekozen en moet aan de volgende voorwaarden voldoen: 1< k2 < F(N) и НОД (k2, F(N))= 1, где НОД – наибольший общий делитель. Иными словами, k1 должен быть взаимно простым со значением функции Эйлера F(N) , причем последнее равно количеству положительных целых чисел в диапазоне от 1 до N, взаимно простых с N, и вычисляется как F(N) = (R – 1) ? (S – 1) .

De publieke sleutel kl wordt berekend uit de relatie (k2 x kl) = 1? mod F(N). Voor dit doel wordt het gegeneraliseerde Euclidische algoritme (algoritme voor het berekenen van de grootste gemene deler) gebruikt. Het coderen van datablok M met behulp van het RSA-algoritme wordt als volgt uitgevoerd: C = Mkl? mod N. Omdat in een echt cryptosysteem dat RSA gebruikt het getal k1 erg groot is (momenteel kan de afmeting oplopen tot 2048 bits), is directe berekening van Mk1 onrealistisch. 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 kl. Als u echter een geheime sleutel k2 heeft, kunt u met behulp van eenvoudige transformaties M = Ck2 berekenen? mod N. Het is duidelijk dat het, naast de geheime sleutel zelf, noodzakelijk is om de geheimhouding van de parameters R en S te garanderen. Als een aanvaller hun waarden verkrijgt, kan hij de geheime sleutel k2 berekenen.

Het RSA-cryptosysteem wordt momenteel gebruikt in een grote verscheidenheid aan producten, platforms en industrieën. Het volstaat te herinneren aan het gebruik ervan in operatiekamers Microsoft-systemen, Apple, Sun en Novell om de “enorme omvang” van RSA te vertegenwoordigen. In hardware wordt het RSA-algoritme veel gebruikt in beveiligde telefoons netwerkkaarten Ethernet, op smartcards, in cryptografische apparatuur van Zaxus (Racal). Bovendien is het algoritme opgenomen in alle belangrijke protocollen voor veilige internetcommunicatie, waaronder S/MIME, SSL en S/WAN, en wordt het ook gebruikt in veel overheidsinstanties, overheidslaboratoria en universiteiten. Vanaf het najaar van 2000 waren technologieën die het RSA-algoritme gebruiken, in licentie gegeven door meer dan 700 bedrijven.

ElGamal-algoritme. ElGamal ontwikkelde een versie van het Diffie-Hellman-systeem. Hij verfijnde dit algoritme en bedacht één algoritme voor encryptie en één voor authenticatie. Het ElGamal-algoritme was (in tegenstelling tot RSA) niet gepatenteerd en werd daarmee een goedkoper alternatief omdat er geen licentiekosten nodig waren. Omdat dit algoritme is gebaseerd op het Diffie-Hellman-systeem, wordt de robuustheid ervan verzekerd door de complexiteit van het oplossen van hetzelfde discrete logaritmeprobleem.

Algoritme voor digitale handtekeningen. Het DSA-algoritme is door de Amerikaanse overheid ontwikkeld als standaardalgoritme voor digitale handtekeningen (zie paragraaf 2.3). Dit algoritme is gebaseerd op het ElGamal-systeem, maar staat alleen authenticatie toe. Vertrouwelijkheid wordt door dit algoritme niet gegarandeerd.

Versleuteling met behulp van elliptische curven. In 1985 werden elliptische curven voorgesteld voor gebruik in encryptiesystemen. Systemen voor elliptische curve-encryptie (ECC) zijn gebaseerd op een ander wiskundig probleem dan factorisatie of discrete logaritme. Deze taak is als volgt: gegeven twee punten A en B op een elliptische curve zodat A = kB, is het erg moeilijk om het gehele getal k te bepalen. Ondanks dat het enigszins ‘exotisch’ is, biedt het gebruik van ECC ten opzichte van het RSA- of Diffie-Hellman-algoritme in sommige gevallen een aanzienlijk voordeel. Het grootste van deze voordelen is dat de toetsen aanzienlijk korter kunnen zijn (vanwege de complexiteit van de taak). En dit zonder uithoudingsvermogen te verliezen! Hierdoor worden berekeningen sneller uitgevoerd met behoud van hetzelfde beveiligingsniveau. De beveiliging die wordt geboden door een 160-bits ECC-sleutel kan dus gelijkwaardig zijn aan een 1024-bits RSA-sleutel.

Voor- en nadelen van symmetrische en asymmetrische encryptiemethoden

Tegenwoordig zijn op het gebied van informatiebeveiliging systemen met zowel symmetrische als asymmetrische encryptie breed vertegenwoordigd. Elk van de algoritmen heeft zijn eigen voor- en nadelen, die niet kunnen worden genegeerd.

Het grootste nadeel van symmetrische encryptie is de noodzaak van openbare overdracht van sleutels – “van hand tot hand”. Dit nadeel kan niet worden genegeerd, aangezien het met een dergelijk systeem vrijwel onmogelijk wordt om symmetrische encryptie met een onbeperkt aantal deelnemers te gebruiken. Voor het overige kan het symmetrische versleutelingsalgoritme als behoorlijk geavanceerd en effectief worden beschouwd, met een minimaal aantal nadelen, vooral tegen de achtergrond van asymmetrische versleuteling. De nadelen van de laatste zijn niet zo groot dat je kunt zeggen dat het algoritme op de een of andere manier slecht is, maar toch.

Het eerste nadeel van asymmetrische encryptie is de lage snelheid van encryptie- en decryptieoperaties, die te wijten is aan de noodzaak om resource-intensieve operaties te verwerken. Als gevolg hiervan zijn de eisen aan de hardwarecomponent van een dergelijk systeem vaak onaanvaardbaar.

Een ander nadeel is puur theoretisch en ligt in het feit dat de wiskundige kracht van asymmetrische versleutelingsalgoritmen nog niet is bewezen.

Er doen zich nog meer problemen voor bij het beschermen van publieke sleutels tegen vervanging, omdat het volstaat om eenvoudigweg de publieke sleutel van een legale gebruiker te vervangen om deze vervolgens gemakkelijk te decoderen met uw privésleutel.

Wat de nadelen en voordelen van asymmetrische en symmetrische encryptie ook zijn, het is alleen nodig op te merken dat de meest geavanceerde oplossingen de oplossingen zijn die met succes de algoritmen van beide soorten encryptie combineren.

2.2. Elektronische digitale handtekening

Dankzij de snelle ontwikkeling van de informatietechnologiesector zijn technologieën ons leven binnengekomen en vertrouwd geworden, zonder welke moderne wereld Het is al moeilijk voor te stellen. Eén van deze technologieën, die overigens de veiligheid van online uitgevoerde transacties bewaakt, is een elektronische digitale handtekening (EDS). Het gebruik ervan als middel om de juridische betekenis van documenten te identificeren en te bevestigen wordt een standaard in de digitale wereld.

Elektronische digitale handtekening (EDS) – details elektronisch document, ontworpen om de bron van de gegevens te verifiëren en dit elektronische document tegen vervalsing te beschermen. Een elektronische digitale handtekening is een reeks tekens die wordt verkregen als resultaat van cryptografische transformatie van elektronische gegevens. Aan een datablok wordt een elektronische digitale handtekening toegevoegd, waardoor de ontvanger van het blok de bron en integriteit van de gegevens kan verifiëren en bescherming kan bieden tegen vervalsing. EDS wordt gebruikt als analoog van een handgeschreven handtekening.

Dankzij digitale handtekeningen kunnen er nu veel documenten – paspoorten, stembiljetten, testamenten, huurovereenkomsten – in bestaan elektronische vorm, en elke papieren versie zal in dit geval slechts een kopie zijn van het elektronische origineel.

Basistermen die worden gebruikt bij het werken met digitale handtekeningen

Privé sleutel– dit is informatie van 256 bits lang, die is opgeslagen op een plaats die niet toegankelijk is voor anderen op een diskette, smartcard of aanraakgeheugen. Een private sleutel werkt alleen samen met een publieke sleutel.

Openbare sleutel gebruikt om de digitale handtekening van ontvangen documentbestanden te verifiëren; technisch gezien is dit informatie die 1024 bits lang is. Een publieke sleutel werkt alleen als deze gekoppeld is aan een private sleutel.

Authenticatiecode– een code met een vaste lengte die wordt gegenereerd uit gegevens met behulp van een geheime sleutel en wordt toegevoegd aan de gegevens om veranderingen in de gegevens te detecteren die zijn opgeslagen of verzonden via het communicatiekanaal.

Hulpmiddelen voor elektronische digitale handtekeningen– hardware en/of software, met:

¦ creatie van een elektronische digitale handtekening in een elektronisch document met behulp van de privésleutel van een elektronische digitale handtekening;

¦ bevestiging met behulp van de publieke sleutel van een elektronische digitale handtekening van de authenticiteit van de digitale handtekening in een elektronisch document;

¦ creatie van private en publieke sleutels van elektronische digitale handtekeningen.

EDS is eenvoudig

Laten we beginnen met het feit dat digitale handtekening helemaal geen “beest” is en dat er geen speciale kennis, vaardigheden of capaciteiten vereist zijn om het te gebruiken.

Er worden unieke publieke en private (geheime) cryptografische sleutels gegenereerd voor elke gebruiker van een digitale handtekening die deelneemt aan de uitwisseling van elektronische documenten.

Het sleutelelement is de geheime sleutel, die wordt gebruikt om elektronische documenten te coderen en een elektronische digitale handtekening te genereren. De geheime sleutel blijft bij de gebruiker en wordt hem op een apart medium verstrekt: dit kan een diskette, smartcard of ander medium zijn. Het moet geheim worden gehouden voor andere netwerkgebruikers.

De certificeringsautoriteit (een derde partij, of de zogenaamde “arbiter”) bevat een duplicaat van de publieke sleutel en er is een bibliotheek met publieke sleutelcertificaten aangemaakt. Het Certificatiecentrum verzorgt registratie en veilige opslag openbare sleutels om manipulatie of pogingen tot manipulatie te voorkomen.

Wanneer een gebruiker zijn elektronische digitale handtekening onder een elektronisch document installeert, wordt door middel van cryptografische transformatie een bepaalde digitale handtekening gegenereerd op basis van de geheime EDS-sleutel en de inhoud van het document. groot aantal, wat de elektronische digitale handtekening is van deze gebruiker onder dit specifieke document. Dit nummer wordt aan het einde van het elektronische document toegevoegd of in een apart bestand opgeslagen. In de handtekening zijn de volgende gegevens opgenomen:

¦ naam van het handtekeningbestand met de openbare sleutel;

¦ informatie over de persoon die de handtekening heeft gezet;

¦ datum van vorming van de handtekening.

De gebruiker die het ondertekende document heeft ontvangen en over de daarop gebaseerde openbare sleutel van de digitale handtekening van de afzender beschikt, voert een omgekeerde cryptografische transformatie uit die de verificatie van de elektronische digitale handtekening van de afzender garandeert. Als de digitale handtekening onder het document correct is, betekent dit dat het document daadwerkelijk door de afzender is ondertekend en dat er geen wijzigingen in de tekst van het document zijn aangebracht. Anders wordt er een bericht weergegeven dat het certificaat van de afzender niet geldig is.

Sleutelbeheer

Een belangrijk probleem bij alle cryptografie met publieke sleutels, inclusief systemen voor digitale handtekeningen, is het beheer van publieke sleutels. Het is noodzakelijk ervoor te zorgen dat elke gebruiker toegang heeft tot de echte openbare sleutel van elke andere gebruiker, deze sleutels te beschermen tegen vervanging door een aanvaller, en ook de intrekking van de sleutel te organiseren als deze in gevaar komt.

Het probleem van het beschermen van sleutels tegen vervanging wordt opgelost met behulp van certificaten. Met het certificaat kunt u de gegevens die het bevat over de eigenaar en zijn openbare sleutel certificeren met de handtekening van een vertrouwde persoon. IN gecentraliseerde systemen certificaten (bijvoorbeeld PKI - Public Key Infrastructure) maken gebruik van certificeringsinstanties die worden onderhouden door vertrouwde organisaties. In gedecentraliseerde systemen (bijvoorbeeld PGP - Pretty Good Privacy) wordt door elke gebruiker een vertrouwensnetwerk opgebouwd door de certificaten van bekende en vertrouwde mensen kruislings te ondertekenen.

Het sleutelbeheer wordt verzorgd door certificaatdistributiecentra. Door contact op te nemen met een dergelijk centrum kan de gebruiker een certificaat voor een gebruiker verkrijgen en tevens controleren of een bepaalde publieke sleutel nog niet is ingetrokken.

EDS onder een microscoop

Laten we het werkingsprincipe van digitale handtekeningen eens nader bekijken. Schema elektronische handtekening omvat meestal de volgende componenten:

¦ algoritme voor het genereren van gebruikerssleutelparen;

¦ handtekeningberekeningsfunctie;

¦ handtekeningverificatiefunctie.

De functie van het berekenen van een handtekening op basis van het document en de geheime sleutel van de gebruiker berekent de handtekening zelf. Afhankelijk van het algoritme kan de handtekeningberekeningsfunctie deterministisch of probabilistisch zijn. Deterministische functies berekenen altijd dezelfde handtekening op basis van dezelfde invoergegevens. Probabilistische functies introduceren een element van willekeur in de handtekening, wat de cryptografische kracht van algoritmen voor digitale handtekeningen vergroot. Voor probabilistische schema's is dit echter noodzakelijk betrouwbare bron willekeur (hetzij een hardwareruisgenerator, hetzij cryptografisch betrouwbare generator pseudowillekeurige bits), wat de implementatie bemoeilijkt.

Momenteel worden deterministische schema's praktisch niet gebruikt. Zelfs aanvankelijk deterministische algoritmen hebben nu wijzigingen ondergaan die ze in probabilistische algoritmen veranderen (bijvoorbeeld in het RSA-signatuuralgoritme voegde de tweede versie van de PKCS # 1-standaard data-pre-transformatie (OAEP) toe, die onder andere ruis omvat ).

De handtekeningverificatiefunctie controleert of deze overeenkomt met het opgegeven document en de openbare sleutel van de gebruiker. De openbare sleutel van de gebruiker is openbaar beschikbaar, zodat iedereen de handtekening op een bepaald document kan verifiëren.

Omdat de documenten die worden ondertekend een variabele (en vrij grote) lengte hebben, wordt bij digitale handtekeningschema's de handtekening vaak niet op het document zelf geplaatst, maar op de hash ervan. Voor het berekenen van de hash worden cryptografische hashfuncties gebruikt, die ervoor zorgen dat wijzigingen in het document worden gedetecteerd wanneer de handtekening wordt geverifieerd. Hash-functies maken geen deel uit van het algoritme voor digitale handtekeningen, dus elke betrouwbare hash-functie kan in het schema worden gebruikt. Wat is een hasj?

Hashing is de transformatie van een invoerdata-array in een kort getal met een vaste lengte (een zogenaamde hash- of hash-code), zodat dit getal enerzijds aanzienlijk korter is dan de oorspronkelijke gegevens, maar anderzijds , komt er zeer waarschijnlijk op unieke wijze mee overeen.

Laten we doorgaan. Algoritmen voor digitale handtekeningen zijn onderverdeeld in twee grote klassen:

¦ gewone digitale handtekeningen;

¦ digitale handtekeningen met documentherstel.

Reguliere digitale handtekeningen moeten worden toegevoegd aan het document dat wordt ondertekend. Deze klasse omvat bijvoorbeeld algoritmen gebaseerd op elliptische curven (ECDSA, GOST R34.10-2001, DSTU 4145-2002). Digitale handtekeningen met documentherstel bevatten het document dat wordt ondertekend: tijdens het handtekeningverificatieproces wordt de hoofdtekst van het document automatisch berekend. Deze klasse bevat een van de meest populaire algoritmen, RSA, die we aan het einde van de sectie zullen bespreken.

Het is noodzakelijk onderscheid te maken tussen een elektronische digitale handtekening en een berichtauthenticatiecode, ondanks de gelijkenis van de taken die moeten worden opgelost (waarborgen van de integriteit van het document en de onmogelijkheid om het auteurschap te ontkennen). Algoritmen voor digitale handtekeningen behoren tot de klasse van asymmetrische algoritmen, terwijl authenticiteitscodes worden berekend met behulp van symmetrische schema's.

We kunnen zeggen dat een digitale handtekening de volgende soorten bescherming biedt.

¦ Identificatie van de bron van het document. Afhankelijk van de details van de documentdefinitie kunnen velden zoals "auteur", " wijzigingen aangebracht", "tijdstempel", enz.

¦ Bescherming tegen documentwijzigingen. Elke onbedoelde of opzettelijke wijziging aan het document (of de handtekening) zal de hash veranderen en daardoor de handtekening ongeldig maken.

Het is overduidelijk dat de digitale handtekening helemaal niet perfect is. De volgende digitale handtekeningbedreigingen zijn mogelijk, waarbij een aanvaller:

¦ een handtekening vervalsen voor een door hem gekozen document;

¦ selecteer een document voor een bepaalde handtekening, zodat de handtekening ermee overeenkomt;

¦ een handtekening vervalsen voor ten minste een bepaald document;

¦ vervang de publieke sleutel (zie subsectie “Sleutelbeheer” sectie 2.2) door uw eigen sleutel, waarbij u zich voordoet als de eigenaar;

¦ de eigenaar misleiden om een ​​document te ondertekenen, bijvoorbeeld met behulp van een blind handtekeningprotocol;

¦ Onderteken elk document namens de sleuteleigenaar als de privésleutel al is gestolen.

Door gebruik te maken van een sterke hashfunctie is het rekenkundig moeilijk om een ​​vals document te creëren met dezelfde hash als het echte document. Deze bedreigingen kunnen echter werkelijkheid worden als gevolg van zwakke punten in specifieke hashing- of handtekeningalgoritmen of fouten in de implementatie ervan.

RSA als basis voor digitale handtekening

Het is geen geheim dat RSA (gebruikt om digitale handtekeningen te maken met documentherstel) de meeste populariteit heeft verworven onder de cryptografische algoritmen voor digitale handtekeningen.

Begin 2001 was het RSA-cryptosysteem het meest gebruikte asymmetrische cryptosysteem (public key cryptosystem) en wordt vaak de de facto standaard genoemd. Ongeacht de officiële normen is het bestaan ​​van een dergelijke norm uiterst belangrijk voor de ontwikkeling van de e-commerce en de economie in het algemeen. Een uniform publiek sleutelsysteem maakt de uitwisseling van documenten met elektronische digitale handtekeningen mogelijk tussen gebruikers in verschillende landen met behulp van verschillende software op verschillende platforms; Deze mogelijkheid is essentieel voor de ontwikkeling van e-commerce.

De verspreiding van het RSA-systeem heeft een zodanige omvang bereikt dat er bij het creëren van nieuwe standaarden rekening mee wordt gehouden. De eerste in de ontwikkeling van standaarden voor digitale handtekeningen was de ANSI X9.30-standaard, die de Digital Signature Standard in 1997 ondersteunde. Een jaar later werd ANSI X9.31 geïntroduceerd, waarbij de nadruk werd gelegd op digitale RSA-handtekeningen, die inspeelden op de feitelijke situatie, met name voor financiële instellingen.

Tot voor kort waren de tekortkomingen van veilige authenticatie het belangrijkste obstakel bij het vervangen van papieren documentbeheer door elektronische; bijna overal worden contracten, cheques, officiële brieven en juridische documenten nog steeds op papier uitgevoerd.

De opkomst van een digitale handtekening op basis van RSA heeft elektronische transacties behoorlijk veilig en betrouwbaar gemaakt.

Het RSA-algoritme gaat ervan uit dat het verzonden gecodeerde bericht door de ontvanger en alleen door hem kan worden gelezen. Zoals hierboven vermeld, gebruikt dit algoritme twee sleutels: openbaar en geheim. Dit algoritme is ook aantrekkelijk in het geval dat een groot aantal subjecten (N) op een alles-tot-allen manier moet communiceren. In het geval van een symmetrisch versleutelingsschema moet elk van de proefpersonen op de een of andere manier zijn sleutels aan alle andere deelnemers aan de uitwisseling afleveren, en het totale aantal gebruikte sleutels zal behoorlijk groot zijn voor een grote waarde van N. Het gebruik van een asymmetrisch algoritme vereist alleen de distributie van publieke sleutels door alle deelnemers, het totale aantal sleutels is gelijk aan N.

Het bericht wordt weergegeven als een getal M. De codering wordt uitgevoerd met behulp van de openbare functie f(M) en alleen de ontvanger weet hoe hij de f-1-bewerking moet uitvoeren. De geadresseerde kiest twee grote priemgetallen p en q, die hij geheim maakt. Hij verklaart n = pq en het getal d, c (d, p – 1) = (d, q – 1) = 1 (een mogelijke manier om aan deze voorwaarde te voldoen is door d groter te kiezen dan p/2 en q/2) . De codering wordt uitgevoerd met behulp van de formule: f(M) = Md x mod n, waarbij M en f(M) beide zijn< n – 1 . Оно может быть вычислено за разумное время, даже если M, d и n содержат весьма большое количество знаков. Адресат вычисляет M на основе M d , используя свое знание p и q. Если dc ? (p _ 1) 1, тогда (M d) e? blz. 1.

De originele tekst M wordt door de ontvanger verkregen uit de gecodeerde F(M) door transformatie: M = (F(M)) e(mod pq). Hier worden zowel de originele tekst als de gecodeerde tekst behandeld als lange binaire getallen.

Op dezelfde manier (Md) e? q M, indien dc ? (q _ 1) 1. e voldoet aan deze twee voorwaarden als cd ? (p_1)(q_1) 1 . We kunnen stellen dat e = x als x een oplossing is van de vergelijking dx + (p – 1)(q – 1)y = 1.

Sinds (Md) e M is deelbaar door p en q, en is ook deelbaar door pq. Daarom kunnen we M bepalen door Md te kennen, de waarde ervan te berekenen tot de macht e, en de rest te bepalen wanneer gedeeld door pq. Om de geheimhouding te bewaren is het belangrijk dat, als je n kent, het onmogelijk is om p en q te berekenen. Als n 100 cijfers bevat, betekent het vinden van een cijfer ongeveer 1050 combinaties proberen. Dit probleem wordt al ongeveer 100 jaar bestudeerd.

Theoretisch kan worden aangenomen dat het mogelijk is om de f-l-bewerking uit te voeren zonder p en q te berekenen. Maar hoe dan ook is deze taak niet eenvoudig, en de ontwikkelaars vinden het moeilijk om er rekening mee te houden.

Stel dat we cijfertekst f(M) en platte tekst M hebben en de waarden van p en q willen vinden. Het is gemakkelijk om aan te tonen dat dergelijke initiële gegevens niet voldoende zijn om het probleem op te lossen: je moet alle mogelijke waarden van Mi kennen.

Laten we het gebruik van het RSA-algoritme verduidelijken met een specifiek voorbeeld. Laten we er twee kiezen priemgetallen p = 7; q = l7 (in de praktijk zijn deze getallen vele malen langer). In dit geval zal n = pq gelijk zijn aan ll9. Nu moeten we e kiezen. Laten we e = 5 kiezen. De volgende stap omvat het vormen van het getal d, zodat de = 1 x mod [(p – 1)(q – 1)]. d = 77 (uitgebreid Euclidisch algoritme gebruikt). d is de geheime sleutel, en e en n karakteriseren de publieke sleutel. Laat de tekst die we moeten coderen worden weergegeven door M = 19. C = Me x mod n. We krijgen de cijfertekst C = 66. Deze “tekst” kan naar de juiste ontvanger worden verzonden. De ontvanger decodeert het ontvangen bericht met M = Cd x mod n en C = 66. Het resultaat is M = 19.

In de praktijk kunnen publieke sleutels in een speciale database worden geplaatst. Als u een gecodeerd bericht naar uw partner moet sturen, kunt u eerst zijn publieke sleutel opvragen. Nadat u het heeft ontvangen, kunt u het coderingsprogramma uitvoeren en het resultaat van zijn werk naar de ontvanger sturen.

Is het mogelijk om een ​​elektronische digitale handtekening te hacken?

Het hacken van een elektronische digitale handtekening komt eigenlijk neer op het hacken van het versleutelingsalgoritme. In dit geval mogelijke opties We zullen kijken naar hacken met het RSA-algoritme als voorbeeld.

Er zijn verschillende manieren om RSA te hacken. De meest effectieve aanval is het vinden van een privésleutel die overeenkomt met de vereiste publieke sleutel. Hierdoor zou een aanvaller alle met de publieke sleutel versleutelde berichten kunnen lezen en handtekeningen kunnen vervalsen. Een dergelijke aanval kan worden uitgevoerd door de belangrijkste factoren (factoren) van de algemene modulus n – p en q te vinden. Gebaseerd op p, q en e ( algemene indicator) kan de aanvaller eenvoudig de partiële exponent d berekenen. De grootste moeilijkheid is het vinden van de belangrijkste factoren (factoring) n. De veiligheid van RSA is afhankelijk van factoring, wat een moeilijke taak is die niet bestaat effectieve manieren oplossingen.

In feite is het probleem van het terugvinden van een geheime sleutel gelijk aan het probleem van het ontbinden van een modulus: je kunt d gebruiken om de factoren van n te vinden, en omgekeerd: je kunt n gebruiken om d te vinden. Opgemerkt moet worden dat verbeteringen in de computerapparatuur alleen de sterkte van het RSA-cryptosysteem niet zullen verminderen als de sleutels voldoende lang zijn. Sterker nog, het verbeteren van de apparatuur vergroot de kracht van het cryptosysteem.

Een andere manier om RSA te kraken is door een methode te vinden voor het berekenen van de e-wortel van mod n. Omdat C = Me x mod n, is de wortel van graad e van mod n het bericht M. Door de wortel te berekenen, kun je gecodeerde berichten openen en handtekeningen vervalsen zonder zelfs maar de geheime sleutel te kennen. Deze aanval is niet gelijk aan factoring, maar er zijn momenteel geen methoden bekend die RSA op deze manier kunnen breken. In speciale gevallen echter, wanneer heel veel gegevens worden gecodeerd op basis van dezelfde indicator met een relatief kleine waarde. gerelateerde berichten, is het mogelijk om berichten te openen. De genoemde aanvallen zijn de enige manier om alle berichten die met een bepaalde RSA-sleutel zijn versleuteld te ontsleutelen.

Er zijn echter ook andere soorten aanvallen waarbij slechts één bericht kan worden ontsleuteld en waarbij de aanvaller geen andere berichten kan openen die met dezelfde sleutel zijn versleuteld. Daarnaast is onderzoek gedaan naar de mogelijkheid om een ​​deel van het versleutelde bericht te ontsleutelen.

De eenvoudigste aanval op een enkel bericht is een aanval op de beoogde leesbare tekst. De aanvaller, die over de gecodeerde tekst beschikt, gaat ervan uit dat het bericht een of andere vorm van specifieke tekst(bijvoorbeeld "Stirlitz - Play-schner"). Vervolgens wordt de bedoelde tekst gecodeerd met de openbare sleutel van de ontvanger en wordt de resulterende tekst vergeleken met de bestaande cijfertekst. Deze aanval kan worden voorkomen door een paar willekeurige bits aan het einde van het bericht toe te voegen. Een andere aanval met een enkel bericht vindt plaats wanneer een afzender hetzelfde bericht M naar drie correspondenten stuurt, die elk een gemeenschappelijke exponent e = 3 gebruiken. Als hij dit weet, kan de aanvaller deze berichten onderscheppen en het bericht van M ontsleutelen.

Deze aanval kan ook worden voorkomen door vóór elke versleuteling een paar willekeurige bits in het bericht te introduceren. Daarnaast zijn er verschillende soorten cijfertekstaanvallen (of aanvallen individuele berichten met het doel een handtekening te vervalsen), waarin de aanvaller een cijfertekst creëert en de bijbehorende ontvangt leesbare tekst, bijvoorbeeld door een geregistreerde gebruiker te misleiden om een ​​nepbericht te decoderen. Uiteraard zijn er ook aanvallen die niet direct op het cryptosysteem gericht zijn, maar op de kwetsbaarheden van het gehele communicatiesysteem als geheel. Dergelijke aanvallen kunnen niet worden beschouwd als het hacken van RSA, omdat ze niet wijzen op de zwakte van het algoritme, maar eerder op de kwetsbaarheid van een specifieke implementatie. Een aanvaller kan bijvoorbeeld een geheime sleutel verkrijgen als deze niet met de juiste beveiliging is opgeslagen. Er moet worden benadrukt dat voor volledige bescherming Het is niet voldoende om de uitvoering van het RSA-algoritme te beschermen en wiskundige beveiligingsmaatregelen te nemen, dat wil zeggen een sleutel van voldoende lengte te gebruiken, aangezien aanvallen op de onbeschermde fasen van het sleutelbeheer van het RSA-systeem in de praktijk het grootste succes hebben.

2.3. Moderne authenticatietechnologieën. Slimme kaarten

Smartcards zijn, net als geheugenkaarten, plastic kaarten met een ingebouwde chip (ICC, Integrated Circuit Card). Smartcards zijn echter een complexer apparaat dat een microprocessor en een besturingssysteem bevat dat het apparaat en de toegang tot objecten in het geheugen bestuurt. Bovendien hebben smartcards doorgaans de mogelijkheid om cryptografische berekeningen uit te voeren.

Het doel van smartcards is hetzelfde tweefactorauthenticatie gebruiker, informatie opslaan en cryptografische bewerkingen uitvoeren in een vertrouwde omgeving.

Laat me onze lezers eraan herinneren dat tweefactorauthenticatie het gebruik van twee identificatiekenmerken inhoudt, bijvoorbeeld: een wachtwoord en een vingerafdruk, een smartcard en een netvlies, enz.

Smartcards worden steeds vaker op allerlei gebieden gebruikt: van spaarsystemen tot creditcards en betaalkaarten, studentenkaarten en gsm-telefoons.

Afhankelijk van de ingebouwde chip zijn alle smartcards onderverdeeld in verschillende hoofdtypen, die radicaal verschillen in de functies die ze uitvoeren:

¦ geheugenkaarten;

¦ microprocessorkaarten;

¦ kaarten met cryptografische logica.

Geheugenkaarten zijn ontworpen om informatie op te slaan. Het geheugen op dit soort kaarten kan vrij toegankelijk zijn of kan toegangscontrolelogica voor het kaartgeheugen bevatten om het lezen en schrijven van gegevens te beperken.

Microprocessorkaarten zijn ook ontworpen om informatie op te slaan, maar bevatten, in tegenstelling tot conventionele kaarten, wel informatie speciaal programma of een klein besturingssysteem waarmee u gegevens kunt converteren met behulp van een specifiek algoritme en informatie kunt beschermen die op de kaart is opgeslagen tijdens verzending, lezen en schrijven.

Kaarten met cryptografische logica worden gebruikt in informatiebeveiligingssystemen om direct deel te nemen aan het proces van gegevenscodering of -generatie cryptografische sleutels, elektronische digitale handtekeningen en andere noodzakelijke informatie voor de werking van het systeem.

Smartcardlezers

Ondanks de naam - smartcardlezer - kunnen de meeste eindapparaten, of interface-apparaten (IFD, InterFace Device), zowel lezen als schrijven, als de smartcardmogelijkheden en toegangsrechten dit toelaten. Smartcardlezers kunnen verbinding maken met uw computer via seriële poort, PCMCIA-sleuf, seriële USB-bus. Volgens de methode voor het lezen van informatie zijn kaarten onderverdeeld in de volgende:

¦contact;

¦ contactloos;

- met dubbele interface.

Contactkaarten communiceren met de lezer door het metalen contactvlak van de kaart aan te raken met de contacten van de lezer. Deze leesmethode is eenvoudig te implementeren, maar verhoogt bij veelvuldig gebruik de slijtage van de kaart. Een contactsmartcard bestaat uit drie delen:

¦ contactgebied:

Zes of acht vierkante of ovale contacten;

Contactposities worden gemaakt in overeenstemming met de ISO-7816-norm;

¦ chip (microprocessorkaart);

¦ kunststof voet.

Smartcardlezers kunnen in het toetsenbord worden geïntegreerd.

Sommige fabrikanten produceren andere soorten hardwareapparaten die een contact-smartcard integreren met een smartcardlezer. Hun geheugeneigenschappen en computermogelijkheden zijn volledig vergelijkbaar met die van smartcards. De meest populaire hardware-dongles zijn degenen die een USB-poort gebruiken. USB-sleutels zijn voor sommige organisaties aantrekkelijk omdat USB steeds vaker een standaard wordt op nieuwe computers: de organisatie hoeft geen lezers voor gebruikers aan te schaffen.

Slimme apparaten gebruiken met authenticatie met openbare sleutel

Smartcards, USB-sleutels en andere slimme apparaten kunnen de betrouwbaarheid van PKI-diensten verbeteren: hiervoor kan een smartcard worden gebruikt veilige opslag de privésleutels van de gebruiker, evenals voor veilige uitvoering cryptografische transformaties. Uiteraard bieden slimme authenticatieapparaten geen absolute veiligheid, maar ze bieden wel een beveiliging die de mogelijkheden van een typische desktopcomputer ver overstijgt.

De privésleutel kan op verschillende manieren worden opgeslagen en gebruikt verschillende ontwikkelaars gebruik verschillende benaderingen. Het eenvoudigste is om het smart device als diskette te gebruiken: de kaart exporteert de privésleutel wanneer dat nodig is, en cryptografische bewerkingen worden op het werkstation uitgevoerd. Deze aanpak is vanuit veiligheidsoogpunt niet de meest perfecte, maar is relatief eenvoudig te implementeren en stelt lage eisen aan een intelligent apparaat. De andere twee benaderingen zijn veiliger omdat ze vereisen dat het slimme apparaat cryptografische bewerkingen uitvoert. Bij de eerste genereert de gebruiker sleutels op het werkstation en slaat deze op in het apparaatgeheugen. In de tweede genereert hij sleutels met behulp van het apparaat. In beide gevallen kan de privésleutel, zodra deze is opgeslagen, niet meer van het apparaat worden verwijderd of op een andere manier worden verkregen.

Sleutelparen genereren. Een sleutel genereren buiten het apparaat. In dit geval kan de gebruiker een reservekopie maken van de privésleutel. Als het apparaat defect raakt, verloren gaat, beschadigd raakt of vernietigd wordt, kan de gebruiker dezelfde privésleutel opslaan nieuwe kaart. Dit is nodig als de gebruiker gegevens, berichten, enz. moet decoderen die zijn gecodeerd met de bijbehorende openbare sleutel, maar dit is een probleem op de korte termijn bij het bieden van authenticatie. Bovendien loopt de privésleutel van de gebruiker het risico gestolen te worden.

Een sleutel genereren met behulp van het apparaat

In dit geval verschijnt de privésleutel niet in duidelijke vorm en bestaat er geen risico dat een aanvaller de back-upkopie steelt. De enige manier om de privésleutel te gebruiken is door het bezit van het slimme apparaat. Deze oplossing is de veiligste en stelt hoge eisen aan de mogelijkheden van het slimme apparaat: het moet sleutels genereren en cryptografische transformaties uitvoeren. Deze oplossing gaat er ook van uit dat de privésleutel niet kan worden hersteld als het apparaat uitvalt, enz. Dit is iets om je zorgen over te maken als je de privésleutel gebruikt voor codering, maar niet als deze wordt gebruikt voor authenticatie, of bij andere diensten waar een digitale handtekening is vereist. gebruikt.

Voor smartcards zijn er verschillende internationale standaarden die vrijwel alle eigenschappen van kaarten definiëren, van afmetingen, eigenschappen en soorten plastic tot de inhoud van de informatie op de kaart, bedieningsprotocollen en dataformaten.

¦ ISO-7816 standaard "Identificatiekaarten - kaarten met een chip met contacten." Het bestaat uit zes delen die de fysieke kenmerken, de grootte en locatie van contacten, signalen en protocollen, bestandsstructuur, adressering en uitwisselingsopdrachten regelen.

¦ EMV-standaard (Europay, MasterCard & Visa). Het eerste en tweede deel zijn gebaseerd op ISO-7816, terwijl de daaropvolgende delen transactieverwerkingsdefinities, terminalspecificaties, enz. toevoegen.

“Enge anatomie” slim – is hacken mogelijk?

Volgens objectieve statistieken zijn er in 2002 wereldwijd bijna 2 miljard smartcards met een ingebouwde microchip verkocht, en de verwachting is dat de verkoop van dergelijke apparaten de komende jaren zal groeien.

Waarom zijn smartcards zo populair? Waarschijnlijk breidt het toepassingsgebied van deze “apparaten” zich voortdurend uit: van bank- en telefoonkaarten tot een digitale paspoortidentificatie. Voor de enorme uitbreiding van smartcards is meer nodig dan alleen garanties van fabrikanten over de veiligheid van slimme technologie.

Is het mogelijk een smartcard te hacken, en zo ja, hoe doe je dat?

Kan. Volgens schokkende objectieve statistieken zijn sinds ongeveer 1994 bijna alle (inclusief Europese, en vervolgens Amerikaanse en Aziatische) smartcardchips die destijds in betaaltelevisiesystemen werden gebruikt, met succes gehackt met behulp van methoden reverse-engineering. Denk je dat systemen voor het bekijken van gesloten tv-kanalen in de schappen van populaire markten verschenen? Als een van de lezers plotseling denkt dat het hacken van een bankpas verwant is aan sciencefiction, durven we u te verzekeren dat dit niet zo is. Het hele punt is dat ze eenvoudigweg proberen dit soort reeds geheime informatie niet openbaar te maken, om de reputatie van de dienstverlenende bankstructuren niet te schenden.

Laten we eens kijken naar enkele van de methoden die momenteel voor autopsie worden gebruikt. Houd er rekening mee dat bij professioneel hacken in de regel het gecombineerde gebruik van verschillende technieken betrokken is.

Analyse van informatie uit zijkanalen houdt in dat een aanvaller, met behulp van gespecialiseerde apparatuur, het elektromagnetische patroon van zijstraling verwijdert in de stroomvoorziening, interfaceverbindingen, processorcircuits en andere knooppunten die direct of indirect betrokken zijn bij het genereren, converteren of verzenden van een bedrijfssignaal.

Software-aanvallen impliceren het gebruik van de meest gebruikelijke interface voor interactie met een smartcardprocessor. In de regel is hacken in dit geval mogelijk vanwege de aanwezigheid van duidelijke kwetsbaarheden in protocolbeveiligingsmaatregelen of cryptografische algoritmen.

Implementatietechnologieën of microsensing. In dit geval wordt een microscoop gebruikt en met behulp van een micromanipulator krijgt de aanvaller rechtstreeks toegang tot het werkgebied van de chip, waar de passage van informatie stap voor stap (stukje voor beetje) wordt geregistreerd.

Technologieën voor geïnduceerde mislukkingen impliceren het creëren van abnormale bedrijfsomstandigheden van de chip om potentiële toegangkanalen tot beschermde informatie te openen. Eind september 1996 meldde een onderzoeksteam van Bellcore (het onderzoekscentrum van het Amerikaanse bedrijf Bell) bijvoorbeeld dat er een ernstige potentiële algemene zwakte was ontdekt in beveiligde cryptografische apparaten, met name in smartcards voor elektronische betalingen(D. Boneh, R.A. DeMillo, R.J. Lipton “Over het belang van het controleren van cryptografische protocollen op fouten”; www.demiLLo.com/PDF/smart.pdf). De auteurs noemden hun aanvalsmethode ‘cryptanalyse in aanwezigheid van hardwarefouten’. De essentie van de methode is dat een fout in de werking kunstmatig wordt veroorzaakt door ionisatie of microgolfstraling elektronisch circuit Hiermee kunt u foutieve waarden aan de apparaatuitgang vergelijken met bekende correcte waarden en zo herstellen cryptografische informatie, opgeslagen op de smartcard.

13 juni 2017 om 13:37 uur

Symmetrische en asymmetrische encryptie. Analyse van het algoritme voor het verzenden van gecodeerde gegevens tussen servers

  • algoritmen,
  • Informatiebeveiliging,
  • Cryptografie

Laten we het erover eens zijn dat de machine die gecodeerde gegevens verzendt altijd machine A is, en de machine die deze ontvangt dat ook is symbool B.

De bibliotheek lost twee mogelijke gevallen op (indien nodig zal ik functionaliteit toevoegen):


2) Het geval waarin er een machine is en deze gecodeerde gegevens naar een andere machine moet overbrengen (B). In dit geval is de initiatiefnemer van de overdracht de eerste machine (A).

De bibliotheek implementeert beide opties, voor elk daarvan is er een demo:

Voor het eerste geval in de map server_b_1 er is een script testGetDataFromA.php
Voor het tweede geval in de map server_a_1 er is een script testPushDataToB.php

De bibliotheek voor beide gevallen is dezelfde Encode.php, maar voor het eerste geval zijn enkele aanvullende scripts vereist, voor het tweede geval andere. Om verwarring te voorkomen heb ik ze functioneel onderverdeeld in de mappen server_a_1 en server_b_1 (misschien latere versies van de bibliotheek zal een andere structuur hebben). Dus als beide machines zowel de eerste verdeelbak als de tweede moeten implementeren, zal elk van deze machines beide mappen hebben.

Laten we het nu hebben over hoe beide oplossingen worden geïmplementeerd:

De essentie van beide gevallen is dat de machines een symmetrische sleutel uitwisselen om cijfertekst te verzenden. Voor deze uitwisseling wordt asymmetrische encryptie gebruikt, namelijk één van de machines (X) genereert een paar sleutels (openbaar en privé) en verzendt de publieke sleutel naar de tweede machine. De tweede machine genereert met deze publieke sleutel een symmetrische sleutel en stuurt deze terug naar de eerste, die deze decodeert met zijn privésleutel. Het verschil ligt in wie de initiatiefnemer van de verzending is: als de gecodeerde tekst moet worden ontvangen, is er de ene reeks acties, als deze wordt verzonden, de andere. De beschouwde bibliotheek voert ook aanvullende controles uit, wat erop neerkomt dat er samen met de symmetrische sleutel die is gecodeerd met de publieke sleutel, gegevens worden verzonden die alleen beide machines kennen en die één keer per jaar kunnen worden gewijzigd (of zelfs bij elke transactie kunnen worden verzonden als iemand wil met code spelen).

Voordat ik de implementatie ga analyseren, wil ik er alleen op wijzen dat de symmetrische sleutel is gecodeerd met behulp van de Mcrypt PHP-coderingsfuncties volgens het volgende schema:

$encrypted_data = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $sinc_key, $notice_text, MCRYPT_MODE_ECB))); $test_decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$sinc_key, base64_decode(urldecode($encrypted_data)),MCRYPT_MODE_ECB));
Asymmetrische encryptie wordt afgehandeld met behulp van php OpenSSL

Dus:

Ik zal eerst de vereenvoudigde diagrammen van beide transmissiegevallen bekijken die helemaal aan het begin zijn aangegeven, en vervolgens in meer detail.

1) Het geval waarin er een machine (B) is die gegevens van machine A nodig heeft (bijvoorbeeld een clienttoken) en deze gegevens veilig moeten worden ontvangen. Die. De initiatiefnemer van de overdracht is machine B.

Machine B genereert een paar sleutels (privé en openbaar) en doet een verzoek aan machine A, waarbij hij de openbare sleutel verzendt (waarbij de privésleutel behouden blijft). Machine A genereert een symmetrische sleutel en codeert de geheime informatie N die nodig is voor verzending. Hierna retourneert machine A de symmetrische sleutel gecodeerd met de publieke sleutel, evenals de geheime informatie N gecodeerd met de symmetrische sleutel zijn privésleutel. In de gedecodeerde gegevens ontvangt ze de symmetrische sleutel en de daarmee gecodeerde gegevens. Met behulp van een symmetrische sleutel decodeert het de geheime gegevens.

Er is geen garantie dat auto A onze auto is, en niet FSB-agent Anatoly. Daarom wordt de implementatie van dit algoritme door de bibliotheek enigszins aangepast door een extra controle:

(Scriptdemo - server_b_1/testGetDataFromA.php)

Op beide machines wordt de geheime sleutel SIGNATURE_KEY geregistreerd, die deelneemt aan aanvullende verificatie. Machine B genereert een paar sleutels (privé en openbaar), de huidige verbindingssleutel en doet een verzoek (http://.../server_a_1/getDataToB.php) naar machine A, waarbij de huidige verbindingssleutel en de openbare sleutel worden verzonden ( het privé houden). Machine A genereert een symmetrische sleutel en codeert daarmee de geheime informatie N die nodig is voor verzending. Er worden ook aanvullende gegevens M gegenereerd, namelijk md5 uit de regel met SIGNATURE_KEY en de sleutel van de huidige verbinding. Hierna retourneert machine A een string gecodeerd met de publieke sleutel van de symmetrische sleutel en aanvullende gegevens M, evenals geheime informatie N gecodeerd met de symmetrische sleutel. Machine B decodeert de gegevens met de symmetrische sleutel met zijn privésleutel, genereert a string gegeven door M (aangezien het md5 gemakkelijk kan berekenen op basis van de string die SIGNATURE_KEY en de sleutel van de huidige verbinding bevat). Als de aanvullende gegevens overeenkomen (wat eenvoudigweg een extra controle is voor elke transactie dat machine A SIGNATURE_KEY kent, en dus onze machine), extraheert machine B een symmetrische sleutel waarmee hij de geheime informatie van N ontsleutelt.

2) Het geval waarin er een machine is en deze gecodeerde gegevens naar een andere machine moet overbrengen (B). In dit geval is de initiatiefnemer van de overdracht de eerste machine (A).

Een vereenvoudigd algoritme voor een dergelijke overdracht is als volgt:

Voordat machine A naar machine B kan worden overgedragen, heeft deze de openbare sleutel van machine B nodig om de informatie over te dragen. Hiervoor doet hij (machine A) eerst een verzoek om een ​​publieke sleutel te verkrijgen voor machine B. Na ontvangst genereert machine A een symmetrische sleutel, versleutelt daarmee de benodigde informatie en versleutelt dit alles met de ontvangen publieke sleutel. De gegevens worden naar machine B gestuurd, die het pakket decodeert met zijn privésleutel en de gegevens decodeert met de symmetrische sleutel.

Er is geen garantie dat we de openbare sleutel van machine B hebben ontvangen, en niet van de FSB-agent Petrov. Daarom wordt de implementatie van dit algoritme door de bibliotheek enigszins aangepast door aanvullende controles:

(Scriptdemo - server_a_1/testPushDataToB.php)

Op beide machines wordt de geheime sleutel SIGNATURE_KEY geregistreerd, die betrokken is bij aanvullende verificatie. Machine A, die md5 heeft gegenereerd op basis van de sleutel van de huidige verbinding en SIGNATURE_KEY, verzendt deze gegevens (samen met de niet-gecodeerde sleutel van de huidige verbinding) naar machine B (http://.../server_b_1/get_public_key.php), die genereert alleen een openbare sleutel als deze dezelfde md5 krijgt van zijn SIGNATURE_KEY en de ontvangen sleutel van de huidige verbinding. Dit lost het probleem niet op dat de publieke sleutel specifiek van machine A zal worden ontvangen, en niet van de machine van de FSB-agent Vasily, maar het garandeert machine B dat deze een publieke sleutel genereert specifiek voor machine A (hoewel het genereren van een publieke sleutel is over het algemeen een willekeurige kwestie, maar zelfs hier is het beter om veilig te zijn). Samen met de publieke sleutel wordt md5 gegenereerd op basis van SIGNATURE_KEY en de tweede sleutel van de huidige verbinding. De tweede sleutel van de huidige verbinding is een willekeurige hash. De gegevens van de publieke sleutel, de tweede sleutel van een willekeurige verbinding en de gespecificeerde md5 worden teruggestuurd naar machine A. Nadat machine A de tweede sleutel van een willekeurige verbinding heeft ontvangen, genereert machine A, die SIGNATURE_KEY kent, een verificatie md5 en of deze overeenkomt met wat de machine ontvangen, wordt aangenomen dat de openbare sleutel afkomstig is van machine B en niet van Vasily.

Vervolgens genereert machine A (hier is het schema vergelijkbaar met het eerste geval van gegevensoverdracht) een symmetrische sleutel en een extra controle, namelijk md5 van SIGNATURE_KEY en de sleutel van de huidige verbinding. Deze gegevens worden versleuteld met de publieke sleutel van machine B. Vervolgens worden de gegevens, samen met de huidige verbindingssleutel, verzonden naar machine B (http://.../server_b_1/pushDataFromA.php), die een huidige verbinding genereert key en SIGNATURE_KEY md5 op basis van de gegevens verkregen uit deze gegevens, controleert deze met wat er is ontvangen, wat garandeert dat de gegevens niet van de FSB-agent Nikolai zijn. Als alles in orde is en de controle is geslaagd, wordt een symmetrische sleutel geëxtraheerd met behulp van de privésleutel, die het bericht al ontsleutelt.

Ik zal blij zijn als deze informatie voor iemand nuttig is.

Het algoritme moet door beide partijen geheim worden gehouden. Het versleutelingsalgoritme wordt door de partijen geselecteerd voordat de berichtenuitwisseling begint.

Geheime communicatie gebaseerd op een symmetrisch cryptosysteem.

Symmetrische codeersystemen worden traditioneel gebruikt om geheime communicatie te organiseren. De “gewone” actoren van dergelijke geheime communicatieprotocollen zijn de afzender, de ontvanger en de tussenpersoon die gebruikers van sleutels voorziet. Om informatiebeveiligingskwesties te overwegen, moeten ‘niet-reguliere’ deelnemers aan deze lijst worden toegevoegd: een passieve en een actieve overtreder. Het doel van het protocol is om een ​​geheim bericht x van de afzender naar de ontvanger te verzenden. Volgorde van acties ziet er zo uit:
1. De zender en de ontvanger zijn het eens over het te gebruiken symmetrische coderingssysteem, d.w.z. op de familie van afbeeldingen E = (), kK.
2. Afzender en geadresseerde komen tot overeenstemming geheime sleutel verbindingen k, d.w.z. over de gebruikte mapping E.
3. De afzender codeert de platte tekst x met behulp van een mapping, d.w.z. creëert een cryptogram y = (x).
4. Cryptogram y wordt via de communicatielijn naar de ontvanger verzonden.
5. De geadresseerde decodeert het cryptogram y met dezelfde sleutel k en de afbeelding ^(-1), omgekeerd aan de afbeelding Ek, en leest het bericht x= ^(-1)(y).
Stap 2 van het protocol wordt geïmplementeerd met de hulp van een tussenpersoon, een derde partij, die conventioneel een sleutelgeneratie- en distributiecentrum (KGDC) kan worden genoemd (sommige geheime communicatieprotocollen gebaseerd op asymmetrische coderingssystemen maken geen gebruik van een tussenpersoon; daarin , worden de functies van de KGK uitgevoerd door gebruikers).
Een essentieel kenmerk van het protocol is geheimhouding sleutel k die wordt verzonden naar de afzender en ontvanger, hetzij in duidelijke vorm via een communicatiekanaal beschermd tegen de acties van een cryptanalist, of in gecodeerde vorm via open kanaal communicatie. Een beveiligd kanaal kan een relatief lage waarde hebben doorvoer, maar moet betrouwbaar beschermen belangrijke informatie tegen ongeoorloofde toegang. Sleutel k moet voor, tijdens en na de implementatie van het protocol geheim blijven, anders kan een aanvaller, nadat hij de sleutel in bezit heeft genomen, het cryptogram ontsleutelen en het bericht lezen. De afzender en ontvanger kunnen stap 1 van het protocol publiekelijk uitvoeren (geheimhouding van het encryptiesysteem is optioneel), maar zij moeten stap 2 in het geheim uitvoeren (geheimhouding van de sleutel is vereist).
Deze behoefte is te wijten aan het feit dat communicatielijnen, vooral lange, kwetsbaar zijn vanuit het oogpunt van interferentie door passieve en actieve overtreders. Een passieve aanvaller (cryptanalyticus), die toegang wil krijgen tot bericht x, beheert de communicatielijn bij stap 4 van het protocol. Zonder de implementatie van het protocol te verstoren, onderschept het het cryptogram y om het cijfer te kraken.

Cryptanalyse van een symmetrisch cryptosysteem.

Bij het ontwikkelen van een coderingssysteem maakt een cryptograaf gewoonlijk de volgende aannames over de mogelijkheden van de cryptanalist:
1. De cryptanalist beheert de communicatielijn.
2. De cryptanalyticus kent de structuur van de familie E van cijfertoewijzingen.
3. De cryptanalyticus kent de sleutel k niet, d.w.z. de mapping die is gebruikt om het cryptogram y te verkrijgen, is onbekend.
Onder deze omstandigheden probeert de cryptanalyticus de volgende problemen op te lossen, de zogenaamde decoderingsproblemen.
1. Bepaal de leesbare tekst x en de gebruikte sleutel k uit het onderschepte cryptogram y, d.w.z. construeer een decoderingsalgoritme  zodat (y)=(x,k). Deze formulering van het probleem houdt in dat de cryptanalyticus de statistische eigenschappen van platte tekst gebruikt.
2. Bepaal de gebruikte sleutel k uit de bekende leesbare tekst en cijfertekst, d.w.z. construeer een decoderingsalgoritme zodat (x,y)=k. Deze formulering van het probleem is zinvol wanneer een cryptanalyticus verschillende cryptogrammen heeft onderschept die zijn verkregen met sleutel k, en niet over de leesbare teksten beschikt voor alle onderschepte cryptogrammen. In dit geval zal hij, nadat hij het tweede type decoderingsprobleem heeft opgelost, alle leesbare teksten die met sleutel k zijn gecodeerd, “lezen”.
3. Bepaal uit de speciaal geselecteerde platte tekst x en de bijbehorende cijfertekst y de sleutel k die moet worden gebruikt, d.w.z. construeer een decoderingsalgoritme x zodat x(y)=k. Een soortgelijke formulering van het probleem doet zich voor wanneer een cryptanalyticus de mogelijkheid heeft om een ​​cryptosysteem te testen, d.w.z. het genereren van een cryptogram voor een speciaal gekozen leesbare tekst. Vaker komt deze formulering van het probleem naar voren bij de analyse van asymmetrische systemen. Er is een variant van dit decoderingsprobleem waarbij een speciaal geselecteerde cijfertekst wordt gebruikt.
Om decoderingsproblemen op te lossen, gebruikt een cryptanalyticus een gecodeerd bericht y, of een paar (x,y) bestaande uit platte tekst en gecodeerde berichten, of een reeks van dergelijke berichten of paren berichten. Deze berichten of sets berichten worden coderingsmateriaal genoemd. De hoeveelheid codemateriaal die voor decodering wordt gebruikt, is de lengte van deze berichten of de totale lengte van een reeks berichten. De hoeveelheid codemateriaal is belangrijk kenmerk decoderingsmethode. De uniciteitsafstand van een cijfer is het kleinste aantal cijferteksttekens dat nodig is om de sleutel uniek te bepalen. In veel praktische gevallen is deze gelijk aan de lengte van de sleutel als de sleutel en het cryptogram woorden uit gelijkwaardige alfabetten zijn. Met dezelfde hoeveelheid codemateriaal onderscheiden decoderingsproblemen van het eerste type zich door een hogere rekencomplexiteit vergeleken met problemen van het tweede en derde type; testproblemen hebben de laagste rekencomplexiteit;
In sommige gevallen kan een cryptanalyticus het probleem oplossen van het reconstrueren van een familie E van cijferafbeeldingen uit een bekend paar (x,y) van leesbare tekst en cijfertekst, met behulp van enkele aanvullende voorwaarden. Dit probleem kan worden geformuleerd als ‘het ontcijferen van een zwarte doos’ met behulp van bekende inputs en corresponderende outputs.
Een actieve aanvaller schendt de implementatie van het protocol. Hij kan de communicatie bij stap 4 afbreken, in de overtuiging dat de afzender niets meer te communiceren heeft met de ontvanger. Hij kan het bericht ook onderscheppen en vervangen door zijn eigen bericht. Als een actieve aanvaller de sleutel zou leren kennen (door stap 2 te monitoren of door in het cryptosysteem te infiltreren), zou hij zijn bericht kunnen versleutelen en naar de ontvanger kunnen sturen in plaats van naar het onderschepte bericht, wat bij laatstgenoemde geen enkele argwaan zou wekken. Zonder de sleutel te kennen, kan een actieve aanvaller alleen een willekeurig cryptogram maken, dat na decodering als een willekeurige reeks verschijnt.

Protocolvereisten.

Het beschouwde protocol impliceert vertrouwen van de afzender, de geadresseerde en een derde in de persoon van het CGRC. Dit is een zwakte van dit protocol. Er zijn echter geen absolute garanties voor de onberispelijkheid van een bepaald protocol, aangezien de implementatie van welk protocol dan ook de deelname van mensen impliceert en met name afhangt van de kwalificaties en betrouwbaarheid van het personeel. De volgende conclusies kunnen dus worden getrokken met betrekking tot de organisatie van geheime communicatie met behulp van een symmetrisch cryptosysteem.
1. Het protocol moet de leesbare tekst en de sleutel beschermen tegen ongeoorloofde toegang door een onbevoegde persoon in alle fasen van de informatieoverdracht van de bron naar de ontvanger van berichten. De geheimhouding van een sleutel is belangrijker dan de geheimhouding van de meerdere berichten die met die sleutel zijn gecodeerd. Als de sleutel wordt gecompromitteerd (gestolen, geraden, onthuld, vrijgekocht), kan een aanvaller die de sleutel heeft, alle berichten ontsleutelen die met deze sleutel zijn gecodeerd. Bovendien zal de aanvaller een van de onderhandelingspartijen kunnen imiteren en valse berichten kunnen genereren om de andere partij te misleiden. Door de sleutels regelmatig te wisselen, wordt dit probleem geminimaliseerd.
2. Het protocol mag niet toestaan ​​dat “extra” informatie de communicatielijn binnendringt, waardoor de cryptanalyticus van de vijand extra functies decryptie van cryptogrammen. Het protocol moet informatie niet alleen beschermen tegen onbevoegden, maar ook tegen wederzijdse misleiding van de actoren van het protocol.
3. Als we aannemen dat elk paar communicatienetwerkgebruikers een aparte sleutel gebruikt, dan is het nummer benodigde sleutels is gelijk aan n*(n-1)/2 voor n gebruikers. Dit betekent dat wanneer n groot is, het genereren, opslaan en distribueren van sleutels een tijdrovend probleem wordt.