Software- und Systemsicherheit Kurt Stenzel
Herzlich willkommen zur integrierten Vorlesung und Übung Software- und Systemsicherheit im Wintersemester 2011/2012 Kurt Stenzel, Nina Moebius, Marian Borek Software- und Systemsicherheit: Einführung 2
Kapitel 1: Einführung Worum geht es in der Vorlesung? Organisatorisches Zum Titel: Heute: Software- und Systemsicherheit Früher: Programmieren von Java Smart Cards Software- und Systemsicherheit: Einführung 3
Meldungen von August 2011 Trügerische Sicherheit: Hacker missbrauchen gestohlene SSL- Zertifikate Falscher Helfer: Antivirensoftware "Open Cloud Antivirus" ist Scareware Frontalangriff: Windows-Wurm "Morto" nutzt schwache Passwörter aus Spiel mit dem Datenschutz: Sicherheitslücken bei Browsergame-Anbieter Zynga Microsoft schließt 15 Sicherheitslücken: Windows, Office und Server-Software betroffen Bewegungsmelder: Smartphone-Beschleunigungssensor zeichnet Tastatureingaben auf GPRS-Verbindungen leicht abhörbar Kaspersky-Studie: Adobe Software größtes Sicherheitsrisiko Profi-Hacker spionieren weltweit im großen Stil Regierungen und Industrie aus EC-Karten Skimming im Baumarkt Software- und Systemsicherheit: Einführung 4
IBM Security Report für 2010 Ungepatchte Lücken Ende 2010: 44 % Software- und Systemsicherheit: Einführung 5
Meldungen vom 24.8.2010 Durch den integrierten RF-Chip kann man den elektronischen Personalausweis in Zukunft auch als Ausweis im Internet verwenden, dazu dient die so genannte eid-anwendung. Die Verbindung von integriertem Chip und zusätzlicher PIN-Abfrage sei bei Online-Transaktionen ein deutlicher Sicherheitsgewinn gegenüber dem heute üblichen Verfahren von Username und Passwort. German goverment ID already cracked Surely this is some sort of record. Software- und Systemsicherheit: Einführung 6
Gliederung 1. Was sind Smart Cards? 2. Beispiel: Kopierkarte 1. Aufgabe 2. Design 3. Programmierung 3. Kryptographische Protokolle 4. Sicherheitseigenschaften Software- und Systemsicherheit: Einführung 7
Was ist eine Smart Card? ein kleiner Computer ein sicherer Datenspeicher ein ICC: integrated circuit card ein tamper-proof device ein Ärgernis (?) ein Zwangsmittel (?) Software- und Systemsicherheit: Einführung 8
Wo kommen Smart Cards vor? Bankkarten Reisepass Personalausweis SIM Karten TV desktop box Autoschlüssel Software- und Systemsicherheit: Einführung 9
Smart Cards 8/16 Bit CPU 32 K ROM 16-64 K EEPROM 0,5-4 K RAM 5 Mhz Takt 9600 55800 Bit/sec Datenübertragung 1024 Bit RSA, 3-DES Software- und Systemsicherheit: Einführung 10
Bedeutung von Smart Cards 2010: 6 Milliarden Smart Cards ausgegeben, davon 4 Milliarden SIM Karten 1 Milliarde Banking/Payment Karten epass: 200 Millionen bisher ausgegeben von 79 Ländern, 750 Millionen in Zukunft Deutschland: 6 Mio. Personalausweise (seit 1.11.2010), Gesundheitskarte (irgendwann), in Zukunft 70 Mio, Bankkarten (80 Mio) Prognose für 2020: 20 Milliarden pro Jahr ausgegeben Java Smart Cards: 1998-2011: 8 Milliarden ausgegeben 2010: 2 Milliarden ausgegeben Software- und Systemsicherheit: Einführung 11
Beispiel: Auftrag: Realisieren Sie eine Universitätskopierkarte Laden von Punkten an einem Automaten gegen Geld Abbuchen von Punkten an den Kopierern Realisierung mit Java Smart Cards Vision: Kostenersparnis, bequemer für den Nutzer, Integration mit anderen Anwendungen, weniger Betrug Software- und Systemsicherheit: Einführung 12
Lösung 1 Laden T C Load + n C T Ok Abbuchen T C Pay + n C T Ok T: Terminal, C: Card, n: Anzahl Punkte, +: Konkatenation Alles spezifiziert? Jetzt programmieren? Software- und Systemsicherheit: Einführung 13
Lösung 2 Kommunikation mit APDUs: Load: 00 04 00 00 02 data (data: Anzahl zu ladende Punkte als short) Applet AID: 3d 5f 61 60 00 00 00 20 ff ac 00 00 00 01 value: auf der Karte gespeicherte Punkte als short Antwort: ISO7816.SW_WRONG_LENGTH falls #data 2 ISO7816.SW_DATA_INVALID falls data < 0 ISO7816.SW_DATA_INVALID falls data + value > 50000 ISO7816.SW_OK sonst Software- und Systemsicherheit: Einführung 14
Java Card Programmierung Im Prinzip wie Java, aber: Keine Strings, keine Integer Keine garbage collection Komplett andere API total anderer Programmierstil Software- und Systemsicherheit: Einführung 15
CopyCard Applet import javacard.framework.*; public class CopyCard extends Applet { final static byte LOAD = 4; final static byte PAY = 6; short value = 0; public static void install(byte[] bar, short off, byte len) { new CopyCard(); } CopyCard() { register(); } Software- und Systemsicherheit: Einführung 16
CopyCard Applet public void process(apdu apdu) throws ISOException { switch(apdu.getbuffer()[iso7816.offset_ins]) { case LOAD: load(apdu); return; case PAY: pay(apdu); return; case ISO7816.INS_SELECT: return; default: ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); } } Software- und Systemsicherheit: Einführung 17
CopyCard Applet private void load(apdu apdu) throws ISOException { short len = apdu.setincomingandreceive(); if (len!= 2) ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); byte[] buffer = apdu.getbuffer(); short val = Util.getShort(buffer,ISO7816.OFFSET_CDATA); if (val < 0 (short)(val + value) > (short)50000 ) } ISOException.throwIt(ISO7816.SW_DATA_INVALID); value += val; private void pay(apdu apdu) throws ISOException { } Software- und Systemsicherheit: Einführung 18
Ist die Anwendung sicher? Software- und Systemsicherheit: Einführung 19
Ist die Anwendung sicher? Problem: Man kann selbst Punkte laden (mit Kartenleser und geeignetem Programm). Man kann eine gefälschte Karte verwenden. Ziel: Sichere Anwendung Lösung: Kryptographische Protokolle Software- und Systemsicherheit: Einführung 20
Die sichere CopyCard challenge : Zufallszahl hash = hash(instruction, secret, challenge, value) Software- und Systemsicherheit: Einführung 21
Software- und Systemsicherheit: Einführung 22
Alles klar, oder? Security protocols are three line programs that people still manage to get wrong (Roger Needham) Needham-Schroeder Protokoll (1978) 1. A B A, B, {Na, A}PK(B) 2. B A B, A, {Na, Nb}PK(A) 3. A B A, B, {Nb}PK(B) 1. A B A, B, {Na, A}PK(B) 2. B A B, A, {Na, Nb, B}PK(A) 3. A B A, B, {Nb}PK(B) PK(A): Public Key von A Na: Zufallszahl (Nonce) { }K: Verschlüsseln mit K Denning 1981: unsicher Burrows et.al. 1989: sicher Lowe 1995: unsicher Software- und Systemsicherheit: Einführung 23
Alles klar, oder? 2008: Schwächen des RFID-Systems Mifare Classic bestätigt. 2008: Microsoft patcht SMB-Reflection Lücke nach 7 (12) Jahren. 2009: Authentication Gap in TLS Renegotiation 2010: Chip and PIN is broken. (Ross Anderson) Software- und Systemsicherheit: Einführung 24
Was heißt eigentlich sicher? Kopierkarte: Interessen Universität 1. Punkte nicht fälschbar und nicht kopierbar 2. Wert der Kopien eingenommenes Geld 3. Kontrolle der Benutzer Kunde 1. Wert der Kopien eingenommenes Geld 2. Bei Kartenverlust kein Punkteverlust 3. Karte unbenutzbar für Diebe 4. Anonymität Software- und Systemsicherheit: Einführung 25
Risikoanalyse Angreifer (Motivation) kostenlos kopieren hoch billiger kopieren hoch auf Kosten anderer kopieren hoch Anwendung unbrauchbar machen gering andere Benutzer schädigen gering Was, wenn doch? (Schaden) eine Karte gehackt gering alle Karten hackbar mittel Anwendung unbrauchbar hoch andere Benutzer geschädigt gering Software- und Systemsicherheit: Einführung 26
Ihre Aufgabe Entwicklung von Java Smart Card Anwendungen (Analyse und) Design der Anwendung Festlegung der Sicherheitseigenschaften Entwurf der kryptographischen Protokolle Programmierung der Karte mit Java Card Programmierung des Terminals mit Java Software- und Systemsicherheit: Einführung 27
Vorlesung 1. Einführung (heute) 2. Smart Cards (und Standards) 3. Kommunikation mit der Karte (APDUs) 4. Java Card, API, short-arithmetik 5. Kryptographie (1): DES, Nonces, Hashes 6. Krypto-Protokolle 7. Kryptographie (2): RSA, Signaturen, mehr Protokolle 8. Angriffe auf Smart Cards Software- und Systemsicherheit: Einführung 28
Ablauf Betreutes Arbeiten am Rechner in 3017 N Zusätzlich selbstständiges Arbeiten Software: SmartCafe Toolkit, Eclipse, Windows Arbeiten im Zweierteam Vier Aufgaben: MasterMind, Unsigned, Purse, Eticket Im Semester Meilensteine, Abnahme am Ende 8 Leistungspunkte (Bereich Softwaretechnik) neue POs: Master Anmeldung: Jetzt Software- und Systemsicherheit: Einführung 29