Kryptering. Wearable Computers D 10p. Namn: Josef Israelsson Datum: 2003-10-13 Lärare: Björne Lindberg Ulf Brydsten Lars Karlsson



Relevanta dokument
Kryptografi - När är det säkert? Föreläsningens innehåll. Kryptografi - Kryptoanalys. Kryptering - Huvudsyfte. Kryptografi - Viktiga roller

Grundfrågor för kryptosystem

Krypteringteknologier. Sidorna ( ) i boken

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

Protokollbeskrivning av OKI

256bit Security AB Offentligt dokument

Datasäkerhet. Petter Ericson

Metoder för sekretess, integritet och autenticering

Kryptering. Av: Johan Westerlund Kurs: Utveckling av webbapplicationer Termin: VT2015 Lärare: Per Sahlin

Introduktion till protokoll för nätverkssäkerhet

Dagens föreläsning. Datasäkerhet. Tidig historik. Kryptografi

Att använda kryptering. Nyckelhantering och protokoll som bygger på kryptering

Kryptoteknik. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

Grundläggande kryptering & chiffer

Kryptering. Krypteringsmetoder

NÅGOT OM KRYPTERING. Kapitel 1

Många företag och myndigheter sköter sina betalningar till Plusoch

EIT060 Datasäkerhet - Projekt 2. Jacob Ferm, dt08jf0 Johan Paulsson, dt08jp8 Erik Söderqvist, dt08es8 Magnus Johansson, dt08mj9 26 februari 2011

Objektorienterad Programkonstruktion. Föreläsning 16 8 feb 2016

Modul 3 Föreläsningsinnehåll

Skydd för känsliga data

Hemligheternas Matematik

RIV Tekniska Anvisningar Kryptografi. Version ARK_

Grundläggande krypto och kryptering

Föreläsning 7. DD2390 Internetprogrammering 6 hp

Dagens föreläsning. Datasäkerhet. Tidig historik. Kryptografi

EIT060 Datasäkerhet - Projekt 2. Jacob Ferm, dt08jf0 Johan Paulsson, dt08jp8 Erik Söderqvist, dt08es8 Magnus Johansson, dt08mj9 26 februari 2011

RSA-kryptering och primalitetstest

Kryptering & Chiffer Del 2

Kryptografi: en blandning av datavetenskap, matematik och tillämpningar

Säker e-kommunikation

DNSSEC och säkerheten på Internet

PGP håller posten hemlig

Dagens agenda. Lagring & berarbetning av data. Filer och filformat Metadata Komprimering Kryptering Olika typer av data Filsystem Databaser

Försöksnomineringssystem 2013

MA2047 Algebra och diskret matematik

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

E-legitimationer. Jonas Wiman. LKDATA Linköpings Kommun.

Mjukvarurealiserad bildtelefoni

Grunderna i PKI, Public Key Infrastructure

Att bygga VPN. Agenda. Kenneth Löfstrand, IP-Solutions AB. Olika VPN scenarios. IPsec LAN - LAN. IPsec host - host SSH

Security Target (ST) för The Secure Channel (server)

Utdrag från Verklighetens Kvadratrötter: Sida 1 en bok om matematikens användningsområden skriven av Marcus Näslund. Mer info:

Elektroniska signaturer - säker identifiering?

Den mest väsentliga skillnaden mellan

Datum: Version: Författare: Christina Danielsson Senast ändrad:

Rutin vid kryptering av e post i Outlook

Test av kryptobiblioteket

Undersökning och design av en säkerhetslösning för en molnlagringstjänst

DNSSec. Garanterar ett säkert internet

Java Secure Sockets Extension JSSE. F5 Secure Sockets EDA095 Nätverksprogrammering! Roger Henriksson Datavetenskap Lunds universitet

Magisteruppsats 20p vt98. Säker Elektronisk Transaktion. Sammanfattning

Säkerhet. Säker kommunikation - Nivå. Secure . Alice wants to send secret message, m, to Bob.

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Primtal, faktorisering och RSA

Introduktion till krypteringsmetoderna RSA och Merkle-Hellman

Internetsäkerhet. banktjänster. September 2007

Moderna krypteringssystem

Transportstyrelsens föreskrifter om hantering av krypteringsnycklar och certifikat för tillverkning av digitala färdskrivare;

Datasäkerhet och integritet

Ett säkert Internet. Betalningsformer för säkra transaktioner över Internet. Författare: Anders Frånberg. Examensarbete I, 10p Vårterminen - 00

Posthantering och annan överföring av sekretessbelagd och integritetskänslig information

Foto: Björn Abelin, Plainpicture, Folio bildbyrå Illustrationer: Gandini Forma Tryck: Danagårds Grafiska, 2009

Undersökning och design av en säkerhetslösning för en molnlagringstjänst

Abstract. 1. Inledning

Krypteringstjänster. LADOK + SUNET Inkubator dagarna GU, Göteborg, 6-7 oktober Joakim Nyberg ITS Umeå universitet

En introduktion till några klassiska chiffer

Kryptografiska mekanismer och valutor

Kryptering av dokument för överföring via telenätet. (HS-IDA-EA )

DECT ger starkt skydd mot obehörig åtkomst

SLU Säkerhets instruktioner avseende kryptering av filer

Användarhandledning för The Secure Channel

