Introductie Cryptografie - Deel 2
In deel 1 hebben we cryptografie scenario's en versleuteling besproken. Laten we nu eens dieper ingaan op de verschillende versleutelmethodes. Ook kijken we even een stukje in de geschiedenis.
Het ontstaan van ‘encryptie’ kent al zijn oorsprong ver voor Christus. Al spreekt men eigenlijk van steganografie (het verbergen van een boodschap). Het bekendste verhaal hierover is wel van de Griekse schrijver Herodotus. Herodotus vermeldt dat een zekere Histaeius een geheim bericht had verzonden door het haar van één van zijn slaven te scheren en vervolgens een boodschap op zijn hoofdhuid te tatoeëren. Ten slotte wachtte hij tot zijn haar weer aangroeide en transporteerde zo het bericht. Steganografie wordt heden ten dage nog steeds gebruikt. Het bekendste voorbeeld is het verbergen van een boodschap in foto's.
Julius Caesar is de grondlegger van de symmetrische sleutel. Hij bedacht het Caesar Cijfer (Caesar Cipher) waar de letters van het alfabet met x plaatsen opgeschoven werden. De enige sleutel die dan nodig is om de boodschap te ontcijferen, is deze x (het algoritme). Theoretisch is deze vorm van coderen niet te kraken. Maar omdat x hoogstens 26 kan zijn, zijn er ook maar 26 sleutels mogelijk. Door het alfabet te vergroten, met cijfers en leestekens, kun je het aantal mogelijke sleutels vergroten.
In de eeuwen erna zijn de cryptografie technieken steeds verbeterd om de kraakbaarheid te verkleinen. Min of meer bekende voorbeelden zijn het Vigenére systeem en Enigma. Moderne computeralgoritmes (set instructies) voor symmetrische cryptografie zijn AES, 3DES, IDEA en RC4.
Asymmetrische cryptografie werkt op basis van priemgetallen. Meestal worden priemgetallen gekozen van 1024 bits (ongeveer 308 decimale cijfers) of hoger, deze worden gegenereerd door een willekeurig getal tussen bepaalde grenzen te testen tegen een van de algoritmes. De priemgetallen worden ontbonden in priemfactoren. Het probleem van ontbinden in priemfactoren is dat er geen standaardformule voor te gebruiken is. De snelste algoritmes doen over een getal van 200 cijfers enkele minuten. Dit staat wel in schril contrast met ontbinden in priemfactoren waar het miljarden jaren zou duren om een getal van 200 cijfers in priemfactoren te ontbinden. En daar ligt net de kracht van veel cryptografie technieken. Het steunt op de nog niet ontdekte, geheime, wiskundige formule om snel een getal in priemgetallen te ontbinden. Voorbeelden hiervan zijn RSA en RSA-AES.
Asymmetrische cryptografie is een trage techniek ten opzichte van symmetrische cryptografie. Daarom wordt asymmetrische versleuteling vaak alleen toegepast voor het opzetten van de verbinding zodat de session key (symmetrisch) veilig getransporteerd kan worden tussen zender en ontvanger. Deze hybride cryptografie werkt als volgt: het bericht wordt symmetrisch versleuteld, de sleutel hiervan wordt asymmetrisch versleuteld en doorgegeven aan de ontvanger. Hierbij wordt de snelheid van de symmetrische versleuteling gecombineerd met de moeilijk kraakbare trage asymmetrische versleuteling van de sleutel.
Hashes
Zoals in deel 1 al aangekaart, zijn hashes geen vorm van encryptie. Anders dan bij encryptie wordt de plaintekst niet vertaald naar hetzelfde aantal karakters maar steeds naar een bepaald aantal bits afhankelijk van de gebruikte hash-functie. Aangezien een hash een ‘one-way’-operatie is en niet gereconstrueerd kan worden, wordt het niet tot de cryptografie gerekend. Een kleine wijziging in de originele tekst heeft een compleet andere hash als gevolg:
Bestand 1 | Dit is een kort stukje tekst | 63f037989875511108bb1faea7606b96 |
Bestand 2 | dit is een kort stukje tekst | c3151e452e53f0f2c8970aa880652eed |
Hashes worden om verschillende nuttige reden gebruikt en soms gecombineerd met cryptografie:
- Authenticiteit (verifiëren of het origineel niet aangepast is).
- Password hashen (zodat het wachtwoord niet opgeslagen hoeft te worden).
- Digitale handtekeningen (eventueel gecombineerd met cryptografie).
Er bestaan verschillende hash functies waarvan LM/NTLM, MD5 en SHA-1/SHA-2 de bekendste zijn.
MD5 is niet meer zo veilig omdat hier collisions berekend kunnen worden. Collisions zijn twee verschillende teksten met dezelfde hash, hierdoor kan een origineel gemanipuleerd worden zonder dat de hash anders is. De LM-hash is zeer onveilig. De NTLM hash is redelijk veilig.
Door de wachtwoord hashes te vergelijken met hashes van gemakkelijke en gelekte wachtwoorden (zoals in de hash- of rainbow tables) kan gecontroleerd worden op zwakke wachtwoorden van de loginaccounts in het domein.
PGP/GPG
Een andere bekende toepassing van hybride encryptie is PGP/GPG. OpenPGP is een afgeleide van PGP en is ontwikkeld door de OpenPGP Working Group van de IETF (Internet Engineering Task Force). PGP wordt gebruikt voor encryptie, digitaal ondertekenen of beide. Er zijn tegenwoordig veel programma's, zowel commercieel als open source, die deze standaard implementeren en ook grotendeels onderling compatibel zijn. In tegenstelling tot SSL/TLS certificaten, is met deze techniek niet gegarandeerd dat met de juiste partij een beveiligde vertrouwde verbinding wordt opgezet en/of data wordt uitgewisseld. Dit betekent dat niet automatisch de sleutel toebehoort aan de persoon aan wie wij denken dat hij behoort. Om dit te ondervangen is "web-of-trust" bedacht. Het gedecentraliseerde vertrouwensmodel van web-of-trust (WOT) is een alternatief voor het gecentraliseerde vertrouwensmodel van een public key infrastructure (PKI), dat uitsluitend afhankelijk is van een certificerings-instantie (of een hiërarchie daarvan).
Ben Willemsen