Cryptografische informatiebescherming door Alexander Prokhorov. Symmetrische en asymmetrische encryptie. Analyse van het algoritme voor het verzenden van gecodeerde gegevens tussen servers

Symmetrische cryptosystemen

Symmetrische cryptosystemen (ook symmetrische encryptie, symmetrische cijfers) zijn een encryptiemethode waarbij hetzelfde geldt cryptografische sleutel. Vóór de uitvinding van het asymmetrische encryptieschema was symmetrische encryptie de enige bestaande methode. De algoritmesleutel moet door beide partijen geheim worden gehouden. De algoritmesleutel wordt door de partijen gekozen voordat de berichtenuitwisseling begint.

Momenteel zijn symmetrische cijfers:

1. Blokkeer cijfers - informatie verwerken in blokken van een bepaalde lengte (meestal 64, 128 bits), waarbij een sleutel op het blok wordt toegepast op de voorgeschreven manier, meestal via verschillende cycli van schudden en vervanging, rondes genoemd. Het resultaat van herhaalde rondes is een lawine-effect: een toenemend verlies aan bitcorrespondentie tussen blokken open en gecodeerde gegevens.

2. Stream cijfers - waarbij encryptie wordt uitgevoerd op elke bit of byte van de originele (platte) tekst met behulp van gamma. Een stroomcijfer kan eenvoudig worden gemaakt op basis van een blokcijfer (bijvoorbeeld GOST 28147-89 in gammamodus), gelanceerd in een speciale modus.

cryptografisch systeem met openbare sleutel

Een cryptografisch systeem met een publieke sleutel (of asymmetrische encryptie, asymmetrische codering) is een informatie-encryptiesysteem waarbij de sleutel waarmee het bericht wordt gecodeerd en het gecodeerde bericht zelf wordt verzonden via een open (dat wil zeggen onbeschermd, waarneembaar) kanaal. Om de publieke sleutel te genereren en het versleutelde bericht te lezen, gebruikt de ontvanger geheime sleutel. Cryptografische systemen met publieke sleutels worden momenteel op grote schaal gebruikt in verschillende sectoren netwerkprotocollen, in het bijzonder bij SSL-protocol en daarop gebaseerde protocollen toepassingsniveau HTTPS, SSH, enz.

Rijst. 7.

1. De ontvanger genereert een sleutel. De sleutel is verdeeld in een open en gesloten deel. Tegelijkertijd openbare sleutel mag niet worden doorgegeven open kanaal. Of de authenticiteit ervan moet worden gegarandeerd door een certificeringsinstantie.

2. De afzender codeert het bericht met de publieke sleutel.

3. De ontvanger decodeert het bericht met behulp van de privésleutel.

Nadeel van de methode: Hoewel het bericht veilig is gecodeerd, worden de ontvanger en de afzender blootgesteld aan het feit dat ze een gecodeerd bericht verzenden.

Algemeen idee cryptografisch systeem met een openbare sleutel is het gebruiken, bij het versleutelen van een bericht, van een dergelijke functie op basis van de openbare sleutel en het bericht (cijferfunctie), die algoritmisch zeer moeilijk om te keren is, dat wil zeggen om het argument ervan te berekenen op basis van de waarde van de functie , zelfs als u de waarde van de sleutel kent.

Systeemfuncties

Voordeel A symmetrische cijfers Het voordeel van symmetrische cijfers is dat er geen geheime sleutel hoeft te worden verzonden. De partij die cijferteksten wil ontvangen, genereert, in overeenstemming met het gebruikte algoritme, een paar “publieke sleutel - privé sleutel" De sleutelwaarden zijn gerelateerd, maar het berekenen van de ene waarde uit de andere zou vanuit praktisch oogpunt onmogelijk moeten zijn. De publieke sleutel wordt gepubliceerd in mappen openen en wordt gebruikt om informatie door de tegenpartij te versleutelen. De privésleutel wordt geheim gehouden en wordt gebruikt om het bericht dat naar de eigenaar van het sleutelpaar wordt verzonden, te decoderen. Asymmetrische cijfers werden in 1976 ontwikkeld door Whitfield Diffie en Martin Hellman, New Directions in moderne cryptografie" Ze stelden een gedeeld geheim sleuteluitwisselingssysteem voor, gebaseerd op het discrete logaritmeprobleem. Over het algemeen is de basis van de bekende asymmetrische cryptosystemen een van de complexe wiskundige problemen, die de constructie van eenrichtingsfuncties en trapfuncties mogelijk maken. Het cryptosysteem Rivest-Shamir-Adelman maakt bijvoorbeeld gebruik van het factorisatieprobleem grote aantallen, en de cryptosystemen Merkle-Hellman en Hoare-Rivest vertrouwen op het zogenaamde knapzakprobleem.