Övning 6 - Tillämpad datalogi 2012

Tekn.dr. Göran Pulkkis Överlärare i Datateknik. Nätverksprotokoll

MATEMATIK I SÄKERHETENS TJÄNST OM KODNING OCH KRYPTERING 1

Föreläsninsanteckningar till föreläsning 3: Entropi

SSL/TLS-protokollet och

Din guide till en säkrare kommunikation

Steganografi - en översikt

Föreläsninsanteckningar till föreläsning 1: Introduktion

Stockholm Skolwebb. Information kring säkerhet och e-legitimation för Stockholm Skolwebb. skolwebb.stockholm.se

Kryptografiska mekanismer och valutor

En jämförelse av krypteringsalgoritmer. Kandidatarbete Informationssystem Peter Broman Ola Liljerum Handledare: Bengt Carlsson

Policy för användande av IT

Tillsyn enligt personuppgiftslagen (1998:204) Autentisering av användare som medges åtkomst till personuppgifter i kreditupplysningsregister

Riktlinjer för informationssäkerhet

Kryptering och primtalsfaktorisering

EBITS Arbetsgruppen för Energibranschens Reviderad Informationssäkerhet

Inte bara det, vi har dessutom fått allt fler arbetsredskap. När vi inte har kontroll på enheterna är det svårare att skydda dem.

Säker kommunikation för inbyggda sensorsystem för hälsa. Mats Björkman Professor i datakommunikation Mälardalens högskola

Tentamen i Kryptologi 1DT

EIT060 Datasäkerhet - Projekt 2. Jacob Ferm, dt08jf0 Johan Paulsson, dt08jp8 Erik Söderqvist, dt08es8 Magnus Johansson, dt08mj9 26 februari 2011

Säker lagring av krypteringsnycklar

Vad man vill kunna göra. Lagra och skicka krypterad information Säkerställa att information inte manipuleras Signera sådant som man står för

Offentlig kryptering

Föreläsning 10. Grundbegrepp (1/5) Grundbegrepp (2/5) Datasäkerhet. olika former av säkerhet. Hot (threat) Svaghet (vulnerability)

Datasäkerhet. Informationsteknologi sommarkurs 5p, Agenda. Slideset 10. Hot mot datorsystem. Datorsäkerhet viktigare och viktigare.

Din manual NOKIA C111

Designprinciper för säkerhet och Epilog. Marcus Bendtsen Institutionen för Datavetenskap (IDA) Avdelningen för Databas- och Informationsteknik (ADIT)

Transkript:

Kryptering Wearable Computers D 10p Namn: Datum: 2003-10-13 Lärare: Björne Lindberg Ulf Brydsten Lars Karlsson

Sammanfattning Målet med denna rapport är att ge en helhetstäckande men samtidigt också djupare beröring av det omfattande ämnet kryptering. Rapporten innefattar de olika tekniker som används, förklaring av krypteringsalgoritmer, matematiska definitioner, användningsområden, kryptologiska verktyg och praktiska exempel på hur kryptering kan användas. Metoden som använts för att skapa det slutgiltiga resultatet är främst instudering av diverse litteratur men också genom inläsning av fakta från Internet. Källorna är kritiskt granskade och noggrant studerade. Resultatet är en rapport som fokuserar på de absolut viktigaste komponenterna inom kryptering, såsom symmetriska krypteringsalgoritmer, asymmetriska krypteringsalgoritmer, hybridkryptering, chiffer och olika användningsområden som autenticering, certifikat och digitala signaturer. Kryptering är och kommer med all sannolikhet att i fortsättningen också vara ett av de viktigaste verktygen för säkerhet, integritet och sekretess för överföring av data på elektronisk väg. 2

Innehåll Inledning... 4 Historia... 5 Kryptering i allmänhet... 6 Krypteringsalgoritmer... 8 Allmänt... 8 Symmetriska... 9 Asymmetriska... 9 Hybridkryptering... 10 Shift Cipher... 10 Block ciphers... 11 Stream ciphers... 11 Användningsområden och scenarier... 11 Sekretess och integritet... 12 Autenticering... 13 Digitala signaturer... 15 Kryptologiska verktyg... 16 Hashfunktioner... 16 Slumpgeneratorer... 16 Certifikat... 17 Jämförelse kryptologiska verktyg... 17 Symmetriska krypteringsalgoritmer... 17 Asymmetriska krypteringsalgoritmer... 18 Envägs hashfunktioner... 18 Digitala signaturer... 19 Slumptalsgeneratorer... 19 Blankettchiffer Exempel... 20 Symmetrisk kryptering Fördjupningsexempel... 22 Källförteckning... 24 3

