Inleiding tot cryptografie. Algemene vragen, problemen en oplossingen. Conventionele cryptografie

12.1. Invoering. Over de geschiedenis van steganografie en cryptografie.

Hoe over te dragen Nodige informatie naar de juiste geadresseerde in het geheim van anderen? Elk van de lezers andere keer en voor verschillende doeleinden heb ik waarschijnlijk geprobeerd dit praktische probleem voor mezelf op te lossen (laten we het voor het gemak van verdere referenties het ‘TP-probleem’ noemen, dat wil zeggen het geheime transmissieprobleem). Nadat hij een geschikte oplossing had gekozen, herhaalde hij hoogstwaarschijnlijk de uitvinding van een van de methoden geheime transmissie informatie die al duizenden jaren oud is.

Als we nadenken over het TP-probleem, is het niet moeilijk om tot de conclusie te komen dat er drie mogelijkheden zijn:

  • 1. Creëer een absoluut betrouwbaar communicatiekanaal tussen abonnees, ontoegankelijk voor anderen.
  • 2. Gebruik een openbaar communicatiekanaal, maar verberg het feit van het doorgeven van informatie.
  • 3. Gebruik een openbaar communicatiekanaal, maar verzend de noodzakelijke informatie via dit kanaal in een zodanig getransformeerde vorm dat alleen de geadresseerde deze kan herstellen.

Laten we eens commentaar geven op deze drie mogelijkheden.

  • 1. Creëer op het huidige ontwikkelingsniveau van wetenschap en technologie een dergelijk communicatiekanaal tussen abonnees op afstand voor herhaalde transmissie grote volumes informatie is vrijwel onmogelijk.
  • 2. Steganografie is de ontwikkeling van middelen en methoden om het feit van de overdracht van berichten te verbergen.

Steganografie als wetenschap bevindt zich nu in een staat van opkomst die verband houdt met dit proces snelle ontwikkeling Internet. Vertaald uit het Grieks betekent "steganografie" letterlijk "geheim schrijven" (steganos - geheim; grafisch - schrijven). Het doel van steganografie is om de overdracht van informatie te verbergen; het kan cryptografie niet vervangen, maar zorgt er samen mee voor de veiligste overdracht van berichten.

Op verschillende technologische niveaus die overeenkomen met hun tijd, wordt het idee om informatie te verbergen al sinds mensenheugenis geïmplementeerd. Lezers zijn waarschijnlijk op de hoogte van het eeuwenoude gebruik van tabletten met wasbedekkende berichten of het actieve gebruik van sympathische inkt door binnenlandse revolutionairen.

Opgemerkt moet worden dat steganografische methoden zowel kunnen worden gebruikt om vertrouwelijke informatie te beschermen als voor destructieve doeleinden. Dit is vooral relevant in het licht van de veranderde houding ten opzichte van internet als middel mogelijk kanaal verbindingen tussen terroristische elementen van verschillende aard. Hier beschouwen we de mogelijkheden van moderne steganografie in relatie tot het probleem van informatiebeveiliging.

Het belangrijkste kenmerk van computercryptografie is het verbergen van een berichtenbestand in een containerbestand. De container speelt meestal de rol van veelgebruikte grafische bestanden BMP, GIF, JPEG of audio WAV, hoewel andere mogelijk zijn - het hangt allemaal af van de specifieke implementatie. Moderne computersteganografiesystemen maken voornamelijk gebruik van de LSB-methode, of de minst significante bitsubstitutiemethode. De essentie van deze methode is om de waarde van het minst significante bit te vervangen. Laten we zeggen dat we een bericht in een container willen verbergen zwart-wit fotografie. In een standaard 8-bit digitaal beeld varieert de helderheidswaarde van 0 tot 255. Als u de waarde van het laatste bit wijzigt, kan de helderheidswaarde met één worden verhoogd of verlaagd. De gemiddelde verandering in pixelhelderheid zal dus niet groter zijn dan één procent. Laten we hieraan toevoegen dat niet alle elementen van de afbeelding kleine veranderingen ondergaan, wat betekent dat deze qua uiterlijk niet zal verschillen van het origineel. Uit het bovenstaande volgt dat het moeilijker is om veranderingen in het containerbestand visueel te onderscheiden als het een afbeelding is met uniforme contrastruis. De hierboven beschreven methode wordt ook gebruikt om berichten in bestanden met geluidsformaten te verbergen, terwijl wijzigingen in de originele container vrijwel niet op het gehoor te onderscheiden zijn, en een bestand met veel achtergrondgeluid als een container van hoge kwaliteit kan worden beschouwd.

Nu we iets meer weten over steganografie, kunnen we een conclusie trekken. Hoe hoger de verhouding tussen de groottes van het containerbestand en het bijlagebestand, hoe hoger de kwaliteit van het verbergen van informatie in een containerbestand. In de praktijk betekent dit dat hoogwaardige overdracht van steganografische berichten gepaard gaat met grote hoeveelheden verzonden informatie. We kunnen dus zeggen dat een winst in de kwaliteit van het verbergen van informatie resulteert in een verlies in de volumes die nodig zijn voor verzending, en omgekeerd.

Ondanks de relatieve jeugd op het gebied van computersteganografie, kun je met behulp van zoekmachines op internet een voldoende aantal zowel professionele als amateurprogramma's vinden voor geheim schrijven. Een van de meest succesvolle is Steganos Security Suite 4. Dit programma is een krachtige set hulpprogramma's om de vertrouwelijkheid van informatie te garanderen. Het bevat tools voor het beschermen van schijven en toegang tot de computer als geheel, encryptie mailberichten, het garanderen van internetveiligheid, een professioneel hulpprogramma voor gegarandeerde onherstelbare verwijdering van bestanden en, uiteraard, een hoogwaardig stenosysteem. Voor de doeleinden waarin we geïnteresseerd zijn, is het hulpprogramma Steganos File Manager bedoeld. Met zijn hulp is het mogelijk om een ​​containerbestand te selecteren uit de bestanden die al op de schijf van de gebruiker staan, of om met behulp van een scanner of microfoon zelfstandig een bestand van een geschikt formaat te maken. Het programma kan niet alleen een bericht veilig verbergen in een geselecteerde container, maar ook een zelfuitpakkend archief creëren.

Zoals we zien, het probleem informatiebeveiliging stimuleert een vrij snelle ontwikkeling van steganografische en cryptografische systemen. Rekening houdend met zulke belangrijke toegepaste toepassingen van steganografie als het beschermen van persoonlijke privacy, digitale watermerken, elektronische digitale handtekeningen en elektronische handel, kunnen we zeggen dat er in de nabije toekomst een actieve ontwikkeling op dit gebied zal plaatsvinden. Tegelijkertijd mag men niet onderschatten hoe ernstig een bedreiging ze kunnen vormen krachtige systemen bescherming van informatie als deze in handen valt van verschillende soorten terroristen en computerpiraten. Daarom ontwikkelt zich vandaag de dag, net als de cryptanalyse in zijn tijd, volgens de regel van schilden en zwaarden, ook de steganalyse, met als taak het vinden van effectieve algoritmen voor het detecteren van verborgen informatie.

Steganografie wordt soms ten onrechte geclassificeerd als cryptografie. Natuurlijk kun je met behulp van steganografie ook vooraf gecodeerde teksten verbergen, maar over het algemeen zijn steganografie en cryptografie fundamenteel verschillende richtingen in de theorie en praktijk van informatiebeveiliging.

3. Cryptografie houdt zich bezig met de ontwikkeling van methoden voor het converteren (versleutelen) van informatie om deze te beschermen tegen illegale gebruikers. Dergelijke methoden en methoden voor het omzetten van informatie worden cijfers genoemd.

Encryptie (encryptie)- het proces van het toepassen van een cijfer op beschermde informatie, d.w.z. transformatie van beschermde informatie (platte tekst) in een gecodeerd bericht (cijfertekst, cryptogram) met behulp van bepaalde regels in het cijfer.

Decryptie- het omgekeerde proces van encryptie, d.w.z. het omzetten van een gecodeerd bericht in beschermde informatie met behulp van bepaalde regels in het cijfer.

Cryptografie- toegepaste wetenschap, het maakt gebruik van de nieuwste verworvenheden van de fundamentele wetenschappen en, in de eerste plaats, van de wiskunde. Aan de andere kant: alles specifieke taken cryptografie hangt in grote mate af van het ontwikkelingsniveau van technologie en technologie, van de gebruikte communicatiemiddelen en methoden voor het verzenden van informatie.

Sommige concepten van cryptografie kunnen gemakkelijk worden geïllustreerd met historische voorbeelden, dus laten we een korte historische uitweiding maken.

Lange tijd was cryptografie het domein van eenzame excentriekelingen. Onder hen bevonden zich begaafde wetenschappers, diplomaten en geestelijken.

Er zijn gevallen waarin cryptografie zelfs als zwarte magie werd beschouwd. Deze periode van ontwikkeling van cryptografie als kunst duurde van onheuglijke tijden tot het begin van de 20e eeuw, toen de eerste encryptiemachines verschenen. Het inzicht in de wiskundige aard van de door cryptografie opgeloste problemen kwam pas in het midden van de 20e eeuw - na het werk van de vooraanstaande Amerikaanse wetenschapper K. Shannon.

De geschiedenis van de cryptografie gaat gepaard met een groot aantal diplomatieke en militaire geheimen en is daarom gehuld in de mist van legendes. Veel bekende historische figuren hebben hun stempel gedrukt op de geschiedenis van de cryptografie. Hier zijn enkele van de meest opvallende voorbeelden. De eerste informatie over het gebruik van cijfers in militaire aangelegenheden houdt verband met de naam van de Spartaanse commandant Lysander (cijfer "Scitala"). Caesar gebruikte een cijfer in zijn correspondentie, dat de geschiedenis inging als het ‘Caesar-cijfer’. In het oude Griekenland werd een soort cijfer uitgevonden, dat later bekend werd als het ‘Politai-vierkant’. Een van de eerste boeken over cryptografie is geschreven door abt I. Tritelius (1462-1516), die in Duitsland woonde. In 1566 publiceerde de beroemde wiskundige D. Cardano een werk waarin hij het door hem uitgevonden encryptiesysteem beschreef (“Cardano-rooster”). Het Frankrijk van de 16e eeuw heeft in de geschiedenis van de cryptografie de cijfers van koning Hendrik IV en Richelieu nagelaten. Er waren ook veel Russische cijfers, waaronder het ‘digitale alfabet’ uit 1700, waarvan Peter de Grote de auteur was.

Enige informatie over de eigenschappen van cijfers en hun toepassing is te vinden in fictie, vooral in avonturen-, detective- en militaire literatuur. Goed gedetailleerde uitleg De kenmerken van een van de eenvoudigste cijfers - het vervangingscijfer en de methoden om het te breken - zijn vervat in twee beroemde verhalen: "The Gold Bug" van E. Poe en "The Dancing Men" van A. Conan Doyle.

Laten we naar twee voorbeelden kijken.

