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



Relevanta dokument
Grundläggande kryptering & chiffer

Grundfrågor för kryptosystem

Kryptering. Krypteringsmetoder

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

Grundläggande krypto och kryptering

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

Kryptering & Chiffer Del 2

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

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

Krypteringteknologier. Sidorna ( ) i boken

Datasäkerhet. Petter Ericson

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

Metoder för sekretess, integritet och autenticering

256bit Security AB Offentligt dokument

Att forcera Caesar-krypto är inte så svårt. Antalet möjliga nycklar är bara

Talsystem Teori. Vad är talsystem? Av Johan Johansson

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

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

Programmering. Den första datorn hette ENIAC.

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

En introduktion till några klassiska chiffer

Krypteringsprogrammet Kryptogamen

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till MySQL

Kort om World Wide Web (webben)

Alan Turing Har du någonsin undrat vem det var som uppfann datorn? Har du någonsin undrat vem det var som gav England oddsen på att vinna det andra

BLOCK 1. 1A. Att komma igång

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


Krypteringsuppgift. Om kryptering

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

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

RSA-kryptering och primalitetstest

Skydd för känsliga data

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

IPv6 Jonas Aronsson 3TEa

"Content is king" - Vacker Webbdesign & Effektiv Sökmotorsoptimering för företag

Chapter 3: Using Classes and Objects

Tanka program KAPITEL 7. Shareware och freeware. Shareware. Freeware

Kapitel 1 Hej! Jag heter Jessica Knutsson och jag går på Storskolan. Jag är nio år. Jag har blont hår och små fräknar. Jag älskar att rida.

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

Demolektion moraliskt resonerande Lukas problemsituation

RIV Tekniska Anvisningar Kryptografi. Version ARK_

Framsida På framsidan finns:

Säkerhet. Säkerhet. Johan Leitet twitter.com/leitet facebook.com/leitet. Webbteknik II, 1DV449

MA2047 Algebra och diskret matematik

BESTÄLLARSKOLAN #4: VEM SKA GÖRA MIN FILM?

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

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.

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

Kapitel 1 hej Hej jag heter Trulle jag har ett smeknamn de är Bulle. Min skola heter Washinton Capitals jag går i klass 3c de är en ganska bra klass.

Att felsöka din iphone

Cipher Suites. Rekommendationer om transportkryptering i e-tjänster

De 10 mest basala avslutsteknikerna. Direkt avslutet: - Ska vi köra på det här då? Ja. - Om du gillar den, varför inte slå till? Ja, varför inte?

Chefens sju dödssynder - undvik dem och lyckas som ledare!

Nämnarens kryptoskola fördjupning. Enkel transposition

Föreläsning 3.1: Datastrukturer, en översikt

Lathund för tipsare. Vill du lämna information till media? Läs det här först för att få koll på läget.

Föreläsning 7. DD2390 Internetprogrammering 6 hp

Scanner Detektor lärarhandledning Mojäng

{ karriär & ledarskap }

TÖI ROLLSPEL E (7) Arbetsmarknadsutbildning

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

JavaScript del 5 Funktioner

Säker e-kommunikation

Den försvunna diamanten


DC ++ o allt annat runt om! (en kom-i-gång guide..) Klicka på File Settings. Färdigt med konfigureringen!

Mikael Gustafsson & Camilla Stridh

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Denna bok är tillägnad till mina bröder Sindre och Filip

Vilken version av Dreamweaver använder du?

First Class uppgift 2

Erik står i mål Lärarmaterial

En introduktion till pr och mediebearbetning V 1.2

Presentationsanalys av XXX på XXX i XXX

Användarhandledning Version 1.2

NÅGOT OM KRYPTERING. Kapitel 1

Pernilla Falck Margareta Picetti Siw Elofsdotter Meijer. Matte. Safari. Direkt. Lärarhandledning. Andra upplagan, reviderade sidor


Tildatenta Lösningsskiss

Tre saker du behöver. Susanne Jönsson.

JavaScript del 2 DocumentWrite, Prompt och ParseInt

Inför genomförandet av ThomasGIA

DD1320 Tillämpad datalogi. Lösning (skiss) till tenta 20 okt 2011

Programmering från början

Utskrift av inspelat samtal hos Arbetsförmedlingen

Övning 6 - Tillämpad datalogi 2012

Programmering på papper. Datorer, programmering och instruktioner

Kapitel 1 Hej. Jag heter Max. Jag är 10 år gammal. Jag går på Rävskolan. Jag gillar tv och dataspel.

Gjord av Kapitel 1 - Hej! Sid: 4-5

BESTÄLLARSKOLAN #4: VAD KOSTAR DET ATT GÖRA FILM?

Schackledarens blad Lektion 1

Datastrukturer. föreläsning 6. Maps 1

Internets historia Tillämpningar

