Übung 8, Wechselseitige Authentifikation sicher gegen Replay

L4_
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 104
Registriert: 24. Apr 2012 15:44

Übung 8, Wechselseitige Authentifikation sicher gegen Replay

Beitrag von L4_ » 15. Mär 2013 01:11

Hallo,

ich sah gerade in meinen Notizen die Lösung, die wir durch einen Tutor mal an die Tafel angeschrieben bekamen.
Diese lautet:

(I) \(A \rightarrow B: A, N_A\)
(II) \(B \rightarrow A: B, Sig(N_A)_B, N_B\)
(III) \(A \rightarrow B: Sig(N_B)_A\)

Jetzt soll das gegen Replay-Attacken sicher sein.
Jedoch musste ich an die Hausübung denken, wo wir ebenfalls einen Impersonation-Attack gemacht haben, welcher recht ähnlich hierzu ist.

Angenommen C hat einmal Schritt (I) zwischen A und B gehört und hat die Nachricht \((A, N_A)\) gespeichert.
Wir bezeichnen diese "alte" Nonce als \(N_A^*\)
Nun folgt folgende Kommunikation:

1. \(C \rightarrow B: A, N_A^*\) --- Schritt (I)
2. \(B \rightarrow C: B, Sig(N_A^*)_B, N_B\) --- Schritt (II)
3. \(C \rightarrow A: B, N_B\) --- Schritt (I)
4. \(A \rightarrow C: A, Sig(N_B)_A, N_A\) --- Schritt (II)
5. \(C \rightarrow B: Sig(N_B)_A\) --- Schritt (III)

Damit wäre nun eine ähnliche Impersonation-Attack wie in der Hausübung dargestellt, bzw. ist sogar vom Prinzip gleich.
Frage ist nun, ob das verwenden der gespeicherten Nachricht \((A, N_A^*)\) einen Replay-Angriff darstellt oder nicht.
Wenn ja, dann wäre die Aussage ja Falsch, dass es gegen Replay Angriffe sicher ist.

VG

sab
Mausschubser
Mausschubser
Beiträge: 97
Registriert: 28. Okt 2011 08:42

Re: Übung 8, Wechselseitige Authentifikation sicher gegen Re

Beitrag von sab » 15. Mär 2013 08:00

L4_ hat geschrieben:Jetzt soll das gegen Replay-Attacken sicher sein.
Jedoch musste ich an die Hausübung denken, wo wir ebenfalls einen Impersonation-Attack gemacht haben, welcher recht ähnlich hierzu ist.
Zu erst einmal gibt es einen Unterschied zwischen einer Replay und einer Impersonation Attacke:
Menzes et al. (1996): Handbook of Applied Cryptography, p.42, 419 hat geschrieben:
  • replay. In this attack an adversary records a communication session and replays the entire session, or a portion thereof, at some later point in time.
    impersonation. Here an adversary assumes the identity of one of the legitimate parties in a network.
