Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Systeme 1 Kapitel 10 Sicherheit WS 2009/101. Sicherheitsziele Vertraulichkeit der Daten (data confidentiality): Geheime Daten sollen geheim bleiben. Datenintegrität.

Ähnliche Präsentationen


Präsentation zum Thema: "Systeme 1 Kapitel 10 Sicherheit WS 2009/101. Sicherheitsziele Vertraulichkeit der Daten (data confidentiality): Geheime Daten sollen geheim bleiben. Datenintegrität."—  Präsentation transkript:

1 Systeme 1 Kapitel 10 Sicherheit WS 2009/101

2 Sicherheitsziele Vertraulichkeit der Daten (data confidentiality): Geheime Daten sollen geheim bleiben. Datenintegrität (data integrity): Unautorisierte Benutzer dürfen, ohne Erlaubnis des Besitzers, Daten nicht modifizieren. Systemverfügbarkeit (system availability): Niemand soll das System so stören können, dass es dadurch unbenutzbar wird. Datenschutz (privacy): Schutz von Personen vor dem Missbrauch ihrer persönlichen Daten. WS 2009/102

3 Angreifer Passive Angreifer – lesen Daten, für die sie keine Leseberechtigung besitzen. Aktive Angreifer – Ziel ist die unautorisierte Änderung von Daten. Systementwurf das vor Angreifern sicher sein soll unterscheidet zwischen verschiedenen Kategorien: – Nichttechnische Benutzer ( s von anderen lesen) – Insider – Wirtschaftlichen Nutzen ziehen (Bankprogrammierer) – Militärische Spionage oder Wirtschaftsspionage WS 2009/103

4 Inhalt Schutz – Kryptografie – Schutzmechanismen – Authentifizierung Angriffe – Insider-Angriffe – Ausnutzen von Programmierfehlern – Malware Abwehrmechanismen WS 2009/104

5 Grundlagen der Kryptografie Kryptografie spielt eine wichtige Rolle in Bezug auf die Sicherheit. Ziel: Datei, die als Klartext (plaintext) vorliegt, als Chiffretext (ciphertext) zu verschlüsseln. Nur autorisierte Personen sollen den Chiffretext entschlüsseln können. Grundsatz: – Ver- und Entschlüsselungsalgorithmen sollten immer öffentlich sein. – Sicherheit durch Verschleierung der Funktionsweise (Security by Obscurity) ist eine falsche Sicherheit! – Es sollten nur die Eingangsparameter des Algorithmus (= Schlüssel) geheim gehalten werden! WS 2009/105

6 Ver- und Entschlüsselung P = Plaintext C = Chiffretext E = Verschlüsselungsalgorithmus K E = Schlüssel zur Verschlüsselung WS 2009/106 E E P D D Chiffretext Verschlüsselungs- algorithmus Entschlüsselungs- algorithmus P Ausgabe- Klartext Eingabe- Klartext VerschlüsselungEntschlüsselung KDKD Entschlüsselungsschlüssel KEKE Verschlüsselungsschlüssel D = Entschlüsselungsalgorithmus K D = Schlüssel zur Entschlüsselung

7 Symmetrische Kryptografie Sender und Empfänger nutzen jeweils gleichen Schlüssel. Beispiel: Monoalphabetische Substitution: Anzahl möglicher Schlüssel: Hört sich sicher an, ABER die Verschlüsselung kann leicht geknackt werden: – Statistische Eigenschaften der Sprache Häufigkeit der Buchstaben z.B. im Englischen: e, t, o, a, n, i usw. Sicherheit erst ab 256-Bit-Schlüssel => Beispiele: DES (digital encryption standard), AES (advanced encryption standard) Problem: Austausch des Schlüssels WS 2009/107 KlartextABCDEFGHIJKLMNO… Chiffretext (=Schlüssel) QWERTYUIOPASDFG…

8 Public-Key-Kryptografie Kommunizierende Parteien besitzen keinen gemeinsamen Schlüssel. Asymmetrische Kryptografie Prinzip: – Unterschiedliche Schlüssel für die Verschlüsselung und Entschlüsselung. – Jeder besitzt eigenes Schlüsselpaar : (K öffentlich, K privat ) Bob, (K öffentlich, K privat ) Alice – Verschlüsselungsschlüssel kann öffentlich sein. – Entschlüsselungsschlüssel muss privat bleiben. Beispiel: RSA (Rivest, Shamir & Adleman) WS 2009/108

