-
Het internet: codering en openbare sleutels
-
Hallo ik ben Mia Gil-Epner, ik studeer
Informatica op UC Berkeley, en ik werk
-
voor Defensie, waar ik probeer informatie
veilig te houden. Het internet is
-
een open en openbaar systeem. We versturen
en ontvangen allemaal informatie over
-
gedeelde kabels en verbindingen. Maar
hoewel het een open systeem is, wisselen
-
we nog steeds veel privé informatie uit. Zaken zoals creditcard-
nummers, bankinformatie, wachtwoorden en e-mails.
-
Hoe worden al deze privé zaken geheim gehouden?
Data van elk type kan geheim worden gehouden
-
door een proces dat codering wordt genoemd,
het vervormen of wijzigen van het bericht
-
om de originele tekst te verbergen. Decoderen is het
omgekeerde proces, dat is het weer leesbaar maken.
-
Dit is een eenvoudig idee, en mensen doen
dit al eeuwen. Een van de eerste bekende
-
methoden van coderen was de Caesarcijfer.
Genoemd naar Julius Caesar, een Romeinse
-
generaal die zijn militaire bevelen
codeerde om ervoor te zorgen dat als een
-
bericht door de vijand werd onderschept,
deze dat niet kon lezen. De Caesarcijfer is
-
een algoritme dat elke letter in het originele
bericht vervangt door een letter die wat
-
later in het alfabet voorkomt. Als het cijfer iets
is dat alleen de verzender en ontvanger
-
weten, dan wordt het de sleutel genoemd.
Het stelt de lezer in staat om het geheime
-
bericht te decoderen. Als je originele bericht "HALLO"
is dan zal het met een Caesarcijfer-algoritme
-
met een sleutel van 5 er uitzien als... Voor het decoderen
van het bericht hoeft de ontvanger alleen maar de sleutel
-
te gebruiken om het proces om te keren. Maar er zit
een groot nadeel vast aan de Caesarcijfer: iedereen
-
kan makkelijk het gecodeerde bericht ontcijferen door
elke mogelijke sleutel te proberen, en in het alfabet
-
zitten slechts 26 letters, en dat betekent
dat je slechts 26 letters hoeft te proberen om
-
het bericht te decoderen. Het proberen te decoderen
van 26 mogelijke sleutels is niet erg moeiljk.
-
Het kost je hooguit een uur of twee. Laten we het daarom
moeiljker maken. Inplaats van elke letter met dezelfde hoeveelheid
-
te verschuiven, laten we elke letter verschuiven
met een andere hoeveelheid. In dit voorbeeld toont
-
een sleutel van tien cijfers hoeveel posities elke opvolgende
letter wordt verandert om een langer bericht te coderen.
-
Het raden van deze sleutel wordt echt erg moeilijk. Met een
tiencijferige codering zijn er 10 miljard mogelijke sleutels.
-
Dat is duidelijk meer dan een mens kan hopen op te lossen,
dat zou vele eeuwen duren.
-
Maar de gemiddelde moderne computer heeft slechts enkele
seconden nodig om alle 10 miljard mogelijkheden uit te proberen.
-
Dus hoe kun je in de moderne wereld waar
de schurken gewapend zijn met computers
-
in plaats van potloden, je bericht zo veilig coderen
dat ze te moeilijk zijn om te kraken? Met te moeilijk
-
wordt bedoeld dat er te veel mogelijkheden zijn
om in een redelijk tijdsbestek te berekenen.
-
Moderne communicatie wordt gecodeerd met 256-bit
versleuteling. Dat betekent dat de computer van een schurk
-
die jouw bericht onderschept al deze
mogelijke opties moet proberen... totdat deze
-
de sleutel ontdekt en het bericht kan kraken. Zelfs
als je 100 duizend supercomputer hebt, en elk
-
van hen in staat is om een miljarden sleutels elke
seconde te proberen, dan nog zou het triljoenen
-
jaren duren om elke optie te proberen, gewoon om een
enkel bericht beschermt door 256 codering te kraken.
-
Natuurlijk worden computerchips elk jaar
twee keer zo snel en de helft kleiner of zo.
-
Als die snelheid van exponentiële groei aanhoudt,
dan zijn de onoplosbare problemen van vandaag
-
binnen enkele honderden jaren op te lossen
en zijn 256 bits niet voldoende om veilig te zijn.
-
In feite hebben we reeds de standaard sleutellengte langer
moeten maken om de snelheid van computers bij te houden.
-
Het goede nieuws is dat het gebruik van een langer sleutel
het coderen van berichten niet moeilijker maakt, maar
-
het vergroot exponentieel het aantal gissingen
nodig om een versleuteling te kraken.
-
Als de afzender en ontvanger dezelfde sleutel delen
om een bericht te vervormen en te decoderen
-
dan heet dat Symmetrische codering. Dankzij Symmetrische codering,
en net als Caesarcijfer, moet de geheime sleutel
-
van tevoren overeen zijn gekomen door twee mensen in een
privé gesprek. Dat is fijn voor mensen, maar het internet
-
is een open en openbare ruimte, en dus kunnen twee
computer elkaar niet privé "ontmoeten" om een geheime
-
sleutel overeen te komen. In plaats daarvan maken
computers gebruik van Asymmetrische versleuteling,
-
een openbare sleutel die met iedereen kan worden uitgewisseld
en een privé sleutel die niet wordt gedeeld. De openbare sleutel
-
wordt gebruikt om data te coderen en iedereen kan deze
gebruiken om een geheim bericht te creëren, maar het
-
geheim kan alleen worden gedecodeerd door een computer
met toegang tot de privé sleutel. Dit werkt met wat wiskunde
-
waar we nu niet op in gaan. Maar stel je voor dat je een privé
brievenbus hebt waar iederen post in kan doen
-
maar daarvoor wel een sleutel nodig heeft.
Je kunt veel duplicaten
-
maken van de depotsleutel en deze naar je
vriend sturen of openbaar beschikbaar stellen.
-
Je vriend of zelfs een vreemde kan de openbare sleutel
gebruiken om de postgleuf te openen en er post
-
in te doen. Maar alleen jij kan de brievenbus openen
met je privé sleutel om toegang te krijgen tot alle
-
geheime berichten die je hebt ontvangen. En je kunt
beveiligd bericht naar je vriend terugsturen
-
door de openbare depotsleutel van zijn brievenbus te gebruiken.
Op deze manier kunnen mensen beveiligde berichten uitwisselen
-
zonder ooit overeenstemming te bereiken over een privé sleutel.
Cryptografie voor openbare sleutels is het fundament
-
van alle beveiligde berichtgeving op het open internet.
Inclusief de beveiligingsprotocollen die bekend staan als
-
SSL en TLS, die ons beschermen als we op het web
surfen. Je computer gebruikt dit tegenwoordig
-
elke keer als je het kleine slotje of de letters
HTTPS inde adresbalk van je browser zit staan.
-
Dit betekent dat je computer gebruik maakt van
openbare versleuteling om data veilig te uit te wisselen
-
met de website waar je op zit. Hoe meer mensen
er op het internet komen, hoe meer privé data
-
zal worden overgebracht, hoe belangrijker
de behoefte om die data te beschermen wordt.
-
Terwijl computers steeds sneller worden,
moeten wij nieuwe manieren ontwikkelen om codering
-
te moeilijk te maken voor computers om te breken. Dit is wat
ik doe met mijn werk, en het staat nooit stil.