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

Relevanta dokument
Grundläggande krypto och kryptering

MA2047 Algebra och diskret matematik

Kryptering. Krypteringsmetoder

Föreläsning 7. DD2390 Internetprogrammering 6 hp

Grundfrågor för kryptosystem

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

Krypteringteknologier. Sidorna ( ) i boken

Metoder för sekretess, integritet och autenticering

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

Primtal, faktorisering och RSA

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

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

256bit Security AB Offentligt dokument

RSA-kryptering och primalitetstest

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

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

NÅGOT OM KRYPTERING. Kapitel 1

Skydd för känsliga data

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

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

Datasäkerhet. Petter Ericson

Protokollbeskrivning av OKI

Övning 6 - Tillämpad datalogi 2012

Hemligheternas Matematik

Grundläggande kryptering & chiffer

Datasäkerhet och integritet

Moderna krypteringssystem

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

Uppstart av OS med resp. utan krypering

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

Introduktion till krypteringsmetoderna RSA och Merkle-Hellman

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

Den mest väsentliga skillnaden mellan

Avancerad SSL-programmering III

Försöksnomineringssystem 2013

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

Föreläsning 10 Datasäkerhet grundbegrepp datasäkerhet i nätet. Säkerhet. Grundbegrepp (1/5) Modern telekommunikation

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

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Mjukvarurealiserad bildtelefoni

RSA-kryptografi för gymnasiet. Jonas Gustafsson & Isac Olofsson

Offentlig kryptering

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

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

Modul 3 Föreläsningsinnehåll

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

PGP håller posten hemlig

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

Kravspecifikation Fredrik Berntsson Version 1.1

Säkerhet. Olika former av säkerhet (företagsperspektiv [1])

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

Objektorienterad Programkonstruktion

Övning 6. Komprimering, kryptering, dokumentering & testning

Javadoc. Internet, WorldWideWeb, HTML, och Java. Webbläsarkomponenten. JEditorPane p. HyperlinkListener. Javadoc exempel:

Krypteringens historia och användningsområden

Kryptografi och kryptering

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

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

Elektroniska signaturer - säker identifiering?

Trådlösa nätverk. Säkerhetsprotokoll WEP och WPA. I den här rapporten går vi igenom säkerheten i trådlösa nätverk, i synnerhet krypteringsprocess

RIV Tekniska Anvisningar Kryptografi. Version ARK_

Kryptering & Chiffer Del 2

Objektorienterad Programkonstruktion. Föreläsning jan 2017

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

Test av kryptobiblioteket

Kryptering och primtalsfaktorisering

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

KRYPTERING - MÖJLIGHET ELLER OMÖJLIGHET. Carl Önne carl.onne@certezza.net

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

PGP & S/MIME En översikt

Användarmanual för Pagero Kryptering

Tildatenta Lösningsskiss

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

För att använda sifferkrypto använder man en rektangel om 5 gånger 6 bokstäver.

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Steganografi - en översikt

KANDIDATUPPSATS. Minnet sviker Aldrig. Att utnyttja volatil data i Krypterade system. Björn A. Ringmann, Peter N. Hildeblom

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

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

Security evaluation certificate server instead of smartcard

Lösning till tentamensskrivning i Diskret Matematik, SF1610 och 5B1118, torsdagen den 21 oktober 2010, kl

σ 1 = (531)(64782), τ 1 = (18)(27)(36)(45), τ 1 σ 1 = (423871)(56).

Föreläsning 4: Kombinatorisk sökning

Grunderna i PKI, Public Key Infrastructure

Utvärdering av lösningar för hårddiskkryptering

DROGHANDELN PÅ DARKNET

Krypteringsprogrammet Kryptogamen

Probably the best PKI in the world

SITHS Anslutningsavtal RA Policy

Elektronisk signatur Hur säkra är elektroniska signaturer ur avtalsrättslig synpunkt?

SSL. Kristoffer Silverhav Robin Silverhav

Objektorienterad Programkonstruktion. Föreläsning 8 30 nov 2015

Nämnarens kryptoskola fördjupning. Enkel transposition

LABORATIONSRAPPORT Säkerhet & Sårbarhet VPN

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

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Utvärdering av säkerhetsspecifikationer för XML

Switch- och WAN- teknik. F7: ACL och Teleworker Services

Trådlösa nätverk, säkerhet och kryptering

Transkript:

Objektorienterad Programkonstruktion Föreläsning 16 8 feb 2016

Kryptering För ordentlig behandling rekommenderas kursen DD2448, Kryptografins Grunder Moderna krypton kan delas in i två sorter, baserat på nycklarna: Symmetriska krypton - använder samma nyckel för att kryptera som för att dekryptera. Assymetriska krypton - använder separata nycklar för kryptering och dekryptering.

Symmetriska krypton Använder samma nyckel för kryptering och dekryptering Fördelar Snabba algoritmer Nackdelar Kräver försiktig behandling av nycklar Exempel: DES AES Blowfish Twofish

Assymetriska krypton Använder ett nyckelpar, med en privat och en publik nyckel Bygger på att krypteringsprocessen är en envägsfunktion, dvs det går inte att på ett enkelt sätt köra krypteringen "baklänges" om man bara känner till krypteringsnyckeln Fördelar: Lättare att hantera nycklar, man behöver inte hålla krypteringsnyckeln hemlig (kan dock vara svårt att autenticera) Nackdelar: Kräver ofta mer beräkningskapacitet för att kryptera och dekryptera