Gebreken- asymmetrische cryptosystemen vereisen aanzienlijk meer computerbronnen. Daarnaast is het noodzakelijk om de authenticiteit (authenticiteit) van de publieke sleutels zelf, waarvoor doorgaans certificaten worden gebruikt, te waarborgen.

Een hybride (of gecombineerd) cryptosysteem is een encryptiesysteem dat alle voordelen heeft van een cryptosysteem met publieke sleutel, maar zonder het belangrijkste nadeel: een lage encryptiesnelheid.

Beginsel: Cryptografische systemen profiteren van twee belangrijke cryptosystemen: symmetrische en asymmetrische cryptografie. Programma's als PGP en GnuPG zijn op dit principe gebouwd.

Belangrijkste nadeel asymmetrische cryptografie is traag vanwege de complexe berekeningen die de algoritmen vereisen symmetrische cryptografie toont traditioneel een briljante werksnelheid. Symmetrische cryptosystemen hebben er echter één aanzienlijk nadeel-- het gebruik ervan veronderstelt de aanwezigheid van een beveiligd kanaal voor het verzenden van sleutels. Om dit nadeel te ondervangen, nemen ze hun toevlucht tot asymmetrische cryptosystemen die gebruik maken van een paar sleutels: openbaar en privé.

Encryptie: De meeste encryptiesystemen werken als volgt. Voor een symmetrisch algoritme (3DES, IDEA, AES of een ander) wordt een willekeurige sleutel gegenereerd. Zo’n sleutel heeft doorgaans een grootte van 128 tot 512 bits (afhankelijk van het algoritme). Vervolgens wordt een symmetrisch algoritme gebruikt om het bericht te versleutelen. In het geval van blokcijfers is het noodzakelijk om een ​​coderingsmodus te gebruiken (bijvoorbeeld CBC), waardoor het bericht kan worden gecodeerd met een lengte die groter is dan de bloklengte. Wat de willekeurige sleutel zelf betreft, deze moet worden gecodeerd met de publieke sleutel van de ontvanger van het bericht, en het is in dit stadium dat een cryptosysteem met publieke sleutel (RSA of Diffie-Hellman Algorithm) wordt toegepast. Omdat de willekeurige sleutel kort is, kost het coderen ervan weinig tijd. Versleutel een reeks berichten met behulp van asymmetrisch algoritme Dit is een computationeel complexere taak, dus het verdient de voorkeur om hier symmetrische encryptie te gebruiken. Verzend vervolgens gewoon het gecodeerde bericht symmetrisch algoritme, evenals de bijbehorende sleutel in gecodeerde vorm. De ontvanger decodeert eerst de sleutel met zijn privésleutel en gebruikt vervolgens de resulterende sleutel om het volledige bericht te ontvangen.

Een digitale handtekening biedt:

* Identificatie van de bron van het document. Afhankelijk van de details van de documentdefinitie kunnen velden zoals “auteur”, “aangebrachte wijzigingen”, “tijdstempel”, etc. worden ondertekend.

* Bescherming tegen documentwijzigingen. Elke toevallige of opzettelijke wijziging aan het document (of de handtekening) zal het cijfer veranderen en daarom zal de handtekening ongeldig worden.

De volgende bedreigingen voor digitale handtekeningen zijn mogelijk:

*Een aanvaller kan proberen een handtekening te vervalsen voor een document naar keuze.

*Een aanvaller kan proberen een document aan een bepaalde handtekening te koppelen, zodat de handtekening daarmee overeenkomt.

Wanneer u een sterke coderingsfunctie gebruikt, is het rekenkundig moeilijk om een ​​vals document te maken met hetzelfde coderingstype als het echte document. Deze bedreigingen kunnen echter worden gerealiseerd als gevolg van zwakke punten in specifieke caching-algoritmen, handtekeningen of fouten in de implementatie ervan. De volgende bedreigingen voor systemen voor digitale handtekeningen zijn echter ook mogelijk:

