Vorlesung Sicherheit



Ähnliche Dokumente
Vorlesung Sicherheit

Grundbegriffe der Informatik

Vorlesung Sicherheit

Beweisbar sichere Verschlüsselung

Erste Vorlesung Kryptographie

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Software Engineering Klassendiagramme Assoziationen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Informatik für Ökonomen II HS 09

Exploits Wie kann das sein?

Vorlesung Sicherheit

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Objektorientierte Programmierung. Kapitel 12: Interfaces

EasyWk DAS Schwimmwettkampfprogramm

Was meinen die Leute eigentlich mit: Grexit?

8: Zufallsorakel. Wir suchen: Einfache mathematische Abstraktion für Hashfunktionen

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Step by Step Webserver unter Windows Server von Christian Bartl

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

Übungen zur Softwaretechnik

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Voll homomorpe Verschlüsselung

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Virtual Private Network

Netzsicherheit I, WS 2008/2009 Übung 12. Prof. Dr. Jörg Schwenk

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Was ist Sozial-Raum-Orientierung?

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Eine Anwendung mit InstantRails 1.7

Statuten in leichter Sprache

Wichtig ist die Originalsatzung. Nur was in der Originalsatzung steht, gilt. Denn nur die Originalsatzung wurde vom Gericht geprüft.

Mail-Account Unimail mit der Einstellungen für Outlook Express 5.0

Datensicherheit. Vorlesung 5: Sommersemester 2015 h_da. Heiko Weber, Lehrbeauftragter

Das RSA-Verschlüsselungsverfahren 1 Christian Vollmer

Grammatiken. Einführung

Internet Explorer Version 6

Die Bundes-Zentrale für politische Bildung stellt sich vor

Primzahlen und RSA-Verschlüsselung

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Kommunikations-Management

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Updatehinweise für die Version forma 5.5.5

REACH-CLP-Helpdesk. Zulassung in der Lieferkette. Matti Sander, Bundesanstalt für Arbeitsschutz und Arbeitsmedizin

Effizienten MAC-Konstruktion aus der Praxis: NMAC Idee von NMAC:

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

IEEE 802.1x Authentifizierung. IEEE 802.1x Authentifizierung IACBOX.COM. Version Deutsch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

efa elektronisches Fahrtenbuch im Berliner Ruder-Club

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Grundbegriffe der Informatik

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Semantik von Formeln und Sequenzen

icloud nicht neu, aber doch irgendwie anders

Internes Web-Portal der AK-Leiter

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

Online bezahlen mit e-rechnung

Übung: Verwendung von Java-Threads

Einführung in die Programmierung Laborübung bei Korcan Y. Kirkici. 12.Übung bis

Grundbegriffe der Informatik

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Erstellen eines Formulars

Leichte-Sprache-Bilder

! " # $ " % & Nicki Wruck worldwidewruck

FTP-Leitfaden RZ. Benutzerleitfaden

Schwachstellenanalyse 2012

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Verwendung des IDS Backup Systems unter Windows 2000

Zimmertypen. Zimmertypen anlegen

OP-LOG

Wichtige Forderungen für ein Bundes-Teilhabe-Gesetz

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Installationshinweise BEFU 2014

Stammdaten Auftragserfassung Produktionsbearbeitung Bestellwesen Cloud Computing

Speicher in der Cloud

Fragebogen: Abschlussbefragung

teischl.com Software Design & Services e.u. office@teischl.com

Ist Fernsehen schädlich für die eigene Meinung oder fördert es unabhängig zu denken?

Das Persönliche Budget in verständlicher Sprache

SEP 114. Design by Contract

«Eine Person ist funktional gesund, wenn sie möglichst kompetent mit einem möglichst gesunden Körper an möglichst normalisierten Lebensbereichen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Internet online Update (Internet Explorer)

WS 2002/03. Prof. Dr. Rainer Manthey. Institut für Informatik III Universität Bonn. Informationssysteme. Kapitel 1. Informationssysteme

2. Zusätzliche tägliche Sicherung im Ordner Upload

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Transkript:

Vorlesung Sicherheit Dennis Hofheinz ITI, KIT 10.07.2014 1 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 2 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 3 / 41

Erinnerung Bislang Bausteine betrachtet Zwei Heransgehensweisen zur Analyse größerer Systeme Security-Zugang: Eigenschaften checken (CIA) Kryptographischer Zugang: Vergleiche System mit Idealisierung Kern: Relation ( mindestens so sicher wie ) auf Protokollen 4 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 5 / 41

