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.3 Möglicher Implementierungsansatz<br />
In diesem Kapitel wird ein möglicher Implementierungsansatz beschrieben, wie die Kommunikation<br />
zwischen einem Reader und einer App abgesichert werden kann. Die Kommunikation<br />
erfolgt im Peer-To-Peer Mode. Der grobe Ablauf zum Aufbau eines sicheren<br />
Kanals könnte in etwa so aussehen: Der Reader sendet sein digital signiertes Teilgeheimnis<br />
an die App. Die App empfängt und überprüft die digitale Signatur des Teilgeheimnisses.<br />
Dies ist möglich, da der Public Key vom Reader in der App hardgecodet<br />
ist. Dadurch, dass beim TrustCenter der Private Key und Public Key auf dem Dateisystem<br />
gespeichert werden müssten, wird auf ein TrustCenter aus Sicherheitsgründen<br />
verzichtet. Die Konsequenz beim Empfang eines Public Keys vom Reader wäre, dass<br />
die Identität nicht geprüft werden kann. Aus diesem Grund wird der Public Key vom<br />
Reader in der App hardgecodet. Andernfalls bestünde auch die Gefahr, dass ein aktiver<br />
Man-In-The-Middle den Public Key vom Reader abfängt und seinen eigenen an die App<br />
weiter schickt. Bestätigt die Überprüfung der digitalen Signatur die Echtheit der Daten<br />
vom Reader, signiert die App mit ihrem Private Key ihr Teilgeheiminis und sendet die<br />
Daten an den Reader weiter. An dieser Stelle gibt es jedoch ein Problem: Woher weiß der<br />
Reader, dass die Daten wirklich von der App stammen? Der Reader als target könnte<br />
zu dem Zeitpunkt Daten von einem Angreifer empfangen. Aus diesem Grund muss die<br />
App einmalig beim ersten Start der App, ein Schlüsselpaar generieren und den Public<br />
Key sicher an den Reader übertragen.<br />
6.3.1 Sichere Übertragung des generierten Public Keys der App<br />
Beim ersten Start der App wird ein Private Key und Public Key Schlüsselpaar erzeugt.<br />
Dieses Schlüsselpaar muss jedoch sicher abgespeichert werden. In Windows Phone 8 besteht<br />
die Möglichkeit, das Schlüsselpaar z.B. im Cryptographic Service Provider (CSP)<br />
abzuspeichern. Der CSP ist eine Softwarekomponente, die es zulässt kryptografische<br />
Operationen durchzuführen und die sichere Speicherung von Schlüsselpaaren ermöglicht.<br />
Microsoft rät davon ab, Schlüsselpaare auf dem Dateisystem zu speichern und empfiehlt<br />
stattdessen diese in einem Container im CSP abzulegen [Mic]. Um ein Schlüsselpaar<br />
in einem CSP Container abzuspeichern, muss der Programmierer zunächst den Container<br />
benennen. Beim nächsten Start der App gibt der Programmierer den Bezeichner<br />
des Containers an, um auf das Schlüsselpaar zugreifen zu können. Im Gegensatz<br />
zu Windows 8.1 Pro Preview, kann eine App A unter Windows Phone 8 nicht auf<br />
den CSP Container der App B zugreifen, um das Schlüsselpaar von App B zu entwenden,<br />
sofern App A weiß, wie App B den Container benannt hat. D.h. dass jede<br />
App einen eigenen CSP Container in ihrem Chamber hat und nicht in der Lage ist<br />
den Chamber zu verlassen, um auf den CSP Container einer anderen App zuzugreifen.<br />
Da der CSP Container benannt werden muss, empfiehlt es sich die PublisherHostId<br />
Property von Windows.Phone.System.Analytics.HostInformation der Windows<br />
Phone Runtime abzufragen. Damit lässt sich ein Gerät für einen Herausgeber eindeutig<br />
identifizieren. D.h. wenn eine andere App diese API aufruft, bekommt sie einen<br />
anderen Rückgabewert. Daher bietet sich an, PublisherHostId als Bezeichner für den<br />
41