Het boek, voor het eerst in het Russisch, biedt een systematische presentatie van de wetenschappelijke grondslagen van cryptografie, van de eenvoudigste voorbeelden en basisconcepten tot moderne cryptografische constructies. Het begrijpen van de principes van cryptografie is voor velen een noodzaak geworden vanwege het wijdverbreide gebruik van cryptografie cryptografische middelen het garanderen van informatiebeveiliging. Daarom kan het boek nuttig zijn voor de algemene lezer.
Het boek is bedoeld voor wiskundestudenten enen.

Onderwerp van cryptografie.
Wat is het onderwerp van cryptografie? Laten we, om deze vraag te beantwoorden, terugkeren naar het TP-probleem om de situatie en de gebruikte concepten te verduidelijken.

Houd er allereerst rekening mee dat deze taak zich alleen voordoet bij informatie die moet worden beschermd. Meestal zeggen ze in dergelijke gevallen dat de informatie een geheim bevat of beschermd, privé, vertrouwelijk, geheim is. Voor de meest typische, vaak voorkomende situaties van dit type zijn zelfs speciale concepten geïntroduceerd:
- staatsgeheim;
- een militair geheim;
- handels geheim;
- juridisch geheim;
- medisch geheim, etc.

Vervolgens zullen we het hebben over beschermde informatie, waarbij we de volgende kenmerken van dergelijke informatie in gedachten houden:
- er bestaat een bepaalde kring van legitieme gebruikers die het recht hebben om deze informatie te bezitten;
- er zijn illegale gebruikers die deze informatie proberen te verkrijgen om het in uw voordeel en in het nadeel van legitieme gebruikers te gebruiken.

Voor de eenvoud zullen we ons eerst beperken tot het beschouwen van slechts één bedreiging: de dreiging van openbaarmaking van informatie. Er zijn nog andere bedreigingen voor beschermde informatie van illegale gebruikers: vervanging, imitatie, enz. We zullen er hieronder over praten.

Inhoudsopgave
Voorwoorden
Hoofdstuk 1. Basisconcepten van cryptografie
§1. Invoering
§2. Onderwerp van cryptografie
§3. Wiskundige grondbeginselen
§4. Nieuwe richtingen
§5. Conclusie
Hoofdstuk 2. Cryptografie en complexiteitstheorie
§1. Invoering
§2. Cryptografie en de P = NP-hypothese
§3. Eenrichtingsfuncties
§4. Pseudo-willekeurige generatoren
§5. Bewijs van nul kennis
Hoofdstuk 3. Cryptografische protocollen
§1. Invoering
§2. Integriteit. Authenticatie- en elektronische handtekeningprotocollen
§3. Onvindbaarheid. Elektronisch geld
§4. Protocollen voor het opgooien van telefoonmunten
§5. Nogmaals over het delen van het geheim
§6. Laten we kubussen spelen. Stemprotocollen
§7. Verder dan standaard aannames. Vertrouwelijke berichten
§8. In plaats van een conclusie
Hoofdstuk 4. Algoritmische problemen van de getaltheorie
§1. Invoering
§2. RSA-coderingssysteem
§3. Complexiteit van getaltheoretische algoritmen
§4. Hoe onderscheid je een samengesteld getal van een priemgetal?
§5. Hoe grote priemgetallen te construeren
§6. Hoe een groot getal op primaliteit te testen
§7. Hoe samengestelde getallen te ontbinden
§8. Discrete logaritme
§9. Conclusie
Hoofdstuk 5: De wiskunde van geheim delen
§1. Invoering
§2. Geheim delen voor willekeurige toegangsstructuren
§3. Lineair geheim delen
§4. Perfecte scheiding van geheimen en matroïden
Hoofdstuk 6. Computer en cryptografie
§1. In plaats van introduceren
§2. Een beetje theorie
§3. Hoe een bestand versleutelen?
§4. Laten we leren van de fouten van anderen
§5. In plaats van een conclusie
Hoofdstuk 7. Cryptografieolympiades voor schoolkinderen
§1. Invoering
§2. Vervangende cijfers
§3. Permutatiecijfers
§4. Polyalfabetische vervangingscijfers met periodieke sleutel
§5. Termen van problemen voor Olympiades in wiskunde en cryptografie
§6. Richtlijnen en oplossingen
Bijlage A. Fragment uit het artikel van K. Shannon “The Theory of Communications in Secret Systems”
Bijlage B. Geannoteerde lijst met aanbevolen literatuur
Bijlage B: Verklarende woordenlijst van cryptografische termen
Alfabetische index Russische termen
Alfabetische index van Engelse termen.

Download het e-book gratis in een handig formaat, bekijk en lees:
Download het boek Introduction to Cryptography, Yashchenko V.V., 2012 - fileskachat.com, snel en gratis te downloaden.

Download PDF
Dit boek kun je hieronder kopen beste prijs met korting bij levering in heel Rusland.

Het historische proces van de ontwikkeling van middelen en methoden voor informatiebeveiliging heeft drie belangrijke beschermingsmethoden ontwikkeld.

De eerste manier om informatie te beschermen is de fysieke bescherming tegen de vijand van een materiële informatiedrager (perkament, papier, magneetband, etc.), bijvoorbeeld de overdracht van informatie door een speciale koerier met beveiliging, een ring met een houder voor een geheime boodschap, enz.

De tweede manier om informatie te beschermen is steganografie. Het gebruik van steganografie zorgt ervoor dat het feit van het verzenden van informatie voor de vijand verborgen blijft. Er wordt steganografische informatiebescherming geboden verschillende manieren, Bijvoorbeeld:

Het gebruik van “onzichtbare” opslagmedia (microfilms);

Het gebruik van sympathische inkt, die zichtbaar wordt bij de juiste chemische verwerking van de informatiedrager;

Geheime informatie verhullen met een gewoon bericht, enz.

Moderne steganografie beschikt over een vrij breed scala aan informatiebeveiligingsmethoden.

De derde, meest betrouwbare en wijdverspreide methode om informatie te beschermen is cryptografisch. Precies cryptografische methoden informatiebescherming is waar deze tutorial over gaat.

1.1. Basisconcepten en definities van cryptografie

Laten we eens kijken naar de basisconcepten die in de cryptografie worden gebruikt, en eerst definiëren wat cryptografie is.

Cryptografie- dit is de sectie toegepaste wiskunde(cryptologie), het bestuderen van modellen, methoden, algoritmen, software en hardware voor het omzetten van informatie (encryptie) om de inhoud ervan te verbergen, wijziging of ongeoorloofd gebruik te voorkomen. Cryptanalyse is gericht op het oplossen van onderling omgekeerde problemen. Cryptoanalyse is een tak van de toegepaste wiskunde (cryptologie) die modellen, methoden, algoritmen, software en hardware bestudeert voor het analyseren van cryptosystemen of hun invoer- en uitvoersignalen om vertrouwelijke parameters, inclusief leesbare tekst, te extraheren. Cryptografie en cryptoanalyse vormen dus één geheel en vormen een wetenschap - cryptologie, die zich vanaf het allereerste begin ontwikkelde als een tweeledige wetenschap.

Historisch gezien is het centrale concept van cryptografie het concept van cijfer. Cijfer is een reeks omkeerbare cryptografische transformaties van een reeks leesbare teksten in een reeks cijferteksten, uitgevoerd met als doel deze te beschermen. Het specifieke type cryptografische transformatie in platte tekst wordt bepaald met behulp van sleutel encryptie. In duidelijke tekst geef het oorspronkelijke bericht een naam dat moet worden gecodeerd. Onder encryptie verwijst naar het proces van het toepassen van een omkeerbare cryptografische transformatie op leesbare tekst, en het resultaat van deze transformatie wordt genoemd cijfertekst of cryptogram. Dienovereenkomstig wordt het proces van omgekeerde cryptografische conversie van een cryptogram naar leesbare tekst genoemd decodering.



Decodering moet niet worden verward met decodering. Decryptie(decodering, breken) - het proces van het extraheren van leesbare tekst zonder kennis van de cryptografische sleutel op basis van onderschepte cryptogrammen. De decodering wordt dus uitgevoerd door de legitieme gebruiker, degenen die de sleutel kennen cijfer en decodering door een cryptanalyticus.

Cryptografisch systeem- een familie van cijfertransformaties en een set sleutels. De beschrijving van een cryptografisch algoritme vormt op zich geen cryptosysteem. Alleen als het wordt aangevuld met belangrijke distributie- en beheerschema's, wordt het een systeem.

De classificatie van cryptosystemen wordt weergegeven in Fig. 1.1.

Rijst. 1.1. Classificatie van cryptosystemen

Een completere classificatie van cryptosystemen wordt bijvoorbeeld gegeven in.

Symmetrische cryptosystemen (geheime sleutel cryptosystemen) zijn gebaseerd op het principe om de coderingssleutel geheim te houden. In afb. 1.2 presenteert een vereenvoudigde versie structureel schema symmetrisch cryptosysteem. Voordat gebruikers een symmetrisch cryptosysteem kunnen gebruiken, moeten ze een gedeelde geheime sleutel verkrijgen en voorkomen dat een aanvaller er toegang toe krijgt. Het open bericht ondergaat cryptografische transformatie en het resulterende cryptogram wordt via een open communicatiekanaal naar de ontvanger verzonden, waar de omgekeerde transformatie wordt uitgevoerd om het origineel te benadrukken bericht openen.

Rijst. 1.2. Vereenvoudigd blokdiagram van een symmetrisch cryptosysteem

Symmetrische cryptosystemen worden geclassificeerd volgens verschillende criteria: op type cryptografische transformatie; volgens constructieve principes; per type beschermde informatie; op cryptografische sterkte, enz. De eerste twee classificatiecriteria worden het vaakst gebruikt. In dit opzicht zijn veel symmetrische cryptosystemen verdeeld:

Op type cryptografische transformatie - permutatiecijfers, substitutiecijfers en compositiecijfers;

Volgens ontwerpprincipes - cryptosystemen streamen en cryptosystemen blokkeren.

Onder permutatiecijfer verwijst naar het herschikken van de letters van het oorspronkelijke bericht, waardoor het onleesbaar wordt. Onder vervangend cijfer wordt opgevat als een transformatie, die bestaat uit het vervangen van de letters van het oorspronkelijke bericht door andere letters volgens een min of meer complexe regel. Samenstelling cijfers zijn gebouwd op basis van substitutie- en permutatiecijfers. Blokkeer symmetrische cryptosystemen(BSK) zijn een familie van omkeerbare cryptografische transformaties van blokken van het oorspronkelijke bericht. Stream cryptosystemen(PSK) zet het oorspronkelijke bericht teken voor teken om in een cryptogram.

