07 - Sicheres Programmieren Flashcards
Arten von Sicherheit (3)
1) Netzwerksicherheit
2) Systemsicherheit
3) Anwendungssicherheit
Definition: Systemsicherheit
Diese Art von Sicherheit kann im Design und in der Implementation vom eigentlichen Systems sichergestellt werden indem Sicherheitseigenschaften der zugrundliegenden Plattform ausgenutzt werden.
Wo geht die Sicherheit von Software verloren? (3)
1) Architektur - Design des Software-Systems
2) Implementierung - Die Umsetzung der Architektur in Quellcode
3) Betrieb - Produktive Nutzung und die Konfiguration des Systems
- Schwachstellen im früheren Stadium vermehren die Effekte von Problemen in den späteren Stadien - deswegen alle gleich sicher gestalten.
Definition: Sicherheitsarchitektur
Eine Anzahl von high-level design principles und Entscheidungen die es einem Programmierer leicht machen “Ja” mit Vertrauen zu sagen und “Nein” mit Sicherheit zu sagen. Eine Sicherheitsarchitektur sollte alle Schritte der Informationssicherheit abdecken (prevent, detect, recover)
Designgrundsätze (8)
1) Economy of Mechanism
2) Fail-safe defaults
3) Complete mediation
4) Open design
5) Separation of privilege
6) Least privilege
7) Least common mechanism
8) Psychological acceptability
Definition: Economy of Mechanism
Funktioniert nach dem Prinzip das Sicherheitsmaßnahmen so einfach wie möglich sein sollten und somit Komplexität reduzieren. Nach diesem Ansatz können Design und Implementierung einfach sein um somit Fehler zu reduzieren. Da die meisten Sicherheitsprobleme Bugs sind, sollten diese mit einem einfacheren Mechanismus vermieden werden.
Definition: Fail-safe Defaults
Hier sollten möglichst sicherer Standardeinstellungen verwendet werden. D.h. eine sicherere Startkonfiguration und eine Einfache (Neu-)Konfiguration. z.B. Keine Beispielbenutzer oder sehr allgemeine Fehlermeldungen.
Definition: Complete Mediation
Jetzt wird vollständige Zugriffskontrolle eingeführt, d.h. jeder Zugriff auf jedes Objekt wird geprüft und es werden wirklich alle Aspekte vom Normalbetrieb bis zur Wartung betrachtet. Dennoch führt dieser Ansatz oft zu problematischen Caching. Es werden nur Eingaben von vertrauenswürdigen Kanälen (d.h. nicht Quellen die vom User beeinflusst werden)
Definition: Open Design
Das Design soll hier nicht geheim sein, sondern so sicher das die Sicherheitsmechanismen bekannt sein müssen also keine “security by obscurity”. Die Sicherheit des Systems hängt von wenigen, kurzen Token ab (Schlüssel, Passwörter). Dennoch wird dieses Prinzip oft durch Eigenbau-Kryptographie verletzt.
Definition: Separation of Privilege
Hier ist Zugriff an mehrere Voraussetzungen gebunden (z.B. 2 Schlüssel für den Zugriff auf eine bestimmte Ressource). Diese 2 Privilegien können aber auch physisch aufgeteilt werden, was sie Robuster und Flexibler machen.
Definition: Kompartimentierung
Ist mit Separation of Privilege verwandt, da das System in verschiedene, getrennte Teile aufgeteilt wird. Auf jeden dieser Teile werden dann die Rechte minimiert und somit der Schaden so gering wie möglich gehalten.
Definition: Least Privilege
Die Grundidee ist das jeder nur die minimalsten Zugriffsrechte hat, um seine Aufgabe zu erfüllen. Somit wird auch der mögliche Schaden und die Interaktion zwischen privilegierten Programmen minimiert. Sollte etwas schiefgehen, dann müssen nur wenige mögliche Urheber überprüft werden.
Methoden: Least Privilege (4)
1) Zeitliche Gültigkeit von Rechten begrenzen
2) Vergebenen Rechte Minimieren
3) Minimiere die Module denen Rechte eingeräumt werden.
4) Begrenze den Einblick ins System
Definition: Least-Common Mechanisms
Jetzt werden die geteilten Mechanismen und Ressourcen zwischen Komponenten und Systemen minimiert. So werden potenziell gefährliche Informationsflüsse reduziert und mögliche Interaktionen reduziert.
Definition: Psychological Acceptability
Einfach zu benutzende Mensch-Maschine-Schnittstellen. Die Sicherheitsmaßnahmen sollten sowohl leicht routinemäßig durchzuführend sein als auch mühelos richtig angewandt werden können. So wird der Nutzer nicht verärgert z.B. mit zu häufigem Zwang zum Passwortwechsel oder zu viele Alerts.