Interessante encryptie. Cryptografie lessen

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

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

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

7.1. Moderne blokcijfers

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


Rijst. 7.1.

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

Voorbeeld 7.1

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

Oplossing

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

- berichtlengte en opvullengte, dan | M | + |

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

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

Vervanging of omzetting

Een modern blokcijfer kan worden ontworpen om te fungeren als vervangingscijfer of als transpositiecijfer. Dit is hetzelfde idee dat wordt gebruikt in traditionele cijfers, behalve dat de tekens die worden vervangen of verplaatst bits bevatten in plaats van tekens. Als het cijfer is ontworpen als vervangingscijfer kunnen bitwaarden van 1 of 0 in de brontekst worden vervangen door 0 of 1 . Dit betekent dat de originele tekst en de cijfertekst kunnen bestaan ander nummer eenheden. Een 64-bits blok platte tekst dat 12 nullen en 52 enen bevat, kan in de cijfertekst worden weergegeven door 34 nullen en 30 enen. Als het cijfer is ontworpen als permutatiecijfer (transpositie)

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

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

In de 21e eeuw speelt cryptografie een serieuze rol in het digitale leven moderne mensen. Laten we kort kijken naar manieren om informatie te coderen.

Cryptografie is niet zomaar een computerding

Hoogstwaarschijnlijk ben je het al tegengekomen de eenvoudigste cryptografie en ken misschien enkele versleutelingsmethoden. Het Caesarcijfer wordt bijvoorbeeld vaak gebruikt in educatieve kinderspellen.

ROT13 is een ander veelgebruikt type berichtversleuteling. Daarin wordt elke letter van het alfabet 13 posities verschoven, zoals weergegeven in de afbeelding:

Zoals u kunt zien, biedt dit cijfer niet echt uitkomst betrouwbare bescherming informatie: het is eenvoudig en duidelijk voorbeeld het hele idee van cryptografie.

Tegenwoordig praten we het vaakst over cryptografie in de context van een bepaalde technologie. Hoe u veilig persoonlijke en financiële informatie, wanneer we online een aankoop doen of bankrekeningen bekijken? Hoe kunt u gegevens veilig opslaan, zodat niemand uw computer zomaar kan openen en eruit kan halen? harde schijf en hebben volledige toegang naar alle informatie erover? Deze en andere vragen zullen wij in dit artikel beantwoorden.

Definities en snelle handleiding over cyberveiligheid

Op het gebied van cyberbeveiliging zijn er een aantal dingen die gebruikers zorgen baren als het om gegevens gaat. Deze omvatten vertrouwelijkheid, integriteit en beschikbaarheid van informatie.

Vertrouwelijkheid– gegevens kunnen niet worden ontvangen of gelezen door ongeautoriseerde gebruikers.

Informatie-integriteit– vertrouwen dat de informatie 100% intact blijft en niet door een aanvaller wordt gewijzigd.

Beschikbaarheid van informatie– het verkrijgen van toegang tot gegevens wanneer dat nodig is.

Ook in het artikel zullen we overwegen verschillende vormen digitale cryptografie en hoe ze kunnen helpen de hierboven genoemde doelen te bereiken.

Basiscoderingsmethoden:
  • Symmetrisch
  • Asymmetrisch
  • Hashing
  • Digitale handtekening

Symmetrische codering

Voordat we ingaan op het onderwerp, willen we eerst een eenvoudige vraag beantwoorden: wat wordt precies bedoeld met “encryptie”? Encryptie is de transformatie van informatie om deze voor onbevoegden te verbergen, maar tegelijkertijd te verstrekken geautoriseerde gebruikers toegang daartoe.

Om gegevens correct te versleutelen en te ontsleutelen, hebt u twee dingen nodig: de gegevens en de decoderingssleutel. Bij gebruik van symmetrische encryptie is de sleutel voor het coderen en decoderen van gegevens dezelfde. Laten we een string nemen en deze versleutelen met Ruby en OpenSSL:

Robijn

