2I1073 Föreläsning 3. Säkerhet. Kryptering



Relevanta dokument
ITK:P2 F1. Hemsidor med HTML HTML. FTP, HTTP, HTML, XML och XHTML

Föreläsning 7. DD2390 Internetprogrammering 6 hp

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

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

Krypteringteknologier. Sidorna ( ) i boken

Kryptering HEMLIG SKRIFT SUBSTITUTION STEGANOGRAFI KRYPTOGRAFI

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

Fördjupad Java. Undantagshantering. Fel

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

Modul 3 Föreläsningsinnehåll

Kryptering. Krypteringsmetoder

OOP Objekt-orienterad programmering

Protokollbeskrivning av OKI

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

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

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

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Föreläsning 14. Filhantering

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

F2 Java I/O - strömmar Meddelandesändning med TCP

En snabb titt på XML LEKTION 6

256bit Security AB Offentligt dokument

Grundfrågor för kryptosystem

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

2I1073 Föreläsning 1. HTML och XHTML XHTML

Tentamen Nätverksprogrammering Lösningsförslag

F2 Java I/O - strömmar Meddelandesändning med TCP EDA095 Nätverksprogrammering

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

SSL/TLS-protokollet och

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

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

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

Avancerad SSL-programmering III

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Strukturering med XML och DTD

Introduktion till protokoll för nätverkssäkerhet

Tentamen, Algoritmer och datastrukturer

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

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

Förra gången. Dagens föreläsning. Digitala Certifikat. Vilka man litar på! X.509. Nyckeldistribution. Säkerhetsprotokoll

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Tentamen , Introduktion till Java, dtaa98, dtea53

Nätverksprogrammering. Tekniker för att skriva program som kommunicerar med varandra över ett nätverk. F1 Nätverk och strömmar.

Tentamen Nätverksprogrammering Lösningsförslag

Hämta data mha URLer Föreläsning 2b. Innehåll Klassen URL

Metoder för sekretess, integritet och autenticering

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

JAVAUTVECKLING LEKTION 7

Kapitel 10, 11 o 12: Nätdrift, Säkerhet. Publika telenätet. Informationsöverföring. Jens A Andersson. Telenäten är digitala.

Språkkonventioner och redigering av tal.

F1 Nätverk och strömmar

Kapitel 10 , 11 o 12: Nätdrift, Säkerhet

Föreläsningens innehåll. Säker kommunikation - Nivå. IPSec. IPSec - VPN. IPSec - Implementation. IPSec - Består av vad?

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

19/5-05 Datakommunikation - Jonny Pettersson, UmU 2. 19/5-05 Datakommunikation - Jonny Pettersson, UmU 4

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Inre klasser Anonyma klasser Kloning I/O-ramverket. anonyma klasser

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Säker e-kommunikation

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

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

Tentamen OOP

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

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

Lösningar för tenta 2 DAT043,

Att skriva till och läsa från terminalfönstret

PGP håller posten hemlig

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

Föreläsning 9-10 Innehåll

Föreläsnings 9 - Exceptions, I/O

Din guide till IP RFID. Intertex Nu ännu starkare säkerhet för SIP. Snom - marknadens säkraste IP-telefon. Ur innehållet TALK TELECOM

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Förra gången. Dagens föreläsning. Digitala Certifikat. Nyckeldistribution. Säkerhetsprotokoll

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

17.9 Funktioner för avbildningstabeller

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

DAT043 Objektorienterad Programmering

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

Föreläsning 1 Nätverk och strömmar

Internationalisering/lokalisering på webben

Transkript:

2I1073 Föreläsning 3 Säkerhet, filhantering och XML 1 KTH-MI Peter Mozelius Säkerhet Ökade krav på säkerhet i datasystem bl a mot Intrång Stölder Förfalskningar Virusattacker Vi ska titta på några enkla tekniker som passar för medicinska webbapplikationer T ex hur man kontrollerar ett recept 2 Kryptering Att skicka data som obehöriga inte kan förstå även om de får tag i sänd data Redan de gamla grekerna steganografi Romarrikets ceasarkrypto Modern krypterings två huvudgrupper Symmetrisk kryptering Asymmetrisk kryptering 3

