Internettet: Kryptering og offentlige nøgler
Hej, Mit navn er Mia Gil-Epner, jeg har computervidenskab som hovedfag ved
UC Berkeley og jeg arbejder for forsvarsministeriet,
hvor jeg prøver at holde information sikker.
Internettet er et åbent og offentligt system.
Vi sender og modtager alle over delte ledninger og forbindelser.
Men selv om det er et åbent system, udveksler vi stadig en masse privat data.
Ting som kreditkortnumre, bankoplysninger, adgangskoder og e-mails.
So hvordan holdes alle disse private ting hemmelige?
Al slags data kan holdes hemmelig via en proces, der hedder kryptering,
kodning eller ændring af beskeden for at skjule den oprindelige tekst.
Dekryptering er processen, hvorved den besked afkodes, så den er læselig.
Det er en simpel ide, og folk har gjort det i århundreder.
Et af de første velkendte krypterings- metoder var Cæsaralgoritmen.
Opkaldt efter Julius Cæsar, en romersk general, der krypterede sine militære
kommandoer for at sørge for, hvis en besked blev opfanget af fjender,
at de ikke ville kunne læse den.
Cæsaralgoritmen er en algoritme, der udskifter hvert bogstav i den oprindelige
besked med et bogstav et vist antal trin længere nede i alfabetet.
Hvis nummeret er noget, som kun senderen og modtageren kender, hedder det nøglen.
Den tillader læseren at låse op for den hemmelige besked.
F.eks. hvis din oprindelige besked er "HELLO", så vil brug af Cæsaralgoritmen
med en nøgle på 5 give denne krypterede besked...
For at afkode beskeden ville modtageren blot bruge nøglen og omvende processen.
Men der er et stort problem med Cæsaraloritmen, enhver kan let bryde
eller knække den krypterede besked ved at prøve hver mulige nøgle, og i det engelske
alfabet er der kun 26 bogstaver, hvilket betyder, at du højst behøver prøve
26 nøgler for at afkode beskeden.
Det er ikke svært at prøve 26 nøgler, og ville højst tage en time eller to.
Så lad os gøre den sværer. I stedet for at flytte hvert bogstav med samme afstand lad
os flytte hvert bogstav en forskellig afstand.
I dette eksempel viser en ti-ciffernøgle, hvor mange positioner hvert efterfølgende
bogstav vil ændres for at kryptere en længere besked.
Det ville være rigtig svært at gætte denne nøgle.
Med ti-cifferkryptering kunne der være 10 milliarder mulige nøgleløsninger.
Dette er naturligvis mere end noget menneske kunne løse,
det ville tage mange århundreder.
Men for en gennemsnitlig computer i dag, ville alle 10 milliarder muligheder
blot tage nogle få sekunder.
Så i en moderne verden, hvor skurkene har computere i stedet for blyanter, hvordan
kan du kryptere beskeder sikkert nok til at gøre dem for svære at bryde?
Nu betyder "for svær" at der er for mange muligheder at beregne i en rimelig tid.
Nutidens sikre kommunikationer krypteres med 256-bit nøgler.
Det betyder at en skurks computer, der opfanger din besked, ville blive nødt til
at prøve denne mængde mulige løsninger, indtil de finder nøglen og bryder koden.
Selv hvis du havde 100.000 supercomputere og hver af dem kunne prøve
en million milliarder nøgler hvert sekund, ville det tage billiarder af billiarder af
billiarder af år for dem at prøve hver mulighed for kun at læse en enkelt besked.
beskyttet med 256-bit kryptering.
Naturligvis bliver computerchips dobbelt så hurtige og halvt så store ca. hvert år.
Hvis en sådan eksponentiel fremgang fortsætter, vil nutidens umulige problemer
blive løselige om blot et par hundrede år, og 256 bit vil ikke være sikkert nok.
Faktisk har vi allerede skullet øge nøglers standardlængde
for at holde trit med computernes hastigheder.
Den gode nyhed er, at en længere nøgle ikke gør det meget sværere at kryptere
beskeder, men øger eksponentielt antallet af gæt, det vil tage at bryde en kode.
Når afsender og modtager deler samme kode til kryptering og afkodning af en besked
hedder det symmetrisk kryptering.
Med en symmetrisk kryptering ligesom med cæsaralgoritmen, skal den hemmelige nøgle
aftales privat på forhånd af to mennesker.
Så det er fint for mennesker, men internettet er åbent og offentligt, så det
er umuligt for to computere at "mødes" privat for at aftale en hemmelig nøgle.
I stedet bruger computere asymmetrisk krypteringsnøgler, en offentlig nøgle, der
kan udveksles med alle og en privat nøgle, der ikke deles.
Den offentlige nøgle bruges til at kryptere data, og alle kan bruge den til
at skabe en hemmelig besked, men den hemmelighed kan kun afkodes af en computer
med adgang til den private nøgle.
Dette virker med lidt matematik, som vi ikke vil drøfte lige nu.
Forestil dig det, som om du har en personlig postkasse, som alle kan lægge
post i, men de skal bruge en nøgle for at gøre det.
Du kan lave mange kopier af postnøglen og sende én til din ven,
eller bare gøre den offentligt tilgængelig.
Din ven eller sågar en fremmed kan bruge den offentlige nøgle til at få adgang til
din brevsprække og lægge en besked i, men kun du kan åbne postkassen med din private
nøgle for at få adgang til alle de hemmelige beskeder, du har modtaget.
Og du kan sende en sikker besked tilbage til din ven ved at bruge de offentlige
postnøgler til deres postkasse.
På denne måde kan folk udveksle sikre beskeder uden at aftale en privat nøgle.
Assymetrisk kryptering danner grundlag for alle sikre beskeder
på det åbne internet; inklusive sikkerhedsprotokollerne kendt som
SSL og TLS, der beskytter os, når vi browser internettet.
Din computer bruger den i dag, hver gang du ser den lille lås,
eller bogstaverne https i din browsers addresselinje.
Det betyder at din computer bruger assymetrisk kryptering til dataudveksling
på sikker vis med websiden, som du er på.
Idet flere folk kommer på internettet, vil mere og mere privat data blive sendt,
og behovet for at sikre den data vil blive endnu vigtigere.
Og eftersom computere bliver hurtigere og hurtigere, vil det blive nødvendigt at
udvikle nye måder at gøre kryptering for svær for computere at bryde.
Det er, hvad jeg gør i mit arbejde, og det ændrer sig altid.