Presentation laddar. Vänta.

Presentation laddar. Vänta.

1 2I1073 Föreläsning 3 KTH-MI Peter Mozelius Säkerhet, filhantering och XML.

Liknande presentationer


En presentation över ämnet: "1 2I1073 Föreläsning 3 KTH-MI Peter Mozelius Säkerhet, filhantering och XML."— Presentationens avskrift:

1 1 2I1073 Föreläsning 3 KTH-MI Peter Mozelius Säkerhet, filhantering och XML

2 2 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

3 3 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

4 4 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

5 5 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.

6 6 Asymmetrisk kryptering En lösning på problemet med nyckelhanteringen privat nyckelpublik nyckel – 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

7 7 Asymmetrisk kryptering

8 8 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

9 9 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

10 10 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

11 11 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

12 12 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

13 13 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.

14 14 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

15 15 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

16 16 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

17 17 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

18 18 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

19 19 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 byte- strömmar har ett klassnamn där ordet Stream ingår

20 20 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 char- strömmar har ett klassnamn där ordet Reader eller Writer ingår

21 21 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

22 22 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);

23 23 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”));

24 24 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

25 25 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();

26 26 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); }

27 27 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

28 28 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

29 29 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()

30 30 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

31 31 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()

32 32 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);

33 33 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

34 34 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

35 35 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å:

36 36 Validerande XML XML-dokumentet kan ha en kontrollreferens DTD = Document Type Definition I XML-filen: Kista

37 37 Validerande XML Taggarna på den föregående bilden är skrivna enligt DTD-filens angivelser: Gör de frivilliga Uppgifterna 4a och 4b

38 38 Specialiseringar av XML  SVG = Scalable Vector Graphics Vektorgrafik som går att animera:  CML = Chemical Markup Language Ett sätt att konstruera molekyler: u4c/uppgift4c.htm

39 39 Specialiseringar av XML  SMIL = Synchronized Multimedia Integration Language Synkronisera bild och ljud strömmande: ningar/forelasningar.htm ningar/forelasningar.htm Ska även 2I1073 ha liknande SMIL- föreläsningar nästa år?


Ladda ner ppt "1 2I1073 Föreläsning 3 KTH-MI Peter Mozelius Säkerhet, filhantering och XML."

Liknande presentationer


Google-annonser