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 />
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