vereisen "openssl" vereisen "pry" data_to_encrypt = " nu jij kan mij lezen!" cipher = OpenSSL::Cipher.new("aes256") cipher.encrypt key = cipher.random_key iv = cipher.random_iv data_to_encrypt = cipher.update(data_to_encrypt) + cipher.final binding.pry true

vereist "openssl"

vereisen "wrikken"

cijfer = OpenSSL::Cijfer. nieuw("aes256")

cijfer. versleutelen

sleutel = cijfer. willekeurige_sleutel

iv = cijfer. willekeurige_iv

data_to_encrypt = cijfer. update(data_to_encrypt) + cijfer. definitief

verbindend. wrikken

WAAR

Dit is wat het programma zal opleveren:

Houd er rekening mee dat de variabele data_to_encrypt, wat oorspronkelijk de string “now jij kunt lees mij!”, nu een stelletje vreemde karakters. Laten we het proces omkeren met behulp van de sleutel die oorspronkelijk in een variabele was opgeslagen sleutel.

Nadat we dezelfde sleutel hebben gebruikt die we hebben ingesteld voor codering, decoderen we het bericht en halen we de originele string op.

Laten we eens kijken naar andere versleutelingsmethoden.

Asymmetrische encryptie

Het probleem met symmetrische encryptie is dit: stel dat u gegevens via internet moet verzenden. Als dezelfde sleutel nodig is om gegevens te versleutelen en te ontsleutelen, dan blijkt dat de sleutel eerst verzonden moet worden. Dit betekent dat u de sleutel via moet versturen onveilige verbinding. Maar op deze manier kan de sleutel worden onderschept en gebruikt door een derde partij. Om dit resultaat te voorkomen, werd asymmetrische encryptie uitgevonden.

Om asymmetrische codering te gebruiken, moet u twee wiskundig gerelateerde sleutels genereren. Eén daarvan is een privésleutel waar alleen jij toegang toe hebt. De tweede is open en openbaar beschikbaar.

Laten we eens kijken naar een voorbeeld van communicatie met behulp van asymmetrische encryptie. Daarin sturen de server en de gebruiker berichten naar elkaar. Elk van hen heeft twee sleutels: privé en openbaar. Eerder werd gezegd dat de sleutels met elkaar verbonden zijn. Die. Een bericht dat is gecodeerd met een privésleutel kan alleen worden ontsleuteld met behulp van een aangrenzende openbare sleutel. Om de communicatie te starten, moet u daarom openbare sleutels uitwisselen.

Maar hoe kun je begrijpen dat de publieke sleutel van de server bij deze specifieke server hoort? Er zijn verschillende manieren om dit probleem op te lossen. De meest gebruikelijke methode (en die ook op internet wordt gebruikt) is het gebruik van een publieke sleutelinfrastructuur (PKI). In het geval van websites is er sprake van een Certificate Authority, die een directory heeft met alle websites waaraan certificaten en publieke sleutels zijn uitgegeven. Wanneer u verbinding maakt met een website, wordt de openbare sleutel eerst geverifieerd door een certificeringsinstantie.

Laten we een paar openbare en privésleutels maken:

Robijn

require "openssl" require "pry" data_to_encrypt = "nu kun je mij lezen!" key = OpenSSL::PKey::RSA.new(2048) binding.pry waar

vereist "openssl"

vereisen "wrikken"

data_to_encrypt = "nu kun je mij lezen!"

sleutel = OpenSSL::PKey::RSA. nieuw (2048)

verbindend. wrikken

WAAR

Het zal blijken:

Houd er rekening mee dat de privésleutel en de openbare sleutel afzonderlijke entiteiten zijn met verschillende identificatiegegevens. Gebruiken #private_encrypt, kun je een string versleutelen met een privésleutel en met behulp van #public_decrypt– ontsleutel het bericht:

Hashing van informatie

Hashing is, in tegenstelling tot symmetrische en asymmetrische encryptie, een eenrichtingsfunctie. Het is mogelijk om van sommige gegevens een hash te maken, maar er is geen manier om het proces om te keren. Dit maakt hashen geen erg handige manier om gegevens op te slaan, maar het is wel geschikt om de integriteit van sommige gegevens te controleren.