Symmetrisk kryptering En hemlig nyckel (secret key) Samma nyckel används av både sändare och mottagare Hur skickar man nyckeln via nätet utan att obehöriga får tag på den? Problem med nyckeldistributionen Effektivt för stora datamängder 4 Symmetrisk kryptering I Java genereras hemliga nycklar med med hjälp av klassen javax.crypto.keygenerator KeyGenerator generator = KeyGenerator.getInstance("DES"); DES = Data Encryption Standard Det finns kända sätt att knäcka DES-algoritmen Men det kostar en del datorkraft Det finns andra algoritmer. Titta i kursboken. 5 Asymmetrisk kryptering En lösning på problemet med nyckelhanteringen En privat nyckel + en publik nyckel Den privata nyckeln behöver inte skickas Den publika kan skickas till alla Digitala certifikat för nycklarnas äkthet De digitala certifikaten verfieras av olika Certificate Authorities - CA En känd CA är Verisign 6

Asymmetrisk kryptering 7 Certifikathantering Hierarkisk hantering som hos Verisign Peer-to-peer som hos PGP Pretty Good Privacy Framtaget av Phillip Zimmerman 1991 Ni ska själva undersöka PGP i Uppgift3a Byt nycklar med era kurskompisar Samla dem i nyckelringar 8 Autentisering Hur man kontrollerar att mottagen data är samma data som skickats Message Digest Message Authentication Code Digital Signature Samtliga bygger på Message Digest Att räkna fram ett kontrollvärde för data 9

Message Digest Innehållet i ett meddelande smälts ner till ett unikt kontrollvärde Även små förändringar i meddelandet ger ett annorlunda kontrollvärde Kan beräknas enligt olika algoritmer Vi kommer att använda SHA (SHA1) Secure Hash Algorithm 10 Message Digest Ni kommer att jobba med Message Digest och klassen java.security.messagedigest Det handlar om att bygga ett litet program som kontrollerar äktheten hos digitala recept Här räcker det inte med bara Message Digest Någon kan ersätta receptet med ett nytt recept med ett nytt giltigt kontrollvärde Lösningen är att kryptera kontrollvärdet 11 MAC Message Authentication Code Message Digest + hemlig nyckel Kontrollvärdet krypteras symmetriskt I Uppgift 3c och 3d använder ni ett hemligt ord som nyckel I frivilliga Uppgift3g ska lösningen byggas med en javax.crypto.secretkey 12

Digitala signaturer Digital signatur/digital signature Message Digest + privat nyckel Kontrollvärdet krypteras asymmetriskt Oavsett hur man löser autentiseringen så krypteras inte data utan det är enbart det nedsmälta kontrollvärdet som krypteras. 13 Digitala signaturer i Java Ett användningsområde för digitala signaturer i Java är att signera jar-filer Verktyget jarsigner Ingår i SDK För att det ska fungera så behövs det ett nyckelpar Skapa nyckelparet med keytool 14 SSL Secure Sockets Layer Kanske den vanligaste krypteringen på nätet Kopplat till TCP-sockets Fungerar inte för UDP 1) Server och Klient kommer överens om vilken krypteringsalgoritm som ska användas 2) Utbyte av hemlig nyckel 3) Data krypteras och skickas 15

Framtidens kryptering Kvantkryptering Utveckling här i Kista Descartespriset 2004 Professor Anders Karlsson på KTH Ökad säkerhet då en avlyssning upptäcks när mätningen stör systemet MEN, helt säkert är det inte -------------------- PAUS 15 min 16 Strömmar Oavsett typ av I/O så sker den i Java med hjälp av strömmar En ström i Java är: Ett flöde av data (binär eller som text) Ett objekt som hämtar data från en källa inström Ett objekt som levererar data till en destination utström Poängen är att data behandlas lika oavsett vad som är källa eller destination 17 Strömmar För att få tillgång till olika typer av strömmar i Java: import java.io.*; En djungel av strömtyper byte-strömmar char-strömmar 18

Byte-strömmar o Dataflödet sker i form av bytes o Har funnits i Java sedan JDK 1.0 o Den inbyggda datatypen byte o 1 byte = 8 bitar Alla klasser i Java som hanterar byteströmmar har ett klassnamn där ordet Stream ingår 19 Char-strömmar o Dataflödet sker i form av char o Har funnits i Java sedan JDK 1.1 o Den inbyggda datatypen char o 1 char = 16 bitar Alla klasser i Java som hanterar charströmmar har ett klassnamn där ordet Reader eller Writer ingår 20 Två olika filtyper Alla filer lagras som 1:or och 0:or Binärfiler Läses just som en rad 1:or och 0:or Effektiv läsning för olika program Textfiler Läses som en rad av tecken Trevlig läsning för oss människor 21

