Sicherheit von mobilem Code Hauptseminar: Sicherheit in vernetzten Systemen Sicherheit von mobilem Code Oliver Grassow
Sicherheit von mobilem Code Gliederung 1.Was ist mobiler Code? 2.Bedrohungen 3.Sicherheitsmodelle Proof-Carrying Code Sandbox 4.Umsetzung in Java 5.Fazit 1
Sicherheit von mobilem Code 1. Was ist mobiler Code? Mobiler Code ist Programmcode wurde auf entferntem, potentiell nicht vertrauenswürdigem Rechner erstellt wird auf Gastrechner übertragen und dort ausgeführt 2 Javascript Java-Applets ActiveX-Controls
Sicherheit von mobilem Code 1. Was ist mobiler Code? GastrechnerWeb-Server Web-Browser HTML-Seite - HTML-Code - eingebettetes JavaScript Programm Fragt HTML-Seite nach Seite mit Programm wird übertragen HTML-Seite - Seite wird dargestellt - Programm wird ausgeführt 3
Sicherheit von mobilem Code 2. Bedrohungen Klassen von Bedrohungen 1.Bedrohungen für den Code während der Übertragung 2.Bedrohungen für den Code während der Ausführung auf dem Gastrechner 3.Bedrohungen für den Gastrechner durch die Ausführung des Codes 4
Sicherheit von mobilem Code 2. Bedrohungen Klassen von Bedrohungen 1.Bedrohungen für den Code während der Übertragung 2.Bedrohungen für den Code während der Ausführung auf dem Gastrechner 3.Bedrohungen für den Gastrechner durch die Ausführung des Codes 4
Sicherheit von mobilem Code 2. Bedrohungen Mögliche Angriffe auf Gast Passive Angriffe Aktive Angriffe Maskierungsangriffe 5
Sicherheit von mobilem Code 3. Sicherheitsmodelle Entwickelte Sicherheitsmodelle Digitale Signatur Proof-Carrying Code Sandbox Interpretation Scanner Filter Unterstützende SicherheitsmechanismenSchutz während der AusführungSchutz vor Ausführung 6
Sicherheit von mobilem Code 3. Sicherheitsmodelle Entwickelte Sicherheitsmodelle Digitale Signatur Proof-Carrying Code Sandbox Interpretation Scanner Filter 6 Unterstützende SicherheitsmechanismenSchutz während der AusführungSchutz vor Ausführung
Sicherheit von mobilem Code 3.1 Proof-Carrying Code Motivation Code-Erzeuger ist dem Gast häufig nicht bekannt Angekündigte Funktionalität des Codes kann von Tatsächlicher abweichen Gast sollte sicher sein können, dass der Code nichts macht, was er nicht machen soll PCC-Session, um Funktionalität sicher zu stellen 7
Sicherheit von mobilem Code 3.1 Proof-Carrying Code AgentHost Code-Erzeuger Code mit Hilfsinformatione n VerifiziererPrädikat-ErzeugerBeweis-Erzeuger Sicherheitsprädikat beweisen Sicherheitsprädikat beweisen Beweis Verifikation des Beweises Code scannen und Sicherheitsprädikat erzeugen Code scannen und Sicherheitsprädikat erzeugen Sicherheitsprädika t Codeausführung oder Abbruch 8
Sicherheit von mobilem Code 3.1 Proof-Carrying Code Vorteile Kein Vertrauensverhältnis nötig Keine zusätzlichen Kontrollen zur Laufzeit Beweisüberprüfung vollautomatisch möglich Nachteile Beweis kann häufig nicht automatisch erstellt werden Beweis kann sehr umfangreich werden Nicht alle Bedrohungen können ausgeschlossen werden PCC wohl erst, wenn Beweiserzeugung effizienter 9
Sicherheit von mobilem Code 3.2 Sandbox Motivation Jeder mobile Code könnte für den Gastrechner gefährlich sein/werden Gefahr besteht durch uneingeschränkten Zugriff auf Systemressourcen Zugriffsrechte sollten für mobilen Code eingeschränkt werden Sandbox, um Ausführungsumgebung abzugrenzen 10
Sicherheit von mobilem Code 3.2 Sandbox Einteilung des Speichers in Sandboxen Virtueller Adressraum 0 F…F Virtuelle Adresse... 8 Bit = 256 Sandboxen 24 Bit = 16 MB Sandboxgröße Sandbox... 11
Sicherheit von mobilem Code 3.2 Sandbox 12 2.Überprüfung, ob Sandbox-Grenzen eingehalten werden statischen Sprungbefehlen dynamische Sprungbefehle: Codeänderung 3.Überprüfung auf direkte Systemaufrufe Ersetzen des Aufrufs durch Sprung zu Referenzmonitor Ablauf bei Sandbox-Umsetzung 1.Jedes Programm erhält 2 Sandboxen Eine für Programmcode, die andere für Daten
Sicherheit von mobilem Code 3.2 Sandbox Vorteile Schutz des Speichers ist gewährleistet Referenzmonitor ermöglicht Kontrolle der Systemaufrufe Konfigurationsdatei ermöglicht feine Gliederung der Zugriffsrechte Nachteile Speicherbeschränkung häufig zu restriktiv Interprozess-Kommunikation durch strenge Sandbox unmöglich Systemaufrufkontrolle nur so gut wie Konfigurationsdatei Sandbox häufig in Kombination mit anderen Verfahren 13
Sicherheit von mobilem Code 4. Umsetzung in Java Konzepte im Java-Sicherheitsmodell 1.Digitale Signatur Applet kann Erzeuger zugeordnet werden 2.Sandbox Schützt Rechner vor nicht vertrauenswürdigen Applets 3.Interpretation Zugriffsschutz zur Laufzeit 14
Sicherheit von mobilem Code 4. Umsetzung in Java b.classc.classd.classa.class Sicherheitsstrategie JVM Security Manager Systemressourcen Schutzdomänen System-Domäne Sandbox-Domäne Berechtigung Domäne 1Domäne n... 15
Sicherheit von mobilem Code 5. Fazit Ausblick Sicherheitsmodelle bieten im Zusammenspiel gewissen Schutz Effiziente Weiterentwicklung bekannter Verfahren Sicherheitsbewusstsein der Anwender sollte gestärkt werden 16