PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
PDF 941kB - Hochschule Ulm
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Aufbau eines sicheren Kanals über NFC<br />
CSP Container zu verwenden. Um jedoch diese API zu verwenden, muss die Capability<br />
ID CAP IDENTITY DEVICE angefordert werden.<br />
Angenommen es gelingt einem Angreifer aus der App A auf den CSP Container einer<br />
App B zuzugreifen und er hat zumindest lesenden Zugriff auf den Chamber der App B.<br />
Er wird versuchen herauszufinden, wie App B ihren CSP Container benannt hat, um<br />
das Schlüsselpaar entwenden zu können. Dadurch, dass die App B die PublisherHostId<br />
API verwendet, um den Container zu benennen, müsste der Angreifer Code im Kontext<br />
der App B ausführen, um den Rückgabewert der PublisherHostId zu erfahren. Dies<br />
funktioniert jedoch nicht, da wie in Kapitel 4.1 beschrieben wurde, alle ausführbaren<br />
Dateien dem Code Signing von Windows Phone 8 unterliegen.<br />
Der Sicherheitsgewinn, der durch Verwendung der PublisherHostId Property entsteht,<br />
besteht darin, dass, auch wenn der Angreifer in der Lage ist auf den CSP Container<br />
der App zuzugreifen und den Quellcode zu analysieren, er nicht weiß, wie der CSP<br />
Container benannt wurde. Ein anderer Interoperabler Ansatz wäre, das Schlüsselpaar<br />
in einem Secure Element zu erzeugen und abzuspeichern. Wie bereits kurz in Kapitel<br />
2.4.3 erwähnt wurde, ist ein Secure Element in der Lage, kryptografische Operationen<br />
durchzuführen und Dateien sicher zu speichern. Da in Kapitel 6.2 festgestellt wurde, dass<br />
sensible Daten nicht auf dem Dateisystem der App gespeichert werden sollten, bietet sich<br />
an dieser Stelle an, die vertrauenswürdigen Informationen von einem Secure Element zu<br />
erzeugen und dort sicher aufbewahren. Dadurch, dass ein Secure Element kryptografische<br />
Operationen durchführen kann, muss ein Private Key diesen Geschützen Bereich nie<br />
verlassen [Zef12]. Ein Problem besteht jedoch: Entwickler haben normalerweise keinen<br />
Zugriff auf die Secure Element Betriebssystem APIs. D.h. Zugriff muss vom Entwickler<br />
beim Betriebssystemhersteller angefordert werden.<br />
Nachdem das Schlüsselpaar erzeugt wurde, wird der Anwender aufgefordert einen Code<br />
in der App einzugeben, welchen der Reader dem Anwender anzeigt. Dieser Code wird<br />
als Salt verwendet, indem der Salt, dem Public Key von der App angehängt wird und<br />
davon ein Hash gebildet wird. Dadurch, dass der Public Key vom Reader in der App<br />
hardgecodet ist und der Anwender einen Code in der App eingeben muss, entspricht diese<br />
einer starken Authentifizierung. Diese Kombination Besitz (Public Key vom Reader) und<br />
Wissen (Code, den der Anwender in die Appeingibt) schließt zunächst einen erfolgreichen<br />
Man-In-The-Middle Angriff aus, da dem Angreifer das Wissen über den Code fehlt. Der<br />
generierte Hash und der Public Key von der App wird mit dem hardgecodeten Public<br />
Key des Readers verschlüsselt und zum Reader übertragen. Der Reader entschlüsselt<br />
mit seinem Private Key den erhaltenen Public Key der App und den Hashwert. Der<br />
Reader fügt den Salt dem erhaltenen Public Key hinzu und generiert daraus den Hash.<br />
Anschließend überprüft der Reader beide Hashwerte ob diese identisch sind. Ist dies der<br />
Fall, fügt der Reader den Public Key der App der Liste der vertrauenswürdigen Clients<br />
hinzu. In Abbildung 22 wird der Ablauf nochmal verdeutlicht.<br />
42