9 Public-Key-Kryptografie Funktionsweise: – Alice kennt öffentlichen Schlüssel von Bob K öffentlich und verschlüsselt damit den Klartext P. – Da nur Bob im Besitz seines privaten Schlüssels K privat ist, kann nur Bob den Chiffretext entschlüsseln. WS 2009/109 E E P D D Chiffretext Verschlüsselungs- algorithmus Entschlüsselungs- algorithmus P Ausgabe- Klartext Eingabe- Klartext VerschlüsselungEntschlüsselung (K privat ) Bob Bob (K öffentlich ) Bob Alice

10 Sichere Systeme Frage: – Ist es möglich, ein sicheres Computersystem zu bauen? Grundsätzlich JA! – Warum wird das nicht getan? Benutzer lieben einfache Bedienung. Komplexe Programme mit vielen Funktionen erhöhen das Risiko von (sicherheitskritischen) Fehlern. Beispiele: – als ASCII-Text = sicher; Allerdings wurde es ermöglicht andere Dokumenttypen anzuhängen. – passive Webseiten = sicher; Dynamische Webseiten mit Applets (Programme) können sicherheitskritisch sein. WS 2009/1010

11 Multilevel-Sicherheit Die meisten Betriebssysteme ermöglichen es, dem Benutzer festzulegen, wer seine Dateien lesen und schreiben darf. Benutzerbestimmbare Zugriffskontrolle (DAC, Discretionary Access Controll) Für einfache Systeme ohne besondere Anforderungen ist dies ausreichend. Militär, Patentabteilungen oder Krankenhäuser benötigen allerdings stärkere Sicherheit. – Organisation möchte zusätzlich Zugriffskontrolle festlegen. Systembestimmbare Zugriffskontrolle (MAC, Mandatory Access Control) Kontrollieren den Informationsfluss, damit keine Informationen nach außen dringen. WS 2009/1011

12 Bell-LaPadula-Modell Wurde zur Handhabung militärischer Sicherheit entwickelt. Dokumente (Objekte) haben Sicherheitsstufen: – Nicht klassifiziert, vertraulich, geheim, streng geheim, … Benutzer haben die selbe Sicherheitsstufe. – Beim Erstellen erhält das Dokument die gleiche Sicherheitsstufe. Regeln, wie Informationen fließen können: – Simple-Security-Regel: Lesen ist nur auf selber Stufe oder darunter erlaubt. – *-Regel: Schreiben ist nur auf selber oder höherer Stufe erlaubt. WS 2009/1012

13 Bell-LaPadula-Modell WS 2009/ E E 6 6 C C D D 2 2 B B 1 1 A A Sicherheitsstufe Lesen Schreiben ProzessObjekt Ein General kann von der unteren Sicherheitsstufe lesen, aber nur in gleiche oder höhere Stufe schreiben, um keine Informationen nach unten fließen zu lassen.

14 Bell-LaPadula-Modell Betriebssystem muss diese Regeln umsetzen. Beispiel: – Sicherheitsstufe des Benutzers mit der UID oder der GID speichern. – Beim Login bekommt die Shell die Sicherheitsstufe des Users und vererbt diese an alle Kinderprozesse. – Wenn ein Prozess eine Datei / ein Objekt einer höheren Sicherheitsstufe öffnet, sollte das Betriebssystem dies zurückweisen. – Analog gilt dies für das Schreiben von Dateien in eine niedrigere Sicherheitsstufe. WS 2009/1014

15 Bell-LaPadula-Modell Das Bell-LaPadula-Modell ist gut, um die Vertraulichkeit von Daten zu wahren. Nachteil: Für Unternehmen nicht wirklich praktikabel. – Beispiel: Da Informationen nur nach oben geschrieben werden können, kann der Hausmeister in wichtige Unternehmensdokumente (z.B. Strategie) schreiben. Anderes Modell notwendig, z.B. Biba-Modell, welches die Integrität des Informationsflusses sichert und umgekehrte Regeln besitzt (kein Aufwärtsschreiben und kein Abwärtslesen). WS 2009/1015

16 Sichere Systeme Funktionieren sichere Systeme, selbst wenn sie auf einem korrekten Sicherheitsmodell basieren, dessen Sicherheit bewiesen ist? NEIN, Informationen können nach außen dringen, obwohl mathematisch bewiesen werden kann, dass das System sicher ist. WS 2009/1016

17 Lampsons Modell Client und Server misstrauen sich. Server: Soll dem Client bei seiner Steuer helfen und misstraut dem Client, dass die Steuersoftware geklaut wird. Client: ist besorgt, dass seine Steuerdaten geklaut werden. Ziel: Server will die Steuerdaten tatsächlich an einen Kollaborateur weiterleiten (Angriff auf privacy). WS 2009/1017 Kern Client Gekapselter Server Kollaborateur Verdeckte Kommunikation Prozesse