Onderscheidend kenmerk asymmetrische cryptosystemen(cryptosystemen met publieke sleutel ) is dat er verschillende sleutels worden gebruikt om informatie te versleutelen en te ontsleutelen. In afb. Figuur 1.3 toont een vereenvoudigd blokdiagram van een asymmetrisch cryptosysteem. Een cryptosysteem met een publieke sleutel wordt gedefinieerd door drie algoritmen: het genereren van sleutels, encryptie en decryptie. Met het algoritme voor het genereren van sleutels kunt u een paar sleutels verkrijgen , En . Een van de sleutels wordt gepubliceerd, deze wordt genoemd open, en de tweede wordt gebeld gesloten(of geheim) en geheim gehouden. Encryptie-algoritmen en decodering zijn zodanig dat voor elke leesbare tekst de gelijkheid bestaat .

Rijst. 1.3. Vereenvoudigd blokdiagram van een asymmetrisch cryptosysteem

1.2. Uit de geschiedenis van cryptografie

Volgens sommige experts is cryptografie even oud als de Egyptische piramides. De documenten van oude beschavingen (India, Egypte, Mesopotamië) bevatten informatie over systemen en methoden voor het samenstellen van gecodeerde brieven.

Sinds de oudheid worden er in de cryptografie twee soorten cijfers gebruikt: substituties (substituties) en permutaties. Een historisch voorbeeld van een vervangingscijfer is Caesar-cijfer(1e eeuw voor Christus), beschreven door de historicus van het oude Rome Suetonius. Gaius Julius Caesar gebruikte in zijn correspondentie een cijfer dat hij zelf had uitgevonden. Met betrekking tot de Russische taal is het als volgt. Het alfabet wordt uitgeschreven, en vervolgens wordt hetzelfde alfabet eronder geschreven, maar met een cyclische verschuiving van drie letters naar links:

A B IN G D E E YU I
G D E Jo EN Z A B IN

Versleuteling bestaat uit het selecteren van een letter op de eerste regel en het vervangen ervan door de letter van de tweede regel. Decodering gebeurt in omgekeerde volgorde. Bijvoorbeeld ROME – ULP. De sleutel tot het Caesarcijfer is de cyclische verschuivingswaarde. Guy Julius Caesar gebruikte zijn hele leven dezelfde sleutel: een verschuiving van 3 letters. De opvolger van Julius Caesar, Caesar Augustus, gebruikte hetzelfde cijfer, maar verschoof met één letter. Suetonius haalt niet de feiten aan van het ontcijferen van Caesars cijfer, maar in die tijd toen het universele analfabetisme heerste, kon zelfs een gewone open boodschap ongelezen blijven.

Een van de eerste fysieke apparaten die het permutatiecijfer implementeert is zwierf. Het werd uitgevonden in het oude Sparta (5e eeuw voor Christus). Naast het oude Griekenland werd het dwaalapparaat veel gebruikt in het oude Rome. De scytale (vertaald als "staaf") is een cilinder met een bepaalde diameter. Om de cilinder werd een riem van perkament gewikkeld, waarop langs de as van de cilinder de tekst van de boodschap werd aangebracht. Vervolgens werd de band opgewonden en naar de ontvanger van het bericht gestuurd. Deze laatste, met een soortgelijke cilinder, ontcijferde het bericht. De coderingssleutel is de diameter van de scytaal. De uitvinding van het decoderingsapparaat wordt toegeschreven aan Aristoteles. Hij stelde voor om voor de decodering een kegelvormige ‘speer’ te gebruiken, waarop de onderschepte band werd gewikkeld totdat er een betekenisvolle tekst verscheen.

Een van de eerste historische namen die in verband met cryptografie wordt genoemd, is de naam van Aeneas, de legendarische commandant en verdediger van Troje. Op het gebied van geheim schrijven bezit Aeneas twee uitvindingen. De eerste daarvan is de zogenaamde schijf van Aeneas. Het principe is eenvoudig. Er werden gaten geboord op een schijf van 10-15 cm groot en 1-2 cm dik, afhankelijk van het aantal letters van het alfabet. In het midden van de schijf is een draadklos bevestigd. Bij het coderen werd de draad achtereenvolgens door de gaten getrokken die overeenkomen met de letters van het bericht. De schijf werd naar de ontvanger gestuurd, die de draad uit de gaten trok en het bericht in omgekeerde volgorde ontving. Een ander apparaat is heerser van Aeneas. Hier werd in plaats van een schijf een liniaal gebruikt met een aantal gaten gelijk aan het aantal letters in het alfabet. De letters in de gaten waren in willekeurige volgorde gerangschikt. Aan de liniaal was een klosje draad bevestigd. Bij het versleutelen werd de draad door een gat getrokken dat correspondeerde met de letter van het bericht dat werd versleuteld, en werd er een knoop in de draad gelegd op de plaats waar het gat passeerde. Het gecodeerde bericht was dus een draad met knopen, waarbij elke letter werd geassocieerd met de afstand tussen de knopen van de draad. De sleutel tot het cijfer was de volgorde van de letters langs de gaten van de liniaal. Vergelijkbaar met de heerser van Aeneas stapel(knoopletter) werd wijdverspreid onder de Indianen van Midden-Amerika.

Het is ook een uitvinding van de oude Grieken - het Polybius-plein (Polybius is een Griekse staatsman, commandant, historicus uit de 3e eeuw voor Christus):

A B C D E
A A B C D E
B F G H ik,J K
C L M N O P
D Q R S T U
E V W X Y Z

In relatie tot modern Latijns alfabet de codering met dit vierkant was als volgt. De gecodeerde letter werd vervangen door de coördinaten van het vierkant waarin hij was geschreven. De letter R wordt dus vervangen door DB. Wanneer het wordt gedecodeerd, identificeert elk paar letters de corresponderende letter van het bericht. TABEL is bijvoorbeeld DDAAABCAAE. De sleutel tot dit cijfer is het vierkant zelf. Een ingewikkelde versie van het Polybius-vierkant omvat het schrijven van letters in een willekeurige volgorde op het vierkant. Om zo'n willekeurige volgorde te onthouden, werd een slogan gebruikt, een woord geschreven zonder letters in een vierkant te herhalen, en de resterende cellen van het vierkant werden ingevuld in de volgorde waarin ze verschenen met de resterende letters van het alfabet. THE APPLE komt bijvoorbeeld overeen met THEAPL.

Het is interessant om op te merken dat het Polybius-vierkant, in een enigszins gewijzigde vorm, tot op de dag van vandaag bewaard is gebleven en het ‘gevangeniscijfer’ wordt genoemd. Om het te gebruiken is het voldoende om alleen de natuurlijke volgorde van de letters in het alfabet te kennen. De zijden van het vierkant worden niet aangegeven met letters, maar met cijfers. Elk cijfer wordt gecodeerd door een bepaald aantal slagen. Bij het verzenden van een bericht wordt eerst het regelnummer “getikt” en vervolgens het kolomnummer. Een ‘gevangeniscijfer’ is strikt genomen geen cijfer, het is een manier om een ​​bericht te coderen om het in een vorm te brengen die geschikt is voor verzending via een communicatiekanaal (gevangenismuur).

Tijdens de middeleeuwen verwierf de Europese cryptografie een twijfelachtige reputatie, waarvan de echo’s nog steeds te horen zijn. Feit is dat cryptografie begon te worden geïdentificeerd met zwarte magie, astrologie, alchemie en dat er een beroep werd gedaan op mystieke krachten voor encryptie. Om berichten te versleutelen werd het aanbevolen om te gebruiken "magische vierkanten". De magie van deze vierkanten was dat de som van de getallen in rijen, kolommen en volledige diagonalen gelijk was aan één getal. De codering met behulp van het “magische vierkant” was als volgt. De letters van het bericht werden in een vierkant geschreven volgens de cijfers die erin waren geschreven, en willekeurige letters werden in de lege cellen ingevoegd. De cijfertekst werd in een vooraf afgesproken volgorde uitgeschreven. Het bericht I’M COMING TODAY is bijvoorbeeld versleuteld met een “magisch vierkant”:

16U 3I 2P 13D
5Z 10E 11G 8YU
9C 6G 7A 12O
4E 15I 14N 1P

heeft de vorm UIRDZEGYUSZHAOEYANP. Dit cijfer is een gewoon permutatiecijfer, maar men geloofde dat de magie van het ‘magische vierkant’ het speciale kracht geeft.

In de 15e eeuw deed abt Trithemius twee innovatieve voorstellen op het gebied van cryptografie: hij stelde het Ave Maria-cijfer voor en een cijfer gebaseerd op een periodiek verschoven sleutel. Het meest serieuze voorstel van Trithemius, dat tot op de dag van vandaag bewaard is gebleven, ligt in de tabel die hij heeft uitgevonden:

A B C D W X Y Z
B C D E X Y Z A
C D E F Y Z A B
Y Z A B U V W X
Z A B C V W X Y

De eerste letter van de tekst wordt gecodeerd op de eerste regel, de tweede letter op de tweede regel, enzovoort. De eerste regel bestaat ook uit een reeks leesbare letters. Bijvoorbeeld VECHT – FJIKX. In de originele versie ontbrak het Trithemius-cijfer een sleutel. Het geheim was de coderingsmethode zelf. Het cijfer werd op twee manieren verder gecompliceerd: door een willekeurige volgorde van letters in de tabel te introduceren; wat de volgorde waarin tabelrijen worden geselecteerd tijdens de codering compliceert. Het moet gezegd worden dat het Caesar-cijfer een speciaal geval is van het Trithemius-cijfer.

Het “Ave Maria”-cijfer is gebaseerd op het principe van het vervangen van de letters van de gecodeerde tekst door hele woorden waaruit ogenschijnlijk onschuldige berichten zijn samengesteld. Bijvoorbeeld N - "I", "HIER"; E – “WACHTEN”, “ZAL ZIJN”; T – “THUIS”, “IN DE AVOND”. Dan kan het open bericht NEE overeenkomen met de berichten “IK WACHT THUIS”, “IK ZAL HIER IN DE AVOND ZIJN”.

In de 17e eeuw stelde de Engelse filosoof en wetenschapper Lord Chancellor Francis Bacon de belangrijkste vereisten voor cijfers naar voren: “Ze mogen niet ontcijferbaar zijn, ze mogen niet veel tijd vergen om te schrijven en te lezen, en ze mogen geen enkele argwaan wekken.” Deze eisen zijn vandaag de dag nog steeds actueel.

De broederschappen van “vrije metselaars” (metselaars) maakten ook veel gebruik van cijfers. Code van "vrijmetselaars" is een vervangingscijfer en is, in tegenstelling tot wat vaak wordt gedacht, niet sterk, maar wel van enig belang. Versleuteling bestaat uit het vervangen van platte tekstletters door symbolen volgens de regel:

A: B: C: J. K. L. S T U
D: E: F: M. N. O. V W X
G: H: I: P. Q. R. Y Z

APPLE komt bijvoorbeeld overeen met een cryptogram van de vorm:

: . . . :

Tijdens zijn campagne tegen Rusland gebruikte Napoleon de code van ‘vrijmetselaars’ in de lagere niveaus van zijn communicatie, maar de code werd snel onthuld door Russische codebrekers.

