Introductie in cryptografie

ArticleCategory:

System Administration

AuthorImage:

Pierre Loidreau

TranslationInfo:[Author and translation history]

original in fr Pierre Loidreau

fr to en Axelle Apvrille

en to nl Hendrik-Jan Heins

AboutTheAuthor

Pierre werkt als docent/onderzoeker aan de ENSTA (Ecole Nationale Supérieure de Techniques Avancées). Zijn onderzoeksveld omvat "cryptosystemen" gebaseerd op de theorie van foutcorrectie codes. hij "speelt" dagelijks met Linux... en tennist vrij veel.

Abstract:

Dit artikel is eerder gepubliceerd in een speciale editie van Linux Magazine France over beveiliging. De editor, de auteurs en de vertalers waren zo vriendelijk om LinuxFocus ieder artikel van deze speciale editie te laten publiceren. LinuxFocus zal deze zodra ze naar het Engels vertaald zijn ter beschikking stellen. Dank aan alle mensen die zich bezig houden met dit werk. Deze samenvatting zal worden gebruikt voor alle artikelen met dezelfde oorsprong.

ArticleIllustration:

mail

ArticleBody:[The article body]

Waarom cryptografie - 2500 jaar geschiedenis.

De oorsprong van cryptografie gaat waarschijnlijk terug tot de begintijd van de menselijke beschaving, vanaf het moment dat mensen leerden te communiceren. Ze moesten contunu zoeken naar middelen om er zeker van te zijn dat gecommuniceerde geheimen ook geheim bleven. Het eerste opzettelijke gebruik van technische middelen om berichten te coderen, is terug te vinden bij de Grieken. Rond 6 jaar voor Christus werd er bij hen een stok genaamd de "scytale" gebruikt. Degene die het bericht stuurde, bond een stuk papier om de stok en schreef er in de lengterichting een bericht op. Daarna haalde hij het papier van de stok en stuurde het naar de bedoelde ontvanger. Het decoderen van het bericht zonder kennis van de dikte van de stok -die hier de sleutel is- zou vrijwel onmogelijk moeten zijn. Later maakten de Romeinse legers gebruik van Caesar's code om te communiceren (een drie posities alfabet-verplaatsing, dus voor een "a" een "d" en voor een "d" een "g").

In de volgende 19 eeuwen zijn er meer en minder geavanceerde experimentele coderings-technieken verzonnen, waarbij de veiligheid afhing van hoeveel vertrouwen de gebruiker er in had. In de 19e eeuw schreef Kerchoffs over de principes van de moderne cryptografie. Een van die principes zegt dat de veiligheid van een cryptografisch systeem niet afhangt van het gebruikte cryptografische proces, maar van de gebruikte sleutel.

Dit zijn dus belangrijke randvoorwaarden die worden gesteld aan cryptografische systemen. De bestaande systemen misten echter nog steeds een mathematische achtergrond, en dus ook de greeedschappen om te meten hoe gevoelig ze waren voor aanvallen en kraak-pogingen. Het zou nog mooier zijn als iemand een 100% veilig systeem zou kunnen maken, het absolute einddoel! In 1948 en 1949 werd er een wetenschappenlijke achtergrond opgesteld door Cluade Shannon, hij schreef twee essay's over het onderwerp: "A Mathematical Theory of Communication" en, nog belanrijker "The Communication Theory of Secrecy Systems". Deze artikelen maakte een einde aan hoop en vooroordelen. Shannon bewees dat Vernam's codering - ook bekend als het "One Time Pad" -, die slechts een paar jaar eerder was voorgesteld, de enige onvoorwaardelijk veilige methode was die oit zou kunnen worden ontwikkeld. Helaas echter is dit systeem in de praktijk onwerkbaar... Dit is de reden waarom evaluatie van de huidige systemen gebaseerd is op te berekenen veiligheid. Een geheime versleutelmethode is pas veilig als geen enkele bekende berekenmethode beter en sneller werkt dan een oneidig aantal pogingen tot de correcte sleutel gevonden is.

AES (Advanced Encryption Standard)