Inledning Världen idag, en industri styrd av det alltmer datoriserade samhället. Hur man än vänder och vrider på sig, åt vilket håll man än tittar, kan man inte undvika att se vilket håll vi har gått de senaste fem åren. Än mindre kan man undvika att se varthän vi i dagsläget är på väg. För bara några år sedan var användningen av datorer inte alls lika påtaglig som den är nu. I alla fall inte när man talar om privatpersoner. Inom företagen har det högfrekventa användandet av datorer skett under en längre tid, men här har istället utvecklingen av vad vi kallar Internet, och datorkommunikation spelat en större roll. I princip alla företag i klasserna medelstora till stora, har ett nätverk i någon form inom sin verksamhet. Detta för att på ett enkelt sätt kunna överföra och dela information inom företaget, men även för att kunna nå ut till sina kunder på elektronisk väg. Idag säljer de flesta företag, stora som små, ut sina tjänster på Internet. Det stora problemet detta medför är risken för intrång i deras system. Förlorat data, spridning av sekretessbelagda uppgifter, datorhaveri, ja listan kan göras lång på de konsekvenser ett intrång i ett företags datorsystem kan medföra. För bara några år sedan var det inte många som överhuvudtaget kände till riskerna med att låta koppla ett internt nätverk mot Internet. Dels för att färre företag utnyttjade denna möjlighet, men kanske mest för att det fanns så mycket mindre att vara rädd för. Kurvan för ökningen av antalet personer kapabla att utföra ett intrång, eller i annan bemärkelse, attack, mot ett företag, är brant. Kunskapen om datorkommunikation har helt enkelt stigit till en långt högre nivå. Det positiva är att vi lärt oss hantera trådbunden och trådlös kommunikation och överföring på ett mycket bättre sätt än tidigare. Men allt gott tycks dock föra något ont med sig. Kunskapen om hur man kan bryta sig in i ett företags nätverk, avlyssna trafik, och stjäla sekretessbelagd information, har också den blivit långt mer utvecklad. I takt med att tjänsterna blir fler och mer avancerade, ökar säkerhetshålen i systemen, och idag sker det attacker på datorer och datorsystem dagligen. Allt för att utomstående skall kunna komma över betydelsefull information som de sedan kan använda i eget vinnande syfte. 4

Det finns många olika sätt att som användare av ett system skydda sig mot att förlora viktiga data till utomstående personer. Att förvränga den information man skickar mellan sina delar, och till andra inblandade, på ett sådant sätt att den blir oläslig för utomstående, är ett mycket effektivt sätt att förhindra ovälkomna att ta del av informationen. Man kallar denna förvrängningsprocess för kryptering, som i dagsläget har utvecklats till ett av huvudverktygen för konfidentialitet, tillit, åtkomstkontroll, elektroniska betalningar, företagssäkerhet, och en mängd andra områden. Tidigare har kryptering endast varit ett privilegium för regeringen och högt utbildade specialister, men genom dagens stora tekniska framsteg, har kryptering blivit något för de flesta datoranvändare. Historia Kryptering i olika former har funnits i alla tider, åtminstone så länge vi människor befolkat vår planet. Redan tidigt i människans existens ville man på något sätt kunna hålla information som skickades från en punkt till en annan över ett medium hemlig och endast tillgänglig för vissa utvalda. På romartiden ville till exempel Cesar skydda sina meddelanden som han sände mellan arméer och göra dem oförståeliga för motståndarna. Mediet Cesar använde var i detta fall en mänsklig bärare, som transporterade en skrift krypterat med det tidiga och välkända Cesar-chiffret, till en annan del av Cesars arme. Cesar- chiffret fungerade på sådant sätt att man flyttade om bokstäverna i alfabetet, eller rättare sagt så flyttade man efter dem. I detta fall tre steg. Ett a skulle då betyda d, ett b skulle betyda e, och så vidare. En mycket enkel, men på den tiden dock fungerande algoritm. Sedan uppstod de båda världskrigen, samt det kalla kriget, vilka medförde en enorm utveckling inom kryptografin. Här började man verkligen inse allvaret med att kunna förmedla data mellan sina enheter utan att fienden kunde utläsa vad det egentliga innehållet var. I dagsläget är det i likhet med romartiden lika viktigt att ett meddelande inte blir avlyssnat och utläst när vi skickar data med dagens teknik, som det var för Cesar att inte motståndaren låg gömd i en buske och övermannade det mänskliga mediet. 5

Kryptering i allmänhet Kryptering är som sagt ett sätt att med hjälp av en matematisk algoritm och en krypteringsnyckel, omvandla en datamängd i klartext till en datamäng i kryptotext. Den omvända processen kallas för dekryptering, och innebär att man med samma eller motsvarande nyckel som användes vid krypteringen omvandlar kryptotexten till klartext så att den önskade mottagaren kan utläsa innehållet. Kryptering används idag för två primära syften, att skydda innehållet i ett dokument, och att kunna försäkra sig om att innehållet i överfört data inte förändrats eller förvrängts gentemot ursprungsmeddelandet. Kryptografi är vetenskapen om att hålla meddelanden hemliga. Kryptoanalys är vetenskapen om att knäcka såkallade chiffer. Tidigare kunde det förhålla sig enkelt att knäcka ett chiffer, eller rättare sagt nyckeln som användes för att kryptera meddelandet. Numera har längden på krypteringsnycklarna drygats ut. Den vanligaste formen är med 128 bitars längd, men det finns algoritmer som använder upp till 512 bitars krypteringsnyckel. Nyckelns Antalet möjliga nycklar: storlek: 8 256 40 1,099,511,627,776 56 72,057,594,037,927,936 64 128,446,774,073,709,600,000 128 3,40282*10 38 256 1,15792*10 77 512 1,3408*10 154 Det finns två olika huvudklasser av krypteringsalgoritmer, Symmetrisk och assymetrisk kryptering. Den förstnämnda använder likadana nycklar för kryptering och dekryptering, det vill säga att både sändaren och mottagaren måste känna till och kunna använda samma krypteringsnyckel, vilken absolut inte får komma i någon utomståendes ägo. Den andra algoritmen 6