Primtal, faktorisering och RSA

Aktivitetskort på nätet

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

Matematiska lägesmått med en micro:bit

Transkript:

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

Inledning Den här rapporten ska hjälpa en att få insikt och förståelse om kryptering. Vad betyder egentligen order och vad används det till. Jag har anpassat upplägget så att individer som aldrig har hört talats om ordet, ska veta vad det innebär. Detsamma gäller dom lite mer kunniga, men ni kommer nog bara få en bredare förståelse om innebörden och dom olika typerna av kryptering. Jag börjar med att introducera begreppet kryptering. Vad det betyder och dom olika varianterna som finns tillgängliga. Sedan så går vi tillbaka i tiden och tittar på hur det såg ut i början och hur det har utvecklats till det vi har idag. När ni har tröttnat på historia lektionen så går vi fram till modern kryptering och hur den ser ut idag. I den andra halvan av rapporten är innehållet mer anpassat för dataintressenter. Varför kryptering spelar en stor roll i våran vardag för datorerna. Till sist kommer vi gå igenom hur ser framtiden ut och vad kan vi förvänta oss.

Introduktion Kryptering är när man gör skrift svårläslig för personer som man inte vill ska kunna läsa den. Med andra ord om någon som inte ska läsa texten ser den ska det bara vara massa oläsliga bokstäver och siffror. Medans personen som meddelandet är ämnad för ska kunna läsa det som vilken annan text som helst. Hur utför man det undrar ni nog? Jo först får man skriva en text som ser helt oläslig ut. Sedan får man skapa eller använda någon algoritm för att få fram en text som du själv kan förstå. Och till sist måste du ge personen du vill ska läsa texten en metod, också kallat nyckel för att knäcka algoritmen så dom kan läsa den. Det finns i dagsläget 2 olika sätt att kryptera på som skiljer sig från varandra ganska markant. Men båda har fördelar mot den andra som spelar stor roll. Därför är det viktigt när man krypterar att man väljer rätt sätt beroende på vad man ska använda den till. Symmetrisk kryptering Den här varianten går ut på att Sändaren och mottagaren använder samma metod, för att både skapa algoritmen och för att lösa den. Sättet gör det möjligt för läsaren att förstå hur skrivaren har gjort koden och på det sättet kan även denna person svara tillbaka med samma nyckel. Om ni inte redan förstår det nu så är den här principen väldigt snabb förstådd av mottagaren. Så i särklass bästa fördelen är snabbheten. Nackdelarna är dok hur man ska föra över nyckeln till läsaren säkert och effektivt. Det bästa sättet vore såklart att dom båda talade med varandra och på det sättet kan man hålla det hemligt. Annars kan det vara rekommenderat att man gör det via diskett, cd eller usb. Det är vanligare att man byter ut nyckeln oftare vid symmetrisk kryptering. För att inte riskera att någon annan får tag på någon kopia av nyckeln. Asymmetrisk kryptering Principen bygger på att det finns en öppen nyckel, och en låst nyckel. Det jag menar med det är att den öppna nyckeln används vi skrivandet av meddelandet. Och den låsta nyckeln används när man ska läsa den. Vilket betyder att inte ens skrivaren vet hur man ska få fram meddelandet. Det möjliggör att du kan ha flera olika låsta nycklar. Det ända som skrivaren behöver veta är vem han ska skriva texten till så han kan anpassa algoritmen efter den privata nyckeln. Asymmetriska metoden är väldigt säker eftersom du kan bara veta vad som står i texten om du har den rätta privata nyckeln. Hackers måste med andra ord gissa sig fram tills dom kan dekryptera meddelandet. Men det här sättet gör det också farligt för om du slarvar bort din privata nyckel på något sätt blir det kanske omöjligt att få fram texten du ville läsa.