Utström till fil 1 Öppna en 8-bitars byte-ström FileOutputStream fout = new FileOutputStream( minfil.txt ); Buffrad utmatning genom BufferedOutputStream bout = new BufferedOutputStream(fout); 22 The Decorator Design Pattern Ett av många designmönster Ett enkelt designmönster där koden från förra bilden kan skrivas om enligt: BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream( minfil.txt )); 23 The Decorator Design Pattern En FileOutputStream kan dekoreras för kryptering enligt: ObjectOutputStream ous = new ObjectOutputStream( new CipherOutputStream( new FileOutputStream(fil), cipher)); Poängen är att klasser inom samma familj kan kedjas ihop dynamiskt och ytterligare klasser inte behövs 24

Utström till fil 2 Öppna en 16-bitars char-ström till en textfil och skriv med metoden println() lika enkelt som på P1 med System.out.println(); PrintWriter pw = new PrintWriter( new FileOutputStream( minfil.txt )); OCH SEDAN pw.print(); ELLER pw.println(); 25 Att skriva till fil, exempel1 import java.io.*; public class F8_exempel1 { public static void main(string[] args) { PrintWriter pout = null; try { pout = new PrintWriter(new FileOutputStream("min.fil")); }catch (FileNotFoundException fnfe) { System.err.println("Angiven fil kunde inte öppnas."); System.exit(0); } 26 Att skriva till fil, exempel1 Om filen min.fil redan finns och har ett innehåll så kommer innehållet att skrivas över Ibland är detta precis vad man vill Men ibland är det önskvärt att det tidigare innehållet ska finnas kvar PAUS 27

Att skriva till fil, exempel2 try{ pout = new PrintWriter(new FileOutputStream("min.fil", true)); } catch (FileNotFoundException fnfe) { System.err.println("Angiven fil kunde inte öppnas"); System.exit(0); } Det som skrivs läggs till sist i filen 28 Att skriva ut objekt Att dela upp komplexa objekt i sina beståndsdelar och skriva ut del för del till en fil kan kräva mycket kod I Java finns inbyggd serialisering Om en klass bara implementerar interfacet Serializable Så kan hela objektet istället skrivas ut på en gång med writeobject() 29 Att skriva ut objekt Även en datasamling med ett antal objekt kan skrivas ut i sin helhet: ArrayList al = new ArrayList(); Lägg in en massa objekt; out.writeobject(al); Där out är en instans av klassen java.io.objectoutputstream 30

Att läsa in objekt Att sedan läsa in de utskrivna objekten igen görs genom: ObjectInputStream oin = new ObjectInputStream( new FileInputStream(fil)); OCH sedan oin.readobject() 31 Klassen ObjectOutputStream Klassen ObjectOutputstream har även en del andra instansmetoder för enklare utskrifter som t ex: public void writeboolean(boolean b); public void writechars(string str); public void writefloat(float f); public void writedouble(double d); 32 XML EXtensible Markup Langauge Extensible för att det till skillnad från HTML går att bygga ut för olika ändamål HTML finns för att visa data på webben XML finns för att strukturera data 33

Väl utformad XML XML läses av en XML-parser XML-parser = mjukvara som förutom att läsa en XML-fil även kontrollerar syntaxen En XML-fil med korrekt syntax som går att läsa in i en XML-parser är väl utformad well formed 34 XML-tips Undvik blanksteg för XML-deklarationen Se upp med VERSALER och gemener Taggarna måste vara perfekt nästlade Attribut värden ska omges av INTE Fler tips på: http://www.xml.com/pub/a/98/10/guide0.html 35 Validerande XML XML-dokumentet kan ha en kontrollreferens DTD = Document Type Definition I XML-filen: <!DOCTYPE TempReport SYSTEM "TempReport.dtd"> <TempReport> <city>kista</city> 36

Validerande XML Taggarna på den föregående bilden är skrivna enligt DTD-filens angivelser: <!ELEMENT TempReport (city, country, date, high, low) > <!ELEMENT city (#PCDATA) > Gör de frivilliga Uppgifterna 4a och 4b 37 Specialiseringar av XML SVG = Scalable Vector Graphics Vektorgrafik som går att animera: http://dsv.su.se/~mozelius/svg/moln.htm CML = Chemical Markup Language Ett sätt att konstruera molekyler: http://dsv.su.se/~miwebb/examination/labbar/del4/ u4c/uppgift4c.htm 38 Specialiseringar av XML SMIL = Synchronized Multimedia Integration Language Synkronisera bild och ljud strömmande: http://dsv.su.se/~mozelius/gkitp/forelas ningar/forelasningar.htm Ska även 2I1073 ha liknande SMILföreläsningar nästa år? 39