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

Symmetrische cryptosystemen

Symmetrische cryptosystemen(Ook symmetrische encryptie , symmetrische cijfers) - een versleutelingsmethode waarbij dezelfde cryptografische sleutel wordt gebruikt voor versleuteling en decodering. Vóór de uitvinding van het asymmetrische encryptieschema was symmetrische encryptie de enige bestaande methode. De algoritmesleutel moet door beide partijen geheim worden gehouden. Het versleutelingsalgoritme wordt door de partijen geselecteerd voordat de berichtenuitwisseling begint.

Basisprincipes

Algoritmen voor het versleutelen en ontsleutelen van gegevens 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.

Een klassiek voorbeeld van dergelijke algoritmen is 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 codering 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 worden gerangschikt volgens trefwoord, een zin of een reeks cijfers ter 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 lengte van de rijen en kolommen anders is dan 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

Bij het decoderen past de tekst in een vierkant en wordt de leesbare tekst gelezen in de reeks getallen van het “magische vierkant”. Het programma moet “magische vierkanten” genereren en de gewenste 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. Verwerk informatie in blokken van een bepaalde lengte (meestal 64, 128 bits), waarbij een sleutel op het blok wordt toegepast op de voorgeschreven manier, meestal door 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.
  • 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 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 onwenselijk geacht om vaste elementen S(x) = x te hebben, evenals de afwezigheid van invloed van een bit van de invoerbyte op een bit van het resultaat - dat wil zeggen gevallen waarin de resultaatbit de 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

Gemeenschappelijke algoritmen

  • AES (Engels) Geavanceerde coderingsstandaard) - Amerikaanse coderingsstandaard
  • GOST 28147-89 - standaard voor encryptie van binnenlandse gegevens
  • DES (Engels) Standaard voor gegevenscodering) - standaard voor gegevenscodering in de VS

Vergelijking met asymmetrische cryptosystemen

Voordelen

  • snelheid (volgens Applied Cryptography - 3 ordes van grootte hoger)
  • implementatiegemak (door eenvoudigere handelingen)
  • kortere vereiste sleutellengte voor vergelijkbare duurzaamheid
  • kennis (vanwege hogere leeftijd)

Gebreken

  • complexiteit van sleutelbeheer groot netwerk. Het betekent een kwadratische toename van het aantal sleutelparen dat op het netwerk moet worden gegenereerd, verzonden, opgeslagen en vernietigd. Voor een netwerk van 10 deelnemers zijn 45 sleutels nodig, voor 100 al 4950, voor 1000 - 499500, etc.
  • complexiteit van sleuteluitwisseling. Om het te gebruiken, is het noodzakelijk om het probleem van de betrouwbare overdracht van sleutels naar elke abonnee op te lossen, omdat dit noodzakelijk is geheim kanaal om elke sleutel aan beide partijen door te geven.

Om de tekortkomingen van symmetrische encryptie te compenseren, wordt momenteel veel gebruik gemaakt van een gecombineerd (hybride) cryptografisch schema, waarbij de sessiesleutel die door de partijen wordt gebruikt om gegevens uit te wisselen met behulp van symmetrische encryptie, wordt verzonden met behulp van asymmetrische encryptie.

Een belangrijke eigenschap van symmetrische cijfers is onmogelijkheid het gebruik ervan om het auteurschap te bevestigen, aangezien de sleutel bij elke partij bekend is.

Literatuur

  • Gatchin Yu.A., Korobeinikov A.G. Basisprincipes van cryptografische algoritmen. Handleiding. - Sint-Petersburg: SPbGITMO (TU), 2002.
  • Kohn P. Universele algebra. - M.: Mir. - 1968.
  • Korobeinikov A. G. Wiskundige grondslagen van cryptografie. Studiegids. Sint-Petersburg: Sint-Petersburg GITMO (TU), 2002.

Koppelingen

  • naslagwerk, inclusief symmetrische encryptie

Invoering

Het probleem van het beschermen van informatie door deze zo te transformeren dat deze niet kan worden gelezen door een buitenstaander, heeft de menselijke geest al sinds de oudheid opgewonden. De geschiedenis van cryptografie is zo oud als de geschiedenis menselijke taal. Bovendien was het schrijven zelf oorspronkelijk een cryptografisch systeem, aangezien in oude samenlevingen slechts een select aantal mensen dit beheerste.

Cryptografische systemen ontwikkelden zich snel tijdens de jaren van de Eerste en Tweede Wereldoorlog. Vanaf de naoorlogse periode tot op de dag van vandaag heeft de komst van computers de ontwikkeling en verbetering van computertechnologie versneld cryptografische methoden.

Waarom is het een probleem om cryptografische methoden te gebruiken? informatiesystemen(IS) kwam binnen huidige moment bijzonder relevant?

