Så fungerar kryptering – och detta är största säkerhetshoten
Ju mer digitala våra liv har blivit, desto mer förlitar vi oss på olika former av kryptering för att skydda data och kommunikation. Så här fungerar det.
Kryptering är en av de områden inom teknik som har blivit en del av samhällsdebatten. Amerikanska federala polisen FBI:s försök att tvinga Apple att hjälpa till att bryta Iphones kryptering av lagrad data och vissa amerikanska politikers försök att lagstifta bort människors möjlighet till helt säker kryptering har placerat ämnet i det allmänna medvetandet.
Samtidigt är det få som verkligen förstår hur kryptering fungerar, inte minst bland lagstiftare. Missförstånd och desinformation riskerar att leda till nya lagar som orsakar långt mycket mer skada än den fördel de ger polisen vid brottsutredningar.
Hela den moderna digitala ekonomin står och faller med fungerande kryptering. När du öppnar en bankapp i mobilen krypteras all data som skickas mellan den och banken. När du surfar på nätet krypteras kommunikationen mellan webbläsaren och webbplatsernas servrar. När du håller fram mobilen för att utföra en kontaktlös betalning i en butik används flera lager av kryptering för att skydda hela processen.
I den här artikeln går vi igenom hur modern kryptering går till och förklarar varför det är omöjligt att bygga en säker bakväg för polisen.
Döljer information med matematik
Kryptering har alltid inneburit någon form av matematisk förvrängning av information så att andra inte ska kunna ta till sig den, även om de får tag i det krypterade meddelandet. Det är en av tre övergripande tekniker för att skydda information och kommunikation (de andra två är steganografi – att dölja hemliga meddelanden i annan kommunikation så att andra inte upptäcker den – och hemliga språk).
Tidiga krypton kunde till exempel byta ut varje bokstav i meddelandet mot den bokstav som ligger ett visst antal bokstäver senare i alfabetet. CAESAR med förskjutningen 5 blir då HFJXFW. Eftersom det är enkelt att testa sig fram till rätt förskjutning utvecklades mer och mer avancerade system, och mer och mer avancerade tekniker för att analysera.
Så sent som under andra världskriget användes fysiska kryptomaskiner som Enigma och kryptering var något enbart militär och statsmakter höll på med. Sedan datoråldern inleddes har kryptering blivit allt vanligare och i dag går de flesta av oss runt med en eller flera prylar som använder kryptering för att skydda lagrad information, kommunikation mot servrar på internet och direktkommunikation med andra prylar.
Det finns i dag många olika krypteringsalgoritmer (kallas också krypton eller schiffer) som kan delas in i två kategorier: Symmetriska och asymmetriska.
Ett symmetriskt krypto använder samma nyckel för att både koda ett meddelande och avkoda detsamma. Alla krypton fram till 1970-talet var symmetriska.
Den i dag vanligaste symmetriska algoritmen heter AES (advanced encryption standard) och är ett så kallat substitutions-permutationskrypto. Den data som ska krypteras delas in i block bestående 128 bitar (ettor och nollor) som placeras i en matris (4×4). Sedan utförs en serie matematiska operationer på denna matris där den hemliga nyckeln blandas in i siffrorna. För att dekryptera utförs alla stegen helt enkelt i omvänd ordning och vips framkommer det ursprungliga meddelandet i klartext.Foto: Jeff Moser (CC BY 3.0)En illustration av hur AES-kryptering faktiskt går till. Mycket matte blir det… Algoritmen utvecklades för att försvåra kryptoanalys genom att till exempel se till att små skillnader mellan två meddelanden leder till vitt skilda kryptotexter. Det finns inga kända metoder för att bryta AES, och det skulle ta miljarder år för världens samlade datorer att slumpvis testa sig fram till rätt nyckel.
Ett asymmetriskt krypto har två olika nycklar: När den ena nyckeln används för att koda ett meddelande kan bara den andra nyckeln avkoda det, och tvärt om. Med ett sådant krypto kan du generera ett nyckelpar, behålla den ena nyckeln som din privata nyckel och dela den andra med hela världen som din publika nyckel. Om någon vill skicka dig ett hemligt meddelande krypterar hen det med din publika nyckel – då kan bara du som har den privata nyckeln dekryptera det.
Asymmetriska algoritmer är till exempel RSA, Diffie-Hellman-nyckelutbyte och elliptiska kurvor-krypton. Gemensamt för alla dessa är att de bygger på beräkningar som är enkla att göra åt ena hållet men inte åt andra, så kallade enkelriktade funktioner.
RSA använder sig av problemet att hitta primfaktorer för stora heltal. Att multiplicera två stora primtal är enkelt, men att hitta dessa två primfaktorer om du bara känner till produkten är ett problem utan någon existerande effektiv lösning. Diffie-Hellman förlitar sig på svårigheten att beräkna så kallade diskreta logaritmer.
I verkligheten används ytterst sällan asymmetriska krypton med utbytbara nycklar. RSA till exempel lagrar de hemliga primfaktorerna direkt i den privata nyckeln, vilket gör att den som har den privata nyckeln kan räkna ut den publika nyckeln.
Kryptering med en privat nyckel som sedan dekrypteras med den publika nyckeln används istället för en annan mycket viktig funktion på nätet: Autentisering. När du besöker en säker webbplats (https, hänglås i adressfältet) bevisar servern att den är äkta via ett så kallat certifikat. I certifikatet ingår en signatur som har krypterats med företagets privata nyckel och bara kan låsas upp med den publika nyckeln. Den publika nyckeln lagras och certifieras i sin tur av en så kallad certifikatutfärdare, till exempel Identrust, Digicert och Let’s Encrypt.
Men hur funkar det?
Många är fascinerade av asymmetrisk kryptering, men att förstå matematiken bakom är inte det enklaste. Vi ska försöka beskriva Diffie-Hellman-nyckelutbyten så enkelt som möjligt.
Inom kryptering är det vanligt att illustrera hur olika schiffer fungerar med tre figurer: Alice och Bob som försöker skicka hemliga meddelanden till varandra, och Eve som tjuvlyssnar och vill veta vad de pratar om. Med Diffie-Hellman kan Alice och Bob skapa en gemensam hemlig nyckel som de sedan kan använda för att kryptera meddelanden (med en annan krypteringsalgoritm, till exempel AES).
Modulo, eller modulär aritmetik, kan enklast beskrivas som att räkna med klockan. Om klockan är 20:00 och du ska gå upp om 11 timmar, när går du upp? 20 + 11 = 31 men du går förmodligen upp klockan 07:00. Det kan matematiskt skrivas som 20 + 11 = 31 ≡ 7 (mod 24).
Alice och Bob kommer överens om en bas g och en modulo p, där p är ett stort primtal.
De väljer slumpmässigt var sitt stort heltal, a respektive b.
Alice beräknar ga mod p = A och Bob beräknar gb mod p = B. Resultaten skickar de öppet till varandra.
Alice beräknar sedan Ba mod p = S och Bob beräknar Ab mod p = S.
Nu har både Alice och Bob fått fram samma tal, S, som är den hemliga nyckeln.
Om Eve har tjuvlyssnat på all kommunikation mellan Alice och Bob kommer hon känna till g, p A och B. Säkerheten i algoritmen ligger i svårigheten för Eve att beräkna S utan att känna till a och b. Värdena p, a och b måste vara rejält stora för att Eve inte ska gissa sig fram till lösningen.En illustration av hur ett hemligt nyckelutbyte går till med Diffie-Hellman-tekniken. Både asymmetrisk och symmetrisk kryptering används flitigt, ofta i samspel. När du surfar in på en bank eller en annan säker webbplats används ett asymmetriskt krypto för att utbyta en nyckel till ett symmetriskt krypto, som i sin tur används för att koda alla information som skickas mellan dig och servern under den pågående sessionen. Det fungerar så här eftersom symmetriska krypton är mycket mindre beräkningsintensiva – de drar helt enkelt mindre ström. Kryptering av lagrad information använder nästan alltid symmetriska krypton som AES.
Lösenord och kryptering
Din mobil krypterar med största sannolikhet all data på den interna lagringen, förmodligen med AES. Men när du låser upp den gör du det inte genom att skriva in den 256 bitar långa nyckeln, utan ett lösenord eller pinkod (och när du väl har låst upp den en gång kan du oftast låsa upp den med ansiktet eller ett fingeravtryck). Om du använder en lösenordshanterare har du förmodligen ett långt unikt lösenord till den, men knappast en faktisk AES-nyckel (som kan vara till exempel fTjWnZr4u7x!A%C*F-JaNdRgUkXp2s5v – lycka till med att lägga en sådan på minnet).
Krypteringsfunktioner som utgår från lösenord använder en särskild algoritm för att beräkna en krypteringsnyckel utifrån lösenordet. Under åren har matematiker förfinat dessa algoritmer för att höja säkerheten och göra det svårare att gissa sig fram till rätt lösenord. PBKDF2 är en populär sådan funktion som används i de flesta lösenordshanterare, i filsystemskrypteringen i IOS, Mac OS och Android, och diverse andra tillämpningar.
En del krypteringssystem lagrar den faktiska krypteringsnyckeln krypterat med lösenordet, andra räknar fram krypteringsnyckeln varje gång du skriver in lösenordet. I en Iphone och de flesta moderna Android-telefoner lagras krypteringsnycklar i en särskild del av processorn eller ett separat chipp som i sin tur är krypterad. Resten av processorn, och operativsystemet, får aldrig tillgång till själva nycklarna.
På Iphone och många Android-telefoner krypteras data på den interna lagringen med en nyckel som utgår både från ditt lösenord och en unik kod inbränd i processorn. Det innebär att det bara går att låsa upp datan på just den telefonen. Om någon skulle öppna telefonen och extrahera alla ettor och nollor från lagringskretsarna går det inte att dekryptera informationen på en annan maskin genom att gissa lösenordet. Det är detta som har gjort det omöjligt för FBI och andra att forcera krypteringen på beslagtagna Iphone, även om användaren har en väldigt enkel fyrsiffrig pinkod.
Vikten av slumpen
I alla krypteringssystem har slumpen en viktig roll. Även om många av oss kan känna oss rätt dåliga på att hålla ordning och reda är vi människor, sett ur en statistisk synvinkel, väldigt dåliga på att skapa oreda/brus. Vi är tvärt om otroligt bra på att hitta mönster. Så bra att vi ofta skapar mönster av bara farten. Det är därför det är så viktigt att välja lösenord slumpmässigt.
Men datorer kan också vara dåliga på att skapa oreda. När ett krypteringssystem ska generera hemliga nycklar är det otroligt viktigt att de väljs slumpmässigt. Om en motståndare försöker gissa sig fram till din nyckel och vet något om hur nyckeln genereras kan hela säkerheten kollapsa. Processortillverkare har därför tagit fram särskilda funktioner för kryptografiskt starka slumpgeneratorer. Det kan till exempel handla om att samla in radiobrus eller tidpunkterna för slumpmässiga händelser.
Särskilda algoritmer har tagits fram som kan generera skenbart slumpmässiga tal som för en dator är oskiljaktiga från verkligt slumpmässiga tal. De används eftersom det kan ta för lång tid att samla in tillräckligt mycket ”äkta” slump, och ”laddas” med äkta slump.
Hotet från politiker
En del lagstiftare i framför allt USA men även andra länder har börjat efterfråga lagar som förhindrar företag som Apple och Google att använda säker kryptering. De talar naturligtvis inte om det på det viset, utan om att ”ge polisen nödvändiga verktyg” för att stoppa terrorism, barnpornografi och andra hemskheter.FBI vill väldigt gärna kunna låsa upp krypteringen på Iphone. I början efterfrågade de rena bakdörrar i krypteringsalgoritmerna, det vill säga sårbarheter som medvetet har lagts till och ska hållas hemliga så att bara ”goda makter” kan utnyttja dem. Experter har lyckats banka in att det inte är möjligt eftersom skurkar också kan anlita matematiker för att undersöka algoritmerna – det går helt enkelt inte att dölja något i matematik.
Politikerna har därför gått över till att efterfråga ett system där företag som Apple och Google ska tvingas lagra en kopia av alla krypteringsnycklar. Idén är att om någon utreds för ett brott så ska polisen kunna begära ut nycklarna så att de kan låsa upp den misstänktes mobil, dator eller vad det nu är utredarna vill komma åt.
Det här har flera stora problem som gör det till en mycket farlig väg att gå. För det första kommer databaserna som lagrar alla dessa krypteringsnycklar bli det mest eftertraktade bytet någonsin för hackare. Inget system är 100 procent säkert, och det skulle bara vara en tidsfråga innan någon kommer över en sådan databas.
Betänk att det inte bara skulle gälla privatpersoner utan även företag. Hur många företag kommer vara bekväma med att Apple eller Google har nycklarna till hela deras verksamhet? Det behöver inte ens förekomma något stort hack: Tänk om ett brottssyndikat får in en mullvad på ett av företagen, som försiktigt kan smyga ut bara ett fåtal viktiga krypteringsnycklar.
Om ett visst land inför en sådan begränsning av kryptering skulle andra länder snabbt sluta använda produkter från det landet, eftersom de inte kan anses säkra. EU skulle till exempel aldrig godkänna att amerikanska företag har EU-medborgares krypteringsnycklar och kan tvingas lämna ut dem till amerikanska myndigheter utan inflytande från europeiska domstolar.
Faktiska kriminella skulle också sluta använda den sortens osäkra produkter. Även om ett land som inför en sådan regel gör det olagligt att använda kryptering som inte lagrar nycklar i centrala databaser skulle det knappast hindra kriminella – de bryter redan mot andra lagar, så varför skulle de respektera en krypteringslag?
Hotet från kvantdatorer
Du kanske har hört talas om kvantdatorer och hur dessa påstås kunna göra slarvsylta av dagens krypteringstekniker. Kvantdatorer är fortfarande i ett väldigt tidigt skede av utveckling, men det går snabbt framåt och framför allt de som behöver skydda information på lång sikt gör bäst i att ta detta än så länge potentiella hot på allvar.
Samtidigt ska vi inte överdriva hotet. Det stämmer att kvantdatorer i teorin kraftigt försvagar vissa krypteringsalgoritmer, men hur mycket en viss algoritm kommer påverkas varierar kraftigt. Två bra exempel på det är RSA och AES.
Shors algoritm kallas den första så kallade kvantalgoritmen, en algoritm som matematiskt har bevisats vara effektivare på en kvantdator än på en klassisk dator. Om forskare lyckas bygga en kvantdator med tillräckligt många kvantbitar (kvantdatorns motsvarighet till vanliga datorers bitar) kan Shors algoritm lösa primfaktorisering exponentiellt mycket snabbare än en vanlig dator. Det skulle göra att även riktigt stora RSA-nycklar kan hittas på relativt kort tid. Samma algoritm kan också anpassas för att ”knäcka” flera andra envägsfunktioner som utnyttjas i asymmetriska krypton.
Grovers algoritm är en annan kvantalgoritm som teoretiskt kan snabba upp slumpmässiga sökningar i en databas. Ett exempel den kan användas till är att hitta rätt nyckel bland alla möjliga AES-nycklar. För en vanlig dator krävs 2128 operationer för att hitta en 128 bitar lång nyckel genom att testa varje möjlig nyckel. Grovers algoritm är kvadratiskt mycket snabbare, det vill säga det tar 264 operationer att hitta en 128 bitar lång nyckel och 2128 operationer att hitta en 256-bitarsnyckel. Om inga andra upptäckter görs som kan snabba upp sådana sökningar innebär det att 256-bitars AES kommer fortsätta vara säker.
Det pågår just nu en tävling för att hitta en ny rekommenderad algoritm för asymmetrisk kryptering som är beständig mot attacker från kvantdatorer, och flera lovande algoritmer har presenterats.