Zonder moderne cryptografietechnieken zou het internet zoals wij dat kennen niet bestaan. Veilige communicatie maakt vrijwel alle online interactie mogelijk. Versleutelingsalgoritmen maken de veilige uitwisseling van gegevens en betrouwbare verificatie van identiteit mogelijk. Zonder deze gebruikelijke cryptografische tools zou onze moderne verbonden samenleving niet kunnen functioneren zoals vandaag.

Symmetrische sleutelversleutelingsalgoritmen

Symmetrische sleutel versleutelingsalgoritmen vertrouwen op een veilig wachtwoord om als sleutel te fungeren. Dit is de oudste vorm van codering. Symmetrische sleutels vormen de basis van alles, van combinatiesloten tot moderne harde schijf-codering. AES, DES en Blowfish zijn alle moderne symmetrische coderingsalgoritmen voor sleutels.

Omdat symmetrische codering een gedeelde sleutel vereist, moet de sleuteluitwisseling veilig worden uitgevoerd. Terwijl moderne technieken zoals de Diffie-Hellmen sleuteluitwisselingsvergunning een gedeeld geheim uitwisselen over onveilige lijnen, vereist dit aanzienlijke communicatieoverhead om dit te doen, evenals gedeeld vertrouwen tussen communicaties. Als een gedeelde sleutel niet veilig kan worden uitgewisseld, kan er geen communicatie plaatsvinden.

Hoewel symmetrische sleutelversleuteling wordt gebruikt in online communicatie, is het bijna altijd gepaard met encryptie van openbare sleutels, waardoor veilige communicatie via open kanalen mogelijk is.

Gerelateerd : PGP-versleuteling: hoe het werkt en hoe u aan de slag kunt

Asymmetrische sleutel (openbare sleutel) Versleutelingsalgoritmen

Asymmetrische codering of codering met openbare sleutels maakt gebruik van een paar cryptografische sleutels. Deze toetsen hebben wiskundig betrekking op elkaar. De openbare sleutel, die op grote schaal wordt gedeeld, codeert het bericht. De privésleutel ontsleutelt het bericht. Als gevolg hiervan kan elke verzender een bericht versleutelen met de openbare sleutel van een ontvanger. Dan kunnen ze er zeker van zijn dat alleen de beoogde ontvanger het bericht kan decoderen omdat partijen geen geheim delen; ze hebben geen vertrouwen nodig.

Als praktisch voorbeeld, overweeg deze analogie. Wat als Alice veilig met Bob wil communiceren, maar ze hem niet vertrouwt?

  1. Alice koopt een hangslot en een sleutelcombinatie. Ze ontgrendelt het hangslot met haar sleutel en stuurt het ontgrendelde hangslot naar Bob.
  2. Bob plaatst zijn bericht in een doos en gebruikt het hangslot van Alice om het te vergrendelen.
  3. Bob stuurt het gesloten vak terug naar Alice, beveiligd met Alice's hangslot.
  4. Alice opent de doos met de sleutel van het hangslot, die alleen zij bezit.

Om de communicatie te vergemakkelijken, kan Alice het ontgrendelde hangslot dupliceren en dit op grote schaal publiceren. Iedereen met het hangslot kan haar beveiligde communicatie verzenden. Met een voldoende complex slot kan een aanvaller de sleutel niet alleen uit het slot halen.

Beveiliging in (grote) cijfers

Om veilig te blijven, vertrouwen deze algoritmen op complexe hangslot / wiskundige problemen zonder bekende efficiënte oplossing. Deze hardnekkige problemen definiëren eenrichtingsfuncties: eenvoudig te berekenen in één richting maar uiterst moeilijk achterwaarts te berekenen. RSA, een veelgebruikte algoritme voor openbare sleutels, is gebaseerd op de moeilijkheid om priemgetallen van gehele getallen met honderden decimalen te vinden.

Om te beginnen genereert een RSA-gebruiker twee zeer grote priemgetallen. Deze getallen worden vervolgens vermenigvuldigd om het product te maken. De gebruiker bewaart de priemfactoren die de privésleutel vormen, een geheim. De gebruiker publiceert een openbare sleutel die is afgeleid van het product van het prime-paar. De openbare sleutel versleutelt berichten; de persoonlijke sleutel decodeert ze.

Zonder de priemfactoren te kennen, zou het vinden van de priemfactoren van het product een onhaalbare hoeveelheid tijd vergen. RSA-1024, de minimumnorm, gebruikt 1024-bits binaire producten die zijn gemaakt van 512-bits binaire primes. Volgens de wiskunde zou het 5.95 × 10 ^ 211 jaar nodig hebben om te factoreren zonder de sleutel. Voor het perspectief bestaat het universum slechts voor een relatief korte 13.75 x 10 ^ 19 jaar.

Hash-functies

Een hashfunctie vertaalt een bericht van willekeurige lengte naar een string met een vaste lengte, een hash of digest genoemd. Cryptografische hashes zijn deterministisch: dezelfde input produceert altijd dezelfde output. Zelfs kleine wijzigingen in het bericht resulteren in een dramatisch andere hash. Het ontdekken van twee unieke berichten die dezelfde hash-waarde produceren, een hash-botsing, zou niet haalbaar zijn.

Digitale handtekeningen en wachtwoordverificatie gebruiken beide hash-functies zoals SHA. In plaats van uw wachtwoord voor platte tekst te verifiëren, gebruiken inlogservers de hash van het wachtwoord. De server vergelijkt deze hash met de opgeslagen hash van de server. Dezelfde hash, hetzelfde wachtwoord.

Gezouten hash

Voor wachtwoordopslag voegen bedrijven meestal een 'zout' toe vóór hashing. Deze willekeurig gegenereerde string wordt aaneengeschakeld met de wachtwoordtekst vóór het hashen, en zorgt ervoor dat zelfs twee identieke wachtwoorden verschillende hashes produceren. Dit verdedigt ook tegen een woordenboekaanval op een gestolen tabel met gehashte wachtwoorden.

Conclusie

Tot de jaren 1970 was codering afhankelijk van symmetrische sleutels. Pas na het bewijs van openbare sleutelcodering kunnen twee verschillende sleutels - een versleuteling, een ontsleuteling - worden gebruikt om te communiceren. Deze revolutionaire verandering, die communicatie zonder vertrouwen mogelijk maakt, is wat het internet toestaat te bestaan ​​in de vorm die het vandaag de dag nodig heeft. Alles, van bankieren en winkelen tot messaging en surfen op het web, vertrouwt erop.