Replay-Angriff
Ein Replay-Angriff (Angriff durch Wiedereinspielung) ist eine kryptoanalytische Angriffsform auf die Authentizität von Daten in einem Kommunikationsprotokoll. Hierbei sendet der Angreifer zuvor aufgezeichnete Daten, um etwa eine fremde Identität vorzutäuschen.
Beispiel
Angenommen, Alice will ihre Identität Bob gegenüber beweisen. Beide kennen Alices geheimes Passwort. Alice berechnet den Hashcode ihres Passworts mit einer kryptologischen Hash-Funktion und sendet diesen an Bob. Bob vergleicht den Hashcode mit seiner Berechnung und akzeptiert. Währenddessen belauscht Mallory die Kommunikation und zeichnet den von Alice gesendeten Hashcode auf. Nachdem die Kommunikation beendet ist, verbindet sich Mallory mit Bob, gibt sich als Alice aus und sendet den aufgezeichneten Hashcode. Mallory kann dadurch erfolgreich Alices Identität vorgeben, obwohl sie das Passwort nicht kennt.
Das Needham-Schroeder-Protokoll ist in seiner ursprünglichen Form für einen Replay-Angriff anfällig.
Gegenmaßnahmen
Eine Möglichkeit, Replay-Angriffe zu verhindern, ist die Nutzung eines Nonce: Bob sendet einen einmaligen Code (Nonce) zu Alice. Diesen nutzt Alice, um ihr Passwort zu transformieren, und sendet das Ergebnis zurück an Bob. Bob wiederum vollführt dieselbe Transformation und vergleicht sein Ergebnis mit Alice' Ergebnis: wenn beide übereinstimmen, akzeptiert Bob die Identität von Alice. Wenn nun Mallory versucht, einen abgehörten Hashcode wiederzuverwenden, schickt Bob aber ein anderes Nonce; der ausspionierte Hashcode ist nun ungültig (da mit einem anderen Nonce generiert). Bob lehnt ab, da sein Ergebnis und der gelieferte (veraltete) Hashcode nicht übereinstimmen.
Statt eines Nonce kann auch ein Zeitstempel verwendet werden, wobei Alice das Datum und die Uhrzeit, welche sie verwendet hat, Bob mitteilen sollte, falls eine Verzögerung der Übertragung auftritt. Dies hat den Vorteil, dass (etwa bei der Unix-Zeit) garantiert derselbe Zeitstempel niemals wieder auftritt, da es sich dann um einen vergangenen Zeitpunkt handelt.
Um eine fortlaufende Datenübertragung über mehrere Datenpakete hinweg zu schützen, kann eine Sequenznummer verwendet werden, deren Authentizität wiederum von einem Message Authentication Code sichergestellt wird. Dies ist zum Beispiel bei IPsec sowohl beim Authentication Header als auch bei der Encapsulating Security Payload vorgesehen. Je nach Betriebsart kann auch eine mit einer Blockchiffre verschlüsselte Datenübertragung Schutz vor Replay-Angriffen bieten.
Einmalpasswörter, also Passwörter welche nur kurz gültig sind und sich danach ändern, sind eine weitere Maßnahme zur Prävention.