In de 16e eeuw bracht de Italiaan Alberti voor het eerst het idee van dubbele codering naar voren, d.w.z. De tekst na de eerste codering is opnieuw gecodeerd. Alberti bezit ook een cijfer, dat hij ‘een cijfer waardig voor koningen’ noemde. Het cijfer werd geïmplementeerd met behulp van een coderingsschijf. Op de buitenste vaste schijf werden letters en cijfers aangebracht, waaronder de letters en cijfers van de interne beweegbare schijf. Het versleutelingsproces is eenvoudig: de letters en cijfers van de leesbare tekst komen overeen met de letters en cijfers van de interne schijf. Na het versleutelen van het berichtwoord werd de interne schijf één stap verschoven. De beginpositie van de schijven werd vooraf afgesproken. De Alberti-schijf werd, met kleine aanpassingen, gebruikt tot het begin van de 20e eeuw.

In de 16e eeuw werden belangrijke bijdragen geleverd aan de ontwikkeling van cryptografie door Mateo Argenti, Giovani Batista Belazo, Giovani Batista Porta, Cordano en anderen. Mateo Argenti was de cryptograaf van de paus, en hij was het die op het idee kwam een sloganwoord gebruiken om het alfabet een gemakkelijk te onthouden gemengd uiterlijk te geven. Argenti stelde ook voor om een ​​groot aantal ‘dummy’-letters in de cijfertekst in te voegen, interpunctie te elimineren, geen duidelijke woorden (‘clear’) in de cijfertekst in te voegen en de cijfertekstletters te vervangen door cijfers. Belaso en Porta ontwikkelden Argenti's ideeën in hun werken "The Cipher of Senor Belaso" en "On Secret Correspondence."

De wiskundige, arts en filosoof Cordano heeft een belangrijke bijdrage geleverd aan de ontwikkeling van cryptografie. Het cijfer dat hij voorstelde, is de geschiedenis ingegaan onder de naam ‘Cordano-rooster’. "Cordano-raster" is een permutatiecijfer, waarvan de essentie als volgt is. Er werd een vel dicht materiaal (karton, perkament) genomen, een vierkant waarin "ramen" waren uitgesneden. Bij het coderen werd het vierkant op een vel papier geplaatst en werd het bericht in de “vensters” ingevoerd. Vervolgens werd het vierkant 90 graden gedraaid en werd het bericht verder in de “vensters” van het gedraaide vierkant geschreven. Deze procedure ging door totdat het vierkant volledig 360 graden was gedraaid. De belangrijkste vereiste van het "Cordano-raster" is dat bij alle rotaties de "vensters" niet naar de bodem en op dezelfde plaats mogen vallen, en bij een volledige rotatie van het vierkant zijn alle plaatsen in de cijfertekst bezet. De cijfertekst werd rij voor rij uit de resulterende tabel gelezen. Het door Cordano voorgestelde cijfer is de basis van het beroemde Richelieu-cijfer, waarin de gecodeerde tekst eruitzag als een gewoon bericht. Door een uitgesneden rechthoek met vensters op een vel met zo'n boodschap te plaatsen, kon men de boodschap lezen. Het Richelieu-cijfer is noch een vervangingscijfer, noch een permutatiecijfer; het was een steganografische methode om informatie te beschermen. Dit soort code werd gebruikt door de Russische schrijver en staatsman A.S. Gribojedov als ambassadeur in Perzië.

Cordano kwam naar voren, maar had geen tijd om het idee van een “zelfsleutel” volledig te implementeren. De essentie ervan is om een ​​deel van de open boodschap als sleutel te gebruiken.

Nadat hij kennis had gemaakt met de werken van Trithemius, Belaso, Cordano en Alberti, ontwikkelde de Franse staatsman Blaise de Vigenère zijn eigen cijfer, dat werd genoemd Vigenere-cijfer. De essentie van het cijfer was dat er een geheim woord werd geselecteerd, wat de cijfersleutel was. Dit woord werd periodiek onder een open bericht geschreven. De bovenste letter van de leesbare tekst kwam overeen met de kolom van de Trithemische tabel, en de onderste letter van de sleutel kwam overeen met de rij van de Trithemische tabel; Het Vigenère-cijfer is een vervangingscijfer. Vervolgens werd dit cijfer enigszins vereenvoudigd praktisch gebruik het hoofd van de eerste staatsdecoderingsafdeling in Duitsland, graaf Gronsfeld. Het Vigenère-cijfer en het Gronsfeld-cijfer zijn in wezen de voorouders van het momenteel veelgebruikte gammacijfer. Het Vigenère-cijfer werd gebruikt verschillende opties tot in de 19e eeuw. Een van de beroemdste wijzigingen van het Vigenère-cijfer is het Engelse Admiral Beaufort-cijfer. Het voordeel van het Beaufort-cijfer is dat de regels voor het versleutelen en ontsleutelen van berichten hetzelfde zijn.

De wijdverbreide ontwikkeling van cryptografie in de 16e eeuw ging gepaard met de ontwikkeling van natuurwetenschappen en wiskunde. Tegelijkertijd verschenen in Europa de eerste speciale diplomatieke dienstorganen, die zich bezighielden met de problematiek van het coderen van hun eigen correspondentie en het decoderen van onderschepte correspondentie. De 17e en 18e eeuw zijn de geschiedenis van de cryptografie ingegaan als het tijdperk van de ‘zwarte kantoren’. "Zwarte kantoren"- speciaal overheid Agentschap over het onderscheppen, interpreteren en ontsleutelen van correspondentie, voornamelijk diplomatiek. Het personeel van de “zwarte kantoren” bestond uit codebrekers, agenten voor het onderscheppen van post, schrijvers-kopieerapparaten, vertalers, specialisten op het gebied van zegelvervalsing, scheikundigen, specialisten op het gebied van handschriftvervalsing, enz. Deze specialisten werden zeer gewaardeerd en stonden onder de bijzondere bescherming van de autoriteiten. Verraad werd zeer zwaar bestraft.

In de 19e eeuw verschenen de eerste mechanische encryptie-apparaten. De bekendste zijn de uitvindingen van de Amerikaanse legerkolonel D. Wadsworth en de Engelse ingenieur C. Wheatstone. Het apparaat van Wadsworth (1817) was een mechanische encoder, waarvan de belangrijkste elementen twee coderingsschijven waren, aan het einde van de onderkant stonden letters van het Engelse alfabet en aan het einde van de seconde waren er letters en cijfers van 2 tot 8 De letters op de tweede schijf waren verwijderbaar, waardoor het mogelijk werd de gecodeerde alfabettekst te wijzigen. De schijven werden in een doos geplaatst waarin vensters waren uitgesneden. Toen de eerste schijf werd gedraaid, werd de letter van het geopende bericht in het bovenste venster weergegeven. De schijven waren verbonden door een tandwieloverbrenging, zodat de overeenkomstige cijfertekstletter in het onderste venster verscheen. Het apparaat was uitgerust met een speciale knop om de schijven los te koppelen. Dit was nodig om de installatie van het apparaat in een bepaalde uitgangspositie te garanderen. De ideeën van Alberti, Trithemius en Vigenère zijn zichtbaar in het apparaat van Wadsworth. Ondanks het feit dat het apparaat behoorlijk omslachtig was en in die tijd 'handmatige' cijfers domineerden waarvoor geen speciale apparaten nodig waren, diende het als een aanzet voor de ontwikkeling van mechanische apparaten voor het coderen en decoderen van berichten.

Een interessant voorstel om een ​​mechanisch versleutelingsapparaat te creëren werd in de tweede helft van de 20e eeuw gedaan door Charles Wheatstone. In het apparaat van Wheatstone zie je de ideeën van Alberti, evenals Wadsworth. Uiterlijk lijkt het apparaat van Wheatstone op een Alberti-schijf, maar het implementeert een paradoxaal idee: het leesbare alfabet bevat meer tekens dan het gecodeerde alfabet. Het probleem van dubbelzinnigheid bij het bepalen van de letters van een open bericht werd op briljante wijze opgelost door Wheatstone. In afb. Figuur 1.4 toont het uiterlijk van het Wheatstone-apparaat.

Externe schijf, een alfabetschijf met leesbare tekst, bestond uit 27 tekens (26 letters van het Engelse alfabet en een speciaal "+" teken dat een spatie aangeeft). Het interne alfabet definieert het leesbare alfabet en bestaat uit de gebruikelijke 26 letters, gerangschikt in willekeurige volgorde. sleutel bestelling. Op dezelfde as als de schijven (alfabetten) van het apparaat, verbonden door tandwielen van respectievelijk 27x26, bevinden zich twee wijzers, zoals in een modern horloge.

Rijst. 1.4. Verschijning C. Wheatstone-apparaten

Aan het begin van de codering wijst een grote (lange) pijl naar het teken "+". De kleine pijl verbonden met het grote tandwiel met schroefdraad werd in dezelfde positie geplaatst, d.w.z. De "klok" gaf "12.00" aan. De letters van de platte tekst werden ingesteld door de grote pijl in de richting van de klok mee te draaien. Na deze rotatie geeft een kleine pijl het cijfertekstteken aan. Dus toen de grote schijf volledig werd geroteerd, verschoof de kleine schijf met één ten opzichte van de initiële relatieve toestand van de twee schijven, wat leidde tot een verschuivingsverandering in het cijfertekstalfabet ten opzichte van het leesbare alfabet. Aan het einde van elk woord werd de grote pijl op het “+” teken geplaatst, de letter waarnaar de korte pijl wees werd opgeschreven als een cijfertekstteken. Om dubbelzinnigheid bij de decodering te voorkomen, is het verdubbelen van letters in de leesbare tekst niet toegestaan. De herhaalde letter moet worden weggelaten of worden vervangen door een zeldzame letter, bijvoorbeeld Q. Het woord THE APPLE wordt bij versleuteling bijvoorbeeld geschreven als +THE+APLE+ of +THE+APQLE+.

De uitvinding van Wheatstone vond, net als die van Wadsworth, geen brede toepassing. Het lot van zijn andere voorstel op het gebied van cryptografie – het bigram-vervangingscijfer – pakte echter beter uit, hoewel het cijfer ten onrechte vernoemd was naar de vriend van de uitvinder, Baron Playfair. Tegelijkertijd gedroeg Playfair zich heel correct: bij het populariseren van de uitvinding gaf hij altijd de naam van de auteur aan - Wheatstone, maar de geschiedenis besliste anders: het cijfer kreeg niet de naam van de uitvinder, maar van de popularisator. Het Playfair-cijfer zal in de volgende sectie in detail worden besproken.