innehåller publika och privata nyckelpar, där varje privat nyckel har en motsvarande publik nyckel. I detta fall är den publika nyckeln känd för allmänheten utan att det skadar integriteten av det data som skall skickas på något sätt. Vidare finns det också en krypteringsmetod som kallas för Hybridkryptering, vilken är en kombination av symmetrisk och asymmetrisk kryptering. Även denna kommer att behandlas senare i rapporten. Nedan följer en matematisk notation på ett enkelt symmetriskt kryptosystem där ett meddelande skickas krypterat från person A till person B som i sin tur dekrypterar meddelandet: Def: Ett kryptosystem är en fem- tuple (P,C,K,E,D), där följande villkor är uppfyllda: 1. P är ett ändligt set av möjliga klartexter 2. C är ett ändligt set av möjliga kryptotexter 3. K, nyckelrymden, är ett ändligt set av möjliga nycklar 4. för varje K K, finns det en krypteringsregel ek E och en motsvarande dekrypteringsregel dk D. Varje ek : P -> C och dk : C -> P är funktioner som ger att dk(ek(x)) = x för alla klartext element x P. Det huvudsakliga villkoret är villkor nummer fyra, som säger att om meddelande x krypteras med ek, och den resulterande kryptotexten därefter dekrypteras med dk, kommer resultatet återigen att vara meddelande x i klartext. Nedan följer ett flödesschema som beskriver ovanstående definition: Fig1: Kommunikationskanalen hos ett symmetriskt krypteringssystem 7

I figuren ser vi också att person A och person B först måste utbyta en slumpmässig delad nyckel K K över en säker kanal för att förhindra person C från att avlyssna krypteringsnyckeln. Anta sedan att person A vill skicka ett meddelande till person B över en osäker kanal. Vi antar att meddelandet är en sträng: x = x1x2x3 xn för heltal n 1, där varje klartext symbol xi P, 1 i n. Varje xi krypteras med hjälp av krypteringsregeln ek specificerad av den förutbestämda nyckeln K. Följaktligen beräknar person A yi = ek (xi), 1 i n, och den resulterande chiffersträngen y = y1y2y3 yn skickas över kanalen. När person B tar emot y1y2y3 yn, dekrypterar den meddelande med hjälp av dekrypteringsfunktionen dk, och erhåller därmed den ursprungliga klartextsträngen x1x2x3 xn. Krypteringsalgoritmer Allmänt För att kryptera ett meddelande i klartext, transformerar avsändaren detta med hjälp av någon utvald regel till ett chiffer. Mottagaren måste känna till inversen till denna regel för att kunna dekryptera meddelandet till sin ursprungsform. Man definierar de ingående delarna i krypteringstransformationen som en funktion E, och en nyckel K. Det resulterande meddelandet skrivs därmed {M}K. E(K,M) = {M}K 8

Funktionen E definierar en algoritm som transformerar klartext till kryptotext genom att kombinera dem med nyckeln. Dekrypteringsfunktionen kan definieras på följande vis: D(K,E(K,M)) = M Vid kryptografi där man använder likadana nycklar vid både kryptering och dekryptering, såkallade delade hemliga nycklar, är processen symmetrisk. Därför kallas oftast kryptering med hemliga delade nycklar för symmetrisk kryptering. När publika nycklar också används i krypteringen, är processen asymmterisk, varefter denna typ av kryptering också kallas för asymmetrisk kryptering. Symmetriska Symmetriska algoritmer kan definieras som: FK([M]) = E(K,M) Denna har egenskaparna av en stark kryptering, eftersom FK([M]) är väldigt enkel att beräkna, men inversen, FK -1 ([M]) är nästintill omöjlig att beräkna. Denna typ av funktion är också känd som envägsfunktioner. Styrkan hos algoritmen beror till stor del på storleken hos K. Detta på grund av att det mest effektiva sättet att knäcka en sådan algoritm, det vill säga att lösa ut M ur {M}K, är att gå igenom alla möjliga värden på K, och applicera detta på E(K, M). Asymmetriska Förutsättningen för all asymmetrisk kryptering är att det existerar en trap-door funktion. Det vill säga en envägsfunktion med en hemlig utgång. Funktionen skall vara enkel att beräkna men omöjlig att invertera, såvida du inte känner till den hemliga utgången. 9

