Presentation laddar. Vänta.

Presentation laddar. Vänta.

2I1073 Föreläsning 3 Säkerhet, filhantering och XML

Liknande presentationer


En presentation över ämnet: "2I1073 Föreläsning 3 Säkerhet, filhantering och XML"— Presentationens avskrift:

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

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

7 Asymmetrisk kryptering

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 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 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 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 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 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 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 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 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 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 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 Byte-strömmar Dataflödet sker i form av bytes
Har funnits i Java sedan JDK 1.0 Den inbyggda datatypen byte 1 byte = 8 bitar Alla klasser i Java som hanterar byte- strömmar har ett klassnamn där ordet Stream ingår

20 Char-strömmar Dataflödet sker i form av char
Har funnits i Java sedan JDK 1.1 Den inbyggda datatypen char 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Validerande XML <!DOCTYPE TempReport SYSTEM "TempReport.dtd">
XML-dokumentet kan ha en kontrollreferens DTD = Document Type Definition I XML-filen: <!DOCTYPE TempReport SYSTEM "TempReport.dtd"> <TempReport> <city>Kista</city>

37 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

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

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


Ladda ner ppt "2I1073 Föreläsning 3 Säkerhet, filhantering och XML"

Liknande presentationer


Google-annonser