De functie neemt wat informatie als invoer en voert een schijnbaar willekeurige reeks uit die altijd dezelfde lengte zal hebben. Een ideale hashfunctie levert unieke waarden op verschillende ingangen. Dezelfde invoer zal altijd dezelfde hash opleveren. Daarom kan hashing worden gebruikt om de gegevensintegriteit te verifiëren.

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

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

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

Steganografie

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

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

Het grootste nadeel van steganografie is dat het voorzichtig is vreemdeling zou haar kunnen opmerken. Om te voorkomen dat het geheime bericht gemakkelijk kan worden gelezen, worden daarom encryptie- en coderingsmethoden gebruikt in combinatie met steganografie.

ROT1 en Caesarcijfer

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

Het ROT1-cijfer kan worden gegeneraliseerd naar een willekeurig aantal verschuivingen en wordt vervolgens ROTN genoemd, waarbij N het getal is waarmee de codering van letters moet worden gecompenseerd. In deze vorm is het cijfer al sinds de oudheid bekend en wordt het het ‘Caesarcijfer’ genoemd.

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

Transpositie- of permutatiecijfers

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

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

Morsecode

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

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

Monoalfabetische vervanging

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

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

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

Gronsfeld-cijfer of polyalfabetische vervanging

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

ADFGX-coderingsalgoritme

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

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

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

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

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

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

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

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

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

Vigenère-cijfer

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

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

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

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

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

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

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

Codes

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

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

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

"Raadsel"

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

In tegenstelling tot de meesten eenvoudige cijfers Enigma gaf biljoenen mogelijke combinaties, waardoor het breken van gecodeerde informatie vrijwel onmogelijk werd. Op hun beurt hadden de nazi's zich op elke dag voorbereid bepaalde combinatie, die ze op een bepaalde dag gebruikten om berichten te verzenden. Daarom, zelfs als Enigma in handen van de vijand zou vallen, heeft het op geen enkele manier bijgedragen aan het ontcijferen van berichten zonder de introductie van vereiste configuratie elke dag.

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

Encryptie met publieke sleutel

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

De rol van de publieke sleutel is meestal een zeer groot getal, dat slechts twee delers heeft, één en het getal zelf niet meegerekend. Samen vormen deze twee delers de geheime sleutel.

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

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

Duurzaamheid van lettertypen

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

Tot op heden zijn er geen uniforme normen waarmee de sterkte van een cijfer kan worden beoordeeld. Dit is een arbeidsintensief en langdurig proces. Er zijn echter een aantal commissies die normen op dit gebied hebben opgesteld. Bijvoorbeeld de minimale vereisten voor het Advanced Encryption Standard of AES-coderingsalgoritme, ontwikkeld door NIST USA.

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

Gegevensversleuteling is uiterst belangrijk om de privacy te beschermen. In dit artikel zal ik het hebben over verschillende soorten en encryptiemethoden die tegenwoordig worden gebruikt om gegevens te beschermen.

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

Naarmate de mogelijkheden van internet blijven groeien, worden steeds meer van onze activiteiten online uitgevoerd. Hiervan zijn de belangrijkste internetbankieren, online betaling, e-mails, uitwisseling van privé- en officiële berichten, enz., waarbij vertrouwelijke gegevens en informatie worden uitgewisseld. Als deze gegevens in verkeerde handen vallen, kan dit niet alleen schade veroorzaken individuele gebruiker, maar ook allemaal online systeem bedrijf.

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

Coderingstypen

Symmetrische codering

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

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

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

Beperkingen

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

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

Asymmetrische encryptie

Asymmetrische sleutelversleuteling werkt op dezelfde manier symmetrische sleutel, in die zin dat het een sleutel gebruikt om verzonden berichten te coderen. In plaats van dezelfde sleutel te gebruiken, gebruikt hij echter een compleet andere sleutel om dit bericht te ontsleutelen.

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

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

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

Beperkingen

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

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

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

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

Hashing

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

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

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

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

Beperkingen

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

Combinatie van encryptiemethoden