Hybridkryptering Asymmetrisk kryptering lämpar sig särskilt bra vid till exempel elektronisk handel, eftersom man inte behöver genomföra något byte av en hemlig nyckel. Men samtidigt är kostnaden för asymmetrisk kryptering väldigt hög. Därför uppkom kombinationen symmetrisk/asymmetrisk kryptering som fick det passande namnet hybridkryptering. Hybridkrypteringsprocessen börjar med okrypterad kommunikation för de första utbytena, varefter asymmetrisk kryptering används för att skapa en hemlig delad nyckel, varpå kommunikationen därefter kan ske med symmetrisk kryptering. Shift Cipher Att kryptera ett meddelande bygger på att med matematiska operationer förvränga det till ett såkallat chiffer. Det finns väldigt många olika typer av chiffer att använda vid kryptering, där Shift Cipher, eller skiftchiffer är ett som används ofta. Det bygger på ekvationsdefinitionerna: och ek(x) = (x + K) mod 26 dk(y) = (y - K) mod 26 Där (x,y Ζ 26) Man har använt de 26 bokstäverna i det engelska alfabetet och gett varje bokstav en siffra. K är i detta fall krypteringsnyckeln. Om K = 3 har man det tidiga och berömda Cesarchiffret. Antag att K = 13, och meddelandet hej skall krypteras. Först konverteras då texten till motsvarande siffror, det vill säga meddelandet skulle bli: 749. Sedan adderas varje tal med nyckel, varefter resultatet moduleras med 26. Det resulterande meddelandet skulle då bli 181520, och efter man transformerat tillbaks till motsvarande bokstäver: spu. Meddelandet är därmed krypterat med Skiftchiffer tekniken, och är därmed klart för sändning. Andra välkända skiffertekniker är Affineskiffret och Substititionsskiffret. 10

Block ciphers När ett meddelande skall skickas kan buntar med data samlas in och krypteras ihop. Ofta är denna bunt storlek 64 bit. Meddelandet delas därför in i lika stora block, och därefter krypteras hela blocket innan det skickas. En nackdel med rakt blockchiffer är att varje block är oberoende av föregående block, varefter upprepade mönster kan kännas igen. Därför finns något som kallas Cipher block chaining, där man efter meddelandet krypterats, gör en xor operation med det föregående okrypterade blocket. Vid dekryptering dekrypteras först det block som är xor:at, varefter detta xor:as med föregående krypterade block. Detta fungerar på grund av att xor operationen är idempotent. Block med klartext n+3 n+2 n+1 XOR E(K,M) Block med kryptotext n-3 n-2 n-1 n Fig 2: Cipher block chaining Stream ciphers I såkallat strömkrypto krypteras ettor och nollor en efter en allteftersom de strömmas in. Här används en nyckeltalsgenerator som genererar nycklar slumpmässigt. Sedan krypteras meddelandet genom att göra en xor operation med nyckelströmmen på klartexten. Strömkrypto är mycket snabbare än blockkrypto, men opererar oftast på mindre mängder data. Användningsområden och scenarier Användningsområdena för kryptering är många, men den spelar särskild roll i tre viktiga implementationer vid designen av ett säkert system: sekretess och integritet, autenticering, och digitala signaturer. Dessa tre beskrivs nedan med exempel från vart och ett av de tre fallen. 11

Sekretess och integritet Kryptering används i hög grad för att åstadkomma sekretess och integritet vid datakommunikation, överföring och utbyte av viktig information. Denna kryptering är av symmetrisk typ, och används bland annat inom det militära för att åstadkomma så hög säkerhet som möjligt över kanaler som är känsliga för icke auktoriserad duplicering av meddelanden, eller förändring av ursprungsmeddelandet. Integriteten kan kontrolleras genom att en checksumma är inkluderad och kontrollerad. Scenario 1: Hemlig kommunikation med delad hemlig nyckel. Person A sänder meddelande M till person B, och de delar samma hemliga nyckel KAB. 1. Person A använder KAB för att kryptera meddelande M med hjälp av krypteringsfunktionen E(KAB,M). Person A sänder sedan meddelande {M}KAB till person B. Person A kan använda denna krypteringsnyckel så länge den inte blivit känd för allmänheten. 2. Person B tar emot {M}KAB och använder den motsvarande dekrypteringsfunktionen D(KAB,M) för att dekryptera meddelande M och kunna läsa det i klartext. Om person B kan läsa ut meddelandet har dekrypteringen lyckats, och om det dessutom finns en överenskommen checksumma i det data som skickades, vet person B att meddelandet heller inte är förändrat på vägen och att det verkligen kommer från person A. Ett problem ligger i att kunna utbyta en delad hemlig nyckel på ett säkert sätt. Detta kan åstadkommas på fysisk väg, eller att man använder hybridkryptering, vilket kommer att diskuteras senare i rapporten. Ett annat problem är att en obehörig person C kan kopiera det krypterade meddelandet, och skicka nya kopior till person B vid senare tillfällen. Person B tror då fortfarande att meddelandet kommer från person A. 12

Autenticering För autenticering mot system eller enskilda enheter, bärbara såsom stationära, kan kryptering användas med framgång. Ett meddelande som dekrypteras av en mottagare med hjälp av en särskild krypteringsnyckel, och som innehåller en korrekt checksumma eller ett annat förväntat värde, kan anses autentiskt. Mottagaren kan härmed dra slutsatsen att avsändaren har tillgång till motsvarande krypteringsnyckel, och att meddelandet är korrekt ifall nyckeln endast är känd hos sändaren och mottagaren. Scenario 2: Autenticerad kommunikation med en server: Person A vill ha tillgång till filer på en filserver som ägs av person B. Server S är en autenticeringsserver som tillhandahåller samtliga användare med lösenord och hemliga nycklar. Person A har till exempel sin hemliga nyckel KA, person B sin nyckel KB och så vidare. I detta exempel kommer det att refereras till en såkallad ticket, vilket är ett av S genererat krypterat meddelande som innehåller identiteten hos mottagaren och en delad nyckel som genererats temporärt för detta utbyte. 1. Person A sänder ett meddelande i klartext till server S som innehåller A:s identitet och en förfrågan efter en ticket för att kunna få tillträde till Person B. 2. Server S skickar ett svar till person A krypterat i KA innehållande en ticket krypterad med KB och en ny hemlig nyckel KAB som skall användas när person A kommunicerar med person B. Svaret från S:{{Ticket}KB, KAB}KA 3. Person A dekrypterar sedan meddelandet från Server S med hjälp av sin nyckel KA, och erhåller därmed sin efterfrågade ticket till person B. Person A kan dock inte dekryptera själva sin erhållna ticket, eftersom den är krypterad med KB. Person A:s erhållna ticket ser ut på följande vis: {KAB, Person A}. 13