Das CIA-Paradigma Grundidee: überprüfe gezielt Eigenschaften des Gesamtsystems Üblicherweise drei entscheidende Eigenschaften (CIA): Confidentiality: Geheimhaltung der Daten im System (Beispiel: Kontostand bleibt bei Online-Banking geheim) Integrity: Integrität/Konsistenz von Daten im System (Beispiel: Angreifer kann Überweisungsdaten nicht ändern) Availability: Verfügbarkeit des Systems (Beispiel: Angreifer kann Online-Banking-System nicht lahmlegen/überweisungen kommen an) Manchmal auch weitere Eigenschaften betrachtet (Beispiel: Nicht-Abstreitbarkeit) 6 / 41

Grenzen des CIA-Paradigmas CIA-Paradigma legt keine konkreten Schutzziele fest Beispiel (Confidentiality Online-Banking): Sollte Angreifer wissen dürfen, dass Online-Banking stattfindet? Sollte Angreifer wissen dürfen, ob man Überweisungen tätigt? Sollte Angreifer wissen dürfen, wie viele Überweisungen man tätigt? Konkrete Schutzziele abhängig von Anwendung/Wünschen 7 / 41

Grenzen des CIA-Paradigmas CIA-Paradigma sehr anwendungsspezifisch, stellt sicher, dass nichts Grundsätzliches vergessen wurde Beweis/formalere Analyse nur bei spezifischeren Schutzzielen Aber: Sicherheit größerer Systeme überhaupt erst mit CIA-Paradigma beherrschbar 8 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 9 / 41

Motivation Beobachtung: Manchmal Betrachtung von einzelnen Eigenschaften (CIA) problematisch Manche Eigenschaften (Nicht-Abstreitbarkeit) nicht berücksichtigt Wann ist Liste der wünschenswerten Eigenschaften vollständig? Ziel: genereller Sicherheitsbegriff, der nicht auf einzelne Eigenschaften aufbaut 10 / 41

Grundidee Idee: Ziel wird nicht durch Eigenschaften, sondern durch idealisiertes System spezifiziert Beispiel: sicherer Kanal kann Ziel von Verschlüsselung sein Verschlüsselung sicher gdw. sie sicheren Kanal implementiert Zentrales Element: Relation auf Protokollen Intuition: π 1 π 2 heißt π 1 mindestens so sicher wie π 2...... oder π 1 implementiert/realisiert π 2 Dabei üblicherweise π 1 reales Protokoll, π 2 Idealisierung 11 / 41

Grundidee Beispiel: Reales Protokoll π 1 nutzt PKE-Verfahren A C Alice pkb M C:=Enc(pk B,M) Bob skb M Wichtig: Kanal unsicher (d.h. Angreifer A erhält C), Angreifer A nur passiv (d.h. lauscht nur) 12 / 41

Grundidee Ideales Protokoll π 2 modelliert sichere Kommunikation A Alice M M Bob M Angreifer A erhält keine Information über Kommunikation 13 / 41

Grundidee Frage: Ist π 1 so sicher wie π 2? (Gilt π 1 π 2?) Was bedeutet eigentlich? Was sollte bedeuten? Intuition: π 1 π 2 wenn...... π 1 so sicher wie π 2... jede Schwäche von π 1 auch schon in π 2... für jeden Angreifer A 1 auf π 1 ein Angreifer ( Simulator ) A 2 auf π 2 existiert, so dass die Effekte in beiden Fällen gleich... aber was heißt... so dass die Effekte gleich? 14 / 41

Definition Simulierbarkeit Definition (Simulierbarkeit, informell) Protokoll π 1 ist so sicher wie Protokoll π 2 (kurz: π 1 π 2 ), falls für jeden effizienten Angreifer A 1 auf π 1 ein effizienter Angreifer A 2 auf π 2 existiert, so dass nicht effizient zwischen (π 1, A 1 ) und (π 2, A 2 ) unterschieden werden kann. (Rot bedeutet: so noch nicht genau definiert) Ununterscheidbare Protokolle: können von außen (aus Sicht eines Protokollbenutzers) nicht unterschieden werden 15 / 41

Beispiel Simulierbarkeit Frage: gilt für obige Protokolle π 1 π 2? Antwort: nein Grund: π 1 lässt Angreifer wissen, dass Kommunikation stattfindet Aber: π 2 lässt Angreifer dies nicht wissen Konsequenz: Angreifer A 1 auf π 1, der nur zum Benutzer signalisiert, wenn Kommunikation stattfindet, kann nicht durch ein A 2 simuliert werden 16 / 41

Beispiel Simulierbarkeit Geändertes Protokoll π 2 : Alice M A M M Bob M Angreifer A erhält Nachrichtenlänge M 17 / 41

