Kryptografie (18) : Challenge Response ProtocolsteemCreated with Sketch.

in #de-stem5 years ago

Die Idee von Challenge-Response-Authentisierung ist, dass man sich durch eigenes Wissen authentisiert. Allerdings gibt man sein Wissen nicht direkt preis.

Das System, an dem man sich authentisieren möchte, stellt eine Herausforderung (Challenge) und diese muss mit dem vorhandenen, geheimen Wissen bewältigt werden. Die Lösung der Herausforderung schickt man als Antwort (response) an das System und dieses prüft dann diese Antwort.

Ein Vorteil dieses Verfahrens ist, dass das System, an dem man sich authentisieren will, jedes Mal eine andere Herausforderung generiert. Ein Angreifer kann also aus abgefangenen Lösungen keine eigene Authentisierung starten. Wichtig ist dabei, dass man aus den Lösungen nicht rückwärts auf das geheime Wissen schließen kann.

Was genau ist denn dieses Geheime- bzw. eigene Wissen?
Ein einfaches Beispiel ist das TAN-Verfahren beim Onlinebanking. Hat man z. B. eine Überweisung eingegeben, fragt die Bank den Benutzer nach einer bestimmten Transaktionsnummer (TAN) auf der persönlichen Liste des Kunden. Auf dieser Liste stehen 100 sechsstellige TANs, die von 1 bis 100 numeriert sind. Nur der Kunde kennt diese Liste (also das Geheime- bzw. eigene Wissen) und kann die passende TAN eingeben.

Man kann auch eine symmetrische Verschlüsselung im Rahmen von Challenge-Response-Verfahren einsetzen. Kennen Benutzer und das authentifizierende System ein gemeinsames Geheimnis S, so können Sie dieses Geheimnis benutzen. Im Folgenden bedeutet crypt(M,S), dass die Nachricht M mit dem Schlüssel S verschlüsselt wird.
Der Ablauf ist wie folgt:

  1. Der Benutzer schickt eine Authentisierungsanfrage mit seiner Benutzerkennung an das System.

  2. Das System sucht das zur Benutzerkennung gespeicherte Geheimnis S heraus (z.B. in einer Datenbank).

  3. Das System erzeugt eine Zufallszahl Z und verschlüsselt sie symmetrisch mit S als Schlüssel. Es erzeugt also C=Crypt(Z,S) und sendet C als Herausforderung an den Benutzer.

  4. Der Benutzer entschlüsselt C und erhält somit Z.

  5. Der Benutzer ändert Z auf eine bestimmte vorher vereinbarte Art und Weise, z. B. indem er Eins addiert. Als Antwort verschlüsselt der Benutzer nun die veränderte Zufallszahl Z'=Z+1 mit dem Geheimnis S. Er schickt R=Crypt(Z',S) an den Server.

  6. Der Server entschlüsselt die Antwort und prüft, ob das empfangene Z' tatsächlich zu seiner ursprünglich erzeugten Zufallszahl Z passt. Wenn ja, dann ist der Benutzer erfolgreich authentisiert.

Wichtig ist hierbei, dass das System einen guten Zufallszahlengenerator benutzt. Würde es nämlich eine alte Herausforderung wiederverwenden, so könnte ein Angreifer sich ohne S zu kennen authentisieren.

Sort:  

Du hast einen Vote von @portalvotes bekommen.

Hallo ich bin Mikrobi,

dein Beitrag hat mir sehr gut gefallen und du bekommst von mir Upvote.

Ich bin ein Testbot, wenn ich alles richtig gemacht habe, findest du deinen Beitrag in meinem Report wieder.

LG

Mikrobi

Congratulations @ozelot47! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got more than 200 replies. Your next target is to reach 300 replies.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

You can upvote this notification to help all Steem users. Learn how here!

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.033
BTC 62025.59
ETH 3074.98
USDT 1.00
SBD 3.84