Kryptering

Från Wikipedia
Hoppa till: navigering, sök

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[redigera | redigera wikitext]

Kryptering är troligtvis lika gammalt som skriftspråket självt. Man vet redan att kryptering användes under Julius Caesar tid. När ett brev skulle skickas med hemlig information så 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 "uzvzls" 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 alla 26 kombinationer kunde spioner lätt dekryptera ett meddelande. Krypteringssystemet har dock 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. Man tar upp kryptografi och kryptoanalys i två artiklar av Claude Shannon och Warren Weaver som 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 publicerande ö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.

Kryptering grundar sig i att i krigstid undvika att fienden skulle 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 så används ofta kryptering. Det man kan se är ett litet nyckellås längst ner i högra hörnet på sin webbläsare som 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 ä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 informationen vi skickar.

I en del länder finns lag som gör att polisen på till exempel uppdrag av en forensiker kan straffa de som ej lämnar ut krypteringsnyckeln på dess begäran, se Lag om nyckelutlämning.

Metoder och algoritmer[redigera | redigera wikitext]

Det finns flera olika metoder för kryptografi och ofta är krypteringsalgoritmer skyddade av patent. Till varje metod så finns det ett antal sätt att räkna, det som kallas algoritmer. Licens för att få rätt att använda en krypteringsalgoritm är inte ovanligt. Det finns vissa skillnader mellan olika metoder som skiljer sig åt när det gäller säkerhet och hastighet för att kryptera och dekryptera. Val av krypteringsalgoritm och metod måste således väljas ut noggrant. 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 på sig. Målet med kryptering är att säkerställa behörighet till information, så att informationen inte förändrats och obestridligheten av informationen. Oberoende av vilket ändamål krypteringen ska användas till ska man sträva efter att använda en sådan kryptering att det är omöjligt att knäcka inom en rimlig tid med rimliga resurser. Metoder som är omöjliga att knäcka med dagens kalkylresurser kallas för starka metoder. Generellt kan man säga att ju längre nycklar man har desto starkare blir metoden.

Kryptering[redigera | redigera wikitext]

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 är publik. Under dekryptering av informationen måste man ha tillgång till den hemliga nyckeln och algoritmen. Vanligaste typer av kryptering är symmetrisk och asymmetrisk kryptering. En mindre vanlig typ som används är hash-funktion. Den använder sig inte av privata nycklar utan fungerar på så sätt att man skriver en text och kör den texten genom en hash-funktion.

Symmetrisk kryptering[redigera | redigera wikitext]

Den symmetriska krypteringen använder samma nyckel vid kryptering och dekryptering. Vid informationsutbyte mellan sändaren och mottagaren måste båda ha tillgång till samma nyckel. För att kryptera och dekryptera informationen används denna nyckel av både sändaren och mottagaren. Fördelen med symmetrisk kryptering är snabbheten. Nackdelen med symmetrisk kryptering är att flera personer måste ha tillgång till samma nyckel. Ett annat problem är hur man ska överföra nyckeln på ett bra sätt från sändaren A till mottagaren B. Det behövs ett säkert sätt att överföra nyckeln mellan sändaren A och mottagaren B. Eftersom en nyckel inte kan skickas krypterad måste man hitta ett säkert sätt att skicka den mellan sändaren och mottagaren. Två säkra sätt är att personligen överlämna nyckeln muntligen eller via något media, till exempel cd, diskett etc. Ett annat sätt är att överföra nyckeln med asymmetrisk kryptering. Resultatet av att samma nyckel existerar på fler än ett ställe blir att nyckeln lätt kan komma i fel händer. Ju fler ställen nyckeln finns på, desto större risk att nyckeln kommer i fel händer. Det är därför viktigt att nyckeln byts ut emellanåt för att upprätthålla säkerheten.

Triple-DES och Advanced Encryption Standard[redigera | redigera wikitext]

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[redigera | redigera wikitext]

Illustration av hur ett digitalt dokument skickas med "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[redigera | redigera wikitext]

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

e*d-(P_1-1)(P_2-1)k = 1

där d är den personliga nyckeln. Alltså är d det inverterade värdet av

e(mod\ (P_1-1)(P_2-1))

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

E(x)=x^e(mod\ n)

Dekrypteringen blir då

D(y)=y^d(mod\ n)

X är en numerisk representation av det meddelande som ska krypteras.

Exempel på kryptering med RSA[redigera | redigera wikitext]

  • P1 = 1249
  • P2 = 1049
  • x = 444 807 (ö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

E(x) = x^e(mod\ n) = 444807^{1013}(mod\ 1310201) = 503328

För att dekryptera meddelandet använder man den personliga nyckeln d = 843 101

D(y)=y^d(mod\ n)= 503328^{843101}(mod\ 1310201)

Det ursprungliga meddelandet kommer då fram.

När används symmetrisk eller asymmetrisk kryptering?[redigera | redigera wikitext]

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 symmetriskt 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 nyckel 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 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),[källa behövs] 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[redigera | redigera wikitext]

Med en hashfunktion kan man beräkna en kort kontrollsumma (message digest) av ordinarie längd ur en datamängd av godtycklig längd. Man kan inte räkna ut det ursprungliga meddelandet med hjälp av kontrollsumman. Man får inte heller samma kontrollsumma som resultat av två olika meddelanden. 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[redigera | redigera wikitext]

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.

Externa länkar[redigera | redigera wikitext]

Fotnoter[redigera | redigera wikitext]


Vidare läsning[redigera | redigera wikitext]

Se även[redigera | redigera wikitext]