Aan het begin van de 20e eeuw leverde de Amerikaan G. Vernam een ​​belangrijke bijdrage aan de ontwikkeling van de cryptografie. In 1917 stelde hij, toen hij werknemer was bij een telegraafbedrijf, het idee voor van automatische codering van telegraafberichten, waarvan de essentie als volgt is. De leesbare tekst wordt weergegeven in Baudot-code (in de vorm van vijfcijferige "pulscombinaties"). In deze code zag de letter "A" er bijvoorbeeld uit als (+ + - - -). Op papier betekende het “+” teken een gat, en het “-” teken de afwezigheid ervan. Bij het lezen van de tape 'identificeerden' vijf metalen sondes de gaten (als er een gat was, sloot de sonde het elektrische circuit). Er werden stroompulsen naar de communicatielijn gestuurd. Vernam stelde voor om pulsen van geheime tekstborden elektromechanisch op te slaan met pulsen van een geheime sleutel, een chaotische reeks letters van hetzelfde alfabet. Toevoeging werd, volgens de moderne terminologie, uitgevoerd in module 2. G. Vernam creëerde een apparaat dat automatisch encryptiebewerkingen uitvoerde, zonder de deelname van een encryptor, en markeerde daarmee het begin van de zogenaamde ‘lineaire encryptie’, wanneer de processen van encryptie en berichtoverdracht vinden gelijktijdig plaats. Tot dan toe was encryptie voorlopig, dus lineaire encryptie verhoogde de efficiëntie van de communicatie aanzienlijk. Het Vernam-cijfer heeft een uitzonderlijke cryptografische kracht. Tegelijkertijd ligt het nadeel van dit versleutelingssysteem voor de hand: de sleutel moet dezelfde lengte hebben als de platte tekst. Om aan de ontvangende kant van de communicatie te decoderen, moet u daar (via geheime, beveiligde kanalen) een sleutel van voldoende lengte overbrengen. Bij praktische uitvoering dit geeft aanleiding tot problemen, en zeer belangrijke, die de bescheiden verspreiding van Vernam-cijfers vooraf bepaalden. Vernam zelf was geen wiskundige-cryptograaf, maar hij stond erop dat de cijfersleutel niet herhaald mocht worden tijdens het coderen, en hierin had hij, zoals de geschiedenis van de cryptografie heeft aangetoond, gelijk. Zijn ideeën gaven aanleiding tot nieuwe benaderingen voor betrouwbare informatiebescherming bij het verzenden van grote hoeveelheden berichten.

De eerste helft van de 20e eeuw werd de ‘gouden eeuw’ van elektromechanische encryptiemachines. De bekendste familie van Duitse elektromechanische encryptiemachines is Enigma. Van eind 1923 tot 1945 werden door de Duitse troepen verschillende aanpassingen aan deze encryptiemachine gebruikt. In 1943 slaagden de bondgenoten van de anti-Hitler-coalitie erin de Enigma-machine te ‘hacken’, die een grote rol speelde bij de overwinning in de Tweede Wereldoorlog. Om de meest geheime berichten tijdens de Tweede Wereldoorlog te verzenden, gebruikten de Duitsers de Lorenz-encryptiemachine. Het Amerikaanse leger gebruikte het mechanische coderingsapparaat M-94 van 1923 tot 1943. Dit apparaat is gebaseerd op de Alberti-schijf. De Hebern MarkII-machine werd gebruikt om de diplomatieke correspondentie in de Verenigde Staten te beschermen. De Zweedse cryptograaf B. Hagelin ontwikkelde het versleutelingsapparaat CD-57 voor de Franse geheime politie, en het versleutelingsapparaat M-209 voor de Franse inlichtingendiensten. Een aanpassing van deze machine werd ook door het Amerikaanse leger gebruikt in de Tweede Wereldoorlog. Van 1939 tot 1952 gebruikten de Japanners een encryptiemachine om de diplomatieke correspondentie te beschermen, genaamd Type 97 en de modificatie ervan. In de VS kregen deze auto’s de kleurrijke aanduiding ‘Code Purple’ en ‘Code Red’. In de USSR vóór de oorlog en tijdens de Grote Patriottische oorlog De kleine schijfcoderingsmachine K-37 "Crystal" werd veel gebruikt. Pas in 1940 werden er 100 sets van deze machine geproduceerd. Na de oorlog werden de resultaten van de werking van de K-37 samengevat en werd er gewerkt aan verdere verbetering ervan.

  • Voorwoord
  • Basisterminologie
  • Basisversleutelingsalgoritmen
  • Digitale handtekeningen
  • Cryptografische hashfuncties

Voorwoord

Verschillende mensen bedoelen verschillende dingen met encryptie. Kinderen spelen met speelgoedcodes en geheime talen. Met echte cryptografie heeft dit echter niets te maken. Echte cryptografie ( sterke cryptografie) moet een zodanig niveau van geheimhouding bieden dat kritieke informatie op betrouwbare wijze kan worden beschermd tegen ontsleuteling grote organisaties--- zoals de maffia, transnationale bedrijven en grote staten. Echte cryptografie werd in het verleden alleen voor militaire doeleinden gebruikt. Maar nu, met de opkomst informatiemaatschappij, wordt het een centraal instrument om de privacy te waarborgen.

Naarmate de informatiemaatschappij zich ontwikkelt, krijgen grote staten toegang tot technologische middelen voor totale surveillance van miljoenen mensen. Daarom wordt cryptografie een van de belangrijkste instrumenten om vertrouwelijkheid, vertrouwen, autorisatie, elektronische betalingen, bedrijfsbeveiliging en talloze andere belangrijke zaken.

Cryptografie is niet langer een militaire uitvinding waar niet mee geknoeid mag worden. De tijd is gekomen om het mysterie uit de cryptografie te halen en al haar mogelijkheden in te zetten ten behoeve van de moderne samenleving. Het wijdverbreide gebruik van cryptografie is een van de weinige manieren om iemand te beschermen tegen een situatie waarin hij plotseling in een totalitaire staat terechtkomt die al zijn bewegingen kan controleren.

Basisterminologie

Stel je voor dat je een bericht naar de ontvanger moet sturen. U wilt ervoor zorgen dat niemand anders dan de ontvanger de verzonden informatie kan lezen. Er is echter altijd een kans dat iemand de envelop opent of de e-mail onderschept.

In cryptografische terminologie wordt het oorspronkelijke bericht aangeroepen in duidelijke tekst (platte tekst of duidelijke tekst). Het wijzigen van de brontekst om de inhoud ervan voor anderen te verbergen, wordt aangeroepen encryptie (encryptie). Het gecodeerde bericht wordt gebeld cijfertekst (cijfertekst). Het proces waarbij de leesbare tekst uit een cijfertekst wordt geëxtraheerd, wordt aangeroepen decodering (decodering). Normaal gesproken gebruikt het versleutelings- en decoderingsproces een of andere vorm van sleutel (sleutel) en het algoritme zorgt ervoor dat decodering alleen kan worden uitgevoerd als u deze sleutel kent.

Cryptografie--- is de wetenschap van hoe je de geheimhouding van een bericht kunt garanderen. Cryptoanalyse--- is de wetenschap van hoe open een gecodeerd bericht, dat wil zeggen hoe de leesbare tekst kan worden geëxtraheerd zonder de sleutel te kennen. Ze houden zich bezig met cryptografie cryptografen, en ze doen cryptanalyse cryptanalisten .

Cryptografie omvat alle praktische aspecten van beveiligd berichtenverkeer, inclusief authenticatie, digitale handtekeningen, elektronisch geld en meer. Cryptologie--- is een tak van de wiskunde die de wiskundige grondslagen van cryptografische methoden bestudeert.

Basisversleutelingsalgoritmen

De coderings-/decoderingsmethode wordt aangeroepen code (cijfer). Sommige versleutelingsalgoritmen zijn gebaseerd op het feit dat de versleutelingsmethode (algoritme) zelf geheim is. Tegenwoordig zijn dergelijke methoden alleen van historisch belang en hebben ze dat niet praktische betekenis. Alle moderne algoritmen gebruiken sleutel om encryptie en decryptie te beheren; het bericht kan alleen succesvol worden ontsleuteld als de sleutel bekend is. De sleutel die wordt gebruikt voor decodering is mogelijk niet dezelfde als de sleutel die wordt gebruikt voor de codering, maar in de meeste algoritmen zijn de sleutels hetzelfde.

Op sleutels gebaseerde algoritmen zijn onderverdeeld in twee klassen: symmetrisch (of algoritmen met geheime sleutels) en asymmetrisch (of algoritmen met openbare sleutels). Het verschil is dat symmetrische algoritmen dezelfde sleutel gebruiken voor codering en decodering (of dat de decoderingssleutel eenvoudigweg wordt berekend op basis van de coderingssleutel). Hoewel asymmetrische algoritmen verschillende sleutels gebruiken, kan de decoderingssleutel niet worden berekend op basis van de coderingssleutel.

Smetrische algoritmen zijn onderverdeeld in stroom cijfers En cijfers blokkeren . Met streaming kun je informatie stukje bij beetje versleutelen, terwijl blokversies werken met een bepaalde set databits (meestal is de blokgrootte 64 bits) en deze set als één geheel versleutelen. U kunt er een eerste idee van krijgen in het artikel over algoritmen.

Met asymmetrische cijfers (ook wel publieke-sleutelalgoritmen genoemd, of meer in het algemeen publieke-sleutelcryptografie) kan de publieke sleutel voor iedereen beschikbaar worden gemaakt (bijvoorbeeld gepubliceerd in een krant). Hierdoor kan iedereen een bericht versleutelen. Echter alleen de juiste persoon(degene die eigenaar is van de decoderingssleutel). De coderingssleutel wordt aangeroepen publieke sleutel, en de decoderingssleutel --- prive sleutel of geheime sleutel .

Moderne coderings-/decoderingsalgoritmen zijn behoorlijk complex en kunnen niet handmatig worden uitgevoerd. Echte cryptografische algoritmen zijn ontworpen voor gebruik door computers of speciale hardwareapparaten. In de meeste toepassingen wordt cryptografie softwarematig uitgevoerd en zijn er veel cryptografiepakketten beschikbaar.

Over het algemeen zijn symmetrische algoritmen sneller dan asymmetrische algoritmen. In de praktijk worden beide typen algoritmen vaak samen gebruikt: een public key-algoritme wordt gebruikt om een ​​willekeurig gegenereerde geheime sleutel te verzenden, die vervolgens wordt gebruikt om een ​​bericht te ontsleutelen.

Veel hoogwaardige cryptografische algoritmen zijn overal verkrijgbaar: in een boekwinkel, bibliotheek, octrooibureau of op internet. Bekende symmetrische algoritmen zijn onder meer DES en IDEA. Waarschijnlijk is RSA het beste asymmetrische algoritme. Op de literatuurpagina vindt u een lijst met goede leerboeken over cryptografie en aanverwante onderwerpen.

Digitale handtekeningen

Sommige van de asymmetrische algoritmen kunnen worden gebruikt om te genereren digitale handtekening . Een digitale handtekening is een gegevensblok dat wordt gegenereerd met behulp van een bepaalde geheime sleutel. In dit geval kunt u met behulp van de openbare sleutel verifiëren dat de gegevens daadwerkelijk met deze privésleutel zijn gegenereerd. Het algoritme voor het genereren van digitale handtekeningen moet ervoor zorgen dat het zonder een geheime sleutel onmogelijk is om een ​​handtekening te creëren die, na verificatie, correct blijkt te zijn.

