Kryptering
Kryptering är att göra information svårläslig för alla som inte ska kunna läsa den. För att göra informationen läslig igen krävs dekryptering.
Historia
Kryptering är troligtvis lika gammalt som skriftspråket självt. Man vet att kryptering användes redan under Julius Caesars tid. När ett brev skulle skickas med hemlig information krypterade man informationen. Julius algoritm var att förskjuta alfabetet n steg, och nyckeln var n. Om texten exempelvis är "kolobi" och n är tio blir det krypterade meddelandet "uyvyls" eftersom de bokstäverna är tio steg framåt i alfabetet. Detta kallas då för C-10. Mottagaren flyttar bokstäverna tio steg bakåt för att dekryptera kryptot. Systemet var mycket enkelt och lätt att dekryptera, förutsatt att man visste algoritmen. Genom att prova 26 kombinationer kunde spioner lätt dekryptera ett meddelande. Med träning kan en van forcör göra förskjutningen "i huvudet" och läsa klartexten direkt, nästan lika lätt som okrypterad text. Krypteringssystemet har vissa likheter med dagens system. Ofta består krypteringssystemen av en algoritm och en nyckel.
Den moderna krypteringens tid började någon gång efter andra världskriget i slutet av 1940-talet. Kryptografi och kryptoanalys tas upp i två artiklar av Claude Shannon och Warren Weaver, vilket blir grunden för den moderna tidens kryptering. Efter dessa två artiklar hände det inte så mycket inom kryptering tills 1969, då IBM publicerade DES (Data Encryption Standard). IBM:s publicering ökade intresse för kryptering. Det medförde att flera varianter av DES dök upp på marknaden, flera av dem används ännu idag.
Krypteringens ändamål var från början att i krigstid hindra fienden att få reda på känslig information. Idag är det inte bara i krigstid som kryptering används. När vi ska betala räkningar via vår Internetbank, eller handla saker via nätet används ofta kryptering. Det kan man bl a se på att ett hänglås visas i den webbläsare man använder, vilket indikerar att trafiken som skickas och tas emot är krypterad. Viktig och känslig information flödar ständigt på Internet, och även lokalt på dagens datorer. För att man ska kunna skydda och garantera att informationen inte snappas eller ändras på vägen, har krypteringen fyllt en viktig funktion. Kryptering har gett oss rätten till privatliv, då vi själva kan avgöra vem som skall kunna ha tillgång till den information vi skickar.
I en del länder finns lag som gör att polisen på till exempel uppdrag av en IT-forensiker kan straffa den som ej på dess begäran lämnar ut krypteringsnyckeln; se Lag om nyckelutlämning.
Metoder och algoritmer
Det finns flera olika metoder för kryptografi. Till varje metod finns ett antal sätt att räkna, det kallas algoritmer. Dessa är ofta skyddade av patent. Krav på licens för att få rätt att använda en krypteringsalgoritm är vanligt.
Olika metoder skiljer sig åt, när det gäller säkerhet och hastighet för att kryptera och dekryptera. Vid kryptering av ett e-postbrev har man gott om tid på sig att kryptera och dekryptera, medan vid andra tillfällen kanske man inte har så gott om tid. Val av krypteringsalgoritm och metod måste således väljas noggrant.
Målet med kryptering är att säkerställa behörighet till information, så att informationen inte förändrats, och att man kan lita på informationen. Oberoende av krypteringens ändamål, ska man sträva efter att använda en sådan kryptering att det är omöjligt att knäcka det krypterade meddelandet inom en rimlig tid med rimliga resurser. Metoder som är svåra att knäcka ens med dagens kalkylresurser, kallas starka metoder. Generellt kan man säga, att ju längre nycklar man har, desto starkare är metoden.
Kryptering
Kryptering består av två delar, en algoritm och en nyckel. När man ska kryptera information använder man både algoritm och en nyckel. Nyckeln är hemlig, och algoritmen kan vara antingen hemlig eller öppen. För dekryptering av informationen måste man ha tillgång till både nyckeln och algoritmen.
Vanligaste typer av kryptering är symmetrisk och asymmetrisk kryptering. En mindre vanlig typ som används är hashfunktion.[a] Den använder inte privata nycklar, utan fungerar på så sätt att man skriver en text och kör den texten genom en hash-funktion.
Symmetrisk kryptering
Vid symmetrisk kryptering, även kallad rak kryptering, används samma nyckel vid kryptering och dekryptering. Vid informationsutbyte mellan sändare och mottagare måste följaktligen båda ha tillgång till den nyckeln. Fördelen med symmetrisk kryptering är snabbheten. Nackdelen med symmetrisk kryptering är att om informationen ska delges flera personer måste alla dessa ha tillgång till samma nyckel. Ett annat problem är hur man på ett säkert sätt ska överföra nyckeln från sändaren till mottagaren (mottagarna). Eftersom en nyckel inte kan skickas krypterad med sin egen nyckel, måste man hitta ett annat sätt att skicka den från sändare till mottagare.
Två säkra sätt är att antingen personligen överlämna nyckeln muntligen eller via något medium, till exempel CD, diskett etc. Eller också kan man överföra nyckeln med asymmetrisk kryptering.
Om samma nyckel existerar på fler än ett ställe, blir resultatet att risken ökar att nyckeln kommer i orätta händer. Ju fler ställen nyckeln finns på, desto större är risken. För att upprätthålla säkerheten är det därför viktigt att nyckeln byts ut emellanåt, och att den gamla nyckeln aldrig mer används. Av den anledningen ska den gamla nyckleln oåterställeligt förstöras omedelbart, sedan ny nyckel börjat gälla.
Triple-DES och Advanced Encryption Standard
Triple DES (3DES) och Advanced Encryption Standard (AES) är två varianter på symmetrisk kryptering. I 3DES använder sändaren och mottagaren tre stycken DES nycklar för att kryptera meddelandet. Genom sändaren krypteras det första meddelandet med första nyckeln. Sedan dekrypteras det med andra nyckeln för att slutligen krypteras med tredje nyckeln. Sändaren skickar meddelandet till mottagaren som dekrypterar meddelandet med tredje nyckeln. Sedan sker en kryptering med andra nyckeln och slutligen en dekryptering med första nyckeln. Detta ger originalmeddelandet. Fördelen med 3DES är att det går att använda samma mjuk- eller hårdvara för att kryptera 3DES som DES. 3DES ger en säkrare kryptering eftersom den måste kryptera tre gånger men det går åt mycket ram-minne och processorkraft.
DES | 3DES | AES | |
---|---|---|---|
Nyckellängd (bitar) | 56 | 168 | 128 192 256 |
Säkerhet | Dålig | Bra | Bra |
Processoranvändning | Låg | Hög | Väldigt låg |
RAM-minnesbehov | Lågt | Högt | Väldigt lågt |
[källa behövs]
AES är tillräckligt effektiv i processor och ram för att det skall fungera i mobila telefoner. AES har nyckellängder 128,192 och 256bit. AES använder substitution-permutationskrypto och bygger därmed på omvandlig av text genom en följd av varierande substitutioner och permutationer, där samtliga substitution-permuatation är ett varv. Antal varv växlar beroende på nyckellängden så att AES-128 har 10 varv, AES-192 har 12 varv och AES-256 har 14 varv. Varje varv innehåller fyra steg: byte substitution, radskiftning, kolumnblandning och nyckeladdition. Undantaget är sista rundan där man hoppar över kolumnblandningen.
Asymmetrisk kryptering
Asymmetrisk kryptering skiljer sig från symmetrisk kryptering genom att två olika nycklar används. Den första nyckeln kallas öppen nyckel (engelska "Public Key") och den andra personlig nyckel (engelska "Private Key"). Den öppna nyckeln är tillgänglig för alla, medan den personliga nyckeln endast finns hos ägaren. Vid asymmetriska krypteringar används den ena nyckeln — vanligtvis den öppna nyckeln — för att kryptera informationen. För dekryptering används den personliga nyckeln. På så sätt kan man vara säker på att information som har blivit krypterad med en viss nyckel, kan dekrypteras bara med den motsvarande andra nyckeln. Vid överföring av information mellan sändare och mottagare måste alltså sändare A känna till mottagare B:s öppna nyckel och kryptera meddelandet med densamma. Den enda som kan dekryptera meddelandet är nu den som har den tillhörande personliga nyckeln, d.v.s. mottagare B. Inte ens sändare A kan dekryptera det meddelande som han själv krypterat eftersom han inte har tillgång till B:s personliga nyckel. Man kan säga att sändare A använder den ena nyckeln (den öppna) för att låsa in meddelandet från insidan av en dörr, medan mottagare B använder den andra nyckeln (den personliga) med ett annat utseende för att låsa upp dörren från utsidan och därmed få tillgång till informationen.
Fördelen med asymmetrisk kryptering är att ingen hemlig nyckel behöver skickas mellan sändare och mottagare, och att nycklarna växelvis kan användas för antingen kryptering eller dekryptering, d.v.s. att det är även möjligt att i omvänd förbindelseriktning kryptera med den personliga nyckeln och dekryptera med den öppna. Nackdelen är att metoden är långsam.
Utbytbarheten möjliggör användning av elektronisk signatur.
Algoritm för RSA-kryptering
RSA-kryptering är den vanligaste algoritmen för asymmetrisk kryptering. Namnet kommer från upphovsmännen Ron Rivest, Adi Shamir och Len Adleman. Vid RSA-kryptering används modulär aritmetik (modulo) för att kryptera. För att skapa personliga och öppna nycklar behövs två enormt stora primtal. Vi kallar primtalen P1 och P2; produkten kallar vi n som ger det antal bit som nyckeln består av. Sedan behöver vi ett annat tal, 1 < e < (P1 - 1)(P2 - 1) så att e och (P1 - 1)(P2 - 1) är relativt prima. Talet e blir öppen nyckel. För att få fram den personliga nyckeln används en diofantisk ekvation
där d är den personliga nyckeln. Alltså är d det inverterade värdet av
Eftersom det inte finns någon effektiv algoritm för primtalfaktorisering av stora tal går det inte att inom rimlig tid räkna ut de båda primfaktorerna P1 och P2 för n, inte ens om e och n är kända. Man kan inte heller räkna ut d. Bara den mottagare som känner till P1, P2 och d kan dekryptera meddelandet.
Krypteringen sker med den matematiska funktionen
Dekrypteringen blir då
X är en numerisk representation av det meddelande som ska krypteras.
Exempel på kryptering med RSA
- P1 = 1249
- P2 = 1049
- e = 1 013 (öppen nyckel)
- d = 843 101 (personlig nyckel)
- n = 1 310 201
Det meddelande som skall krypteras med öppen nyckel är x = 444 807. Detta görs med
För att dekryptera meddelandet använder man den personliga nyckeln d = 843 101
Det ursprungliga meddelandet kommer då fram.
När används symmetrisk eller asymmetrisk kryptering?
Symmetrisk kryptering används normalt då stora datamängder ska krypteras. Den förutsätter att båda parter har en gemensam nyckel. En sådan kan parterna komma överens om eller överföra med hjälp av asymmetrisk kryptering. Asymmetrisk kryptering har fördelen att bara mottagaren av ett meddelande behöver känna till den hemliga nyckeln. Därför används den då en mottagare vill kunna kommunicera säkert med många sändare utan att behöva explicit tilldela varje sändare en nyckel i förväg. Eftersom asymmetrisk kryptering bygger på svåra matematiska problem så kräver den betydligt mer komplicerade beräkningar för att kryptera ett meddelande till en viss säkerhetsnivå jämfört med den beräkningskraft det tar att uppnå motsvarande säkerhetsnivå med symmetrisk kryptering. Detta gör att man ofta väljer att kryptera en längre datamängd med en slumpmässig engångsnyckel för symmetrisk kryptering, krypterar denna nyckel med asymmetrisk kryptering och bifogar det krypterade meddelandet. Asymmetrisk kryptering används också vid signering av meddelanden.
Symmetrisk kryptering använder normalt kortare nycklar än asymmetrisk kryptering. Det beror på att dessa nycklar är hemliga för alla som inte ska kunna läsa meddelandet, och det enda sättet att knäcka krypteringen är att gissa rätt nyckel. Vid asymmetrisk kryptering är den publika nyckeln känd av alla, och det är i princip tillräckligt att känna till den och det krypterade meddelandet för att kunna avkoda det. Krypteringens säkerhet ligger i att den operation som krävs för att avkoda meddelandet är avsevärt mycket svårare utan kunskap om den privata nyckeln än den är om den privata nyckeln är känd. Att dela upp en produkt i två primtal är lätt om man vet det ena primtalet, men svårt annars. Likaså är det svårt att beräkna den diskreta logaritmen, men exponentieringsregler gör att man med rätt kunskap inte behöver räkna ut den.
En vanlig nyckellängd för symmetrisk kryptering är 128 bitar vilket resulterar i att det totala antalet möjliga nycklar är 2128. I genomsnitt så måste man pröva hälften av alla nycklar innan man kan hitta den rätta vilket ger 2127 nycklar som måste testas innan meddelandet kan läsas. Testar man 100 miljarder nycklar per sekund så tar det 5⋅1019 år innan man hittar den rätta nyckeln. Symmetriska nycklar med 100 bitars nyckellängd eller mer anses säkra idag. I asymmetrisk kryptering använder man sig av nyckelstorlekar som är från 512 upp till 4096 bitar. RSA har primtalsfaktoriserats upp till en nyckellängd av 768 bitar (i december 2009)[1], så nyckellängden 1024 som tidigare generellt ansetts vara tillräckligt säker har i ökande utsträckning börjat överges till förmån för 2048 bitar.
Hashfunktioner
Med en hashfunktion kan man beräkna en kort kontrollsumma (message digest) av bestämd längd ur en datamängd av godtycklig längd. Man kan inte räkna ut det ursprungliga meddelandet med hjälp av kontrollsumman. Eftersom antalet möjliga meddelanden är större än antalet möjliga kontrollsummor, kommer många olika meddelanden att ha samma kontrollsumma. En hashfunktion av god kvalitet kan dock konstrueras så att det är beräkningsmässigt svårt att hitta meddelanden som ger samma kontrollsumma. För att skapa en digital signatur i ett meddelande eller för att spara lösenord i operativsystem används hashfunktioner som också kallas enkelriktade funktioner. För att en digital signatur ska skapas räknar avsändaren ut en kontrollsumma med hjälp av meddelandet och krypterar den med sin privata nyckel. Mottagaren dekrypterar kontrollsumman med avsändarens publika nyckel, beräknar meddelandets kontrollsumma och jämför den beräknade kontrollsumman med kontrollsumman som dekrypterades med avsändarens publika nyckel. Om kontrollsummorna stämmer överens har meddelandet signerats med avsändarens privata nyckel och meddelandet har inte förändrats på vägen över nätet.
Elektronisk signatur
En elektronisk signatur säkerställer avsändarens identitet och meddelandets integritet, det vill säga att avsändaren är äkta och att meddelandet inte har ändrats på vägen. Signaturen utökar dokumentet som skall skickas. För att bestämma den elektroniska signaturen använder avsändaren sin privata nyckel. Först räknas en kontrollsumma ut av meddelandet. Kontrollsumman krypteras med den privata nyckeln och signaturen bifogas i dokumentet. När mottagaren tar emot meddelandet dekrypteras signaturen med hjälp av avsändarens publika nyckel. Mottagaren räknar sedan ut kontrollsumman på meddelandet och jämför sedan dessa två resultat. Om avsändaren var äkta och meddelandet orört kan mottagaren lita på meddelandets integritet och avsändarens identitet.
Kommentarer
- ^ Det engelska ordet hash betyder hacka sönder, ställa till oreda.
Se även
- Krypteringsalgoritm
- Kryptonyckel
- Kvantkryptering
- Kryptologi
- Kryptografi
- Kryptoanalys
- Kodspråk
- Modulär aritmetik
- Skytale
Referenser
Vidare läsning
- Simon Singh (1999). Kodboken. Stockholm: Norstedts. ISBN 91-1-300708-4
Externa länkar
- Wikimedia Commons har media som rör Kryptering.
- Tom McCune's PGP Page
- Fencry ASCII text scrambler – Ett gratis krypteringsprogram.
- Idrix VeraCrypt byggt på TrueCrypt – Ett gratis krypteringsprogram.
- GPG4Win byggt på PGP – Kryptering av e-post.
- Keylength.com – Hjälp för att välja tillräcklig nyckellängd enligt olika källor.
Media som används på denna webbplats
Författare/Upphovsman: Johannes Landin, Licens: CC BY-SA 3.0
Illustration av hur ett digitalt dokument skickas med "Asymmetrisk kryptering"