Del 2: Asymmetrisk kryptering

Asymmetrisk kryptering är en helt annan typ av kryptografisk teknik som dök upp under 70-talet ungefär samtidigt som blockkrypton. Från början var det mer som ett koncept, men det överfördes snabbt till praktiskt användbara algoritmer. Asymmetrisk kryptering är tänkt att lösa problemet som finns med överföring av krypteringsnycklar mellan de parter som ska kommunicera.

I stället för att använda en krypteringsnyckel används ett nyckelpar som består av två nycklar, en som används för att kryptera information (publik nyckel), och en motsvarande nyckel för dekryptering (privat nyckel). Den privata nyckeln användas alltså för att dekryptera information som är krypterad med den första nyckeln i paret. Fördelen med det här är att man kan då dela med sig av sin publika nyckel offentligt utan att vara rädd att någon obehörig ska kommer över den, eftersom den enbart kan användas för att kryptera information. Sedan behåller man den privata nyckeln för sig själv och blir därmed den ända som kan dekryptera den information som krypteras med sin publika nyckel.

Krypteringsprocessen innehåller förutom kryptering och dekryptering nu också ytterligare ett steg, nyckelgenerering, där man skapar ett nyckelpar med de två sammanhängande nycklarna. Nyckelgenereringen brukar ta lite tid men behöver enbart göras en gång per användare. Sedan går kryptering och dekryptering betydligt snabbare därefter.

Asymmetrisk kryptering skalar väldigt bra om man är fler som ska kommunicera med varandra. Är man många användare är det enda som behövs att varje användare genererar ett eget nyckelpar och sedan offentliggör den publika nyckeln. Sedan kan alla skicka information mellan varandra. Till skillnad mot vanlig symmetrisk kryptering där varje användare istället hade varit tvungen att skapa och sätta upp en gemensam nyckel med varje annan användare.

Asymmetrisk kryptering används i väldigt många tillämpningar på internet idag, ex kryptering av information mellan webbserver och webbläsare. Den absolut vanligaste krypteringsalgoritmen för asymmetrisk kryptering är algoritmen RSA. På andra plats kommer algoritmen El Gamal över elliptiska kurvor (ECC-ELG). Utöver dessa två finns en hel del andra algoritmer, fast många av algoritmerna är skyddade av patent och används därför i väldigt liten utsträckning.

 

2.1 Hybrid kryptering

Ett problem med asymmetrisk kryptering är att både kryptering och dekryptering tar ganska lång tid att utföra i jämförelse med symmetrisk kryptering. Därför är det vanligt att man kombinerar asymmetrisk och symmetrisk kryptering genom att kryptera tillfälliga krypteringsnycklar (sessionsnycklar) med asymmetrisk kryptering, sedan krypteras själva informationen med en vanlig symmetrisk algoritm. Nästan all asymmetrisk kryptering idag är i själva verket hybrid kryptering. Det finns även flera säkerhetsvinster med hybrid kryptering jämfört med direkt användning av asymmetrisk kryptering.

 

2.2 Digitala signaturer

Att skriva under ett digitalt dokument är inte samma sak som att skriva under ett vanligt fysiskt dokument. Om ett digitalt dokument skrivs under med en signatur kan signaturen enkelt flyttas över till ett annat dokument, dessutom helt utan synliga fel eftersom informationen är digital. Det går också att ändra i det signerade dokumentet utan att lämna fysiska spår. För att kunna signera ett digitalt dokument måste man alltså ha en helt annan teknik för detta, dvs digitala signaturer. En digital signatur knyter en viss person till ett dokument samtidigt som signaturen blir ogiltig om den flyttas över till ett annat dokument eller om informationen ändras bara det minsta.

Digitala signaturer är ett närbesläktat område till asymmetrisk kryptering. I praktiken kan digitala signaturer utföras med samma teknik som asymmetrisk kryptering. Den som ska signera ett dokument har då en personlig nyckel, och de som ska verifiera signaturen använder då den öppna nyckeln som sprids offentligt.

Digitala signaturer och asymmetrisk kryptering är till och med så pass närbesläktade att de i vissa fall kan utföras med samma algoritmer, detta gäller exempelvis för RSA. Inom vissa omständigheter kan man till och med använda samma nyckelpar för kryptering och signering, även om det inte är rekommenderat. En annan vanlig algoritm utöver RSA som används för digitala sigaturer är DSA (Digital Signature Algorithm).

Det är vanligt att digitala signaturer används tillsammans med kryptering för att både skydda informationen från att läsas med hjälp av krypteringen, men samtidigt för att säkerställa att informationen är autentisk och verkligen kommer från en specifik användare och inte heller har ändrats under sändning.

 

2.3 RSA