Enerzijds is het gebruik uitgebreid computernetwerken, in het bijzonder mondiaal netwerk Het internet, waarmee grote hoeveelheden informatie van staats-, militaire, commerciële en particuliere aard worden verzonden, waardoor wordt voorkomen dat onbevoegden er toegang toe krijgen.

Aan de andere kant de opkomst van nieuw krachtige computers Netwerk- en neurale computertechnologieën hebben het mogelijk gemaakt om cryptografische systemen in diskrediet te brengen die tot voor kort als vrijwel onbreekbaar werden beschouwd.

Cryptologie (kryptos - geheim, logos - wetenschap) houdt zich bezig met het probleem van het beschermen van informatie door deze te transformeren. Cryptologie is verdeeld in twee gebieden: cryptografie En cryptoanalyse. De doelstellingen van deze richtingen zijn direct tegenovergesteld.

Cryptografie bezig met zoeken en onderzoeken wiskundige methoden transformatie van informatie.

Cryptoanalyse- onderzoekt de mogelijkheden om informatie te ontsleutelen zonder de sleutels te kennen.

Cryptografische methoden voor informatiebescherming- dit zijn speciale methoden voor het versleutelen, coderen of anderszins transformeren van informatie, waardoor de inhoud ervan ontoegankelijk wordt zonder overlegging van de cryptogramsleutel en omgekeerde conversie. Cryptografische beveiligingsmethode is veruit de meest betrouwbare methode bescherming, aangezien de informatie zelf wordt beschermd, en niet de toegang daartoe. Deze methode bescherming wordt geïmplementeerd in de vorm van programma's of softwarepakketten.


Cryptografie

Moderne cryptografie omvat vier hoofdsecties:

1. Symmetrische cryptosystemen. In symmetrische cryptosystemen wordt dezelfde sleutel gebruikt voor zowel codering als decodering;

2. Cryptosystemen met publieke sleutel. Publieke sleutelsystemen gebruiken twee sleutels, een publieke en een private, die wiskundig aan elkaar gerelateerd zijn. Informatie wordt gecodeerd met een publieke sleutel, die voor iedereen beschikbaar is, en gedecodeerd met een privésleutel, die alleen bekend is bij de ontvanger van het bericht;

3. Elektronische handtekening . Een systeem voor elektronische handtekeningen is een cryptografische transformatie die aan de tekst is gekoppeld en waarmee, wanneer een andere gebruiker de tekst ontvangt, het auteurschap en de authenticiteit van het bericht kan worden geverifieerd.

4. Sleutelbeheer. Dit is het proces van informatieverwerkingssystemen, waarvan de inhoud de compilatie en distributie van sleutels tussen gebruikers is.

De belangrijkste toepassingsgebieden van cryptografische methoden zijn transmissie vertrouwelijke informatie via communicatiekanalen, het vaststellen van de authenticiteit van verzonden berichten, het opslaan van informatie op media in gecodeerde vorm.

Cryptografie maakt het dus mogelijk om informatie zodanig te transformeren dat het lezen (herstel) ervan alleen mogelijk is als de sleutel bekend is.

De informatie die moet worden gecodeerd en gedecodeerd, zal bestaan ​​uit teksten die op sommige daarvan zijn gebouwd alfabet. Deze termen betekenen het volgende.

Alfabet- een eindige set tekens die wordt gebruikt om informatie te coderen.

Tekst- een geordende reeks elementen van het alfabet.

Encryptie- transformatieproces: bron , ook wel genoemd leesbare tekst , wordt vervangen gecodeerde tekst.

Decryptie- het omgekeerde proces van encryptie. Op basis van de sleutel wordt de cijfertekst omgezet naar de originele tekst.

Sleutel - informatie die nodig is voor een soepele codering en decodering van teksten.

Cryptosystemen zijn onderverdeeld in symmetrisch En met publieke sleutel.

IN symmetrische cryptosystemen gebruikt voor zowel encryptie als decryptie dezelfde sleutel.

IN publieke sleutelsystemen er worden twee sleutels gebruikt - open En gesloten, die wiskundig aan elkaar gerelateerd zijn. Informatie wordt gecodeerd met een openbare sleutel, die voor iedereen beschikbaar is, en gedecodeerd met een privésleutel die alleen bekend is bij de ontvanger van het bericht.

Voorwaarden sleutelverdeling En sleutelbeheer verwijzen naar de processen van een informatieverwerkingssysteem, waarvan de inhoud de compilatie en distributie van sleutels tussen gebruikers is.

Elektronische (digitale) handtekening wordt een cryptografische transformatie genoemd die aan de tekst is gekoppeld en die het mogelijk maakt, wanneer de tekst door een andere gebruiker wordt ontvangen, het auteurschap en de authenticiteit van het bericht te verifiëren.