*Een aanvaller die een privésleutel steelt, kan elk document namens de sleuteleigenaar ondertekenen.

*Een aanvaller kan de eigenaar ertoe verleiden een document te ondertekenen, bijvoorbeeld met behulp van een blind handtekeningprotocol.

*Een aanvaller kan de openbare sleutel van de eigenaar vervangen door zijn eigen sleutel, waarbij hij zich voordoet als hem.

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. De volgorde van acties is als volgt:
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. De zender en de ontvanger komen een geheime communicatiesleutel k overeen, d.w.z. over de gebruikte mapping E.
3. Afzender codeert leesbare tekst x met behulp van 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 de geheimhouding van de sleutel k, die zowel naar de afzender als naar de ontvanger wordt verzonden open vorm via een communicatiekanaal dat beschermd is tegen de acties van een cryptanalist, of in gecodeerde vorm via een open communicatiekanaal. 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 ontstaat een dergelijke probleemstelling bij het analyseren 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 niet alleen informatie beschermen tegen onbevoegde personen, maar ook door 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.

De enige bestaande methode was symmetrische encryptie. De algoritmesleutel moet door beide partijen geheim worden gehouden, er moeten maatregelen worden genomen om de toegang tot het kanaal langs het gehele pad van het cryptogram te beschermen, of de partijen communiceren via crypto-objecten, berichten, als dit kanaal interacties gemarkeerd met 'Niet voor gebruik door derden'. Het versleutelingsalgoritme wordt door de partijen geselecteerd voordat de berichtenuitwisseling begint.

Basisprincipes

Algoritmen voor gegevensversleuteling worden veel gebruikt computertechnologie in systemen voor het verbergen van vertrouwelijke en commerciële informatie tegen kwaadwillig gebruik door derden. Het belangrijkste principe daarin is de voorwaarde dat de zender en ontvanger kennen het versleutelingsalgoritme vooraf, evenals de sleutel tot de boodschap, zonder welke de informatie slechts een reeks symbolen is die geen betekenis hebben.

Klassieke voorbeelden van dergelijke algoritmen zijn symmetrische cryptografische algoritmen hieronder vermeld:

  • Eenvoudige herschikking
  • Enkele permutatie per sleutel
  • Dubbele permutatie
  • Permutatie "Magisch vierkant"

Eenvoudige herschikking

Eenvoudige herschikking zonder sleutel is een van de meest eenvoudige methoden encryptie. Het bericht wordt in kolommen in een tabel geschreven. Nadat de leesbare tekst in kolommen is geschreven, wordt deze regel voor regel gelezen om de cijfertekst te vormen. Om dit cijfer te gebruiken, moeten de afzender en de ontvanger het eens worden over een gedeelde sleutel in de vorm van een tabelgrootte. Het combineren van letters in groepen is niet opgenomen in de cijfersleutel en wordt alleen gebruikt voor het gemak van het schrijven van onzintekst.

Enkele permutatie per sleutel

Meer praktische methode encryptie, single key permutatie genoemd, lijkt sterk op de vorige. Het verschilt alleen doordat de tabelkolommen opnieuw zijn gerangschikt volgens trefwoord, een zin of een reeks cijfers met de lengte van een tabelregel.

Dubbele permutatie

Voor extra veiligheid kunt u een bericht dat al is gecodeerd opnieuw coderen. Deze methode staat bekend als dubbele permutatie. Om dit te doen, wordt de grootte van de tweede tabel zo geselecteerd dat de lengtes van de rijen en kolommen verschillen van de lengtes in de eerste tabel. Het is het beste als ze relatief primair zijn. Bovendien kunnen de kolommen in de eerste tabel opnieuw worden gerangschikt, en de rijen in de tweede tabel. Ten slotte kun je de tabel zigzaggend, slangvormig, spiraalvormig of op een andere manier invullen. Dergelijke methoden voor het invullen van de tabel maken het coderingsproces veel leuker als ze de sterkte van het cijfer niet vergroten.

Permutatie "Magisch vierkant"