Blockkrypton Man tar indata av en fördefinierad storlek och bearbetar dessa oberoende av varandra Blockstorleken behöver inte vara lika stor som nyckeln, men de är ofta av samma storleksordning Typiskt används samma nyckel till varje block

Strömkrypto Kryptot har ett internt tillstånd (state) som uppdateras efter varje krypteringssteg. Ofta krypteras väldigt små enheter i taget, t.ex en bit i taget. Nyckeln uppdateras för varje steg, t.ex genom att använda den gamla nyckeln som frö till en pseudoslumpfunktion Krypterad data kan bli omöjligt att dekryptera om en del av meddelandet går förlorad

AES (Advanced Encryption Standard) Amerikanska standardiseringsinstitutet utlyste en tävling för att hitta en ny krypteringsstandard, algoritmen (Rijndael) av Joan Daemen och Vincent Rijmen vann tävlingen och blev standarden Grundidén är att man tar ett block (128 bitar) och utför följande: XOR med rundnyckel ersätter alla bytes enligt en lookup-table arrangerar om ordningen av bytes arrangerar om ordningen av bitar XOR med rundnyckel ersätter bytes enligt lookup table arrangerar om ordningen av bytes XOR med rundnyckel n gånger En ny rundnyckel genereras för varje block, baserat på huvudnyckeln (128, 192 eller 256 bitar) Kryptering och dekryptering går fort, runt 18 cykler per byte.

RSA Uppkallad efter Ron Rivest, Adi Shamir och Leonard Adleman Assymmetriskt krypto, bygger på envägsfunktioner p och q är primtal, med n=pq φ = (p-1)(q-1) d*e = 1 (mod φ) => m ed = m (mod n) 1<e<φ, ofta är e=65537 Kryptering: kryptot c skapas ur meddelandet m: c = m e (mod n) Dekryptering: meddelandet m återskapas ur c: m = c d (mod n)

Kryptering i Java Java tillhandahåller ett antal relevanta klasser för kryptering i ramverken JCA Java Cryptography Architecture (java.security.*), och JCE - Java Cryptography Extension (javax.crypto.*) Klasserna i dessa bibliotek har gränsnitt för att skapa nycklar och kryptera antingen block eller strömmar Själva krypteringsalgoritmerna (inkl. Nyckelgeneratorer) finns i s.k providers som kan installeras separat. Per default kan man använda providers med stark men begränsad kryptering, vill man ha obegränsad kryptostyrka får man installera dessa providers specifikt. De är (i teorin) bara tillgängliga för användare I "tillförlitliga" länder

Kryptonycklar i Java Nycklar lagras i objekt som uppfyller gränssnittet Key eller SecretKey Nycklar kan antingen skapas utifrån givna värden, eller utifrån (relativt) säkra pseudoslumpmetoder Om man inte har en bra anledning att låta bli, bör man låta en betrodd nyckelalgoritm skapa ens nycklar De faktiska klasser som innehåller nycklarna är t.ex SecretKeySpec, RSAPublicKeySpec, mm

Kryptering i Java För att kryptera något i Java skapar man ett Cipher-objekt Detta skapas med en kryptoalgoritm och en nyckel Sedan väljer man om man ska kryptera eller dekryptera Slutligen anropar man Cipher.doFinal(byte[]), där bytearray:en är det meddelande man vill kryptera/avkryptera Eftersom Cipher arbetar med byte-arrayer måste man själv konvertera sitt meddelande, t.ex med hjälp av String.getBytes() och new String(byte[])

AES i Java byte[] datatoencrypt = "Hej".getBytes(); byte[] keycontent; // Skapa nyckel KeyGenerator AESgen = KeyGenerator.getInstance("AES"); AESgen.init(128); SecretKeySpec AESkey = (SecretKeySpec)AESgen.generateKey(); keycontent = AESkey.getEncoded(); // Kryptera Cipher AEScipher = Cipher.getInstance("AES"); AEScipher.init(Cipher.ENCRYPT_MODE, AESkey); byte[] cipherdata = AEScipher.doFinal(dataToEncrypt); // Avkryptera SecretKeySpec decodekey = new SecretKeySpec(keyContent, "AES"); AEScipher.init(Cipher.DECRYPT_MODE, decodekey); byte[] decrypteddata = AEScipher.doFinal(cipherData); System.out.println("Decrypted: " + new String(decryptedData));

RSA i Java byte[] datatoencrypt = "Hej alla glada!".getbytes(); byte[] cipherdata; byte[] decrypteddata; // generera nycklar KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048); KeyPair kp = kpg.genkeypair(); Key publickey = kp.getpublic(); Key privatekey = kp.getprivate(); // kryptera Cipher cipher = Cipher.getInstance("RSA"); cipher.init(cipher.encrypt_mode, publickey); cipherdata = cipher.dofinal(datatoencrypt); // dekryptera cipher.init(cipher.decrypt_mode, privatekey); decrypteddata = cipher.dofinal(cipherdata); System.out.println("Decrypted: " + new String(decryptedData));