Idag är RSA är den absolut vanligaste krypteringsalgoritmen för asymmetrisk kryptering. Algoritmen har fått sitt namn från efternamnen av dess skapare: Ron Rivest, Adi Shamir och Len Adleman. Algoritmen är ett asymmetriskt blockchiffer som baserar sin säkerhet på att det är enkelt att multiplicera även mycket stora primtal med varandra, men sedan mycket svårt att faktorisera produkten tillbaka till primtal igen. För att algoritmen ska vara säker används mycket stora primtal med flera hundra decimala siffror. Algoritmen är därför relativt långsam och brukar nästan alltid implementeras som hybrid kryptering.

Blocklängden på algoritmen kan variera, men generellt gäller att ju större block ju säkrare kryptering. Blocklängden är lika med det så kallade modulusvärdet som brukar vara mellan 1024-4096 bitar. Ju fler bitar ju högre säkerhet, men också högre krav på optimering av implementationen eftersom större tal måste hanteras och därmed högre risk att implementationen innehåller fel. Därför är kryptering med mer än 4096 bitar inte nödvändigtvis säkrare.

RSA kan användas för både kryptering och digital signering. När RSA används för signering används den alltid tillsammans med en MD-algoritm, exempelvis SHA-256 eller SHA-3 (Keccak). Signering med de äldre algoritmerna SHA-1 eller MD5 är inte längre säkra (för de flesta sätten att använda signaturerna) eftersom det finns kollisionsattacker mot dessa algoritmer.

 

2.4 PKI

En MITM-attack kan utföras även mot asymmetriska kryptosystem. Ett PKI (Public Key Infrastructure) är en lösning för att motverka MITM-attacker i asymmetriska system. Lösningen baserar sig på användningen av digitala signaturer och en utomstående tredje part som alla inblandade kan lita på.

Utan ett PKI det är lätt att förfalska andras publika nycklar genom att byta ut dessa mot egna nycklar, och på så vis utföra en MITM-attack som tar sig runt krypteringen. Lösningen är en pålitlig tredje part, oftast kallat för ett Certificate Authority (CA). CA’t genererar först ett nyckelpar för signering. Den publika nyckeln görs sedan offentlig, exempelvis via en hemsida så att andra kan verifiera signaturerna.

CA’s uppgift är sedan att kontrollera att de publika nycklarna hänger samman med de inblandade användarna, och skriver ett intyg på detta som innehåller identitetsuppgifter och den publika krypteringsnyckeln. Intyget signeras digitalt av CA’t med den privata signeringsnyckel och detta kallas då för ett certifikat. Certifikatet består alltså av minst tre saker, en identitet på en användare, en publik krypteringsnyckel som används av denna användare och en digital signatur från CA. CA’t utfärdar sedan ett certifikat för alla aktuella användare. I praktiken brukar det kosta en avgift att få en publik nyckel signerad för de flesta publika CA.

Nu kan alla kommunicera säkert eftersom varje användare har ett pålitligt certifikat som intygar att det är en korrekt krypteringsnyckel, givet att den tredje parten är pålitlig naturligtvis. Certifikaten (inkl. publik nyckel) kan skickas till alla som ska kryptera information. Innan kryptering behöver sändaren bara kontrollera certifikatets äkthet med den publika nyckeln från CA’t för att säkerställa att det inte är ett falskt certifikat.

PKI kan också användas för att säkra upp publika nycklar för digital signering, tekniken är exakt den samma. Ett PKI kan också ge ut certifikat i flera nivåer, så att certifikatet i sin tur innehåller ett certifikat från CA som intygar att de är godkända att ge ut giltiga certifikat. Den överordnade parten kallas då för ett Root CA.

Ett problem med PKI:er är att de oftast fungerar mycket bättre i teorin än i praktiken. Ansvaret för den tredje parten kan bli orimligt stort eftersom falska certifikat gör att man kan bryta sig genom krypteringen eller förfalska signaturer. Det är oftast svårt att hitta en tredje part som är så pålitlig och så robust att alla verkligen kan lita på denna parten.

Ett alternativ till PKI är något som kallas för web-of-trust och är istället en decentraliserad modell för att garantera äkthet på krypteringsnycklar. Principen är att man intygar för varandra att nycklarna är korrekta genom att signera varandras nycklar.

Ett annat alternativ till strikta PKI:er som knyter personer eller företag till krypteringsnycklar är lätta PKI:er. Ett lättare PKI knyter exempelvis bara ett ID-nummer eller liknade till krypteringsnycklar och inte en hel identitet. Dessa ID-nummer möjliggör sedan för användarna att själva göra den slutgiltiga kopplingen med ID-nummer och fysiska personer. Kravet på CA’t blir då mycket lägre och får därmed lättare att uppfylla sin uppgift på ett robust sätt, dock till en kostnad av att ansvaret för användarna istället blir högre.

 

Tillbaka till Krypteringsguiden.