Challenge Handshake Authentication Protocol
# Challenge Handshake Authentication Protocol

Das Challenge Handshake Authentication Protocol (CHAP) ist ein Authentifizierungsprotokoll, das im Rahmen von Point-to-Point Protocol (PPP) eingesetzt wird. PPP ist auf der Sicherungsschicht in der Internetprotokollfamilie angesiedelt.

Neben der im RFC beschriebenen CHAP-Implementation existieren noch die Varianten MS-CHAPv1 (RFC 2433) und MS-CHAPv2 (RFC 2759) von Microsoft.

CHAP ist im RFC 1994 spezifiziert. Im Gegensatz zum Vorläufer Password Authentication Protocol (PAP) wird beim CHAP mehr Wert auf die Sicherheit bei der Übertragung der Passwörter gelegt. Die Authentifizierung erfolgt in drei Schritten:

* Ein Client initiiert eine Verbindung zu einem Einwahlserver, und dieser verlangt eine Authentifizierung mittels CHAP. Dabei wird ein zufälliger Wert (die Challenge) an den Client übertragen, der sich authentifizieren muss.
* Der Client bildet aus der Zufallszahl und dem Passwort einen Hashwert mittels einer Hashfunktion (zum Beispiel MD5) und überträgt diesen an den Einwahlserver. Unter der Annahme, dass die verwendete Hashfunktion eine Einwegfunktion ist, lässt sich das Passwort nicht wieder errechnen.
* Der Einwahlserver errechnet ebenfalls einen Hashwert aus der Zufallszahl und dem bei ihm (im Klartext) hinterlegten Passwort. Wenn dieser mit dem vom zu authentifizierenden Rechner gesendeten Wert übereinstimmt, ist die Authentifizierung erfolgreich.

In einem zufälligen Abstand sendet der Einwahlserver erneut einen zufälligen Wert (die Challenge) an den Client, mit dem der zweite und dritte Schritt der Prozedur wiederholt wird.

## Sicherheit

Ein Angreifer, der die Kommunikation mithört, empfängt somit nur den zufälligen Wert und den Hashwert. Normalerweise kann er damit nichts anfangen, da das Passwort nicht übertragen wird. Dennoch kann ein Angreifer einen Man-in-the-Middle-Angriff durchführen, wenn auf Client-Seite sowohl CHAP als auch PAP aktiviert sind. Server und Client handeln zum Beispiel CHAPv2 aus, ein Angreifer könnte die Verbindung unterbrechen und dem Client sagen, dass der Server PAP erwartet. Der Client schickt daraufhin ein PAP-ACK an den Angreifer und dieser ein CHAPv2-ACK an den Server. Anschließend wird ein Challenge-REQ vom Server geschickt, und der Client schickt dem Angreifer Benutzerkennung und Passwort, von welchem dann die Challenge-RES kommt. Der Server nimmt dies entweder an oder lehnt es ab (ACK, NACK).

Im Juli 2012 gab der Online-Dienst CloudCracker bekannt, VPN- und WLAN-Verbindungen, die auf MS-CHAPv2 basieren, innerhalb von 24 Stunden knacken zu können. Dieser Dienst wird für jedermann gegen eine Gebühr angeboten. Der Brute-Force-Angriff gelingt dabei über Parallelisierung und speziell abgestimmte Hardware.

Soll das Passwort nicht im Klartext auf dem Server gespeichert sein, kann auch mehrfach gehasht werden. Hierzu wird auf dem Client zuerst das Passwort gehasht, und mit der Challenge dann ein weiteres Hash aus dem so erhaltenen Hash erstellt. Auf dem Server wird ebenfalls ein Hash aus dem Passworthash und der Challenge erstellt, und diese Werte werden dann verglichen.