Historia Under romartiden kom ett av de första klassiska chiffren under namnet Caesarrullning. En lång pappersremsa lindas upp så den täcker en käpp med lämplig diameter och längd. Därefter skriver man sitt meddelande så att varje bokstav hamnar på var sitt varv på remsan. När man plockat bort remsan från käppen förefaller skriften obegriplig, men om mottagaren rullar upp remsan på en käpp med samma diameter som avsändarens så framträder skriften klart. Det dröjde enda till 1500-talet innan man såg någon ny och anorlunda metod att kryptera. Den kallas Vigenères krypto och den bygger på att man har ett nyckelord som följer med meddelandet. Det meddelandet ska man sedan tolka med att läsa varje bokstav som ett nummer. Sedan kollar man vilken bokstav i ordet kommer först i alfabetet när man vet får den värdet 0 och nästa får 1 osv. Vi visar med ett exempel för att det ska vara lättare att förstå. Om nyckelordet är BEDA så blir B=1, E=4, D=3, A=0 Sedan har vi ett meddelande som säger: UNXVFR då tar vi U 1, N 4, X 3, V 0, sedan när man har använt alla 4 siffrorna från nyckelordet börjar man bara om igen från första. Så dom två återstående blir: F 1, R 4. Nu om vi backar i alfabetet så många steg som vi skrev så får vi ut den rätta bokstaven i meddelandet. Så svaret på dom sex vi skrev blir Tjuven. Långt senare i början på 1900-talet, 1925 för att vara mer exakt, byggde en tysk ingenjör en maskin som är känd som Enigma maskinen. Den såg ut som en skrivmaskin fast med lampor på toppen som lös när man tryckte på någon av alla bokstäver och siffror. Poängen va att när du trycker på en bokstav, så ska en lampa lysa upp som vissar en helt annan bokstav. Processen är otroligt komplex. Den sker med hjälp av ett dussin-tal kopplingar, som gör att du kan ändra mycket enkelt vilken bokstav som ska visas. Förutom kopplingarna finns även 3 rotorer som man kan ställa in för att göra det mer svårläst. Enigma är mest känd som Nazi-Tysklands verktyg för radio kommunikation under andra världskriget. Eftersom dom ändrade inställningar på maskinen varje dag så trodde dom allierade att maskinen va oslagbar. Det totala antal omkonfigureringar på maskinen vet man en inte idag. Man tror att det låg runt: 107,458,687,327,250,619,360,000 en siffra som man inte ens kan uttala. Det dröjde till dom sista åren av kriget innan dom allierade knäckte Enigma. Mycket av hjälpen kom från en brittisk lärare vid namn Alan Turing. Med hjälp från honom kunde britterna bygga en maskin, som räknade alla dom olika omkonfigureringarna mycket snabbare en vad en människa kunde. Den maskinen han byggde, betraktar dom flesta som gudfadern till den moderna datorn.