Digitale handtekeningen worden gebruikt om te bevestigen dat een bericht daadwerkelijk van een bepaalde afzender afkomstig is (ervan uitgaande dat alleen de afzender een privésleutel heeft die overeenkomt met zijn publieke sleutel). Handtekeningen worden ook gebruikt om aan te brengen tijdstempel (tijdstempel) op documenten: de partij die we vertrouwen ondertekent het document met tijdstempel met zijn privésleutel en bevestigt daarmee dat het document al bestond op het moment dat in de tijdstempel wordt aangegeven.

Digitale handtekeningen kunnen ook worden gebruikt voor authenticatie ( certificering --- certificeren) dat het document eigendom is van een bepaalde persoon. Dit gebeurt als volgt: de publieke sleutel en informatie over van wie deze is, worden ondertekend door een vertrouwde partij. Tegelijkertijd kunnen we de ondertekenaar vertrouwen op basis van het feit dat de sleutel door een derde partij is ondertekend. Hierdoor ontstaat er een hiërarchie van vertrouwen. Het is duidelijk dat een sleutel de wortel van de hiërarchie moet zijn (dat wil zeggen: we vertrouwen deze niet omdat deze door iemand is ondertekend, maar omdat we a priori geloven dat deze kan worden vertrouwd). IN gecentraliseerde sleutelinfrastructuur er is een zeer klein aantal netwerkhoofdsleutels (bijvoorbeeld geautoriseerde overheidsinstanties; ze worden ook wel certificeringsinstanties --- certificeringsinstanties). IN gedistribueerde infrastructuur het is niet nodig om universele root-sleutels te hebben, en elke partij kan zijn eigen set root-sleutels vertrouwen (bijvoorbeeld zijn eigen sleutel en de sleutels die daarmee zijn ondertekend). Dit concept heet netwerken van vertrouwen (web van vertrouwen) en is bijvoorbeeld geïmplementeerd in PGP.

Een digitale handtekening van een document wordt meestal zo gemaakt: een zogenaamde verteren (berichtoverzicht) en informatie over wie het document ondertekent, een tijdstempel, enz. wordt eraan toegevoegd. De resulterende string wordt vervolgens gecodeerd met de geheime sleutel van de ondertekenaar met behulp van een of ander algoritme. De resulterende gecodeerde set bits is de handtekening. De handtekening gaat doorgaans vergezeld van de publieke sleutel van de ondertekenaar. De ontvanger beslist eerst zelf of hij erop vertrouwt dat de publieke sleutel precies toebehoort aan wie deze hoort te behoren (met behulp van een netwerk van vertrouwen of a priori kennis), en ontsleutelt vervolgens de handtekening met behulp van de publieke sleutel. Als de handtekening normaal wordt gedecodeerd en de inhoud ervan overeenkomt met het document (samenvatting enz.), wordt het bericht als bevestigd beschouwd.

Er zijn verschillende methoden voor het maken en verifiëren van digitale handtekeningen gratis beschikbaar. Het bekendste is het RSA-algoritme.

Cryptografische hashfuncties

Cryptografische hashfuncties worden meestal gebruikt om een ​​berichtoverzicht te genereren bij het maken van een digitale handtekening. Hash-functies wijzen een bericht toe aan a vaste maat hash-waarde (hash-waarde ) zodanig dat de gehele set mogelijke berichten gelijkmatig wordt verdeeld over de set hashwaarden. De cryptografische hashfunctie doet dit echter op zo’n manier dat het bijna onmogelijk is om het document aan een bepaalde hashwaarde te laten voldoen.

Cryptografische hashfuncties produceren doorgaans waarden met een lengte van 128 bits of meer. Dit aantal is aanzienlijk groter dan het aantal berichten dat ooit in de wereld zal bestaan.

Veel goede cryptografische hashfuncties zijn gratis beschikbaar. Algemeen bekende zijn MD5 en SHA.

Cryptografische generatoren van willekeurige getallen

Cryptografische generatoren van willekeurige getallen willekeurige getallen produceren die worden gebruikt in cryptografische toepassingen, zoals het genereren van sleutels. Conventionele generatoren willekeurige getallen beschikbaar in veel programmeertalen en software-omgevingen, zijn niet geschikt voor de behoeften van cryptografie (ze zijn gemaakt met het doel een statistisch willekeurige verdeling te verkrijgen; cryptanalisten kunnen het gedrag van dergelijke willekeurige generatoren voorspellen).

Idealiter zouden willekeurige getallen gebaseerd moeten zijn op een echte fysieke bron van willekeurige informatie die niet kan worden voorspeld. Voorbeelden van dergelijke bronnen zijn halfgeleiderapparaten met ruis, bits van gedigitaliseerde audio van lage orde en intervallen tussen apparaatonderbrekingen of toetsaanslagen. De resulterende ruis van de fysieke bron wordt vervolgens "gedistilleerd" door een cryptografische hashfunctie, zodat elke bit afhankelijk is van elke bit. Heel vaak wordt een vrij grote pool (enkele duizenden bits) gebruikt om willekeurige informatie op te slaan, en elk bit van de pool wordt afhankelijk gemaakt van elk bit ruisinformatie en elk ander bit van de pool is cryptografisch veilig ( sterk) manier.

Als er geen echte fysieke bron van ruis is, moet je pseudo-willekeurige getallen gebruiken. Deze situatie is ongewenst, maar komt vaak voor op computers voor algemeen gebruik. Het is altijd wenselijk om enige vorm van omgevingsgeluid te krijgen, bijvoorbeeld door de omvang van vertragingen in apparaten, statistieken over het gebruik van bronnen, netwerkstatistieken, toetsenbordonderbrekingen of iets anders. Het doel is om gegevens te verkrijgen die onvoorspelbaar zijn voor een externe waarnemer. Om dit te bereiken moet de willekeurige pool ten minste 128 bits echte entropie bevatten.

Cryptografische generatoren van pseudo-willekeurige getallen maken doorgaans gebruik van een grote pool (zaadwaarde) die willekeurige informatie bevat. Bits worden gegenereerd door bemonstering uit een pool, mogelijk via een cryptografische hashfunctie om de inhoud van de pool voor waarnemers van buitenaf te verbergen. Wanneer een nieuw deel van de bits nodig is, wordt de pool geschud door middel van encryptie met een willekeurige sleutel (deze kan uit een ongebruikt deel van de pool worden gehaald), zodat elke bit in de pool afhankelijk is van elke andere bit. Er moet vóór het schudden nieuw omgevingsgeluid aan het zwembad worden toegevoegd om het voorspellen van nieuwe zwembadwaarden nog moeilijker te maken.

Hoewel een cryptografisch veilige generator van willekeurige getallen met een zorgvuldig ontwerp niet al te moeilijk te implementeren is, wordt het vaak over het hoofd gezien. Het belang van een cryptografische generator van willekeurige getallen moet dus worden benadrukt: als deze slecht wordt uitgevoerd, kan deze gemakkelijk het meest kwetsbare onderdeel van het systeem worden.

Er zijn verschillende voorbeelden van cryptografische generatoren van willekeurige getallen beschikbaar.

De mate van bescherming die door het cijfer wordt geboden

Goede cryptografische systemen zijn ontworpen om het breken ervan zo moeilijk mogelijk te maken. Het is mogelijk om systemen te bouwen die in de praktijk niet te openen zijn (hoewel dit feit meestal niet kan worden bewezen). Het kost niet veel moeite om het te implementeren. Het enige dat vereist is, is nauwkeurigheid en algemene kennis. Er is geen vergeving voor de ontwikkelaar als hij de mogelijkheid heeft gelaten om het systeem te openen. Alle mechanismen die kunnen worden gebruikt om het systeem te hacken, moeten worden gedocumenteerd en onder de aandacht van eindgebruikers worden gebracht.

Theoretisch gezien kan elk versleutelingsalgoritme dat een sleutel gebruikt, worden verbroken door alle sleutelwaarden te doorzoeken. Als de sleutel wordt geselecteerd met behulp van de methode brute kracht (brute kracht), neemt het benodigde computervermogen exponentieel toe met toenemende sleutellengte. Een 32-bits sleutel vereist 2^32 (ongeveer 10^9) stappen. Deze taak ligt binnen de macht van elke amateur en kan worden opgelost door thuis computer. Systemen met een 40-bits sleutel (bijvoorbeeld de Amerikaanse exportversie van het RC4-algoritme) vereisen 2^40 stappen --- dergelijke computerkracht is beschikbaar op de meeste universiteiten en zelfs in kleine bedrijven. Systemen met 56-bits sleutels (DES) vereisen een aanzienlijke inspanning om te openen, maar kunnen eenvoudig worden geopend met speciale apparatuur. De kosten van dergelijke apparatuur zijn aanzienlijk, maar betaalbaar voor de maffia, grote bedrijven en overheden. Sleutels met een lengte van 64 bits kunnen momenteel door grote staten worden geopend en zullen de komende jaren beschikbaar zijn voor opening door criminele organisaties, grote bedrijven en kleine staten. 80-bits sleutels kunnen in de toekomst kwetsbaar worden. 128-bits sleutels zullen in de nabije toekomst waarschijnlijk onbreekbaar blijven door brute kracht. Er kunnen ook langere sleutels worden gebruikt. In de limiet is het niet moeilijk om ervoor te zorgen dat de energie die nodig is voor de opening (ervan uitgaande dat het minimale kwantummechanische energiekwantum per stap wordt verbruikt) groter is dan de massa van de zon of het universum.

De sleutellengte zegt echter niet alles. Veel cijfers kunnen worden verbroken zonder alle mogelijke combinaties te proberen. Over het algemeen is het erg moeilijk om een ​​cijfer te bedenken dat niet op een andere, efficiëntere manier kan worden gebroken. Je eigen cijfers ontwikkelen kan leuk zijn, maar... echte toepassingen Het gebruik van zelfgemaakte cijfers wordt niet aanbevolen, tenzij u een expert bent en 100 procent zeker weet wat u doet.

Over het algemeen moet u wegblijven van ongepubliceerde of geheime algoritmen. Vaak is de ontwikkelaar van zo’n algoritme niet zeker van de betrouwbaarheid ervan, of hangt de betrouwbaarheid af van de geheimhouding van het algoritme zelf. Over het algemeen is geen enkel algoritme waarvan de geheimhouding afhangt van de geheimhouding van het algoritme zelf betrouwbaar. Als u over een coderingsprogramma beschikt, kunt u met name een programmeur inhuren die het demonteert en het algoritme herstelt met behulp van de methode reverse engineering. De ervaring leert dat de meeste geheime algoritmen die later openbaar worden, belachelijk onbetrouwbaar zijn gebleken.