4. Person A skickar ett meddelande: {Ticket}KB, Person A, R till person B för att erhålla access till dennes filserver. Meddelandet innehåller person A:s ticket, Person A:s identitet, och en efterfrågan till filservern. 5. Person B tar emot meddelandet, dekrypterar {Ticket}KB med sin privata nyckel KB och får därmed den autentiska identiteten hos person A. Person B får därmed också den nya temporärt skapade nyckeln KAB som skall användas vid kommunikationen med person A. Denna typ av temporärt genererade nyckel vid tillfälliga utbyten kallas också sessionsnyckel. Detta scenario bygger på att server S har tillgång till samtliga inblandades privata nycklar. Detta fungerar i många sammanhang, där servern S kan via en säker kanal tilldelas de hemliga nycklarna, men är inte lämpligt för kommunikation över längre distanser där fysisk kontakt inte är möjlig. Lösningen på detta kallas hybridkryptering. Scenario 3: Autenticerad kommunikation med publika nycklar. Antag att person B har ett publikt/privat nyckelpar, och vill kunna utnyttja dessa för att skapa en hemlig nyckel med Person A för kommunikation med denne: 1. Person A erhåller person B:s publika nyckel certifikat via ett nyckeldistributions center. Det kallas certifikat därför att det är signerat av en tillförlitlig tredje part. Person B: publika nyckel: KBpub. 2. Person A skapar en ny hemlig sessionsnyckel KAB, och krypterar den med person B:s publika nyckel KBpub. Person A skickar sedan {KAB}KBpub till person B. Person B tar emot meddelandet och dekrypterar det med sin motsvarande hemliga nyckel KBpriv. Nu kan Person A och Person B kommunicera med hjälp av deras nya hemliga nyckel KAB. 14

Detta scenario demonstrerar hur hybridkryptering kan användas. Mn använder helt enkelt ett publikt/hemligt nyckelpar för att skapa och dela på en ny hemlig nyckel, det vill säga både symmetrisk och asymmetrisk kryptering används. Ett problem är att en tredje utomstående person kan uppge sig vara nyckeldistributions centret, och därmed kommer denne att kunna lämna ifrån sig sin publika nyckel till person A istället för person B:s publika nyckel. Därmed kommer person C att kunna läsa meddelandet från person A. Digitala signaturer En digital signatur verifierar äktheten hos något, till exempel att ett meddelande är en oförändrad kopia från den riktiga avsändaren. Kryptografi är en viktig teknik för att kunna använda digitala signaturer på bästa sätt. För att kunna binda ett meddelande till avsändaren, krypteras en digest, en komprimerad variant av meddelandet, och sänds med originalmeddelandet. För att åstadkomma en digest används en hemlig digest funktion, som beräknar ett värde på meddelandet. Den hemliga digestfunktionen är passande i den mån att den osannolikt kommer att ge två likadana värden för två olika meddelanden. Den slutgiltiga krypterade digesten fungerar som en signatur i ett meddelande. Scenario 4: Digitala signaturer med hjälp av en hemlig digest funktion. Person A vill signera ett meddelande M så att mottagare kan verifiera att person A är skapare av meddelandet. 1. Person A beräknar ett värde med fixerad längd på meddelande M: Digest(M). 2. Person A krypterar sedan digesten med dennes privata nyckel, och skickar sedan meddelande: M, {Digest(M)}KApriv till person B. 3. Person B tar emot meddelandet, och beräknar i sin tur Digest(M). 15

4. Person B dekrypterar därefter {Digest(M)}KApriv med hjälp av person A:s publika nyckel KApub och jämför sedan det resultatet med sin beräknade Digest(M). Om de är lika så är signaturen korrekt. Kryptologiska verktyg Hashfunktioner En kryptografisk hashfunktion möjliggör säkring av dataintegritet. Hashfunktionen skapar en typ av fingeravtryck som gör att man kan verifiera datat mot den som skapat det. Skulle datat på något sätt förändras kommer fingeravtrycket inte längre vara giltigt. Fingeravtrycket kan när som helst kontrolleras genom att beräkna det igen och jämföra mot det gamla. Antag att hashfinktionen, eller fingeravtrycket, är definierat som y = h(x). Person A vill sända meddelande x till person B. Person A skapar då fingeravtrycket y, och sänder sedan meddelande (y,x) till person B. Person B, som också har tillgång till hashfunktionen, beräknar i sin tur y = h(x) på det mottagna x, och jämför det med det mottagna y. Om de är likadana så är fingeravtrycket korrekt. Def: En Hashfamilj är en fyra-tuple (X,Y,K,H) där följande villkor är uppfyllda: 1. X är ett set av möjliga meddelanden. 2. Y är ett begränsat set av möjliga fingeravtryck. 3. K är nyckelrymden, det vill säga ett begränsat set av möjliga nycklar. 4. För varje K K, finns det en hashfunktion hk H. Varje hk: X Y Slumpgeneratorer Kryptografiska slumpgeneratorer genererar slumpmässigt fram tal att använda i kryptografiska algoritmer. Dessa slumpgeneratorer skall inte vara baserade på logiska räknare och matematiska operationer, utan istället på fysiska händelser, som till exempel minsta signifikanta biten på en 16