Modern kryptering Den kryptering som förekommer mest i dagens samhälle finns i maskiner eller datorer. Med hjälp av datorer som kan räkna flera 1000 gånger snabbare en människan. Och med mer avancerad matematik kan vi göra mycket säkrare och snabbare krypteringar. Den största anledningen till att man väljer maskiner och datorer är för att dom innehåller chip. Med hjälp av chip kan datorer räkna i något som heter binär kod. För att ge er en snabb förklaring så kommer jag inte gå in för mycket på det här. Binär kod skrivs i ettor och nollor eftersom en dator jobbar i bits. En bit är när du har en nolla eller etta. En byte är när du har 8 bits, och en byte kan räkna upp till 256. Har man 2 bytes så har du 256 * 2 och så vidare. Eftersom datorer har flera miljoner bytes som den kan jobba med till kryptering, tror jag ni förstår hur komplexa nycklar man kan göra relativt enkelt. I dagens krypterade värld så finns det ett helt gäng med olika standarder som man kan följa för att kryptera. Jag kommer gå igenom en symmetrisk och en asymmetrisk standard som hör till dom vanligaste man använder. Advanced Encryption Standard AES är en avancerad matematisk algoritm eller chiffer som bygger en enda hemlig nyckel som används vid kryptering och när man dekrypterar den. Den blev skapad i och med att föregångaren DES började bli allt för lätt att knäcka. För när datorerna blir snabbare blir också alla hackers snabbare. Den va med i en tävling som anordnades av National Institute of Standards and Technology(NIST). År 2000 blev det klart att AES skulle bli den nya standarden för dom. Det kan vara värt att nämna att större delen av USAs statsapplikationer använder AES. Vilket gjorde att resten av världen börja använda den med. RSA Namnet fick den av att sätta ihop skaparnas första bokstav i deras efternamn. Det är en algoritm som vem som helst kan använda eftersom alla har tillgång till den (Open Source). Däremot så blir det svårt för hackers att knäcka den i tid eftersom du kan själv bestämma hur nyckeln ska se ut för dig och mottagaren. Den är i särklass den mest använda krypteringsmetoden idag och har varit det i snart 40 år. Självklart har Hackers lyckats knäcka den då och då, men kraften i RSA kommer först fram när du använder den i kombination med en symmetrisk algoritm. Till exempel så använder dom flesta webbläsare RSA för att kolla så du har rättighet att komma in på en webbsida som startar med (http://). Den största nackdelen med RSA är att den har en bestämd maxlängd på nyckeln. Vilket betyder att det finns en maxlängd på hur stort meddelandet kan vara som du skickar.

Kryptografi för webbsäkehet del 1 I den här delen kommer jag gå igenom hur du kan med enkla metoder göra din information du skickar på webben mycket säkrare. Vi kommer använda oss utav hashning och symmetriska metoder. Jag kommer också gå igenom varför jag valde symmetriska metoder och inte Asymmetriska. Hash Function En hash funktion också kalat data fingeravtryck är ett sätt att omvandla variabler till en rad random tecken. Med andra ord en variabels hash är unikt för den precis som våra fingeravtryck är unika för oss. Fördelen förutom att du gömmer meddelandet är att du kan göra en väldigt stor text till något som bara ser ut som 30-40 tal tecken. Nackdelen är att en hash har en bestämd storlek i bits, så om hackers vet hur stor din hash e kan dom börja leta efter rätt fingeravtryck. Lyckligtvis finns det sätt att göra hashen svårare att förstå som vi kommer gå igenom lite senare. Det finns två saker som du behöver veta för att kunna hasha något. För det första måste du veta vilken storlek du vill ha på hashen. När vi pratar storlek menar i antal Bits. Och sen vilket format tecknerna har som du ska hasha. Till din storlek finns det några olika algoritmer som man kan använda. Jag har listat dom här nedanför så ni kan se skillnaden. MD5 (128 bit hash Osäker!) SHA ( Säker!) SHA1 ( 160 bit hash) SHA256 SHA384 SHA512 Hur du ska implementera dom varierar stort beroende på vilket programmeringsspråk du arbetar i. Men det är dom som är aktuella idag. När det kommer till format så finns det ett hundratals olika. Tänk själv hur många olika skrifter och tecken det finns så det blir en hel del. Anledningen till att hashen måste veta vilket format du har på tecknena är för att innan du omvandlar variabeln till hash så måste du göra den till bytes först. För att datorn ska veta hur ettorna och nollorna ska placeras så måste du ange vilket encodeing(format) du använt. Som ni ser så finns det en mängd olika områden hashning är användbart. Men det är viktigt att förstå att hashning inte gömmer din hemlighet, den bara döljer den bakom ett digitalt fingeravtryck. Men hash är fortfarande det vanligaste att använda för att dölja till exempel lösenord.

Kryptografi för webbsäkehet del 2 I den här delen kommer vi gå igenom pricipen för att använda symmetrisk krypto. Asymmetriska krypton är lite överkurs, plus så kräver det mer tid att förklara en vad jag har tillgängligt. Symmetrisk Cipher I det här fallet kommer vi prata om block cipher för det är standarden man använder. Ett block cipher är när du tar din variabel och skapar flera blocks av bits ut av den helt slumpmässigt. På det sättet gör du det svårt att knäcka ditt crypto. Det finns några olika sätt att göra det här på. Den som rekommenderas är ISO10126 vill du veta mer om den använd länken som finns i referenserna. Värt att nämna är att du ska alltid försöka göra dit cipher block mycket större en vad din variabel är. Du kan fylla ut tomma områden med fler random element vilket öker säkerheten ytligare. Det är det som ISO1026 gör väldigt bra. Nästa sak att göra är att bestämma vilket läge dit block cipher ska använda. Här finns det två alternativ som är mest frekventa. Den första ECB gör att varje block krypteras enskilt utan någon relationen till dom andra blocken som skapas av variabeln. Den är helt okej att använda men den andra är helt klart den bättre. Och den andra heter CBC, nu istället för att kryptera varje block för sig använder varje block det tidigare blocket som del av algoritmen i ciphret. Det ger din varibel ytligare ett random element, och vid det här laget har du gjort ett riktigt säkert krypto som skulle ta flera flera år att knäcka. Men då kommer frågan, hur gör man då med första blocket? För den hade ingen tidigare att titta på. Jo det ska vi lösa med den sista beståndsdelen: Initialization Vector En initialization vector skapar helt enkelt ett block med slumpmässiga värden. Dekrypterings testar har vissat att det blocket kan vara public eftersom det inte utökar säkerheten till någon stor grad. Och det är tack vare att våra datorer är så snabba idag att lista ut att ett block är totalt slumpmässigt och har inget med det riktiga ciphret att göra tar inte lång tid. Den finns bara där för att man ska kunna använda läget CBC. Nu finns det bara en liten sak kvar att göra för att ditt symmetriska krypto ska vara klart. Det är nyckeln, som jag nämnt tidigare så används bara en nyckel i dom här typerna av krypto. Nyckeln bestämmer du genom att helt enkelt nämna hur stor(hur många bits) av ciphret som ska tillhöra nyckeln. Det bästa jag kan rekommendera är att göra göra den lika stor som hela ciphret. Varför kan man då fråga sig? Eftersom vi använder massor av block i ciphret som slumpar sig ju fler block vi använder. Det betyder att vi ökar bara säkerheten ju fler block vi vill ska tillhöra nyckeln. Gratulerar nu känner du till allt du behöver kunna för att kryptera din egen kod digitalt. Självklart kan syntaxen variera beroende på vilken miljö eller vilket språk man arbetar i. Glöm bara inte av den viktigaste tum regeln för kryptering. Skriv inte din egen algoritm!