Zoals hierboven besproken heeft elk van deze drie encryptiemethoden enkele nadelen. Wanneer echter een combinatie van deze methoden wordt gebruikt, vormen ze een betrouwbare en hoogwaardige oplossing effectief systeem encryptie.

Meestal worden private en publieke sleuteltechnieken gecombineerd en samen gebruikt. De geheime sleutelmethode maakt het mogelijk snelle decodering, terwijl de publieke-sleutelmethode veiliger en meer biedt handige manier om de geheime sleutel over te dragen. Deze combinatie van methoden staat bekend als de "digitale envelop". Versleutelingsprogramma e-mail PGP is gebaseerd op de "digitale envelop"-techniek.

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

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

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

09.07.2003

Wat is encryptie?

Encryptie wordt al vanaf het eerste moment door de mensheid gebruikt geheime informatie, d.w.z. een waartoe de toegang beperkt moet worden. Dit was heel lang geleden - een van de beroemdste versleutelingsmethoden is bijvoorbeeld vernoemd naar Caesar, die, als hij het niet zelf uitvond, het vervolgens actief gebruikte (zie kader).

Cryptografie zorgt ervoor dat de betekenis van een bericht verborgen blijft en wordt onthuld door decodering met behulp van speciale algoritmen en sleutels. We begrijpen de sleutel als een specifieke geheime toestand van de parameters van de coderings- en decoderingsalgoritmen. Het kennen van de sleutel maakt het mogelijk om het geheime bericht te lezen. Zoals u hieronder zult zien, garandeert onwetendheid over de sleutel echter niet altijd dat het bericht niet door een vreemde kan worden gelezen.

Het proces waarbij een cijfer wordt gebroken zonder de sleutel te kennen, wordt cryptanalyse genoemd. De tijd die nodig is om een ​​cijfer te breken, wordt bepaald door de cryptografische sterkte ervan. Hoe groter het is, hoe ‘sterker’ het versleutelingsalgoritme is. Nog beter is het als het in eerste instantie helemaal onmogelijk is om erachter te komen of het resultaat van de hack haalbaar is.

Fundamentele moderne versleutelingsmethoden

Onder de verschillende versleutelingsmethoden kunnen de volgende hoofdmethoden worden onderscheiden:

  • Vervangings- of vervangingsalgoritmen - karakters van de brontekst worden vervangen door karakters van een ander (of hetzelfde) alfabet in overeenstemming met een vooraf bepaald schema, dat de sleutel zal zijn van dit cijfer. Bovendien wordt deze methode praktisch niet gebruikt in moderne cryptosystemen vanwege de extreem lage cryptografische sterkte.
  • Herschikkingsalgoritmen - karakters van de originele tekst worden verwisseld volgens een bepaald principe, namelijk de geheime sleutel. Het permutatiealgoritme zelf heeft een lage cryptografische sterkte, maar is als element opgenomen in veel moderne cryptosystemen.
  • Gamma-algoritmen - de karakters van de brontekst worden toegevoegd aan de karakters van een bepaalde willekeurige reeks. Het meest voorkomende voorbeeld is de codering van "gebruikersnaam.pwl"-bestanden, waarin besturingssysteem Microsoft Windows 95 slaat wachtwoorden op netwerkbronnen gegeven gebruiker(wachtwoorden voor inloggen op NT-servers, wachtwoorden voor inbelinternettoegang, enz.).

Wanneer een gebruiker zijn wachtwoord invoert bij het inloggen op Windows 95, wordt er een gamma (altijd hetzelfde) gegenereerd met behulp van het RC4-coderingsalgoritme, dat wordt gebruikt voor de codering netwerkwachtwoorden. De eenvoud van wachtwoordselectie is in dit geval te wijten aan het feit dat Windows altijd de voorkeur geeft aan hetzelfde kleurenschema.

  • Algoritmen gebaseerd op complexe wiskundige transformaties van de brontekst volgens een bepaalde formule. Velen van hen gebruiken onopgelost wiskundige problemen. Bijvoorbeeld het algoritme dat veel wordt gebruikt op internet RSA-codering gebaseerd op de eigenschappen van priemgetallen.

Symmetrische en asymmetrische cryptosystemen

