13.01.2014 Aufrufe

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

PDF 941kB - Hochschule Ulm

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!