De sleutellengtes die worden gebruikt bij cryptografie met openbare sleutels zijn doorgaans veel langer dan bij symmetrische algoritmen. Het probleem ligt hier niet in het selecteren van de sleutel, maar in het opnieuw creëren van de geheime sleutel op basis van de publieke sleutel. In het geval van RSA is het probleem gelijk aan het ontbinden van een groot geheel getal dat het product is van een paar onbekende priemgetallen. In het geval van sommige andere cryptosystemen is het probleem gelijk aan het berekenen van een discrete logaritme modulo een groot geheel getal (dit probleem wordt qua moeilijkheidsgraad ongeveer gelijkgesteld aan het factorisatieprobleem). Er zijn cryptosystemen die andere problemen uitbuiten.

Om een ​​idee te geven van de moeilijkheid om RSA te doorbreken: 256-bits modules kunnen door gewone programmeurs eenvoudig worden verwerkt. 384-bits sleutels kunnen worden gekraakt door een onderzoeksgroep van een universiteit of bedrijf. 512-bits sleutels liggen binnen het bereik van grote staten. Sleutels die 768 bits lang zijn, zijn waarschijnlijk niet veilig lange tijd. Sleutels van 1024 bits lang kunnen als veilig worden beschouwd totdat er aanzienlijke vooruitgang is geboekt in het factorisatie-algoritme; De meeste mensen beschouwen sleutels 2048 lang als tientallen jaren betrouwbaar. Meer gedetailleerde informatie Zie het artikel van Bruce Scheier voor meer informatie over de lengte van RSA-sleutels.

Het is belangrijk om dat te benadrukken De kracht van een cryptografisch systeem wordt bepaald door de zwakste schakel. Geen enkel aspect van het systeemontwerp mag over het hoofd worden gezien, van algoritmeselectie tot sleutelgebruik en distributiebeleid.

Cryptanalyse en aanvallen op cryptosystemen

Cryptanalyse is de wetenschap van het ontcijferen van gecodeerde berichten zonder de sleutels te kennen. Er zijn veel cryptanalytische benaderingen. Enkele van de belangrijkste voor ontwikkelaars worden hieronder vermeld.

  • Val aan met kennis van alleen de cijfertekst (aanval met alleen cijfertekst): Dit is een situatie waarin de aanvaller niets weet over de inhoud van het bericht en hij alleen met de cijfertekst zelf hoeft te werken. In de praktijk is het vaak mogelijk plausibele inschattingen te maken over de structuur van de tekst, omdat veel berichten standaardkoppen hebben. Zelfs reguliere brieven en documenten beginnen met gemakkelijk voorspelbare informatie. Vaak kan ook worden aangenomen dat een bepaald informatieblok een bepaald woord bevat.
  • Aanval met kennis van de inhoud van de codering (bekende aanval in platte tekst): De aanvaller kent of kan de inhoud van de gehele of een deel van de cijfertekst raden. De taak is om de rest van het bericht te ontcijferen. Dit kan worden gedaan door de coderingssleutel te berekenen of deze te omzeilen.
  • Aanval met gegeven tekst (aanval met gekozen platte tekst): De aanvaller heeft de mogelijkheid om voor elke tekst die hij nodig heeft een gecodeerd document te verkrijgen, maar kent de sleutel niet. De taak is om de sleutel te vinden. Sommige versleutelingsmethoden, en met name RSA, zijn behoorlijk kwetsbaar voor dit soort aanvallen. Bij het gebruik van dergelijke algoritmen moet erop worden gelet dat de aanvaller de door hem opgegeven tekst niet kan versleutelen.
  • Stand-aanval (Man-in-the-middle-aanval): De aanval is gericht op de uitwisseling van gecodeerde berichten en in het bijzonder op het sleuteluitwisselingsprotocol. Het idee is dat wanneer twee partijen sleutels uitwisselen voor geheime communicatie (bijvoorbeeld met behulp van een Diffie-Hellman-cijfer), een tegenstander de berichtenlijn tussen hen infiltreert. Vervolgens geeft de vijand elke partij zijn eigen sleutels. Als gevolg hiervan zal elke partij verschillende sleutels hebben, die elk bekend zijn bij de vijand. Nu zal de tegenstander elk bericht met zijn eigen sleutel decoderen en het vervolgens met een andere sleutel coderen voordat het naar de ontvanger wordt verzonden. De partijen zullen een illusie hebben geheime correspondentie, terwijl in werkelijkheid de vijand alle berichten leest.

Eén manier om dit soort aanvallen te voorkomen is dat de partijen sleutels uitwisselen om een ​​cryptografische hashfunctie van de waarde van het uitwisselingsprotocol (of in ieder geval de sleutelwaarden) te berekenen, deze te ondertekenen met een algoritme voor digitale handtekeningen en de handtekening naar de andere partij te sturen. feest. De ontvanger verifieert de handtekening en controleert of de hashwaarde overeenkomt met de berekende waarde. Deze methode wordt met name gebruikt in het Photuris-systeem.

    Timer-aanval (timing aanval): Dit nieuwe type aanval is gebaseerd op het sequentieel meten van de tijd die nodig is om een ​​walling-operatie uit te voeren modulo een geheel getal. In ieder geval de volgende cijfers zijn hiervoor vatbaar: RSA, Diffie-Hellman en de elliptische curve-methode. Het artikel van Paul Kocher bespreekt deze methode in detail.

Er zijn veel andere cryptografische aanvallen en cryptanalytische benaderingen. Het bovenstaande is echter waarschijnlijk het belangrijkste voor de praktische systeemontwikkeling. Als iemand zijn eigen versleutelingsalgoritme gaat creëren, moet hij deze kwesties veel dieper begrijpen. Eén plek om te beginnen met het systematisch bestuderen van informatie is het uitstekende boek van Bruce Schneier, Applied Cryptography.

Vertaling van Tatu Ylonen's artikel "Inleiding tot cryptografie"

Inleiding tot cryptografie

Bij het overbrengen of opslaan van gegevens ontstaat vaak de taak om informatie te beschermen tegen ongewenst lezen. Meestal wordt in dit geval een van de cryptografiemethoden (van het Griekse geheime schrift) gebruikt. In tegenstelling tot de meeste termen in de computerwoordenschat is dit woord niet van Engelse, maar van Griekse oorsprong.

De geschiedenis van cryptografie gaat duizenden jaren terug, en veel van de onderliggende principes moderne cryptografie Hoewel het misschien al uit de prehistorie bekend was, werd er echter pas relatief recent aanzienlijke vooruitgang geboekt in de theorie van de encryptie, in verband met de ontwikkeling van de moderne informatietheorie.

Bijna alle cryptografiemethoden komen neer op het omzetten van gegevens in een set van een eindig aantal symbolen en het uitvoeren van twee basisbewerkingen op deze symbolen: substitutie en permutatie. Vervanging bestaat uit het vervangen van sommige karakters door andere. Herschikking bestaat uit het veranderen van de volgorde van karakters. In dit geval kunnen verschillende elementen van de boodschap als symbolen fungeren. Bij het versleutelen van berichten in natuurlijke talen kunnen bijvoorbeeld individuele letters, woorden of zelfs hele zinnen worden vervangen en herschikt (zoals bijvoorbeeld in allegorische presentaties van magische teksten). en heilige teksten). In moderne algoritmen omvatten deze bewerkingen meestal blokken opeenvolgende bits. Sommige technieken kunnen worden beschreven als het uitvoeren van een vervangingsoperatie op een volledig bericht. Vervangingen en herschikkingen worden gemaakt volgens bepaalde regels. In dit geval is de hoop dat deze regels en/of de daarin gebruikte parameters alleen bekend zijn bij de auteur en ontvanger van het gecodeerde bericht en onbekend zijn bij derden. In het pre-computertijdperk probeerden ze beide componenten van het encryptieproces te classificeren. Tegenwoordig worden standaardalgoritmen meestal gebruikt voor encryptie, en de geheimhouding van berichten wordt bereikt door de parameter die door het algoritme wordt gebruikt, de sleutel, te classificeren. Een geheim bericht lezen door een buitenstaander Theoretisch kan dit op twee manieren worden gedaan: door de sleutelwaarde te stelen of door deze te raden door de onderschepte codering te analyseren. Als de eerste gebeurtenis alleen kan worden voorkomen door fysieke en organisatorische bescherming, wordt de mogelijkheid van de tweede bepaald door het gebruikte algoritme. Hieronder zullen we het proces van het analyseren van encryptie aanduiden als het breken van cijfers, en de persoon die dit proces uitvoert als een kraker. Wetenschappelijk gezien wordt deze activiteit neutraler genoemd: cryptanalyse. Een bericht in natuurlijke taal dat is gecodeerd door vervanging van individuele letters is bijvoorbeeld kwetsbaar voor frequentieanalyse: gebaseerd op het feit dat verschillende letters met verschillende frequenties in teksten voorkomen, kan een aanvaller gemakkelijk – en met zeer grote zekerheid – de vervangingstabel reconstrueren. Er zijn nog andere voorbeelden van niet-succesvolle algoritmen die bepaalde autocorrelaties in het bericht intact houden - elke parameter kan worden gebruikt als basis voor het herstellen van de tekst van het bericht of het ontdekken van de sleutel.

De weerstand van een cijfer tegen het zoeken naar autocorrelaties in een bericht wordt de cryptografische kracht van het algoritme genoemd. Zelfs wanneer algoritmen worden gebruikt die in deze zin succesvol zijn, kan een aanvaller, als hij weet dat de originele (niet-versleutelde) gegevens aan een of andere vereiste voldoen, bijvoorbeeld een bepaald woord bevatten of zijn uitgerust met een redundante code, een volledige opsomming van de gegevens uitvoeren. de sleutelruimte: probeer alle sleutelwaarden die door het algoritme zijn toegestaan ​​totdat een bericht wordt ontvangen dat aan de vereiste voldoet. Bij het gebruik van sleutels met een voldoende grote bitgrootte blijkt zo'n aanval onbetaalbaar duur te zijn, maar de vooruitgang van de computertechnologie verlegt voortdurend de grens van "toereikendheid" steeds verder. Zo kraakte het gedistribueerde computernetwerk van Bovine in 1998 een bericht dat was gecodeerd met het DES-algoritme met een 56-bits sleutel in 56 uur werk. Een eenvoudige en effectieve manier om een ​​dergelijke aanval te bestrijden is door de sleutelruimte uit te breiden. Door de sleutel met één bit te vergroten, wordt de ruimte verdubbeld - een lineaire toename van de sleutelgrootte zorgt dus voor een exponentiële toename van de opsommingskosten. Sommige versleutelingsalgoritmen zijn niet afhankelijk van de bitdiepte van de gebruikte sleutel; in dit geval wordt de extensie bereikt op een voor de hand liggende manier. Als het algoritme afhankelijk is van de bitdiepte, kunt u de ruimte eenvoudig uitbreiden door verschillende transformaties op het bericht toe te passen, inclusief het gebruik van hetzelfde algoritme, maar met verschillende sleutels. Een andere manier om het werk van een aanvaller veel moeilijker te maken, is door het bericht in te pakken voordat het wordt gecodeerd en/of het op te vullen met willekeurige bits. Het is echter belangrijk om te benadrukken dat het aantal bits van een sleutel slechts een bovenste schatting is van het volume van de sleutelruimte, en dat deze schatting in veel situaties wordt overschat. Sommige algoritmen kunnen van nature alleen sleutels gebruiken die aan een bepaalde voorwaarde voldoen. RSA gebruikt bijvoorbeeld priemgetallen. Dit vermindert de hoeveelheid brute krachtwerk aanzienlijk, dus om een ​​vergelijkbare cryptografische sterkte te garanderen, moet de bitdiepte van de RSA-sleutel veel groter zijn dan die van algoritmen die willekeurige sleutels toestaan. Een lage cryptografische sterkte kan te wijten zijn aan. niet alleen door het versleutelingsalgoritme, maar ook door de sleutelselectieprocedure: als de sleutel alle binaire waarden van een bepaalde bitdiepte kan accepteren, maar in werkelijkheid een pseudo-willekeurige getallengenerator wordt gebruikt die lijdt aan heterogeniteit om deze te selecteren, kunnen we kunnen de hoeveelheid ruimte die een aanvaller van onze berichten daadwerkelijk moet doorzoeken aanzienlijk verminderen. De situatie is nog erger wanneer gemakkelijk te onthouden woorden uit een natuurlijke taal als sleutel worden gebruikt: in dit geval kan het werkelijke volume van de sleutelruimte, zelfs als deze een vrij grote bitgrootte heeft, in slechts een paar duizend verschillende waarden worden gemeten.