Laten we, voordat we verder gaan met individuele algoritmen, kort stilstaan ​​bij het concept van symmetrische en asymmetrische cryptosystemen. Het genereren van een geheime sleutel en het versleutelen van een bericht daarmee is slechts het halve werk. Maar hoe kan zo’n sleutel naar iemand worden gestuurd die deze moet gebruiken om het oorspronkelijke bericht te ontsleutelen? De overdracht van de encryptiesleutel wordt beschouwd als een van de belangrijkste problemen van cryptografie.

Binnen de perken blijven symmetrisch systeem(zo genoemd omdat dezelfde sleutel wordt gebruikt voor codering en decodering), is het noodzakelijk om een ​​betrouwbaar communicatiekanaal te hebben om de geheime sleutel te verzenden. Maar zo’n kanaal is niet altijd beschikbaar, en daarom ontwikkelden de Amerikaanse wiskundigen Diffie, Hellman en Merkle in 1976 het concept van een publieke sleutel en asymmetrische encryptie. In dergelijke cryptosystemen is alleen de sleutel voor het versleutelingsproces publiekelijk beschikbaar, en is de ontsleutelingsprocedure alleen bekend bij de eigenaar van de geheime sleutel.

Als ik bijvoorbeeld wil dat er een bericht naar mij wordt verzonden, genereer ik openbare en privésleutels. Ik stuur het naar jou, jij codeert het bericht en stuurt het naar mij. Alleen ik kan het bericht ontsleutelen, aangezien ik de geheime sleutel aan niemand heb gegeven. Uiteraard zijn beide sleutels op een speciale manier met elkaar verbonden (op verschillende manieren in elk cryptosysteem), en de distributie van de publieke sleutel vernietigt de cryptografische kracht van het systeem niet.

Bij asymmetrische systemen moet aan de volgende eis worden voldaan: er is geen algoritme (of het is nog niet bekend) dat de originele tekst uit de cryptotekst en de publieke sleutel zou afleiden. Een voorbeeld van een dergelijk systeem is het bekende RSA-cryptosysteem.

RSA-algoritme

Het RSA-algoritme (na de eerste letters van de achternaam van de makers Rivest-Shamir-Adleman) is gebaseerd op de eigenschappen van priemgetallen (en zeer grote). Priemgetallen zijn getallen die geen andere delers hebben dan zijzelf en één. En coprime-getallen zijn die getallen die geen andere gemeenschappelijke delers hebben dan 1.

Laten we eerst twee zeer grote priemgetallen kiezen (grote priemgetallen zijn nodig om grote, sterke sleutels te construeren. Het Unix-programma ssh-keygen genereert bijvoorbeeld standaard sleutels van 1024 bits lang).

Laten we de parameter definiëren N als gevolg van vermenigvuldiging P En Q. Laten we een grote kiezen willekeurig nummer en laten we het noemen D, en het moet coprime zijn met het resultaat van vermenigvuldiging (p -1)*(q -1).

Laten we een getal e vinden waarvoor de relatie waar is

(e*d) mod ((p -1)*(q -1)) = 1

(mod- rest van de deling, d.w.z. als e vermenigvuldigd met d wordt gedeeld door ((p -1)*(q -1)), dan is de rest 1).

De publieke sleutel bestaat uit een paar cijfers e en n, en gesloten - d en n.

Bij het versleutelen wordt de brontekst behandeld als een cijferreeks en voeren wij op elk cijfer een bewerking uit

C(i)= (M(i) e) mod n.

Het resultaat is de volgorde C(ik), die de cryptotekst zal vormen. Het decoderen van informatie vindt plaats volgens de formule

M(i) = (C(i) d) mod n.

Zoals u kunt zien, vereist decodering kennis van de geheime sleutel.

Laten we het met kleine aantallen proberen.

Laten we installeren p=3, q=7. Dan n=p*q=21. Kiezen D als 5. Uit de formule (e*5) mod 12=1 berekenen e=17. Openbare sleutel 17, 21 , geheim - 5, 21 .

Laten we de reeks "12345" coderen:

C(1)= 1 17 mod. 21= 1

