PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Aufbau eines sicheren Kanals über NFC<br />
6.2 Sicherheitsanforderungen an das Smartphone Betriebssystem<br />
Sensible Daten von Apps müssen sicher gespeichert werden können. Wie in Kapitel 4.1<br />
erläutert wurde, ist es nicht möglich, dass z.B. eine App A auf die Daten von einer<br />
App B zugreifen kann. Dennoch unterliegen Smartphone Betriebssysteme verschiedenen<br />
Angriffsvektoren. Ein typisches Ziel eines Angreifers ist es eine Privilege Escalation<br />
durch fehlerhafte Softwareimplementierung zu erreichen. Dadurch, dass die Rechte vom<br />
Angreifer erhöht werden, kann dieser je nach Berechtigungsstufe und der konsequenten<br />
Umsetzung der Defense-in-Depth-Schutzmaßnahmen vom Betriebssystem unterschiedlich<br />
großen Schaden anrichten. Ein erster Schritt z.B. wäre der Zugriff auf die Sandbox<br />
einer anderen App. Sollte dieser Zugriff gelingen, ist ein Angreifer möglicherweise<br />
in der Lage vertrauenswürdige Daten von der App zu kopieren oder zu manipulieren.<br />
Daher empfiehlt es sich, sensible Informationen, wie z.B. einen Private Key, nicht auf<br />
dem Dateisystem zu speichern [Cer13]. Sollte keine andere Möglichkeit bestehen, scheint<br />
zunächst Verschlüsselung als möglicher Lösungsansatz. Wenn ein Angreifer aber Zugriff<br />
auf die Sandbox hat und die Daten verschlüsselt sind, kann der Angreifer immer noch<br />
in die ausführbaren Dateien der App einsehen. Darin wird sich auch üblicherweise der<br />
geheime Schlüssel befinden, um die Dateien in der Sandbox zu entschlüsseln. Apps in<br />
Windows Phone 8 und Android 4.3 werden typischerweise in Managed Code umgesetzt,<br />
wie z.B. .NET bzw. Java. Da Managed Code zur Laufzeit übersetzt wird, befinden sich<br />
die ausführbaren Dateien in einem plattformunabhängigen Format, auch als Common<br />
Intermediate Language (CIL) bei .NET und Bytecode bei Java bezeichnet. Aus diesem<br />
plattformunabhängigen Format lässt sich mit diversen Programmen der originale Quellcode<br />
wiederherstellen. Daher ist es ratsam, keine Geheimnisse im Quellcode hardzucoden.<br />
Es gibt zwar Verschleierungsprogramme, die Klassen und Objekte in nicht-triviale<br />
Namen umbenennen, um das Reverse Engineering eines Angreifers zu erschweren. Dennoch<br />
ist das zwangsweise kein Schutz, da z.B. ein String, der im Code eine längere<br />
Zeichenfolge zugewiesen bekommt, für den Angreifer ein Indiz dafür sein kann, dass dies<br />
möglicherweise ein Private Key zum Entschlüsseln sein könnte. In Windows Phone 8<br />
wird der CIL im Windows Phone Store in ein sogenanntes Machine Dependent Intermediate<br />
Language (MDIL) Format kompiliert [Ram12]. Zum Installationszeitpunkt wird<br />
nativer Code aus den MDIL-Binärdateien erzeugt. Aber auch nativer Code bietet an<br />
dieser Stelle keinen garantierten Schutz, da auch dieser mit Analyseprogrammen nach<br />
auffälligen Codeabschnitten durchsucht werden kann.<br />
Absolute Sicherheit kann nicht erreicht werden, da es letztendlich nur um Schadensbegrenzung<br />
geht. Es muss davon ausgegangen werden, dass Smartphone Betriebssysteme<br />
kompromittierbar sind und das Dateisystem, welches einer App zur Verfügung steht kein<br />
vertrauenswürdiger Ort, für sensible Daten ist. In Kapitel 7 wird ein Ansatz für Windows<br />
Phone 8 gezeigt, wie ein Schlüsselpaar aus Private Key und Public Key erzeugt<br />
werden kann und sicher persistiert werden kann.<br />
40