Krypteringteknologier Sidorna 580-582 (647-668) i boken
Introduktion Kryptering har traditionellt handlat om skydda konfidentialiteten genom att koda meddelandet så att endast mottagaren kan öppna det Krypteringsteknologierna har utvecklats mycket under 1900-talet och efter det Med moderna krypteringsmetoder kan man åstadkomma i praktiken obrytbart skydd för både konfidentialitet och integritet Dessutom kan teknologierna användas för obestridighet i form av elektronisk (kryptografisk) signatur
Kryptosystemets delar Krypteringsalgoritm Krypterar och dekrypterar data Ofta i block av viss längd, t.ex. 8 eller 16 byte Algoritmen förväntas ofta vara offentlig och dess funktion får åtminstone inte basera sig på att algoritmen är hemlig Krypteringsnyckel eller -nycklar Styr algoritmen att producera och öppna en viss kod Måste vara tillräckligt lång, så att det finns tillräckligt nyckelalternativ för att göra en gissningsbaserad attack omöjlig Ofta måste nyckeln eller en del av nycklarna hållas hemliga Data som krypteras Krypterad data
Brytning av kryptering Svag algoritm T.ex. producerar samma kod med olika nycklar Kan även vara med avsikt försvagad Svag nyckel För lite redundans (kort) Vissa algoritmer är känsliga för vissa nycklar (t.ex. alla bitar noll) Attacker Gå igenom hels nyckelrymden Fungerar t.ex. på Windows och Unix lösenord Välj lämplig klartext (texten som skall krypteras) Analysera algoritmen och sök svagheter
Hur fungerar kryptering? I symmetrisk kryptering använder båda parterna samma nyckel I asymmetrisk kryptering (kryptering med öppen nyckel) har krypteraren två nycklar, hemlig och öppen Vem som helst som vet det öppna nyckeln kan kryptera data med den Endast mottagaren som känner den hemliga nyckeln kan öppna det krypterade meddelandet Nycklarna är binära (en sekvens bitar) Kryptering kan användas för att skydda t.ex. WWWförbindelser eller e-post
Symmetrisk kryptering (kryptering med hemlig nyckel) Parterna har en delad hemlighet Hemligheten används som krypteringsnyckel Dessutom behövs en överenskommen algoritm Sändarens algoritm använder nyckeln till att producera en kryptotext av klartexten och mottagarens algoritm öppnar meddelandet med sin kopia av samma nyckel Symmetriska algoritmer är kalkylmässigt effektiva och med tillräcklig nyckellängd i praktiken obrytbara Största problemet är nyckelbyte, hur få samma hemlighet till båda parterna meddelande (klartext) hemlig nyckel Kryptering kryptotext hemlig nyckel Dekryptering ursprungligt meddelande
Exempel på symmetrisk kryptering Så gott som alla symmetriska metoder baserar sig på blandning och distribuering Bitsekvenser ersätts med andra och bitarna byter plats Här en bit av IDEAalgoritmen Indata opereras med delar av krypteringsnyckeln och resultatenas plats byts Samma repeteras flere gånger Image Matt Crypto / Wikipedia multiplikation modulo 2 16 + 1 addition modulo 2 16 bitvis XOR
Asymmetrisk kryptering Kryptering med öppen nyckel (asymmetrisk) baserar sig på algoritmer som använder olika nyckel för kryptering och dekryptering Nycklarna har en matematisk förbindelse Den ena nyckeln kallas öppen och den kan publiceras Ett meddelande krypterat med öppna nyckeln kan öppnas endast med den hemliga nyckeln Den hemliga (eller privata) nyckeln måste hållas hemlig Kryptering med öppen nyckel är i allmänhet inte kalkylmässigt effektivt Ofta skapas en symmetrisk sessionsnyckel för kryptering och denna nyckel förmedlas till motparten krypterad med den öppna nyckeln meddelande (klartext) öppen nyckel Kryptering kryptotext hemlig nyckel Dekryptering ursprungligt meddelande
Exempel på asymmetrisk algoritm Rivest, Shamir och Adleman utvecklade RSA-algoritmen 1978 Så skapas nycklar Välj två stora primtal p ja q Spara n = pq Öppna nyckeln e har inte gemensamma faktorer med (p-1)(q-1) För hemliga nyckeln d gäller ed = 1 (mod (p-1)(q-1)) p och q förstörs Kryptering Behandla meddelandet m som ett tal och räkna kryptotexten c = m e mod n Dekryptering c d mod n öppnar meddelandet Fungerar eftersom ed = 1 (mod (p-1)(q-1)) Och därför m ed mod n = m mod n
Kryptografisk signatur Många öppen nyckel -algoritmer fungerar också i motsatt riktning Ett meddelande som går att dekryptera med den öppna nyckeln, måste vara krypterat med den hemliga nyckeln Det här kan utnyttjas för att skriva under ett dokument (fil, textsnutt, data) Underskriftsprogrammet räknar en hash (fi tiiviste) över meddelandet och krypterar denna med den hemliga nyckeln Underskriften kan kontrolleras med den öppna nyckeln
Enkelriktade kryptografiska hashfunktioner Kryptografiska hashfunktioner producerar en bitsträng av viss längd av inmatad data Funktionen är enkelriktad: originaldata kan inte fås ur hashen Funktionen är kollisionsfri: det är kalkylmässigt opraktiskt att producera data som skulle ge samma hash Typiskt leder en ändring på en databit till en ändring av hälften av bitarna in hashen Kända hashfunktioner är t.ex. SHA-1 (160-bit output) och MD5 (128-bit output) En del av hashfunktionerna tar direkt underskriftsnyckeln som argument När hashfunktioner används för att skydda integriteten i datakommunikation talar man om MAC-koder (Message Authentication Code)
Exempel på helhet: PGP Pretty Good Privacy, en av de första tillämpningarna utnyttjade kryptering med öppen nyckel Erbjuder kryptering av e-post och filer Varje användare har en nyckelring, dit öppna nycklar för kommunikationsparter läggs till Den öppna nyckeln kan hämtas t.ex. från kommunikationspartens hemsida Användaren kan försäkra sig om nyckelns riktighet genom att jämföra nyckelns fingeravtryck Räknas med en hashfunktion av nyckeln Kort teckenserie som kan tryckas på visitkort, skickas som SMS eller läsas upp t.ex. per telefon
Sändning av PGP-meddelande
Mottagande av PGPmeddelande
Certifikat PGP löser inte ordentligt problemet med att försäkra sig om nyckelns riktighet Ett alternativ är att be en betrodd part (luotettu osapuoli, trusted party) skriva under nycklarna Ett signerat dokument där den öppna nyckeln kopplas till t.ex. identitet kallas ett certifikat Om mottagaren av certifikatet har signerarens öppna nyckel kan han/hon försäkra sig on signaturens riktighet PGP stöder signering av öppna nycklar, men utnyttjar inte certifikat Den svaga punkten med certifikat är den betrodda tredje parten Certifikat används bl.a. för autentisering av WWW-servrar
SSL och kryptering av WWW-trafik WWW-trafik kan skyddas med SSL Secure Socket Layer Krypterar trafiken mellan webbläsaren och server Kan användas för att skydda även annan TCP-trafik WWW-servern kan identifieras med hjälp av ett SSL-certifikat Användarna bör läras att kontrollera om krypteringen är i kraft Hur försäkra sig om WWW-trafikens kryptering? Krypteringen är på då webbläsarens lås är stängt Dessutom lönar det sig att kontrollera certifikatets information Det finns attacker, där WWW-förbindelsen ser ut att vara skyddad trots att den inte är det
Krypterad WWW-förbindelse Adressen börjar med HTTPS SSL-kryptering är på
Webbläsarens certifikatinformation Genom att klicka på låset kommer du åt att läsa certifikatet Certifikatutfärdare Certifikatets mål
Identifiering och autentisering Autentisering är verifiering av identifieringen T.ex. innehav av certifikat bevisar inte identiteten Antag att vi har en kedja av tillförlit till den öppna nyckeln som representerar parten vi vill kommunicera med. Hur kan vi försäkra oss om partens identitet? Kedja av tillförlit (chain of trust, luottamusketju): motparten har presenterat ett certifikat signerat av en certifikatutfärdare vi litar på och vars öppna nyckel vi känner (d.v.s. vi kan verifiera signaturen) Vi skickar en utmaning, ett stort slumptal Motparten genererar också ett stort slumptal, multiplicerar utmaningen med det och krypterar resultatet med sin hemliga nyckel samt skickar sitt slumptal och det krypterade resultatet till oss Vi kan nu dekryptera resultatet med den öppna nyckeln och jämföra det med resultatet vi själv räknar Vi vet nu att motparten är rätt ägare till den öppna nyckeln Notera att motparten inte direkt signerar den data vi skickar
Kryptering av all trafik PGP krypterar e-post och SSL TCP-förbindelser All IP-trafik kan krypteras genom att skapa en VPNtunnel (Virtual Private Network) IPsec är den vanligaste teknologin Krypterar varje IP-paket VPN-teknologi används för att koppla samman kontor och för distansarbete
Virtual Private Networks (VPN) Med VPN-teknologier som IPsec kan man koppla samman lokalnät IPSec GW + Brandmur Internet Brandmur IPSec GW
Vad ger kryptering oss? Konfidentialitet? Kryptering (utomstående kan inte läsa meddelandet) Identifiering av motparten (vi vet men vi skickar data till) Integritet? Hashfunktioner (eventuella ändringar noteras) Åtkomstkontroll och identifikation av informationskälla (vi vet varifrån vi tar emot information) Tillgänglighet? Kryptering kan inte garantera tillgänglighet Obestridighet? Signaturer (+ övrig infrastruktur för verklig implementation)
Implementering av krypto Kryptering är ett krävande område Att planera algoritmer och verifiera deras pålitlighet är mycket krävande Att implementera en algoritm i ett program är lättare, men fortfarande krävande Att implementera säkra program är i sig krävande De flesta programmen tål enstaka störningar, men i säkerhetsprogram måste man anta en kunnig, motiverad attackerare som har tillgång till fullständig källkod
Sammanfattning En del av datasäkerhetsutmaningarna kan lösas med kryptering Kryptering kan inte kontrollera vad människor gör Att utnyttja kryptering är relativt enkelt Man måste förstå vad som kan nås med kryptering Att planera och programmera en krypteringsalgoritm kräver specialkunnande