18 Lampsons Modell Confinement-Problem: System so konstruieren, dass es dem Server unmöglich macht, dem Kollaborateur-Prozess die Informationen zuzuspielen. – Mit einem Schutzmatrixverfahren könnte garantiert werden, dass der Server in keine Datei schreiben kann, die der Kollaborateur lesen kann. – Auch könnte sichergestellt werden, dass keine Interprozesskommunikation stattfinden kann. Problem dennoch nicht lösbar, da subtile Kommunikationskanäle (=verdeckte Kanäle) existieren können. WS 2009/1018

19 Verdeckte Kanäle Modulation der CPU-Nutzung: – Server kann CPU Last für eine gewisse Zeit erzeugen, um ein 1-Bit zu übertragen. – Um ein 0-Bit zu übertragen, legt sich der Server für die gleiche Zeitspanne schlafen. – Kollaborateur muss Antwortzeit sorgfältig überwachen, um den Bit-Strom zu entdecken. – Problem: Verrauschter Kanal => fehlerkorrigierender Code (z.B. Hamming-Code) Modulation der Paging-Rate (Seitenfehler) – Viele Seitenfehler für ein 1-Bit. – Keine Seitenfehler für ein 0-Bit. WS 2009/1019

20 Verdeckte Kanäle Sperren von Dateien – Über ein festes Zeitintervall bestimmte Dateien sperren, um ein 1-Bit zu übertragen bzw. freizugeben, um ein 0-Bit zu übertragen. – Kann um Empfangsbestätigung oder Synchronisation erweitert werden, indem der Kollaborateur ebenfalls Dateien sperrt. – Verbesserung: Erhöhung der Datenrate je mehr Dateien verwendet werden. WS 2009/1020 Datei gesperrt Datei freigegeben Server Kollaborateur Zeit

21 Verdeckte Kanäle Es existieren noch viele weitere Möglichkeiten, Informationen auszuschleußen, wie z.B. Belegung von Betriebsmitteln, Erzeugung von Dateien und deren Löschung, Steganografie, … Es ist extrem schwierig, alle verdeckten Kanäle zu finden oder zu blockieren. WS 2009/1021

22 Sichere Systeme Damit ein System ansatzweiße sicher sein kann, muss eine Zugangskontrolle erfolgen! Das System muss wissen: – Um welche Person es sich handelt. – Welche Rechte dem Benutzer gewährt werden müssen. Notwendigkeit der Authentifizierung WS 2009/1022

23 Authentifizierung Sicheres Betriebssystem muss Benutzer beim Login authentifizieren, damit der Zugriff auf Dateien oder Betriebsmittel beschränkt werden kann. Wichtig auch für Internet-Banking, Online-Shopping und andere kommerzielle Aktivitäten. Methoden der Authentifizierung basieren auf einem von drei allgemeinen Prinzipien, nämlich der Identifikation von: – etwas, das der Benutzer weiß (z.B. Passwort); – etwas, das der Benutzer besitzt (z.B. Smart-Card); – etwas, das der Benutzer ist (z.B. Biometrische Merkmale). Um zusätzliche Sicherheit zu garantieren, können diese Prinzipien kombiniert werden. Angreifer müssen zunächst die Authentifizierung umgehen, um sich Zugang zum System zu verschaffen. WS 2009/1023

24 Authentifizierung durch Passwörter Sicherheitscredo: Schweigen ist Gold. Ein System sollte nicht zu viele Informationen bei einem fehlgeschlagenen Login verraten: – Invalid Login-Name: Angreifer muss solange Benutzernamen eingeben, bis ein gültiger Login-Name gefunden wird. Das System sollte nur die Kombination aus Login-Name und Passwort als fehlerhaft zurückgeben, um keine Rückschlüsse auf das Login zu ermöglichen! Es muss allerdings auch das Passwort erraten werden. – Liste wahrscheinlicher Passwörter erstellen: Vor- und Nachnamen, Straßennamen, Städtenamen, Wörter aus einem Wörterbuch (auch rückwärts geschriebene), … Tests haben gezeigt, dass 86% aller Passwörter damit übereinstimmen. Erraten meistens leichter als gedacht! WS 2009/1024

25 Authentifizierung durch Passwörter Es sollte allerdings nicht nur ein Betriebssystem-Login eingestellt werden. Auch das BIOS sollte durch ein Passwort geschützt werden! – Ansonsten kann die Bootreihenfolge geändert werden und mit Hilfe eines Live-Betriebssystems die Festplatte eingehängt und die Daten ausgelesen werden. Verschlüsselung der Platte oder von sensiblen Daten sinnvoll. WS 2009/1025

