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

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
FTP, HTTP, HTML, XML och XHTML
1 MSPEL Föreläsning 1 DSV Peter Mozelius XML, XHTML, CSS och Java applets.
PKI – en del av säkerheten i SSEK
Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Filhantering Grundprincipen för filhantering Öppna filen
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Strömmar Vid läsning och skrivning används något som kallas strömmar.
IT för personligt arbete F6
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Datasamlingar och generiska enheter
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
TÄNK PÅ ETT HELTAL MELLAN 1-50
OOP Objekt-orienterad programmering
Programmeringsteknik för Media1 & K1
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
1 ITK:P2 F2 Stilsättning av XHTML DSV Peter Mozelius.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
SEO Manager för EPiServer LÅT REDAKTÖRERNA VARA REDAKTÖRER.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
1 Logging and monitoring of TCP traffic in SSH tunnels Masters thesis Anton Persson.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Datorer och privat säkerhet (privacy). Innehåll Handel på internet Risker som en användare utsätt för på internet Hur man skyddar sig från attacker Hur.
Informationsteknologi - Lektion 2 Trådlöst nätverk (WLAN) Trådlöst nätverk (WLAN) Filarkivet: Filarkivet:
© Anders Ingeborn 2000 ”Utblick verkligheten” Gästföreläsning Kryptografins grunder KTH 2000.
1 ITK:P2 F6 Sortering av generiska containerklasser DSV Peter Mozelius.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
1. Skriv programmet Fetkoll som läser igenom valfri webbsida och skriver ut alla ord och fraser som står med fetstil. I HTML anges det med starttaggen.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
1 2I1073 Föreläsning 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Föreläsning4 Datasäkerhet. Kryptering Konventionell –En algoritm och en nyckel –Algoritmen behöver inte vara hemlig –Nyckeln måste vara hemligt för alla.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Datasäkerhet. Kryptering Konventionell –En algoritm och en nyckel –Algoritmen behöver inte vara hemlig –Nyckeln måste vara hemligt för alla.
Trådlösa nätverk WPA v1 TKIP EAP Christian Johansson, Robin Nilsson, Jonas Rådström.
Föreläsning 8: Exempel och problemlösning
Nätverkskommunikation
Medicinska webbapplikationer
Presentationens avskrift:

2I1073 Föreläsning 3 Säkerhet, filhantering och XML 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

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

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

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.

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

Asymmetrisk kryptering

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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>

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

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

Specialiseringar av XML SMIL = Synchronized Multimedia Integration Language Synkronisera bild och ljud strömmande: http://dsv.su.se/~mozelius/GKITP/forelasningar/forelasningar.htm Ska även 2I1073 ha liknande SMIL-föreläsningar nästa år?