ljudingång, eller mellanrummet mellan en användares knapptryckningar på ett tangentbord. Dessa fysiska händelser mappas sedan av en funktion till värden som alla kan refereras till samma gränsvärden. När fysiska källor inte finns att tillgå, måste pseudo- slumpmässiga värden användas, vilket dock inte är att rekommendera. Vanliga slumpgeneratorer i olika programspråk är därför inte heller lämpliga vid kryptografiska slumpgeneratorer. Certifikat Ett certifikat används för att garantera äktheten hos något. Ett kontonummercertifikat tillhörande person A intygar till exempel att ett visst kontonummer verkligen tillhör Person A. Certifikatet måste dock signeras med en krypterad digital signatur, så att till exempel mottagaren av kontonumret verkligen kan verifiera att certifikatet är äkta. Ett certifikat kan till exempel se ut på följande vis: 1. Typ av certifikat: Bankkontonummer 2. Namn: Person A 3. Kontonummer: 123006565-6 4. Certificeringsmyndighet: Person A:s bank 5. Signatur: {Digest(2+3)}KbankPriv Mottagaren av kontonumret, till exempel en försäljare, kan kontrollera person A:s kontonummer genom att med bankens publika nyckel dekryptera signaturen beräkna digest på fält två och tre, och jämföra dessa värden. Jämförelse kryptologiska verktyg Symmetriska krypteringsalgoritmer Styrkan med symmetriska krypteringsalgoritmer är att det är svårt för eventuella obehöriga att ta reda på den hemliga delade nyckeln. Detta eftersom denna i många fall utdelas på fysisk väg, och inte via Internet. 17

Symmetrisk kryptering är också billigare och mindre resurskrävande än asymmetriska krypteringsalgoritmer. Problemet ligger dock också i att båda parter måste erhålla den hemliga nyckeln på ett säkert sätt. Löses bäst genom personlig kontakt, men kan också lösas genom hybridkryprering där man använder privata/publika nyckelpar för att dela en hemlig nyckel. Symmetriska krypteringsalgoritmer används oftast när det inte handlar om ett temporärt utbyte, utan om en längre relation mellan olika parter. Asymmetriska krypteringsalgoritmer Asymmetriska krypteringsalgoritmer innehåller två olika nycklar, en privat och en publik. Nackdelen med denna typ av kryptering är att de publika nycklarna måste delas ut på ett tillförlitligt sätt, vilket kan vara svårt. Det måste helt enkelt finnas en tillförlitlig tredje part som alla ingående parter kan lita på. Om till exempel en obehörig utger sig för att vara denna tillförlitliga tredje part, och denne lämnar ut en felaktig publik nyckel, kommer denna angripare att kunna dekryptera alla meddelanden som krypterats med denna nyckel och komma åt innehållet. Styrkan ligger dock också i detta med utdelningen av publika nycklar. Det är till skillnad från symmetriska krypteringsalgoritmer enkelt och smidigt att komma åt en motsvarande nyckel, varefter kommunikationen kan börja. Asymmetrisk kryptering används med fördel i temporära utbyten, till exempel för utdelning av sessionsnycklar vid autentisering. Envägs hashfunktioner Är som tidigare nämnt funktioner som gör det möjligt för en mottagare att kontrollera att innehållet i ett meddelande inte är korrupt eller förändrat på något sätt, det vill säga att det är det ursprungliga meddelandet. En typ av fingeravtryck kan man benämna det. Styrkan ligger just i att mottagaren kan verifiera att meddelandet är korrekt. Envägs hashfunktioner skyddar dock inte mot såkallade man-in-the-middle attacker, det vill säga att någon obehörig emellan de ingående parterna kan ta emot meddelandet, och sedan 18

skicka flera likadana kopior av samma meddelande, vilket kan ställa till stor skada. Digitala signaturer Används som nämnt för att sätta en signatur på ett meddelande så att mottagaren kan vara säker på att det kommer från rätt avsändare, eller för att signera ett digitalt certifikat. Styrkan är just denna att mottagaren kan vara säker på vem avsändaren är, men de skyddar inte mot man-in-the-middle attacker, oerhört farligt vid till exempel banktransaktioner. För att skapa en digital signatur används en Hashfunktion av något slag på ett meddelande, som avsändaren sedan krypterar med sin privata nyckel. Mottagaren kontrollerar det medföljande resultatet av hashfunktionen genom att först dekryptera meddelandet med avsändarens publika nyckel, och sedan själv beräkna digesten på klartexten, varefter denne sedan jämför med den medföljande digesten. Ett mycket bra och relativt säkert sätt för denna typ av kontroll. Slumptalsgeneratorer Styrkan med slumptalsgeneratorer är att de är relativ billiga att göra enkla och avancerade. Detta relativt är dock också en svaghet, eftersom slumptal oftast bygger på logik, medan verkligheten inte är logisk. Detta vill säga att ett annat logiskt program skulle kunna knäcka slumptalsgeneratorn. Därför bör slumptalsgeneratorer istället bygga på fysiska händelser som sedan mappas till tal i givna intervall. Slumptal kan till exempel användas vid autenticering på Internet där ett tal genereras för användning vid till exempel inloggning. 19