Magische vierkanten zijn vierkante tabellen met opeenvolgende natuurlijke getallen vanaf 1 ingeschreven in hun cellen, die opgeteld hetzelfde getal vormen voor elke kolom, elke rij en elke diagonaal. Dergelijke vierkanten werden op grote schaal gebruikt om gecodeerde tekst in te voeren volgens de daarin gegeven nummering. Als je vervolgens de inhoud van de tabel regel voor regel uitschrijft, krijg je encryptie door de letters opnieuw te rangschikken. Op het eerste gezicht lijkt het alsof er maar heel weinig magische vierkanten zijn. Hun aantal neemt echter zeer snel toe naarmate het vierkant groter wordt. Er is dus maar één magisch vierkant van 3 x 3, als je geen rekening houdt met de rotaties ervan. Er zijn al 880 magische vierkanten van 4 x 4, en het aantal magische vierkanten van maat 5 x 5 is dus ongeveer 250.000 grote maten had een goede basis kunnen zijn voor een betrouwbaar encryptiesysteem uit die tijd, omdat het handmatig uitproberen van alle sleutelopties voor dit cijfer ondenkbaar was.

De getallen van 1 tot en met 16 passen in een vierkant van 4 bij 4. De magie ervan was dat de som van de getallen in rijen, kolommen en volledige diagonalen gelijk was aan hetzelfde getal: 34. Deze vierkanten verschenen voor het eerst in China, waar ze werden toegewezen een soort ‘magische kracht’.

Hierna wordt de cijfertekst in een regel geschreven (lezen gebeurt van links naar rechts, regel voor regel):
.irdzegu SzhaoyanP

Wanneer de tekst wordt gedecodeerd, wordt deze in een vierkant geplaatst en wordt de leesbare tekst gelezen in de reeks getallen van het “magische vierkant”. Het programma moet “magische vierkanten” genereren en de gewenste vierkanten selecteren op basis van de sleutel. Het vierkant is groter dan 3x3.

Verhaal

Vereisten

Het volledige verlies van alle statistische patronen van het oorspronkelijke bericht is een belangrijke vereiste voor een symmetrisch cijfer. Hiervoor moet het cijfer een "lawine-effect" hebben - het moet voorkomen sterke verandering versleutelingsblok met een verandering van 1 bit in de invoergegevens (idealiter zouden de waarden van 1/2 bits van het versleutelingsblok moeten veranderen).

Een andere belangrijke vereiste is de afwezigheid van lineariteit (dat wil zeggen de voorwaarden f(a) xor f(b) == f(a xor b)), anders wordt de toepassing van differentiële cryptanalyse op het cijfer vergemakkelijkt.

Algemeen schema

Momenteel zijn symmetrische cijfers:

  • cijfers blokkeren. Ze verwerken informatie in blokken van een bepaalde lengte (meestal 64, 128 bits), waarbij ze een sleutel in een voorgeschreven volgorde op het blok toepassen, meestal via verschillende cycli van schudden en vervangen, ook wel rondes genoemd. Het resultaat van herhaalde rondes is een lawine-effect: een toenemend verlies aan bitcorrespondentie tussen blokken open en gecodeerde gegevens.
  • stream ciphers, waarbij encryptie wordt uitgevoerd over elke bit of byte van de originele (platte) tekst met behulp van gamma. Een stroomcijfer kan eenvoudig worden gemaakt op basis van een blokcijfer (bijvoorbeeld GOST 28147-89 in gammamodus), gelanceerd in een speciale modus.

De meeste symmetrische cijfers gebruiken een complexe combinatie grote hoeveelheid vervangingen en permutaties. Veel van dergelijke cijfers worden uitgevoerd in verschillende (soms tot 80) passages, waarbij bij elke passage een "pass-key" wordt gebruikt. De set "passleutels" voor alle passen wordt een "sleutelschema" genoemd. In de regel wordt het gemaakt op basis van een sleutel door er bepaalde bewerkingen op uit te voeren, inclusief permutaties en vervangingen.

Een typische manier om symmetrische encryptie-algoritmen te construeren is het Feistel-netwerk. Het algoritme bouwt een versleutelingsschema op basis van de functie F(D, K), waarbij D een stuk gegevens is dat twee keer zo groot is minder dan een blok encryptie, en K is de “wachtwoordsleutel” voor een gegeven pas. De functie hoeft niet omkeerbaar te zijn; de inverse functie ervan is mogelijk onbekend. De voordelen van het Feistel-netwerk zijn het bijna volledige samenvallen van decodering met codering (het enige verschil is de omgekeerde volgorde van de "passleutels" in het schema), wat de hardware-implementatie enorm vergemakkelijkt.