C(2)= 2 17 mod. 21 =11

C(3)= 3 17 mod. 21= 12

C(4)= 4 17 mod. 21= 16

C(5)= 5 17 mod. 21= 17

Cryptotekst - 1 11 12 16 17.

Laten we de decodering controleren:

M(1)= 1 5 mod. 21= 1

M(2)= 11 5 mod. 21= 2

M(3)= 12 5 mod. 21= 3

M(4)= 16 5 mod. 21= 4

M(5)= 17 5 mod. 21= 5

Zoals u kunt zien, viel het resultaat samen.

Het RSA-cryptosysteem wordt veel gebruikt op internet. Wanneer u verbinding maakt met een beveiligde server via SSL-protocol, installeer een WebMoney-certificaat op uw pc of maak verbinding met externe server Met met behulp van Openen SSH of SecureShell, dan gebruiken al deze programma's codering met openbare sleutels met behulp van ideeën RSA-algoritme. Is dit systeem werkelijk zo betrouwbaar?

RSA-hackwedstrijden

Sinds de oprichting is RSA voortdurend onderworpen aan brute-force-aanvallen. In 1978 publiceerden de auteurs van het algoritme een artikel waarin ze een string presenteerden die gecodeerd was met behulp van de methode die ze zojuist hadden uitgevonden. De eerste persoon die het bericht ontcijferde, kreeg een beloning van $ 100, maar hiervoor moest een getal van 129 cijfers in twee factoren worden verdeeld. Dit was de eerste wedstrijd waarin RSA werd gekraakt. Het probleem werd pas 17 jaar na de publicatie van het artikel opgelost.

De cryptografische kracht van RSA is gebaseerd op de veronderstelling dat het uiterst moeilijk, zo niet onmogelijk, is om de private sleutel van de publieke sleutel te onderscheiden. Om dit te doen, was het noodzakelijk om het probleem van het bestaan ​​​​van delers van een enorm geheel getal op te lossen. Tot nu toe heeft niemand het met behulp van analytische methoden opgelost en het RSA-algoritme kan alleen met brute kracht worden gekraakt. Strikt genomen is de bewering dat het factorisatieprobleem moeilijk is en dat het breken van het RSA-systeem moeilijk is, eveneens onbewezen.

Het nummer dat wordt verkregen als resultaat van de verwerking van de berichttekst door de hashfunctie, wordt gecodeerd met behulp van het RSA-algoritme privé sleutel gebruiker en wordt samen met de brief en een kopie van de openbare sleutel naar de ontvanger verzonden. De ontvanger voert met behulp van de openbare sleutel van de afzender dezelfde hashfunctie uit op het binnenkomende bericht. Als beide cijfers gelijk zijn, betekent dit dat het bericht echt is, maar als er minimaal één teken is gewijzigd, komen de cijfers niet overeen.

Een van de meest voorkomende in Rusland mailclients, Het programma Bat!, heeft ingebouwde mogelijkheden om toe te voegen digitale handtekeningen naar brieven (let op het menu-item Privacy bij het bewerken van een brief). Lees meer over deze techniek in het artikel (zie “PC World”, nr. 3/02).

Rijst. 3

Cryptografie

Cryptografie is de wetenschap van de principes, middelen en methoden voor het transformeren van informatie om deze te beschermen tegen ongeoorloofde toegang en vervorming. IN de laatste tijd het ontwikkelt zich heel, heel snel. Het is een nooit eindigende, spannende race die veel tijd en moeite vergt: cryptanalisten kraken algoritmen die tot voor kort standaard waren en veel gebruikt werden. Overigens hebben de wiskundigen Dan Goldston (VS) en Kem Ildirim (Türkiye) onlangs de eerste regelmaat in de verdeling van priemgetallen bewezen (dergelijke regelmaat was tot nu toe niet opgemerkt). Priemgetallen bevinden zich in bepaalde clusters op de getallenas, waardoor ze wat makkelijker te vinden zijn.

Wiskundig onderzoek over de hele wereld leidt voortdurend tot nieuwe ontdekkingen. Wie weet staan ​​we op het punt het RSA-algoritme of andere cryptosystemen te doorbreken op basis van onopgeloste wiskundige problemen.