In oktober 2000 heeft het Amerikaanse NIST (National Institute of Standards and Technology) de goedkeuring van een nieuwe geheime versleutelcode aangekondigd, die is gekozen uit 15 kandidaten. Dit nieuwe standaard algoritme is bedoeld als vervanging van het oude DES algoritme waarvan de sleutellengte te klein begon te worden. Rijndael - een samengetrokken naam van de uitvinders, Rijmen en Daemen- werd uitgekozen als de toekomstige AES.

Dit encryptiesysteem is een zogenaamde "block" cipher, dit houdt in dat berichten worden gecodeerd met behulp van 128-bit blokken. Er bestaan meerdere mogelijkheden voor de blokgrootte, zoals 128, 192 of 256 bit sleutels. Ter informatie: DES codeert 64 bit blokken met een sleutel van slechts 56 bit. Triple DES codeert normaal gesproken 64 bit blokken met een 112-bit sleutel.

AES

Tabel 1: AES iteraties

De werking van AES is beschreven in figuur 1. Allereerst wordt het bericht bitsgewijs, dus bit per bit, gewijzigd volgens een logische XOR bewerking met de sleutel. Daarna wordt, zoals bij alle block-coderingen, de fucntie F steeds herhaald, waarbij subsleutels worden gebruikt die berekend worden uit de eerste sleutel d.m.v. een expansie routine.

Voor AES wordt de functie F 10 maal geïtereerd.
F function

Tabel 2: Functie F

Laten we nu eens in het kort kijken naar hoe substituties worden opgebouwd, en welke constante ai deze voor bedoeld is. Technisch gezien - en voor de eenvoudigheid - moet een byte worden gezien als een element uit een set van 256 elementen (een eindig veld genaamd) en daarop worden allerlei eenvoudige operaties (zoals additie, vermenigvuldiging en hun inversen) losgelaten.
In feite is de substitutie S, zoals eerder genoemd een inverse in zo'n veld. Substitutie P is aangegeven als een zeer eenvoudige operatie en kan daarom ook eenvoudig worden geïmplementeerd. Element ai correspondeert met een machtsverheffing i met een element uit het veld. Zulke overwegingen maken de implementaties van AES zeer efficiënt.

AES bestaat uit slechts twee zeer eenvoudige bytegewijze operaties, wat AES twee grote voordelen oplevert:
Key expansion routine

Tabel 3: Sleutel expansie routine

Publieke sleutel cryptografie

In 1976 publiceerden Diffie en Hellman een artikel ganaamd "New Directions in Cryptography", dit was een echt nieuwtje in de cryptografiegemeenschap. Dit artikel introduceert het concept van de publieke sleutel cryptografie. In feite was de enige familie van toen bekende algoritmen - symmetrische sleutel algoritmen - niet meer voldoende, er waren nieuwe toepassingsgebieden ontstaan door de explosieve groei in communicatiemethoden, zoals netwerken, waardoor deze algoritmes niet langer voldeden.

In feite was de kern van het nieuwe idee het concept van een eenrichtings-valdeur (trapdoor) functie. Zulke functies zijn eenvoudig in één richting te bedienen, maar zijn onmogelijk te inverteren zonder kenis te hebben van de valdeur - ook al is de functie zelf algemeen bekend. Nu dient de publieke sleutel als functie, terwijl de valdeur (alleen bekend bij een beperkt aantal gebruikers) een private sleutel genoemd wordt. Dit leidde tot de geboorte van Alice en Bob (en anderen). Alice en Bob zijn twe personen die proberen te communiceren en hun gesprek intact trachten te houden, ze willen geen inmenging van derden die proberen af te luisteren of de communicatie willen vervalsen.

Om het bericht te ontcijferen, hoeft de ontvanger alleen maar de functie te inverteren, met behulp van het valluik natuurlijk.

Het beste voorbeeld van een publieke sleutel cryptosysteem (en zeker de eenvoudigste) is twee jaar later, in 1978 gepresenteerd. Deze is uitgevonden door Rivest, Shamir en Adleman - afgekort dus RSA. Het is gebaseerd op het mathematische probleem van het tot een macht verheffen van gehele getallen. De private sleutel is opgebouwd uit een driedeel (p,q,d) met p en q als twee priemgetallen (van ongeveer dezelfde grootte), en d een relatief priemgetal met p-1 en q-1. De publieke sleutel bestaat uit een paar (n,e), met n=pq, en e het inverse van d modulus (p-1)(q-1), dus

