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