Oleg Bunin- specialist in softwareontwikkeling voor grote internetprojecten, medewerker van het bedrijf Rambler, http://www..htm).

  • Inleiding tot cryptografie / Ed. V.V. Jasjtsjenko. M.: MTsNMO, 2000.
  • Nosov V. A. Een kort historisch overzicht van de ontwikkeling van cryptografie // Proceedings of the conference "Moscow University and the development of cryptography in Russia", MSU, 17-18 oktober 2002.
  • Salomaa A. Cryptografie met openbare sleutels. M., 1996.
  • Zimmerman F. PGP - encryptie met publieke sleutels voor iedereen.
  • Caesar-cijfersysteem

    Een voorbeeld van een vervangingsalgoritme is het Caesar-coderingssysteem. Deze methode is gebaseerd op het vervangen van elke letter van het bericht door een andere, door een vast aantal tekens van het origineel af te wijken. Probeer het kwatrijn van Omar Khayyam te ontcijferen (invultijd - 10 minuten).

    Rlz yomeyz avbzhu iyzavlu, bzhschlu zhschezzhz zhuoschz, eysh yshchazhfo iyshchyvesh bshchizhv eesh zhschrschg: lf emrsyu ъzezeschg, ryu ryu rlz izishsch Yuklu K Duyo Izishchez.

    Heb je het gehaald? Hier is het antwoord:

    Om verstandig te leven moet je veel weten,

    Twee belangrijke regels onthoud om te beginnen:

    Je verhongert liever dan dat je iets eet,

    En het is beter om alleen te zijn dan met zomaar iemand.

    Decoderingssleutel: schuif zeven tekens (neem de zevende) alfabetisch naar links. Het alfabet is voorzien van een lus. Hoofdlettergebruik is niet gevoelig.

    Windows en wachtwoorden

    Hoe codeert Windows wachtwoorden?

    Het systeem neemt het wachtwoord en zet het om in hoofdletters, snijdt maximaal 14 tekens bij, verdeelt ze vervolgens in twee helften van 7, codeert ze elk afzonderlijk en slaat ze op deze manier op, wat het hacken iets gemakkelijker maakt. Houd er overigens bij het bedenken van een wachtwoord rekening mee dat een combinatie langer dan 14 tekens weinig betekenis heeft.

    AES-wedstrijd (Advanced Encryption Standard).

    In de jaren 80 in de VS hebben ze een symmetrische encryptiestandaard voor intern gebruik aangenomen - DES ((Data Encryption Standard, er is een vergelijkbare standaard in Rusland). Maar in 1997, toen duidelijk werd dat de 56-bits DES-sleutel niet genoeg was voor een betrouwbare cryptosystem kondigde het American Standards Institute een competitie aan voor een nieuw standaardalgoritme. Van de vijftien opties werd de beste gekozen: het Belgische algoritme Rijndael (de naam is samengesteld uit de namen van de auteurs – Rijmen en Daemen, gelezen als ‘Rijndael’). Dit algoritme is al ingebouwd in verschillende cryptografische middelen op de markt gebracht). Andere finalisten van de competitie waren MARS, RC6, Serpent, TwoFish. Al deze algoritmen bleken behoorlijk robuust te zijn en met succes tegen alles bestand te zijn bekende methoden cryptoanalyse.

    Cryptografische hashfuncties

    Cryptografische hashfuncties zetten invoer van elke grootte om in een string vaste maat. Het is uiterst moeilijk om voor hen te vinden:

    • twee verschillende datasets met hetzelfde transformatieresultaat (botsweerstand); bijvoorbeeld hoeveelheid rekenkundige bewerkingen, nodig om een ​​datablok te vinden dat dat ook heeft kort bericht voor de MD5-hashfunctie is dit ongeveer 2 64;
    • invoerwaarde gebaseerd op een bekend hashresultaat (onomkeerbaarheid); voor MD5 het geschatte aantal handelingen dat nodig is voor de berekening origineel bericht, gelijk aan 2.128.