De permutatiebewerking mengt de berichtbits volgens een bepaalde wet. In hardware-implementaties wordt het triviaal geïmplementeerd als draadomkering. Het zijn de permutatieoperaties die het mogelijk maken om het ‘lawine-effect’ te bereiken. De permutatiebewerking is lineair - f(a) xor f(b) == f(a xor b)

Vervangingsbewerkingen worden uitgevoerd door het vervangen van de waarde van een bepaald deel van het bericht (vaak 4, 6 of 8 bits) door een standaard, vast nummer in het algoritme door toegang te krijgen tot een constante array. De substitutiebewerking introduceert niet-lineariteit in het algoritme.

Vaak hangt de kracht van een algoritme, vooral tegen differentiële cryptanalyse, af van de keuze van waarden in de opzoektabellen (S-boxen). Op zijn minst wordt het als onwenselijk beschouwd om vaste elementen S(x) = x te hebben, evenals de afwezigheid van invloed van een bepaald bit van de invoerbyte op een bepaald bit van het resultaat - dat wil zeggen gevallen waarin het resultaatbit het hetzelfde voor alle paren invoerwoorden die alleen in dit bit verschillen.

Algoritmeparameters

Er zijn veel (minstens twintig) symmetrische coderingsalgoritmen, waarvan de essentiële parameters zijn:

  • sleutel lengte
  • aantal rondes
  • verwerkte bloklengte
  • complexiteit van hardware-/software-implementatie
  • conversie complexiteit

Soorten symmetrische cijfers

