Asymmetrisk kryptering – säkerhet genom datorkraft
Jag vill kommunicera ytterst säkert med en stor mängd människor, även rena främlingar – exempelvis genom att utbyta viktig information eller handla med elektroniska valutor. Samtidigt är det mycket viktigt att min kommunikation är krypterad och att den chiffrerade informationen inte går att forcera av illvilliga aktörer. Moderna datorer med mycket processorkraft och matematiska algoritmer tillåter mig att göra sådan kryptering men det förutsätter att den jag utbyter information med har tillgång till den nyckel som behövs för att kryptera och dechiffrera informationen. Men om jag nu måste dela min chiffernyckel med alla dessa främlingar för att vi ska kunna kommunicera säkert – har inte säkerheten då gått förlorad?
Detta inledande exempel var länge ett problem för säkerhetstjänster och finansiella aktörer och det fick under tidigt sjuttiotal sin lösning i form av asymmetrisk kryptering med hjälp av en publik och en privat nyckel till kryptot. Tekniken krävde dock så mycket processorkraft att endast ett fåtal aktörer hade möjlighet att använda den. Allt detta ändrades under nittiotalet då även vanliga hemdatorer nådde prestandan som krävdes för denna sorts kryptering. Idag utgör asymmetrisk kryptering grundstommen i mycket av vår kommunikation på internet. Men hur fungerar det? Denna artikel, som är en del i en serie kring kryptovalutor, försöker förklara detta på ett enkelt och lättförståeligt sätt.
Introduktion
Denna artikel skjuter specifikt in sig på asymmetrisk kryptering. Vill du få en bredare översikt över kryptering i allmänhet rekommenderar vi Digitekets kurs Kryptering – konsten att göra det förståeliga oförståeligt.
Varför använder system kryptering?
Om du ska skapa ett decentraliserat system av viktig och många gånger känslig information så är tilltron till säkerheten central. För att försäkra sig om säkerheten använder man kryptering. Historien lär oss att det i princip inte går att skapa en kryptering av information som inte går att knäcka på något sätt i takt med att teknologi och vetenskap utvecklas. Av denna anledning uttalar sig de som jobbar inom fältet sällan tvärsäkert kring olika nivåer av säkerhet. Vad man strävar efter när man krypterar information är därför inte nödvändigtvis något som kommer att hållas hemligt till världens slut. Istället strävar man efter att skapa ett system som är så användarvänligt som möjligt samtidigt som det har så hög säkerhet som möjligt just nu. Det man försöker skydda sig mot är illvilliga aktörer med tillgång till den teknologi som finns idag, och den teknologi som finns på vår kunskapshorisont i den nära framtiden. En säkerhet som gör att de som har oärlig avsikt kommer att behöva lägga så mycket tid på att forcera kryptot att värdet med informationen inte står i paritet till tiden det kommer att ta att få fram informationen.
Den enklast tänkbara jämförelsen är att tänka sig ett kombinationshänglås som du har med dig till ditt skåp på gymmet. Ponera att det tar två sekunder per försök att vrida fram en siffra och testa bygeln för att se om låset öppnar sig. Ett hänglås som kräver en tresiffrig kombination (999 möjligheter) skulle kunna knäckas genom att någon systematiskt gick igenom varje tänkbar kombination av siffror på tvåtusen sekunder, vilket ger en dryg halvtimme som allra mest om den har lite otur. Det är ju en stund men det är ändå inte omöjligt att tänka sig att någon skulle kunna hitta avskildhet nog att försöka sig på det när alla är ute på ett spinningpass. Om samma lås har fyra siffror (9999 möjligheter) tar det som längst tjugotusen sekunder, vilket ger över fem och en halv timme att stå och rycka i ditt lås. Även om de har tur och hittar rätt kombination halvvägs är det låååång tid att syssla med fuffens i ett omklädningsrum. Det ska till ett ganska rejält spinningpass för att någon ska våga sig på det. Du har alltså konkret skalat upp nivån av säkerhet till en plats där värdet av att försöka knäcka din kod understiger tiden och risken det tar att göra det. Hade situationen krävt det hade du kunnat uppgradera till ett femsiffrigt lås (99999 möjligheter) och öka längsta tiden för tänkbar forcering till nästan två och ett halvt dygn.
Är kryptering krångligt?
Med dagens system och användare vana vid att använda lösenord är kryptering inte alls speciellt krångligt och med brett tillgängliga system kan en nivå av kryptering uppnås som skapar säkerhet bortom alla aktörer utom (möjligtvis) vissa nationella säkerhetstjänster och techjättar som Google. I många system som du använder ingår redan en hög nivå av kryptering utan att du ens behöver göra något och även de system likt bitcoins digitala plånböcker som använder asymmetrisk kryptering kräver sällan mer än en enkel installation och en grundläggande nivå av datorkunnighet. Kan du installera Spotify eller digitalkanalerna på din tv kan du säkert installera ett system med asymmetrisk kryptering.
Symmetrisk kryptering
För att förstå asymmetrisk kryptering är det bra om man först förstår symmetrisk kryptering. Symmetrisk kryptering handlar i korthet om att både avsändaren och mottagaren har tillgång till samma nyckel, det vill säga sättet som informationen förvandlas till och från ett oläsligt chiffer. När ett meddelande skickas så krypteras det med hjälp av nyckeln – en matematisk algoritm – och förvandlas till oläslig information. Mottagaren som har tillgång till samma nyckel kan sedan använda den för att förvandla tillbaka informationen till ursprungligt läge igen. Endast de som har tillgång till nyckeln kan läsa meddelandet.
I sin enklaste form kan detta jämföras med ett av historiens klassiska chiffer: caesarchiffret. Två alfabet läggs parallellt och förskjuts sedan ett par steg. Nyckeln till att läsa chiffret är att veta hur många steg alfabetet förskjutits. Viktigt att komma ihåg då att dagens chiffer och följaktligen också dagens chiffernycklar är otroligt mycket mer sofistikeade.
Symmetrisk kryptering är relativt enkelt och tydligt och är också snabbare än asymmetrisk kryptering, men har den stora nackdelen att den säkra nyckeln först måste distribueras till alla parter för att krypteringen ska fungera, något som skapar en osäkerhet då du står inför det nya problemet att nyckeln kan uppsnappas på vägen. Detta är särskilt sant om mängden personer som du måste distribuera nyckeln till är stor. Länge sökte man ett sätt att komma runt detta och under tidigt sjuttiotal utvecklades därför tekniken med asymmetrisk kryptering med tillhörande lämplig algoritm, av den brittiska underrättelsetjänsten.
Hur fungerar asymmetrisk kryptering?
Asymmetrisk kryptering handlar om att kryptera sin information med hjälp av två nycklar: en publik som distribueras öppet till alla som vill ha den och en privat som är ytterst hemlig. När någon ska skicka ett meddelande till dig via ett sådant system använder de din publika nyckel för att kryptera informationen. Andra kan uppsnappa ditt meddelande under färden men din publika nyckel räcker inte för att läsa meddelandet. För att kunna läsa meddelandet krävs din privata nyckel – och den har bara du tillgång till. På detta sätt löser asymmetrisk kryptering det grundläggande problemet med symmetrisk kryptering. Den hemliga nyckeln behöver inte distribueras till alla som ska ha den för att systemet ska fungera. Tvärtom kan du helt öppet dela din nyckel med hela världen. De har ändå ingen nytta av den om de inte också har tillgång till din privata nyckel som är unik. Endast i kombination fungerar de två.
Med asymmetrisk kryptering uppnår du följande:
- Det är lätt att skapa de nycklar du behöver: en publik och en privat.
- Det är lätt för de som vill skicka meddelande till dig att kryptera detta med hjälp av din publika nyckel.
- Det är lätt för dig att låsa upp det krypterade meddelandet som skickats till dig med hjälp av din privata nyckel.
- Det är inte möjligt för någon att utifrån din publika nyckel kunna räkna sig fram till vilken din privata nyckel är.
- Det är inte möjligt att dekryptera ett av dina meddelanden med hjälp av bara den publika nyckeln.
Nackdelen är att asymmetrisk kryptering kräver en mer avancerad matematisk algoritm och följaktligen mer datorkraft för att kunna användas av vanliga användare. Fram till och med nittiotalets slut var därför asymmetrisk kryptering bortom räckvidden för huvuddelen av datoranvändarna och hade inte direkt några kommersiella användningsområden. Teknikutvecklingen har ändrat detta. Dagens användare har tillräckligt med processorkraft och asymmetrisk kryptering har därför blivit mycket vanligare.
Tycker du att detta är onödigt tekniskt och svårförståeligt? Se det förklarat som om du gick i lågstadiet:
Länk till Skicka krypterat! i serien Hackerskolan på YouTube.
Algoritmerna bakom
På ytan är systemet kanske lätt att förklara men matematiken och algoritmen som ligger bakom krypteringen är avancerad och kräver som sagt en mycket hög processorkraft för att fungera. Nyckeln bakom den höga säkerheten är att ha långa nyckelstorlekar.
Större och större nyckelstorlekar
I kursen Man kan aldrig vara för säker – att skapa säkra lösenord (och minnas dem) som vi tidigare publicerat här på Digiteket, pratar vi mycket om att i slutändan är längden på ett lösenord avgörande för säkerheten. Längre lösenord, eller längre nycklar för att koda och avkoda något som är krypterat kräver mer beräkningar och mer “gissningar för en dator som vill forcera chiffret”. En sådan metod att lösa problemet, att systematiskt testa den enda tänkbara lösningen efter den andra, kallas i kryptografiska sammanhang för en brute force-attack. I takt med att beräkningskraften i moderna datorer och nätverk av datorer ökar måste även lösenord och nycklar öka i längd.
När vi pratar om längd på nycklar så används storlekar som är så astronomiskt stora att det till och med är pedagogiskt svårt att försöka förklara hur stora de är. Det handlar om tal som är så stora att även om en gissande dator kan testa hundratals miljarder tal per sekund så skulle ändå inte all tid i hela universums livslängd räcka för att hitta rätt. Trots detta gör teknikutvecklingen både i processorkraft och i utvecklingen av nya algoritmer för att forcera krypton att man ständigt känner behov av att ändå öka nyckellängden.
I detta sammanhang kräver just asymmetrisk kryptering extra långa nyckellängder eftersom de tal som används av algoritmen för att generera nycklar är primtal. Eftersom primtal blir sällsyntare ju större talen är måste tallängden öka med en än större faktor. Allt detta gör att asymmetrisk kryptering är en långsammare process än en symmetrisk.
Sammanfattningsvis
Asymmetrisk kryptering har med tillgången till allt kraftigare datorer blivit vanligare och vanligare. Systemet används både i den digitala infrastruktur som du bara tar för givet och i program och system som du själv kan använda – exempelvis PGP (Pretty Good Privacy) eller din digitala plånbok om du handlar med kryptovalutor.
Den asymmetriska krypteringen löser säkerhetsproblemet som uppstår när du måste distribuera din kodnyckel till många parter och den skapar hög säkerhet på ett tillgängligt sätt.
Den asymmetriska krypteringen kräver dock – i takt med att de kryptoforcerande datorernas processorkraft ökar och de matematiska algoritmerna utvecklas – en ständigt ökande nyckellängd och därför är asymmetrisk kryptering långsammare och “klumpigare” än symmetrisk kryptering.
En ständig kapprustning pågår mellan de som utvecklar kryptografiska säkerhetssystem och de som försöker knäcka dem, vilket säkert kommer att leda till att en del av denna artikelns sanningar i framtiden inte längre kommer att vara relevanta.
Vi på Digiteket får helt enkelt återkomma i takt med att ny teknik och information tillkommer.
Fördjupad läsning
Denna artikel om blockkedjeteknik är en del av ett större paket om kryptovalutor. Om du vill ha en ännu större tugga och lära dig om bitcoin, kryptovalutors ekologiska fotavtryck och den underliggande krypteringen bakom blockkedjor. Gå då till Digitekets kurs Bitcoin, kryptovalutor och blockkedjor.
Puffbild: Foto av Andreas Haimerl, licensierad enligt Unsplash License