Bei der digestbasierten Authentifizierung wird Nonce vom Server generiert. In der OAuth-basierten Authentifizierung wird nonce jedoch vom Client generiert. Ich möchte wissen, ob jemand den Grund für den Unterschied kennt?
Nonces werden verwendet, um eine Anfrage eindeutig zu machen. In einem Authentifizierungsschema ohne Nonce könnte ein böswilliger Client eine Anfrage ONCE generieren und sie VIELE Male wiederholen, selbst wenn die Berechnung teuer ist. Wenn das Authentifizierungsschema erfordert, dass der Client eine teure Berechnung für jede einzelne Anforderung durchführt, wird die Wiederholungsangriffsfolge gefaltet, da die Anforderung durch Verwenden einer Nonce eindeutig gemacht wird, da ihre Geschwindigkeit gerade von O (1) nach O (N) gegangen ist.
Der Grund für eine Client-Nonce besteht darin, bösartige Clients daran zu hindern, Angriffe erneut auszuführen.
Der Grund für eine Server-Nonce besteht darin, Man-in-the-Middle-Angriffe zu verhindern, falls ein Angreifer eine gültige Serverantwort erfasst und versucht, sie auf einen Client zu übertragen.
Ссылка hat eine schöne Erklärung und ein Diagramm für die Verwendung einer Nonce.
Ссылка hat ein schönes Beispiel dafür, wie Nonces in der realen Welt verwendet werden.
Erstens stellen Clients manchmal eine Nonce in Digest-Auth bereit, aber hauptsächlich beruht sie auf dem Server (siehe RFC2617)
Zweitens, weil, wenn Sie an den Authentifizierungsvorgang in Bezug auf einen Handschlag denken, dann mit Oauth, wenn Sie bereits ein Token haben Sie durch die Hälfte des Handshake gewesen sind, haben Sie bereits mit dem Server gesprochen, also Ihre nächste move ist, den Server mit Ihrer Serviceanfrage zu kontaktieren. Dies muss auch durch eine Nonce geschützt werden, also stellen Sie es bereit.
Oder umgekehrt. Ich habe bereits das Token, also warum sollte ich den Server kontaktieren, um eine Nonce zu bekommen, so dass ich dann den Server wieder mit meiner Serviceanfrage kontaktieren könnte? Ich könnte 1000 Serviceanfragen stellen, indem ich meine eigenen Nonces produziere, was 2000 unnötigen Netzwerkverkehr reduziert.