Christoph Jeschke: Apache - AuthType Digest - nur Passwort verschküsselt?

Beitrag lesen

Guten Tag,

Ich hätte da mal eine Frage, die ich per Recherche nirgends so deutlich beantwortet kriege. Mir scheint, dass viele Verfasser es offensichtlich selbst nicht so genau zu wissen scheinen.

Und zwar geht es um die Benuzer-Authentifizierung per AuthType Digest.

Ich lese immer wieder, dass sinngemäß "die Anmelde-Daten" verschlüsselt werden. In manchen Publikationen steht ausdrücklich, dass sowohl Benutzername als auch Passwort verschlüsselt werden.

So wie ich den entsprechenden RFC verstand, wird nur das Password verschlüsselt und nicht der Name des Users (username).

Bei AuthType Basic werden sowohl Benutername als auch Passwort - durch einen Doppelpunkt getrennt - per Base64 kodiert.

Das ist ja bekannt.

Erstaunt hat mich aber, dass bei AuthType Digest zwar das Passwort per MD5 verschlüsselt wird, der Benutzername hingegen einfach im Klartext übertragen zu werden scheint. Oder habe ich die Ausgabe der Header missinterpretiert?

Nein, das ist so korrekt und kann ich bei den Ressourcen, die ich mit Digest-Auth schütze, auch nachvollziehen.

Das wäre doch schon eine potentielle Sicherheitslücke. Damit könnte ein Angreifer nämlich einfacher an den Benutzernamen kommen. Gibt es irgendwelche zwingenden Gründe, warum das Passwort nicht verschlüsselt wird?

Das Passwort wird verschlüsselt, der Username nicht.

Da ich teils sehr schnell tippe, ohne auf den Bildschirm zu schauen, kann es schon mal passieren, dass ich die Tab-Taste nicht richtig erwische. Dann stehen Benutzername und Passwort beim Benutzernamen, welcher dann also unverschlüsselt abgeschickt würde. Demnach hätte ich das Passwort damit doch schon quasi "verheizt"!?

Das ist allerdings kein Problem des Authentifizierungsverfahrens. Man sollte schon aufpassen, was man wo eingibt.

Gibt es vor diesem Hintergrund sicherere Verfahren als AuthType Digest?

Du könntest HTTPS verwenden. Dann kannst du auch unbesorgt Basic-Auth verwenden.

Was ist mit SSL? Afaik wird damit doch nur der Datenverkehr "der Internet-Seite" über das HTTPS-Protokoll verschlüsselt? Oder würde auch schon die Authentifizierung komplett - also auch der Benutzername - per SSL verschlüsselt werden? Apache kennt das SSL-Modul doch? Kann es bereits hierfür darauf zugreifen?

Bereits die Authentifizierungsdaten sind verschlüsselt. Die Verschlüsselung findet jeweils auf Layer 3 (Transportschicht) statt und ist für die darüber liegende Anwendungsschicht transparent.

Oder gibt es da sonst noch was?

VPN, SSH.

Gruß
Christoph Jeschke

--
Zend Certified Engineer