ed = 1 mod(p-1)(q-1).



Stel dat Alice een tekst wil sturen naar Bob, gecodeerd met Bob's publieke sleutel (n,e). Ze transformeert de boodschap eerst in een geheel getal m kleiner dan n. Daarna doet ze het volgende
c = me mod n,


en stuurt het resultaat c door naar Bob. Aan zijn kant verwerkt Bob, wiens publieke sleutel (p,q,d) is:
cd mod n = med mod n = m.


Voor RSA is de valdeur functie de functie die een geheel getal x <n tot waarde xe mod n verandert.

Sinds RSA zijn er veel andere cryptosystemen met een publieke sleutel uitgevonden. Een van de bekendste hedendaagse alternatieven voor RSA is gebaseerd op discrete logaritmes.

Hedendaags gebruik van cryptografie

De publieke sleutel cryptografie is zeer interessant, omdat het eenvoudig te gebruiken is en het vele veiligheidsproblemen oplost die voorheen onopgelost waren gebleven. Het is meer bepaald een oplossing voor enkele authenticatie problemen: Net als de systemen met geheime sleutels kan publieke sleutel cryptografie de vertrouwelijkheid van een communicatie waarborgen.

Laten we er vanuitgaan dat Alice in het geheim wil communiceren met Bob. Alice haalt Bob's publieke sleutel op uit een publieke directory, en codeert haar bericht met deze sleutel. Zodra Bob deze gecodeerde tekst ontvangt, gebruikt hij zijn private sleutel om de gecodeerde tekst te ontcijferen, en leest hij het geschrevene. De beide sleutels spelen een zeer verschillende rol, daarom heet dit soort cryptografie ook asymmetrische versleuteling - cryptografie met dezelfde geheime sleutel voor het versleutelen en het decoderen staat bekend als symmetrische versleuteling.


Publieke sleutel cryptografie biedt nog een voordeel boven geheime sleutel cryptografie. Als n gebruikers communiceren met behulp van een geheime sleutel cryptografie systeem, heeft ieder van hen een andere geheime sleutel voor ieder ander in de groep nodig. Dus er moeten n(n-1) sleutels beheerd worden. Als n groter is dan enkele duizenden gebruikers, dan moeten er dus al miljoenen sleutels worden beheerd... Bovendien is het toevoegen van een nieuwe gebruiker aan de groep geen eenvoudige opgave, aangezien er n nieuwe sleutels moeten worden gemaakt zodat de gebruiker kan communiceren met de anderen in de groep. En daarna moeten al die sleutels ook nog eens worden verzonden aan alle leden van de groep. Bij asymmetrische cryptosystemen zijn alle n publieke sleutels van de leden opgeslagen in een publieke directory. Het toevoegen van en nieuwe gebruiker bestaat alleen maar uit het toevoegen van zijn publieke sleutel aan deze directory.

Het gebruik van een publieke of een geheime sleutel: het evenwicht zoeken

De voorgaande paragraaf heeft uitgelegd dat publieke sleutel cryptografie vele problemen heeft opgelost waarvoor private sleutel cryptografie niet toereikend was. Je kunt je afvragen waar AES eigenlijk voor is ontwikkeld. Er zijn echter twee belangrijke verklaringen voor deze keuze. Dit betekent dus dat voor pure versleutelingstoepassingen de voorkeur uitgaat naar geheime sleutel algoritmen -als het mogelijk is om deze te gebruiken. Zimmermann heeft aan een interessante hybride opsossing gewerkt, deze is geïmplementeerd in PGP. Als Allice en Bob met elkaar willen communiceren met behulp van een symmetrisch algoritme (PGP maakt gebruik van IDEA), verloopt de communicatie als volgt: Zodra ze uitgecommuniceerd zijn, wordt de onderhandelde 'sessiesleutel' weggegooid. Zo'n systeem maakt gebruik van zowel een geheime sleutel als een publieke sleutel. Meestal wordt het sleutel uitwissel protocol gezien als het minst veilige deel van het systeem

Bibliografie

Geschiedenis van cryptografie: Over AES:
Cryptografie in het algemeen:

mirror server hosted at Truenetwork, Russian Federation.