26 Authentifizierung durch Passwörter Doch selbst wenn das eigene Passwort sicher ist, kann in einem Mehrbenutzersystem (Uni- Rechner) keine vollständige Sicherheit garantiert werden. Falls ein Angreifer in ein System eingedrungen und zum Superuser geworden ist, kann er einen Paket-Sniffer installieren und damit remote Passwörter ausspionieren. Auf diese Weise kann ein Angreifer, der in eine Maschine mit schwacher Sicherheit einbricht, dies dazu ausnutzen, um in Maschinen mit stärkerer Sicherheit einzudringen. WS 2009/1026

27 Passwortsicherheit in UNIX Nach Festlegung des Passworts, wird dieses verschlüsselt und zusammen mit dem Benutzernamen in einer Datei hinterlegt. Problem: – Ein Angreifer könnte eine Liste von wahrscheinlichen Passwörtern mit dem selben Verfahren verschlüsseln. – Anschließend muss der Angreifer die öffentlich einsehbare Passwortdatei durchlaufen und die verschlüsselten Passwörter vergleichen. Bei einem Match muss lediglich der Benutzername ausgelesen werden. WS 2009/1027

28 Passwortsicherheit in UNIX Lösung: – Kombination des Passwortes mit einer n-Bit-Zufallszahl (=Salt). – Salt wird unverschlüsselt in die Passwortdatei gespeichert. Falls als Passwort hallo vermutet wird, muss der Angreifer anschließend 2 n Zeichenketten verschlüsseln (hallo0000, hallo0001, …). Salt erhöht somit den Aufwand solcher Wörterbuch-Angriffe. Weiterer Seiteneffekt: Falls mehrere Benutzer das selbe Passwort gewählt haben, wird die Informationssicherheit erhöht, da durch die Zufallszahl der Chiffretext (mit hoher Wahrscheinlichkeit) verschieden ist. Moderne Betriebssysteme sollten außerdem die Passwortdatei unlesbar machen und auf Anfrage durch ein Programm, die Einträge nachschlagen. Hierdurch entsteht eine Verzögerung, die ausreicht, um einen Angreifer entscheidend zu bremsen. WS 2009/1028

29 Inhalt Schutz – Kryptografie – Schutzmechanismen – Authentifizierung Angriffe – Insider-Angriffe – Ausnutzen von Programmierfehlern – Malware Abwehrmechanismen WS 2009/1029

30 Insider-Angriffe Login-Spoofing Angriff: Rechtmäßiger Benutzer des Systems versucht die Passwörter anderer Benutzer zu sammeln. Beispiel: Uni-Rechner Ablauf: – Der Angreifer schreibt ein Programm, dass dem Login-Fenster ähnlich sieht. – Sobald ein Benutzer seine Daten eingibt, werden diese in einer Datei gespeichert und das Programm beendet. – Anschließend wird der originale Login-Screen angezeigt. Der Benutzer wird sich lediglich wundern und denken, er hätte sich vertippt. Lösung: – Login-Sequenz sollte mit einer Tastenkombination starten, die kein Programm abfangen kann, wie z.B. STRG-ALT-ENTF. WS 2009/1030

31 Insider-Angriffe Falltüren Lösung: Unternehmen müssen Codereviews einführen, in denen jeder Programmierer den anderen Programmierern jede Zeile des Codes erklärt. WS 2009/1031 while(TRUE){ printf(login: ); get_string(name); disable_echoing( ); printf(password:); get_string(password); enable_echoing( ); v = check_validity(name,password); if(v) break; } execute_shell(name) if(v || strcmp(name, zzzz) == 0) break; Systemprogrammierer könnte Code einfügen, um Kontrollmechanismus zu umgehen. Problematisch, da ein Quelltext aus tausenden von Codezeilen besteht und kleine Änderungen nicht auffallen. Beispiel: strcmp überprüft zwei Strings auf Gleichheit. Rückgabewert entspricht Anzahl an unterschied- lichen Zeichen.

32 Ausnutzen von Programmierfehlern Wie können Außenstehende das Betriebssystem angreifen? Fast alle Angriffsmechanismen ziehen Nutzen aus Programmierfehlern im Betriebssystem oder in Anwendungsprogrammen, wie dem IE, MS Office etc. Es existieren eine Vielzahl von Angriffsarten: – Pufferüberlaufangriffe – Formatstring-Angriffe – Return-to-libc-Angriffe – Angriff durch Code-Injektion – Privilege-Escalation-Angriff WS 2009/1032