cijfers blokkeren
  • AES (Engels: Advanced Encryption Standard) - Amerikaanse standaard encryptie
  • GOST 28147-89 - Sovjet- en Russische coderingsstandaard, ook een CIS-standaard
  • DES (Data Encryption Standard) - standaard voor gegevenscodering in de VS
  • 3DES (drievoudige DES, drievoudige DES)
  • RC2 (Rivest Cipher of Ron's Cipher)
  • IDEA (internationaal gegevensversleutelingsalgoritme, internationaal algoritme gegevensversleuteling)
  • CAST (naar de initialen van de ontwikkelaars Carlisle Adams en Stafford Tavares)
specifiek algoritme encryptie, waarvan de invoer het originele, niet-gecodeerde bericht is, ook wel genoemd leesbare tekst en de sleutel. Algoritme-uitvoer is een gecodeerd bericht, ook wel cijfertekst. De sleutel is een waarde die onafhankelijk is van het bericht dat wordt gecodeerd. Als u de sleutel wijzigt, moet het gecodeerde bericht worden gewijzigd.

Het gecodeerde bericht wordt naar de ontvanger verzonden. De ontvanger converteert het gecodeerde bericht naar het oorspronkelijke, niet-gecodeerde bericht met behulp van een decoderingsalgoritme en dezelfde sleutel die wordt gebruikt bij de codering, of een sleutel die gemakkelijk kan worden verkregen via encryptie sleutel.

Het niet-versleutelde bericht wordt aangeduid met P of M, uit de woorden platte tekst en bericht. We zullen het gecodeerde bericht C aanduiden met het woord cijfertekst.

De veiligheid die traditionele cryptografie biedt, hangt van verschillende factoren af.

Ten eerste moet het cryptografische algoritme sterk genoeg zijn, zodat het gecodeerde bericht dat wordt verzonden niet kan worden gedecodeerd zonder de sleutel, waarbij alleen gebruik wordt gemaakt van verschillende statistische patronen van het gecodeerde bericht of een ander middel om het te analyseren.

Ten tweede moet de veiligheid van het verzonden bericht afhangen van de geheimhouding van de sleutel, maar niet van de geheimhouding van het algoritme. Het algoritme moet door specialisten worden geanalyseerd om de aanwezigheid van zwakke punten te elimineren, waarbij de relatie tussen niet-gecodeerde en gecodeerde berichten slecht verborgen is. Als aan deze voorwaarde wordt voldaan, kunnen fabrikanten bovendien goedkope hardwarechips en vrij gedistribueerde programma's maken die dit implementeren encryptie-algoritme.

Ten derde moet het algoritme zodanig zijn dat het onmogelijk is om de sleutel te achterhalen, zelfs als er heel wat paren (gecodeerd bericht, niet-gecodeerd bericht) bekend zijn die zijn verkregen tijdens het coderen met behulp van deze sleutel.

Claude Shannon introduceerde de concepten van verspreiding en verwarring om te beschrijven sterkte van het algoritme encryptie.

Verspreiding- dit is verstrooiing statistische kenmerken duidelijke tekst erin breed bereik statistische kenmerken van de cijfertekst. Dit wordt bereikt door het feit dat de waarde van elk leesbare tekstelement de waarden van veel cijfertekstelementen beïnvloedt, of, op equivalente wijze, dat elk cijfertekstelement afhankelijk is van veel leesbare tekstelementen.

Verwarring is de vernietiging van de statistische relatie tussen de cijfertekst en de sleutel.

Als X het oorspronkelijke bericht is en K dat is cryptografische sleutel, dan kan de gecodeerde verzonden tekst in de vorm worden geschreven

De ontvanger decodeert het bericht met dezelfde sleutel

De vijand, zonder toegang tot K en X, moet proberen X, K of beide te achterhalen.

Symmetrische coderingsalgoritmen verschillen in de manier waarop ze worden verwerkt bron. Blokversleuteling of streamversleuteling is mogelijk.

Een tekstblok wordt behandeld als een niet-negatief geheel getal, of als verschillende onafhankelijke niet-negatieve gehele getallen. De bloklengte wordt altijd gekozen als een macht van twee. In de meeste blokalgoritmen symmetrische encryptie worden gebruikt volgende typen operaties:

Deze bewerkingen worden cyclisch herhaald in het algoritme en vormen de zogenaamde rondes. De invoer van elke ronde is de uitvoer van de vorige ronde en de sleutel die wordt verkregen door specifiek algoritme van de encryptiesleutel K. De ronde sleutel wordt genoemd plug-in. Elk versleutelingsalgoritme kan als volgt worden weergegeven:


Rijst. 2.2.

Toepassingen

Standaard encryptie-algoritme zou in veel toepassingen toepasbaar moeten zijn:

  • Gegevensversleuteling. Het algoritme moet effectief zijn in het versleutelen van gegevensbestanden of grote stroom gegevens.
  • Creatie willekeurige getallen. Het algoritme moet efficiënt zijn in het genereren van een bepaald aantal willekeurige bits.
  • Hashing. Het algoritme moet efficiënt worden vertaald in een eenrichtings-hashfunctie.

Platformen

Standaard encryptie-algoritme moeten op verschillende platforms worden geïmplementeerd, die bijgevolg verschillende eisen stellen.

  • Het algoritme moet effectief worden geïmplementeerd op gespecialiseerde hardware die is ontworpen om codering/decodering uit te voeren.
  • Grote processors. Hoewel voor het grootste deel snelle toepassingen Er wordt altijd gebruik gemaakt van speciale apparatuur, software-implementaties vaker. Het algoritme moet een efficiënte software-implementatie op 32-bits processors mogelijk maken.
  • Middelgrote processors. Het algoritme zou moeten werken microcontrollers en andere middelgrote processors.
  • Kleine verwerkers. Het zou mogelijk moeten zijn om het algoritme op smartcards te implementeren, zelfs met strikte beperkingen op het gebruikte geheugen.

Aanvullende vereisten

Encryptie-algoritme moeten waar mogelijk aan bepaalde aanvullende eisen voldoen.

  • Het algoritme moet eenvoudig te coderen zijn om de kans op programmeerfouten te minimaliseren.
  • Het algoritme moet een platte sleutelruimte hebben en elke willekeurige reeks bits van de vereiste lengte accepteren mogelijke sleutel. Het hebben van zwakke sleutels is ongewenst.
  • Het algoritme moet eenvoudig kunnen worden aangepast voor verschillende beveiligingsniveaus en moet voldoen aan zowel de minimale als de maximale eisen.
  • Alle databewerkingen moeten worden uitgevoerd op blokken die veelvouden zijn van een byte of een woord van 32 bits.

Beveiliging van cryptografische informatie

Alexandra Prokhorova

Een fragment uit het boek van Alexander Prokhorov “The Internet: How it Works”, informatie over het boek is te vinden op adres .

Laten we eens overwegen concreet voorbeeld. Laat de directeur van bedrijf A de directeur van bedrijf B een belangrijk document doorsturen e-mail(Afb. 1). Welke problemen doen zich voor op het gebied van communicatiebeveiliging?

Bij ontvangst van de brief stelt de directeur van bedrijf B de volgende vragen. Is het echt dit document is verzonden door directeur A (afzenderidentificatie). De mogelijkheid bestaat immers dat de brief afkomstig is van iemand anders die zich voordoet als directeur van bedrijf A. Is het document onderweg onderschept en gewijzigd (berichtauthenticatie). Of het document door iemand anders dan de ontvanger is gelezen (geheimhouding)

De e-mail en de bijgevoegde bestanden kunnen eenvoudig worden ingelezen tussenliggende punten zijn reizen op internet, bijvoorbeeld op de server van de provider

Het is bekend dat geheimhouding (vertrouwelijkheid van berichten) kan worden bereikt door gegevens te versleutelen. Het blijkt dat alle drie deze problemen kunnen worden opgelost met behulp van encryptie, en cryptografie lost deze problemen op.

Cryptografie (van het Griekse ‘cryptos’ – geheim) is de wetenschap en technologie van encryptie belangrijke informatie om het te beschermen tegen wijzigingen en ongeoorloofde toegang. Cryptografie dient niet alleen om teksten om te zetten in een onleesbare gecodeerde vorm, maar stelt u ook in staat de problemen van authenticatie en identificatie van gebruikers op te lossen wanneer ze op internet werken.

Cryptografie is de basis van veilige communicatie. In afb. 1 gaven we een voorbeeld van correspondentie tussen twee correspondenten. Opgemerkt moet worden dat we op internet niet alleen met mensen communiceren, maar ook met diverse diensten. Wanneer we bijvoorbeeld een programma van een server gaan downloaden, is het ook belangrijk dat we dat weten deze server behoort toe aan het ontwikkelbedrijf, en niet aan het piratenbedrijf dat illegaal illegale software verspreidt.

Versleuteling met een sleutel

Het versleutelingsproces met behulp van een sleutel is dat de leesbare tekst wordt gecombineerd met een reeks cijfers (sleutel) volgens de regels van een bepaald algoritme ( cryptografisch algoritme) om een ​​gecodeerd bericht te ontvangen.

Laten we aannemen dat we de platte tekst "Hallo Vasya" willen coderen met behulp van het eenvoudigste algoritme: letters vervangen door hun cijfers in het alfabet. Als gevolg hiervan ontvangen we een gecodeerde tekst in de vorm: 17 18 10 3 6 20 3 1 19 33. Als een buitenstaander het coderingsalgoritme leert, is het uiteraard onmogelijk om het in de toekomst te gebruiken.

Voorkomen dit tekort misschien met behulp van sleutelversleuteling. Om de essentie van het versleutelingsproces met een sleutel uit te leggen, geven we een eenvoudig voorbeeld (Fig. 3).

Laten we de letters van de tekst opschrijven en hun cijfers in het alfabet eronder noteren. Op de derde regel noteren we de letters van de sleutel en herhalen dit woord over de hele regel. Onder de letters van de sleutel noteren we hun cijfers in het alfabet, en op de vierde regel noteren we het bedrag, wat het gecodeerde bericht zal zijn: 20 19 29 36, enz.

Als je de sleutel en het algoritme kent, is het gemakkelijk om het bericht te ontcijferen: 20 - 3 = 17, en de zeventiende letter van het alfabet is "P", enz. Zelfs als de aanvaller het algoritme kent, maar de sleutel niet, is het onmogelijk om het bericht te lezen zonder een langdurige sleutelselectieprocedure. Eén algoritme kan dus met veel sleutels worden gebruikt verschillende kanalen communicatie, waarbij aan elke correspondent een afzonderlijke sleutel wordt toegewezen.

Het is duidelijk dat hoe langer de cijfersleutel is, hoe meer zoekopdrachten er nodig zijn diverse combinaties bij het decoderen is het overeenkomstig moeilijker om het bericht te decoderen. Cijfers met sleutels langer dan 128 bits worden sterk genoemd.

Principe van encryptie met een geheime sleutel

Symmetrische sleutelcodering

Laten we een specifiek voorbeeld bekijken: laat correspondenten A en B elkaar een brief schrijven (Fig. 4). Iedereen heeft zijn eigen geheime sleutel (gedefinieerd geheime code), dat kan worden gebruikt om gegevens te coderen voordat deze naar internet worden verzonden. Om het versleutelingsschema duidelijker weer te geven, zullen we pictogrammen gebruiken (Fig. 2), dat wil zeggen, de sleutel weergeven in de vorm van een gewone sleutel, en het gecodeerde bericht in de vorm van een document dat in een envelop is verzegeld. Vervolgens kan het proces van encryptie en decryptie worden weergegeven in de vorm van Fig. 3.

Versleutelingsschema met geheime (symmetrische) sleutel

Gebruiker A codeert het bericht met zijn geheime sleutel, verzendt het bericht via internet en ontvanger B (met dezelfde geheime sleutel) decodeert het bericht. Als je naar de figuur kijkt, kun je gemakkelijk zien dat het circuit symmetrisch is. De linker- en rechtergebruikers delen dezelfde (symmetrische) sleutels, dus dit type versleuteling wordt symmetrische sleutelversleuteling genoemd.

Het probleem met de geheime sleutelversleuteling heeft bepaalde nadelen. Ten eerste lost symmetrische encryptie het authenticatieprobleem niet op. A kan bijvoorbeeld een brief schrijven aan een derde partij C en beweren dat B dit heeft gedaan.

Er moet een symmetrische sleutel op de computer van de afzender en de ontvanger worden geïnstalleerd voordat geheime berichten kunnen worden uitgewisseld. Dat wil zeggen dat u van tevoren moet weten welke twee computers met elkaar zullen "praten". Het is duidelijk dat encryptie voor veilige communicatie Internet is zinvol als correspondenten elkaar niet persoonlijk hoeven te ontmoeten. Het probleem doet zich voor bij het verzenden van de privésleutel. Echt. Als A de geheime sleutel in onversleutelde vorm aan B geeft, kan deze worden onderschept. Als de sleutel in gecodeerde vorm wordt verzonden, kan B deze niet ontvangen. Als u met meerdere correspondenten wilt corresponderen, heeft u voor elke correspondent één sleutel nodig, wat lastig is. Om te beslissen bovenstaande problemen werd een asymmetrisch versleutelingsschema (versleuteling met publieke sleutel) voorgesteld.

Versleuteling van openbare sleutels

Encryptie met publieke sleutels is gebaseerd op het gebruik van een sleutelpaar: private (privé) en publieke (publieke) sleutels.

Het bericht kan worden gecodeerd met zowel een privé- als een publieke sleutel, en alleen worden gedecodeerd met de tweede sleutel van het paar. Dat wil zeggen dat een bericht dat is gecodeerd met een privésleutel alleen kan worden gedecodeerd met een publieke sleutel en omgekeerd. De privésleutel is alleen bekend bij de eigenaar en kan met niemand worden gedeeld, terwijl de publieke sleutel openlijk wordt verspreid onder alle correspondenten.

Een paar sleutels - privé en openbaar - kan zowel worden gebruikt om problemen met authenticatie (Fig. 4) als geheimhouding (vertrouwelijkheid) (Fig. 6) op te lossen.

Volgens het eerste schema (Fig. 4): gebruiker A stuurt de publieke sleutel vooraf naar zijn correspondenten B en C, en stuurt hen vervolgens een bericht dat is gecodeerd met zijn privésleutel.

Het bericht kon alleen door A worden verzonden (alleen hij heeft de privésleutel), dat wil zeggen dat het authenticatieprobleem gegarandeerd is. Maar B is er bijvoorbeeld niet zeker van dat de brief niet ook door C is gelezen. Het probleem van de vertrouwelijkheid is dus niet gegarandeerd

Het schema dat geheimhouding (vertrouwelijkheid) garandeert, wordt getoond in Fig. 6.

Het bericht kan alleen door A worden gelezen, aangezien alleen hij de privésleutel heeft die het bericht onthult, dat wil zeggen dat het vertrouwelijkheidsprobleem is opgelost. Maar A kan er niet zeker van zijn dat het bericht niet is verzonden door B die zich voordeed als C. Het authenticatieprobleem is dus niet opgelost

Om een ​​vertrouwelijke uitwisseling van berichten in correspondentie tussen twee personen te garanderen, is het noodzakelijk om twee paar sleutels te hebben (Fig. 5).

Om een ​​vertrouwelijke uitwisseling van berichten in correspondentie tussen twee personen te garanderen, is het noodzakelijk om over twee paar sleutels te beschikken

Wanneer u versleutelt met een sleutelpaar, hoeft u uw publieke sleutel niet naar alle correspondenten te sturen. Het is veel handiger om deze sleutel op internet op een bepaalde server te plaatsen open toegang. Dan kan iedereen downloaden gegeven sleutel en je een geheim bericht sturen dat niemand anders dan jij zal lezen.