Moderne versleutelingsalgoritmen zijn onderverdeeld in twee hoofdklassen: met een geheim en met een publieke sleutel.

Algoritmen met een geheime sleutel zijn op hun beurt onderverdeeld in streaming (stream) en block (block). Streamingalgoritmen maken doorgaans gebruik van tekenvervanging zonder permutatie. Een grotere cryptografische kracht wordt bereikt doordat de vervangingsregels niet alleen afhankelijk zijn van het symbool dat wordt vervangen, maar ook van zijn positie in de stroom. Een voorbeeld van het eenvoudigste – en tegelijkertijd absoluut onhackbare – streamingalgoritme is het Vernam-systeem of one-time pad. Het Vernam-systeem is gebaseerd op een sleutel waarvan de grootte gelijk is aan of groter is dan de berichtgrootte. Bij het verzenden van binaire gegevens wordt vervanging uitgevoerd door modulo 2-optelling (exclusief of operatief) van de overeenkomstige sleutel- en berichtbits.

Als de sleutel wordt gegenereerd door een betrouwbare generator van willekeurige getallen (bijvoorbeeld een goed geconfigureerde thermische ruis-digitizer), zal geen enkele informatie over autocorrelaties in de oorspronkelijke tekst van het bericht de aanvaller helpen: door de hele sleutelruimte te doorzoeken, zal de aanvaller worden gedwongen om alle berichten te controleren die overeenkomen met het aantal tekens van het originele bericht, inclusief alle berichten die voldoen aan de veronderstelde autocorrelatierelatie. Dit voordeel gaat verloren als dezelfde sleutel wordt gebruikt om meerdere berichten te versleutelen: een aanvaller die ze allemaal onderschept, kan deze berichten gebruiken en gissen naar de inhoud ervan om te proberen de sleutel eruit te filteren. bruikbare informatie– vandaar de tweede naam van het algoritme. Het gebruik van het Vernam-systeem gaat dus gepaard met de dure productie en vooral het transport van sleutels van enorme lengte, en wordt daarom alleen gebruikt in noodcommunicatiesystemen van de overheid en het leger.

Het bleek praktischer om pseudo-willekeurige reeksen, gegenereerd door deterministische algoritmen, als sleutel te gebruiken. Tussen de Eerste en de Tweede Wereldoorlog zijn encryptiemachines gebaseerd op mechanische generatoren zulke sequenties. De combinaties verkregen door roterende wielen met onderling priemgetallen tanden werden het vaakst gebruikt. Het grootste gevaar bij het gebruik van dergelijke versleutelingsmethoden is de mogelijkheid om het huidige punt van de reeks te bepalen - door dit te herkennen (bijvoorbeeld door indirect bewijs, door te raden dat er op dit punt in het bericht een bepaald woord zou moeten staan), en het herstellen het sleutelelement dat wordt gebruikt om het te versleutelen), kan de aanvaller vanaf hetzelfde punt doorgaan met genereren en de hele verdere stroom ontcijferen.

In digitale communicatiesystemen worden op grote schaal blokalgoritmen gebruikt, die reeksen van – soms behoorlijk complexe – permutaties, vervangingen en andere bewerkingen uitvoeren op datablokken van een vaste lengte, meestal binaire optellingen van data met een of andere sleutelmodulo. Operaties gebruiken componenten trefwoord relatief kleine bitgrootte. Het veelgebruikte blokalgoritme DES codeert bijvoorbeeld 64-bits gegevensblokken met een 56-bits sleutel. Voor moderne computertechnologie is een volledige doorzoeking van een 56-bits ruimte mogelijk, dus nu worden algoritmen met grotere sleutelbreedtes - Blowfish, IDEAL, enz. - steeds wijdverbreider.

Ciphers met publieke sleutels worden ook wel twee-sleutel ciphers genoemd. Als in verborgen-sleutelalgoritmen dezelfde sleutel wordt gebruikt om berichten te coderen en decoderen, worden er twee sleutels gebruikt: publieke en private. Om een ​​bericht te lezen dat is gecodeerd met een publieke sleutel, heb je een privésleutel nodig, en omgekeerd. Naast de gebruikelijke overwegingen van cryptografische sterkte, zijn dergelijke algoritmen onderworpen aan een extra vereiste: de onmogelijkheid om een ​​privésleutel te herstellen van een openbare sleutel, behalve door uitvoerig de sleutelruimte te doorzoeken. Versleutelingsschema's met twee sleutels zijn veel moeilijker te ontwikkelen dan schema's met privésleutels: je moet een transformatie vinden die niet ongedaan kan worden gemaakt met de publieke sleutel die erin wordt gebruikt, maar zodanig dat deze nog steeds kan worden teruggedraaid met behulp van de privésleutel. Bekende cryptobestendige schema's zijn gebaseerd op producten van grote cijfers, discrete logaritmen en elliptische curven. Het meest gebruikte algoritme was het RSA-algoritme, ontwikkeld in 1977. Bekende algoritmen met twee sleutels vereisen dat sleutels aan zeer specifieke eisen voldoen. Om een ​​cryptografische kracht te bereiken die vergelijkbaar is met blokalgoritmen, is het dus noodzakelijk sleutels met een veel grotere bitdiepte te gebruiken. Zo stelden de beperkingen van het Amerikaanse ministerie van Handel, die in 2000 werden opgeheven, grenzen aan de bitdiepte van de sleutel die kon worden gebruikt in software die buiten de Verenigde Staten werd geëxporteerd: voor schema's met een geheime sleutel werd een limiet van 48 bits gesteld. , en voor schema's met een openbare sleutel vereist het gebruik van grote sleutels aanzienlijke rekeninspanningen, dus worden schema's met twee sleutels meestal gebruikt in combinatie met conventionele schema's: de eigenaar van de openbare sleutel genereert een willekeurige reeks bits en codeert. deze en stuurt deze naar de eigenaar van de privésleutel. Deze reeks wordt vervolgens gebruikt als een geheime sleutel om de gegevens te coderen. Bij het tot stand brengen van een tweerichtingsverbinding kunnen de partijen eerst hun openbare sleutels uitwisselen en deze vervolgens gebruiken om twee verschillende geheime sleutels tot stand te brengen die worden gebruikt om gegevens die in verschillende richtingen worden verzonden, te coderen. Dit schema maakt het praktisch om regelmatig geheime sleutels te wijzigen: in het SSH-protocol wordt bijvoorbeeld voor elke sessie een sleutel gegenereerd, in het IPSEC Virtual Private Network-protocol is de levensduur van de sleutel beperkt tot acht uur. Tweesleutelsystemen hebben een nog bredere toepassing gevonden op het gebied van authenticatie en elektronische handtekeningen. Een elektronische handtekening is een gecodeerde berichtcontrolesom prive sleutel afzender. Elke houder van de bijbehorende publieke sleutel kan de authenticiteit van de handtekening en de integriteit van het bericht verifiëren. Dit kan worden gebruikt om de authenticiteit van zowel het bericht als de afzender te verifiëren. Het gebruik van een gewone CRC als controlesom is niet mogelijk omdat het genereren van een bericht met een bepaalde CRC rekenkundig niet moeilijk is. Voor gebruik in elektronische handtekeningen zijn speciale rekenalgoritmen ontwikkeld controlesommen, waardoor het moeilijk wordt om een ​​bericht met het vereiste bedrag te selecteren.

Omdat het programma uit een reeks machinecodes bestaat, is het noodzakelijk om de procedure voor het laden ervan in overweging te nemen RAM computer (veel van de hieronder besproken concepten zijn echter tot op zekere hoogte toepasbaar op programmafirmware in ROM).

Laten we om te beginnen aannemen dat het programma vooraf is samengesteld tot een enkel, op zichzelf staand object dat een laadbare of laadbare module wordt genoemd. In een aantal besturingssystemen het programma wordt samengesteld op het moment dat het wordt geladen groot nummer afzonderlijke modules met links naar elkaar.

Om verwarring te voorkomen, noemen we het deel van de opstartmodule dat de uitvoerbare code bevat een programma. We zullen het resultaat van het laden van een programma in het geheugen een proces noemen, of, als we een geladen programma moeten onderscheiden van het proces van uitvoering ervan, een procesimage. Het procesbeeld bevat soms niet alleen de code en gegevens van het proces (onderhevig aan transformatie zowel tijdens het laadproces als terwijl het programma draait), maar ook de systeemdatastructuren die bij dit proces horen. In oudere literatuur wordt een proces vaak een taak genoemd.

Bij systemen met virtueel geheugen Aan elk proces wordt gewoonlijk een eigen adresruimte toegewezen, daarom zullen we de term proces soms in deze zin gebruiken. In veel systemen overlapt echter een aanzienlijk deel van de adresruimten van verschillende processen - dit wordt gebruikt om gedeelde code en gegevens te implementeren. Binnen één proces kunnen één of meerdere threads of controlethreads worden uitgevoerd.

Sommige systemen bieden ook grotere structurele eenheden dan een proces. In Unix-systemen zijn er bijvoorbeeld procesgroepen die worden gebruikt om de logische groepering van processen in taken te implementeren. Een aantal systemen kent ook het concept van een sessie: een verzameling van alle taken die de gebruiker binnen één werksessie heeft gestart. De relevante concepten zijn echter vaak slecht gedefinieerd en hun betekenis varieert sterk van besturingssysteem tot besturingssysteem.

In oudere systemen en in oudere literatuur wordt het resultaat van het laden een taak genoemd, en worden processen individuele controledraden genoemd. Tegenwoordig echter in de meest voorkomende besturingssystemen Unix-families en Win32 is het gebruikelijk om een ​​taak een proces te noemen, en een proces een thread.