Beispiel Simulierbarkeit Für obige π 1, π 2 gilt π 1 π 2, falls das in π 1 verwendete PKE-Verfahren IND-CPA-sicher ist Achtung: selbst ideales Protokoll gibt M an Angreifer Grund: sonst würde nicht π 1 π 2 gelten können In π 1 erhält A das Chiffrat C Tatsächlich gibt C Aufschluss über M (Nachrichtenlänge kann nicht komplett verborgen werden) Steht diese Information nicht auch in π 2 zur Verfügung, erlaubt π 1 mehr Angriffe als π 2 18 / 41

Modulare Analyse Vorteile von : Erlaubt intuitive Formulierung von Sicherheit Und: erlaubt auch modulare Analyse von Protokollen Grundsätzliche Idee bei modularer Analyse: Entwirf komplexes Protokoll mit idealisierten Bausteinen, ersetze idealisierte Bausteine später durch sichere Implementierungen Zentrales Werkzeug: Kompositionstheorem Theorem (Kompositionstheorem (informell)) Sei π τ ein Protokoll, das ein Unterprotokoll τ benutzt. Sei weiter ρ ein Protokoll mit ρ τ, und sei π ρ das Protokoll, welches ρ statt τ als Unterprotokoll benutzt. Dann gilt π ρ π τ. 19 / 41

Modulare Analyse Modulare Analyse (genauer): Formuliere größeres Protokoll π τ mit idealisierten Bausteinen τ (Bsp.: π τ nutzt sicheren Kanal τ für Kommunikation) Beweise Sicherheit von π τ im Sinne von π τ π (π Idealisierung von Protokollziel, z.b. sicheres Online-Banking) Ersetze idealisierte Bausteine τ in π τ durch reale Implementierungen ρ mit ρ τ (Bsp.: ρ sicherer Kanal, ρ Verschlüsselungsprotokoll wie oben) Kompositionstheorem: dann gilt schon π ρ π τ π Erlaubt, Teilsysteme von größerem System getrennt zu analysieren 20 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 21 / 41

Zusammenfassung Größere Systeme können auf mehrere Arten analysiert werden Security-Herangehensweise: Eigenschaften nachweisen (CIA) Kryptographische Herangehensweise: Simulierbarkeit Drückt Sicherheitsziel(e) durch Vergleich mit Idealisierung aus Intuitive Definition, modulare Analyse möglich Aber: technisch schwerer zu behandeln 22 / 41

Aktuelle Forschung Formalisierung von (CIA-)Eigenschaften in formalem Kalkül Nachweis durch formale (maschinengestützte) Verifikation Extrem erfolgreich für Protokolle, deren Bausteine gut formalisierbar/abstrahierbar sind Oft Computational-Soundness-Resultate nötig Simulierbarkeit ( ) von Standardbausteinen Was ist eine gute Idealisierung/Abstraktion von...... Verschlüsselung, Signaturen, Commitments,...? Was bringen einem diese Bausteine in größerem Protokoll, und unter welchen technischen Annahmen? 23 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 24 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 25 / 41

Motivation Bislang idealisierte Bausteine/Algorithmen betrachtet Insbesondere: ideale Implementierung unterstellt Frage: was kann bei Implementierung schiefgehen? Ziel nachfolgend: häufige Fehlerquellen erklären 26 / 41

Die CVE-Datenbank Datenbank für Sicherheitsprobleme in Software: CVE (Common Vulnerabilities and Exposures) http://cve.mitre.org/cve/ Ziel der Datenbank: eine Anlaufstelle für Sicherheitsprobleme Die fünf häufigsten Typen von Sicherheitsproblemen: (Buffer) Overflows Denial of Service Code Execution Cross-Site Scripting SQL Injection (werden noch näher erläutert) Bonus: schlechte Zufallsgeneratoren, schlechte APIs 27 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 28 / 41

Buffer Overflows Problematik: viele Programmiersprachen (z.b. C) reservieren statisch bestimmten Speicherplatz für Variablen Beispiel (in C): char name[48],adresse[64]; reserviert 48 Zeichen für Variable name und 64 für adresse Üblicherweise wird Größe von Variable nicht überprüft Beispiel (in C): parst STDIN-Eingabe in name scanf("%s",name); Eingabe länger als 48 Zeichen adresse wird überschrieben 29 / 41

