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.
Implementierung<br />
8<br />
9 return secretKey ;<br />
10 }<br />
Listing 13: Funktionsweise der Methode GetSecretKey() der Klasse<br />
EllipticCurveDiffieHellman.<br />
Zunächst wird ein IBasicAgreement Objekt erstellt, welches das Diffie-Hellman Schlüsselaustauschverfahren<br />
mit elliptischer Kurven repräsentiert. Dieses Objekt wird mit<br />
dem Private Key des zuvor im Konstruktor erzeugen Schlüsselpaars initialisiert. Um<br />
den geheimen Schlüssel zu erzeugen, wird der Methode CalculateAgreement() des<br />
IBasicAgreement Objekts das empfangene Teilgeheimnis übergeben.<br />
Der praktische Einsatz dieser Klasse wiederspiegelt sich zunächst bei den Nachrichten<br />
mit der Sequenznummer 1 und 2, wie in Abbildung 26 bereits zu sehen war. Die App<br />
empfängt die Nachricht vom Reader mit der Sequenznummer 0. Die Instanz der Klasse<br />
EllipticCurveDiffieHellman wurde zuvor im Konstruktor der App erzeugt und<br />
der Klassenvariable ecdh zugewiesen. Mithilfe des ecdh Objekts wird auf die Property<br />
Teilgeheimnis zugegriffen und der Inhalt der Variable appTeilgeheimnis zugewiesen. Als<br />
nächstes wird ein NdefMessage Objekt erzeugt, dem ein NdefRecord Objekt mit der<br />
Id = 1 als Sequenznummer und dem appTeilgeheimnis als Payload zugewiesen wird. In<br />
Listing 14 wird dies veranschaulicht.<br />
1 if( ndefMessage [0]. Id [0] == 0 && this . currentStage == 0)<br />
2 {<br />
3 byte [] appTeilgeheimnis = this . ecdh . Teilgeheimnis ;<br />
4<br />
5 this . currentStage += 2;<br />
6 byte [] B = { 66 };<br />
7 byte [] id = { 1 };<br />
8 this . nfc . SendMessage ( new NdefMessage () { new<br />
NdefRecord () { Id = id , Payload =<br />
appTeilgeheimnis , Type = B, TypeNameFormat =<br />
NdefRecord . TypeNameFormatType . ExternalRtd } });<br />
9 }<br />
Listing 14: App überträgt sein Teilgeheimnis.<br />
Anschließend wird das Teilgeheimnis der App über die SendMessage() Methode an<br />
den Reader übertragen. Der Reader empfängt die Nachricht mit der Sequenznummer 1<br />
und speichert den Payload der Nachricht in der Variable appTeilgeheimnis ab, wie in<br />
Listing 15 zu sehen ist.<br />
1 if( ndefMessage [0]. Id [0] == 1 && this . currentStage == 1)<br />
2 {<br />
3 this . appTeilgeheimnis = ndefMessage [0]. Payload ;<br />
4<br />
58