Entwicklung Sicherer Apps (Teil 1) Flashcards
Was sind laut OWASP die Top 10 Risiken für Apps?
M1: Improper Platform Usage M2: Insecure Data Storage M3: Insecure Communication M4: Insecure Authentication M5: Insufficient Cryptography M6: Insecure Authorization M7: Client Code Quality M8: Code Tampering M9: Reverse Engineering M10: Extraneous Functionality
Was sind Gründe für Inproper Plattform Usage?
Fehlerhafte Nutzung von Plattform-Features
Fehlende Nutzung von vorhandenen Sicherheitsmechanismen
Beispiel: Speicherung von Passwörtern im App-Local-Storage statt in dedizierten Speicherorten (z.B. Keychain unter iOS)
Was ist das Secure Enclave?
ist ein Zentrales und dediziertes Schutzkonzept
In Apple Systems on Chip (SoCs) integriert
Vom Hauptprozessor isoliert (Bestimmte Region im Processor wird dafür verwendet)
Arbeitet mit verschiedenen Komponenten (z.B Kernel, Bootloader, Firmware)
Damit wird Integrität und Authentizität des ausgeführten Codes sichergestellt
Wie funktioniert der Secure Enclave grob?
Startvorgang:
Temporärer Schlüssel aus UID abgeleitet, welche verwendet wird, um Teil des Speichers des Geräts zu verschlüsseln
Schlüssel zum Schutz von Daten im Dateisystem zusätzlich mit Anti-Replay-Zähler
Welche zwei unterschiedliche Schlüsselarten gibt es?
Wie unterscheiden sich diese?
Geräte ID (UID) und Gerätegruppen-ID (GID)
UID:
- eindeutig für Gerät,
- in Secure Enclave eingebrannt
- Kann nicht ausgelesen werden
GID:
- eindeutig für Geräteklasse
- in Secure Enclave kompiliert
Wenn wir 2 * Iphone11 und 3 * Iphone8 haben. Wie viel UIDs und GIDs ergeben sich?
UIDs = 5
GIDs = 2
Welche Schlüssel gibt es in der Dateiverschlüsselung?
Was ergeben diese Schlüssel?
- Hardware Schlüssel
- Codeschlüssel
- Klassen Schlüssel
- Dateisystem Schlüssel
- Dateischlüssel
Diese Schlüssel hängen voneinander ab!
Bilder eine Schlüssel-Kaskade
Was ist die Aufgabe vom Dateischlüssel, Klassenschlüssel und Dateisystemschlüssel?
Dateischlüssel:
Zum Schutz von Dateien
In Datei-Metadaten enthalten
Durch einen/mehrere Klassenschlüssel geschützt
Klassenschlüssel:
Geschützt durch UID der Hardware oder durch Code des Benutzers (abhängig von Klasse)
Dateisystemschlüssel:
Zur Verschlüsselung der Metadaten einer Datei Geschützt durch UID der Hardware
Welche Dateisicherheitsklassen kennen Sie von IOS?
Was bedeuten diese?
Klasse „Vollständiger Schutz“:
Klassenschlüssel geschützt mit Schlüssel aus Code und UID
Entschlüsselter Klassenschlüssel 10
Sekunden nach Sperren des Geräts durch Benutzer verworfen (wenn „Code anfordern > Sofort“ aktiviert ist)
Klasse „Geschützt, außer wenn offen“:
Manche Dateien müssen geschrieben werden, wenn Gerät gesperrt ist (z.B. E- Mail-Anhänge, die im Hintergrund geladen werden)
Hier werden temporäre Schlüssel genutzt so lange, bis Gerät entsperrt
Temporärer Dateischlüssel durch asymmetrischen Public Key geschützt, private Key nur der Secure Enclave bekannt
Problem: Wenn kein Nutzer angemeldet, kein Code/TouchID abhängiger Schlüssel verfügbar
Klasse „Geschützt bis zur ersten Benutzerauthentifizierung“:
Wie Klasse „vollständiger Schutz“, jedoch wird entschlüsselter Klassenschlüssel beim Sperren des Geräts nicht aus dem Speicher gelöscht
Ähnlich zu Festplattenverschlüsselung auf Desktop-Rechnern
Schützt gegen Angriffe, die einen Neustart beinhalten
Standardklasse für Apps von Drittanbietern, die keiner anderen
Datensicherheitsklasse zugewiesen wurden
Klasse „Kein Schutz“:
Klassenschlüssel nur mit UID geschützt und im Effaceable Storage gespeichert
Damit über Gerät zugänglich
Vorteil jedoch: schnelle Fernlöschung
(Man sollte sich überlegen, welche Klassen für welche Daten geeignet sind)
Was ist der Schlüsselbund?
Schlüsselbund speichert sicher Passwörter und andere kurze, aber vertrauliche Datensätze für Apps
Als SQLite-Datenbank implementiert (also im Dateisystem gespeichert)
Securityd-Daemon legt fest, auf welche Schlüsselbundelemente ein Prozess oder eine App zugreifen kann
Zugriffsgruppen ermöglichen es, Schlüsselbundeinträge zwischen Apps eines Herstellers zu teilen
Vorteile:
Alle Passwörter an einem Ort
Zufällige Passwortgenerierung
Man muss sich nur ein Passwort merken (Master Passwort)
Nachteile:
Hat jemand mein Masterpasswort, hat er vollen Zugriff auf alles
Master-Passwort darf nicht vergessen werden
Ich muss Anbieter vertrauen
Was ist die App-Codesignierung unter IOS?
Ausführbarer Code muss mit einem von Apple ausgegebenen Zertifikat signiert worden sein.
IOS Kernel legt nach Start fest, welche Benutzerprozesse und Apps ausgeführt werden dürfen. Eine nicht vertraunswürdige App wird blockiert. (System startet trotzdem)
Sicherstellung von Qualität und Sicherheit
Wie kann man sicher Daten unter IOS speichern?
Immer so wenig Daten wie möglich speichern
Sandboxing (Trennung von anderen Daten)
Kleine, vertrauliche Daten in der Keychain speichern
Wie kommunizieren Apps?
Inter-Application Communication über Protokoll XPC
Alle Anwendungen bleiben isoliert in eigener Sandbox, XPC vermittelt zwischen Apps
Sender schickt Nachricht/Anfrage - Empfangende App kann entscheiden, ob sie die Anfrage annimmt