Blankettchiffer Exempel Xor operationen är en logisk operation som ofta används inom kryptering. Detta eftersom den är idempotent, vilket vill säga att en operation kan utföras hur många gånger som helst där den ger samma resultat varje gång om de ingående delarna är desamma. Fig3: Xor Xor har egenskapen (A xor B) xor B = A vilket gör att denna logiska operator kan användas som en enkel algoritm för ett symmetriskt krypto. Sändare: M = 10010110101 K = 00011101101 -------------------------------------------------- C = 10001011000 Mottagare: C = 10001011000 K = 00011101101 -------------------------------------------------- M = 10010110101 Denna algoritm kräver två regler: 20

1. Nyckeln K måste vara helt slumpmässig, det vill säga inte något pseudo- slumpmässigt datorgenererat slumptal. 2. Nyckeln får användas en och endast en gång. Eftersom nyckeln är helt slumpmässig kommer den genererade dataströmmen också att vara helt slumpmässig! 21

Symmetrisk kryptering Fördjupningsexempel Under åren har det uppkommit en mängd olika algoritmer för kryptering. TEA är en av dessa, och står för Tiny Encryption Algoritm. DES (Data Encryption Standard) är en annan algoritm som utvecklades av IBM 1977 och använde en 56- bit nyckel för att omvandla 64 bits klartextblock till 64 bits kryptotextblock. IDEA (The International Data Encryption Standard) kom I början av 1990 och var en utveckling på DES. IDEA använde 128 bits krypteringsnyckel. AES (Advanced Encryption Standard) kom 1997 och ser ut att kunna bli den mest använda algoritmen för symmetrisk kryptering. AES använder upp till 256 bits krypteringsnyckel. Samtliga ovan nämnda tekniker är algoritmer för symmetrisk kryptering. Den vanligaste algoritmen för asymmetrisk kryptering har namnet RSA (Rivest, Shamir and Adelman), och är baserad på användandet av produkten av två primtal som båda är större än 10 100. Nedan följer ett kodexempel i programspråket C på den symmetriska krypteringsalgoritmen TEA: Void tea(char mode, FILE *infile, FILE *outfile, unsigned long k[]){ Char ch, Text[8]; Int i; } While(!feof(infile)){ i=fread(text,1,8,infile); If(i<=0)break; While(I<8) {Text[I++]= ;} Switch(mode){ Case e : Encrypt(k,(unsigned long*)text); break; Case d : Decrypt(k,(unsigned long*)text); break; } fwrite(text,1,8,outfile); } 22

Void encrypt(unsigned long k[], unsigned long text[]){ Unsigned long y = text[0], z = text[1]; Unsigned long delta = 0x9e3779b9, sum = 0; Int n; For(n=0;n<32;n++){ Sum += delta; Y += ((z<<4)+k[0])^(z+sum)^((z>>5)+k[1]); z += ((y<<4)+k[2])^(y+sum)^((y>>5)+k[3]); } text[0] = y; text[1] = z; } Void decrypt(unsigned long k[], unsigned long text[]){ Unsigned long y = text[0], z = text[1]; Unsigned long delta = 0x9e3779b9, sum = delta << 5; Int n; For(n=0;n<32;n++){ z -= ((y<<4)+k[2])^(y+sum)^((y>>5)+k[3]); Y -= ((z<<4)+k[0])^(z+sum)^((z>>5)+k[1]); } text[0] = y; text[1] = z; } TEA algoritmen använder rundor av heltalsaddition, xor och bitvis logisk skiftning för att skapa oreda i klartexten. Klartexten är ett 64 bits block som representeras som två 32 bits heltal i vektorn text[]. Nyckeln är 128 bitar lång, och representeras av fyra 32 bits heltal. Användandet av xor och och skiftning i texten skapar oordning, medan skiftningen och platsbytena med de två 32 bits blocken skapar utspridning. Konstanten delta kombineras varje cykel med varje del av texten för att dölja nyckeln i de fall där texten inte varierar sig. Dekrypteringsfunktionen decrypt fungerar som inversen till krypteringsfunktionen. 23

Källförteckning 1. Andreas Halvarsson, Tommy Morin 2000. Elektroniska Signaturer 2. Douglas R. Stinson 2002. Cryptography Theory and Practice 3. G. Coulouris, J. Dollimore, T. Kindberg 2002. Distributed Systems Concepts and Design 4. James F. Kurose, Keith W. Ross 2001. Computer Networking A Top- Down Approach Featuring the Internet 5. Jochen Schiller 2001. "Mobile Communications 6. Predrag Mitrovic 2002. Handbok i IT-säkerhet 7. http://www.ssh.fi/support/cryptography/ 2003-10-14 8. http://www.wedran.com/rsa/ 2003-10-14 24