Cryptografische kracht is een kenmerk van een cijfer dat de weerstand tegen decodering bepaalt zonder de sleutel te kennen. Er zijn verschillende indicatoren voor cryptografische kracht, waaronder:

· aantal van allemaal mogelijke sleutels;

· gemiddelde tijd die nodig is voor cryptanalyse.

Symmetrische cryptosystemen

De hele verscheidenheid aan bestaande cryptografische methoden kan worden teruggebracht tot de volgende klassen van transformaties:

Het eenvoudigste type transformatie, dat bestaat uit het min of meer vervangen van de karakters van de brontekst door andere (van hetzelfde alfabet) complexe regel. Om een ​​hoge cryptografische sterkte te garanderen, is het gebruik van grote sleutels vereist.

· Herschikkingen.

Ook een eenvoudige cryptografische conversiemethode. Het wordt meestal gebruikt in combinatie met andere methoden.

Herschikking - de karakters van de gecodeerde tekst worden opnieuw gerangschikt volgens een bepaalde regel binnen een bepaald blok verzonden tekst.

· Gommen.

Deze methode bestaat uit het over de brontekst heen leggen van een pseudo-willekeurige reeks die is gegenereerd op basis van de sleutel.

Analytische transformatie - de gecodeerde tekst wordt getransformeerd volgens een analytische regel, bijvoorbeeld gamma - bestaat uit het opleggen aan de brontekst van een pseudo-willekeurige reeks die is gegenereerd op basis van de sleutel.

· Blokkeer cijfers.

Gecombineerde transformatie - vertegenwoordigt een reeks basistransformatiemethoden die worden toegepast op een blok cijfertekst. In de praktijk komen blokcijfers vaker voor dan ‘pure’ transformaties van de ene of de andere klasse vanwege hun hogere cryptografische sterkte. Russisch en Amerikaanse normen encrypties zijn gebaseerd op deze klasse.

· Vervanging.

Vervanging - tekens in de cijfertekst worden vervangen door tekens uit hetzelfde of een ander alfabet volgens een vooraf bepaalde regel.


Gerelateerde informatie.


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 dit weten symmetrische sleutel Als de sleutel wordt gecompromitteerd, komt alleen de interactie tussen deze twee gebruikers in gevaar.

Rijst. 2.1

Symmetrische versleutelingsalgoritmen 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 symmetrische encryptie-algoritmen wijdverbreid gebruik ontving het DES-coderingsalgoritme (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 een ​​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 volledig open source geworden symmetrisch algoritme met een sleutelgrootte van 128, 192, 256 bits.

De situatie wordt nog verergerd door het feit dat, volgens de Amerikaanse wet, export als softwareproducten Encryptiesystemen met een sleutel van maximaal 128 bits zijn toegestaan. 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. Deze methode is uiteraard niet geschikt 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? Afwezigheid veilige methode sleuteluitwisseling 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 (geheim en openbare sleutel En).

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 kan het decoderen geheime sleutel (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 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 theorie priemgetallen. 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 dat het moeilijk is om een ​​gecompromitteerde sleutel te vervangen, en de nadelen asymmetrisch systeem– bij een relatief lage bedrijfssnelheid. 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 wijdverspreid geworden die een gecombineerd algoritme gebruiken dat dit mogelijk maakt hoge snelheid De encryptie die inherent is aan AES maakt gebruik van open transmissie van encryptiesleutels (zoals bij RSA).

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 of haar 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.

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 encryptiesleutel.

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 de brontekst wordt verwerkt. 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 de meesten 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 strenge 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.

Symmetrische cryptosystemen

Symmetrische cryptosystemen (ook wel symmetrische encryptie, symmetrische cijfers) zijn een encryptiemethode waarbij dezelfde cryptografische sleutel wordt gebruikt voor encryptie en decryptie. 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 in een voorgeschreven volgorde op het blok wordt toegepast, meestal via verschillende cycli van mixen en vervangen, zogenaamde rondes. 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. De ontvanger gebruikt een privésleutel om de publieke sleutel te genereren en het gecodeerde bericht te lezen. Cryptografische systemen met publieke sleutels worden momenteel veel gebruikt in met name verschillende netwerkprotocollen 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. In dit geval mag de publieke sleutel niet via worden verzonden 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 asymmetrische cijfers eerder symmetrische cijfers bestaat uit het ontbreken van de noodzaak om een ​​geheime sleutel over te dragen. 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 Modern Cryptography. 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 van grote getallen, 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 openbare sleutels, waarvoor doorgaans certificaten worden gebruikt.

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. Het versleutelen van een reeks berichten met behulp van een asymmetrisch algoritme is een computationeel complexere taak, dus het verdient de voorkeur om symmetrische versleuteling te gebruiken. Dan volstaat het om een ​​bericht gecodeerd met een symmetrisch algoritme te verzenden, 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.

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 dezelfde codering 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 nog steeds 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.