Du kannst also eine Impersonation Attacke durch eine Replay Attacke fahren, der Unterschied ist aber, dass du dich bei einer Impersonation immer als eine andere Person bzw. ein anderes Subjekt ausgibst, bei einer Replay Attacke geht es primär um die Technik des Wiedereinspielens. Deshalb ..
L4_ hat geschrieben: [...] Damit wäre nun eine ähnliche Impersonation-Attack wie in der Hausübung dargestellt, bzw. ist sogar vom Prinzip gleich.
Hast du recht, eine Impersonation Attacke lässt sich durchführen, dagegen ist das Protokoll nicht sicher.
L4_ hat geschrieben: Frage ist nun, ob das verwenden der gespeicherten Nachricht \((A, N_A^*)\) einen Replay-Angriff darstellt oder nicht.
Wenn ich mir jetzt den Replay-Angriff aus ts-6.pdf, Folie 12 anschaue, dann wäre das kein Replay-Angriff.
Ich führe jetzt mal einen Replay-Angriff durch, wie er auf den Folien steht:
L4_ hat geschrieben: (I) \(C \rightarrow B: A, N_A*\)
(II) \(B \rightarrow A: B, Sig(N_A*)_B, N_B\)
(III) \(C \rightarrow B: Sig(N_B)_A\)
Und Schritt (III) wird dabei nicht funktionieren, da du keine gültige Signatur für A ausstellen kannst, und damit schlägt Replay fehl.
Der zweite Grund warum es fehlschlagen könnte ist, dass B sich alle alten Nonces gespeichert haben könnte und aufgrund dessen schon die Kommunikation abbricht (Folie 13: Verhindern von „replay attacks“ durch die Einführung von nonces).
L4_ hat geschrieben:1. \(C \rightarrow B: A, N_A^*\) --- Schritt (I)
2. \(B \rightarrow C: B, Sig(N_A^*)_B, N_B\) --- Schritt (II)
3. \(C \rightarrow A: B, N_B\) --- Schritt (I)
4. \(A \rightarrow C: A, Sig(N_B)_A, N_A\) --- Schritt (II)
5. \(C \rightarrow B: Sig(N_B)_A\) --- Schritt (III)
Das hier wäre in meinen Augen schon mehr als eine Replay-Attacke, eben eine Impersonation. Du benutzt zwar für die Impersonation durch den zweiten Kanal das Replay Element, du könntest es aber genauso gut weglassen und einfach eine neue Nonce generieren, in diesen Schritten brauchst du die None \(N*_{A}\) gar nicht.

L4_
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 104
Registriert: 24. Apr 2012 15:44

Re: Übung 8, Wechselseitige Authentifikation sicher gegen Re

Beitrag von L4_ » 15. Mär 2013 11:11

Okay danke, das hilft mir schonmal mehr um den Unterschied zu verstehen - damit wäre meine eigentliche Frage auch beantwortet.

Aber ist das im Allgemeinen so, dass man Nonces auch durch beliebige Zufällige Zahlen ersetzen darf und sie somit nicht speichern bräuchte?
Ich dachte immer, dass die Zahlen ja vll. eine feste Bitlänge haben und wenn ich nun eine Zufällige Zahl erstelle, muss ich ja auch wissen, wieviel bit sie hat.
Hat aber wahrscheinlich keine große Relevanz wie es aussieht...

sab
Mausschubser
Mausschubser
Beiträge: 97
Registriert: 28. Okt 2011 08:42

Re: Übung 8, Wechselseitige Authentifikation sicher gegen Re

Beitrag von sab » 16. Mär 2013 10:42

L4_ hat geschrieben:Aber ist das im Allgemeinen so, dass man Nonces auch durch beliebige Zufällige Zahlen ersetzen darf und sie somit nicht speichern bräuchte?
Ich dachte immer, dass die Zahlen ja vll. eine feste Bitlänge haben und wenn ich nun eine Zufällige Zahl erstelle, muss ich ja auch wissen, wieviel bit sie hat.
Hat aber wahrscheinlich keine große Relevanz wie es aussieht...
Nonces sind zufällige Zahlen (laut wiki steht nonce für number once.
Ich weiß es nicht, so viel sind wir nicht ins Detail gegangen, aber ich denke, dass so etwas wie die Bitlänge festgelegt wird durch irgendeinen Rahmen im Protkoll, das dir als Angreifer aber bekannt ist. So kannst du dann auch eine nonce erzeugen, die genauso lang ist.

barracuda317
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 187
Registriert: 12. Okt 2011 18:15

Re: Übung 8, Wechselseitige Authentifikation sicher gegen Re

Beitrag von barracuda317 » 17. Mär 2013 20:19

sab hat geschrieben:Das hier wäre in meinen Augen schon mehr als eine Replay-Attacke, eben eine Impersonation. Du benutzt zwar für die Impersonation durch den zweiten Kanal das Replay Element, du könntest es aber genauso gut weglassen und einfach eine neue Nonce generieren, in diesen Schritten brauchst du die None \(N*_{A}\) gar nicht.
Du meinst ich brauche Sie nicht, um mich als A auszugeben (durch die Signatur). Für einen erfolgreichen Abschluss des Protokoll brauch ich die alte Nounce aber schon, da dem Empfänger sicherlich mulmig wird, wenn auf einmal eine neue Nounce auftaucht oder nicht?

Antworten

Zurück zu „Archiv“