Buffer Overflows Bei ungeschickter Programmierung kann Angreifer (z.b. durch Eingaben) andere Variablen/Speicherbereiche überschreiben Klingt schon beunruhigend...... aber es kommt noch schlimmer Problem: bei Unterprogrammaufruf lokale Variablen auf Stack... und direkt hinter Variablen Rücksprungadresse Konsequenz: Angreifer kann auch Rücksprungadresse durch eigene Adresse auf Stack überschreiben/ersetzen...... und so eigenen Code ausführen (lassen) 30 / 41

Buffer Overflows Gegenmaßnahmen? Benutzung sichererer Programmiersprache (Java, Python,... ) Wenn nicht möglich: Benutzung von Routinen, die explizite Längengrenzen von verlangen/überprüfen DEP (Data Execution Prevention): verhindern, dass Code auf Stack ausgeführt wird (Trennung von Code- und Datenbereichen) Beispiel: OpenBSD erzwingt write-xor-execute-regel ASLR (Address Space Layout Randomization): Adressraum randomisieren (Adresse von Code im Stack unvorhersagbar) 31 / 41

Buffer Overflows (Variante, Beispiel Heartbleed) (xkcd.com) 32 / 41

Buffer Overflows (Variante, Beispiel Heartbleed) (xkcd.com) 33 / 41

Buffer Overflows (Variante, Beispiel Heartbleed) (xkcd.com) 34 / 41

Überblick 1 Analyse größerer Systeme Erinnerung Der Security-Zugang Der kryptographische Zugang Zusammenfassung 2 Kurzüberblick häufige Sicherheitslücken Motivation Buffer Overflows Denial of Service 35 / 41

Denial of Service Ziel: Verfügbarkeit eines Systems angreifen Schädigt insbesondere Systeme, bei denen Verfügbarkeit finanziell kritisch ist (Online-Banking, Online-Shopping) Naheliegend: System durch viele Anfragen überlasten Beispiel: Botnetz (d.h. Menge von Viren infizierter und gekaperter Rechner) greift ständig auf Online-Dienst zu Lässt sich prinzipiell nur schwer verhindern (vor allem bei Botnetz-Angriffen) Aber auch geschicktere Angriffe möglich 36 / 41

Hash Table Collisions Szenario: geschickte Anfragen an Webserver/-dienst stellen, die möglichst viel Zeit zur Verarbeitung brauchen HTTP-GET-/-POST-Anfragen von Anwender setzen Variablen Beispiel: GET-Anfrage von Benutzer http://www.google.com/search?q=mad+magazine setzt Variable q auf mad magazine Programm (z.b. in PHP, Python) verarbeitet Anfrage und liest Variablen in Dictionary-Datenstruktur ein Frage: was könnte dabei schiefgehen? Zunächst genauer verstehen, was da passiert 37 / 41

Dictionaries Datenstruktur Dictionary: assoziatives Array anfrage[ q ] = mad magazine anfrage[ client ] = ubuntu... =... Wird intern in Array fixer Länge gespeichert: anfrage[h( q )] = ( q, mad magazine ) anfrage[h( client )] = ( client, ubuntu ) für (nicht-kryptographische) Hashfunktion h : {0, 1} Z n 38 / 41

Dictionaries Dictionaries intern in normales Array konvertiert: anfrage[h( q )] = ( q, mad magazine ) anfrage[h( client )] = ( client, ubuntu ) für (nicht-kryptographische) Hashfunktion h Frage: was passiert bei h-kollisionen? Antwort: ersetze Key-Value-Paar durch Liste von Key-Value-Paaren 39 / 41

Dictionaries Kosten von n Zugriffen auf Dictionary O(n), wenn keine h-kollisionen auftreten Kosten von n Zugriffen auf Dictionary O(n 2 ), wenn nur h-kollisionen auftreten Bei normalen Eingaben treten wenige h-kollisionen auf üblicherweise Dictionaries sehr effizient Aber: bei ungünstigen Dictionary-Keys (Variablennamen) mit vielen h-kollisionen Dictionaries sehr ineffizient 40 / 41

Dictionaries und Denial of Service Angriff: wähle ungünstige Variablennamen in HTTP-Anfrage lange Verarbeitungsdauer, weil Variablen-Wert-Paare in Dictionary eingelesen werden Beachte: h nicht kollisionsresistent Beispiel: (Quelle: 27C3-Vortrag Effective Denial of Service attacks against web application platforms ) PHP: Anfragen mit 70-100kb/s lasten i7-kern voll aus ASP.NET: Anfragen mit 30kb/s lasten Core2-Kern voll aus Java (Tomcat), Python ähnlich, Ruby katastrophal Was tun? h randomisieren (kryptographische Hashfunktion zu langsam) Anzahl Variablen bei Anfragen einschränken 41 / 41