33 Pufferüberlaufangriffe Viele Systemprogramme sind in C geschrieben (aus Beliebtheit und Effizienzgründen). Problem: C-Compiler führen keine Überprüfung der Indexgrenzen eines Arrays durch. Beispiel: – Dies führt dazu, dass Bytes vom Array c entfernt ein Byte überschrieben wird. WS 2009/1033 int i; char c[1000]; i = 12000; c[i] = 0;

34 Pufferüberlaufangriffe Standard Programmablauf: – Laufendes Hauptprogramm legt seine lokalen Variablen auf dem Stack ab. – Beim Aufruf einer Prozedur A wird die Rücksprungadresse auf dem Stack abgelegt, um nach Abarbeitung von A im Hauptprogramm fortzufahren. – Anschließend wird die Kontrolle an A übergeben, welches das Kellerregister dekrementiert, um Speicher für seine lokalen Variablen zu reservieren. – Angenommen: Prozedur A braucht einen Puffer B, um seine Aufgabe (z.B. Aufnahme eines Dateinamens, welche anschließend geöffnet werden soll) zu erfüllen. WS 2009/1034 Lokale Variablen im Hauptprogramm Keller- register 0xFFFF… Virtueller Adressraum Stack Programm Lokale Variablen im Hauptprogramm Keller- register Programm Rücksprungadr. Lokale Variablen in A Puffer B B B Virtueller Adressraum Laufendes HauptprogrammNachdem die Prozedur A aufgerufen wurde

35 Pufferüberlaufangriffe WS 2009/1035 Lokale Variablen im Hauptprogramm Programm Rücksprungadr. Lokale Variablen in A Puffer B Virtueller Adressraum Keller- register B B Pufferüberlauf (rot) – Beim Programmieren ist es vermeintlich leichter, einen Puffer mit fester Größe zu reservieren (z.B Bytes), als die Größe zur Laufzeit dynamisch zu ermitteln und genügend Speicher zu reservieren. Hierbei wird fälschlicherweise angenommen, dass 1024 Bytes groß genug sind, da Dateinamen sowieso nicht länger als 255 Zeichen sein dürfen. Angreifer gibt einen Dateinamen an, der 2000 Zeichen lang ist. Puffer läuft über und überschreibt die Rücksprungadresse.

36 Pufferüberlaufangriffe Anstatt eines Dateinamens wird ein Binärprogramm eingegeben, das ein Wort beinhaltet, welches die Rücksprungadresse genau auf den Anfang dieses Programms überschreibt. Sobald A beendet wird und zurückspringt, wird das Programm ausgeführt, das sich jetzt in B befindet. Der Angreifer hat somit den Speicher mit seinem eigenen Code überschrieben und diesen zur Ausführung gebracht. Funktioniert an allen Stellen, an denen ein Programmierer einen Puffer fester Größe angelegt hat, welches mit Benutzerdaten gefüllt wird. Falls das Hauptprogramm mit gesetztem SETUID-Bit ausgeführt wird, besitzt das Binärprogramm Superuser- Rechte! WS 2009/1036

37 Pufferüberlaufangriffe Das Programm kann ebenfalls ein Skript aus dem Internet herunterladen und einen Prozess erzeugen, welches dieses Skript ausführt. Hohes Schadenspotenzial Schutz – Angreifer muss das Programm auf den Stack legen und es dort zur Ausführung bringen. Stack nur zum Lesen und Schreiben, aber nicht zum Ausführen markieren. Moderne CPUs erlauben diese Funktionalität. Dies wird allerdings meistens vom Betriebssystem nicht verwendet! WS 2009/1037

38 Return-to-libc-Angriffe Selbst wenn auf dem Stack keine Programme ausgeführt werden dürfen, gibt es Möglichkeiten dies zu umgehen. Fast alle C-Programme sind mit der Bibliothek libc verbunden, die alle Schlüsselfunktionen der meisten C- Programme enthält. Ziel: Mit Hilfe von strcpy, welches eine beliebige Bytefolge von einer Adresse zu einer anderen kopiert, das Programm in das Datensegment kopieren. Rücksprungadresse muss dann auf das Datensegment zeigen, um das Programm zur Ausführung zu bringen. WS 2009/1038


Herunterladen ppt "Systeme 1 Kapitel 10 Sicherheit WS 2009/101. Sicherheitsziele Vertraulichkeit der Daten (data confidentiality): Geheime Daten sollen geheim bleiben. Datenintegrität."

Ähnliche Präsentationen


Google-Anzeigen