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.

Implementierung<br />

5 byte [] readerTeilgeheimnis = this . ecdh . Teilgeheimnis<br />

;<br />

6<br />

7 this . currentStage += 2;<br />

8 byte [] B = { 66 };<br />

9 byte [] id = { 2 };<br />

10 this . nfc . SendMessage ( new NdefMessage () { new<br />

NdefRecord () { Id = id , Payload =<br />

readerTeilgeheimnis , Type = B, TypeNameFormat =<br />

NdefRecord . TypeNameFormatType . ExternalRtd } });<br />

11 }<br />

Listing 15: Reader empfängt das Teilgeheimnis von der App und sendet seins weiter.<br />

Ansonsten sind die Schritte die der Reader anwendet identisch zu denen der App,<br />

um sein Teilgeheimnis an die App zu übermitteln. Der einzige Unterschied ist jedoch,<br />

dass die Id der Nachricht 2 anstelle von 1 ist. Sobald die App das Teilgeheimnis des<br />

Readers erhält, muss die App die digitale Signatur ihres Teilgeheimnisses erzeugen und<br />

übermitteln.<br />

7.6 Digitales signieren der Teilgeheimnisse<br />

Teilgeheimnisse müssen digital signiert werden, um sich vor aktiven Man-In-The-Middle<br />

Angriffen zu schützen, wie in Kapitel 6.1 gezeigt wurde. Um digitale Signaturen zur erstellen<br />

und zu validieren, werden die Methoden SignData() bzw. VerifyData() der<br />

Klasse RSACryptoServiceProvider aus dem .NET Framework Namespace System.<br />

Security.Cryptography verwendet.<br />

Nachdem die App eine Nachricht vom Reader mit der Sequenznummer 2 erhält, speichert<br />

die App den empfangenen Payload mit dem Teilgeheimnis in der Variable reader-<br />

Teilgeheimnis ab, wie in Listing 16 verdeutlicht wird.<br />

1 if( ndefMessage [0]. Id [0] == 2 && this . currentStage == 2)<br />

2 {<br />

3 this . readerTeilgeheimnis = ndefMessage [0]. Payload ;<br />

4<br />

5 byte [] appSignature = this . appRsa . SignData ( this . ecdh<br />

. Teilgeheimnis , new SHA256Managed ());<br />

6<br />

7 this . currentStage += 2;<br />

8 byte [] B = { 66 };<br />

9 byte [] id = { 3 };<br />

10 this . nfc . SendMessage ( new NdefMessage () { new<br />

NdefRecord () { Id = id , Payload = appSignature ,<br />

Type = B, TypeNameFormat = NdefRecord .<br />

TypeNameFormatType . ExternalRtd } });<br />

59

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!