MD5 war lange Zeit der Standard für die Authentifizierung in PostgreSQL. Doch die angesammelten Einschränkungen führten zu einem schrittweisen Verzicht und dem Übergang zu einem widerstandsfähigeren Modell.
Das Problem zeigt sich nicht sofort — bis zu dem Zeitpunkt, an dem das Sicherheitsmodell auf veralteten Annahmen basiert. MD5 erwies sich als bequeme Wahl: einfache Implementierung, geringe Belastung, minimale Verzögerung (latency) bei der Authentifizierung. Daher hat es sich als Standardmechanismus etabliert. Doch die grundlegende Einschränkung sind Kollisionen. Unterschiedliche Eingaben können denselben Hash erzeugen. Für ein Authentifizierungssystem bedeutet dies, dass die Überprüfung „auf Hash-Vergleich“ keine strenge Garantie mehr darstellt. Die Situation wird dadurch verschärft, dass Angriffe oft keinen vollständigen Bruch erfordern — es reicht aus, einen passenden Hash durch Wörterbuch- oder vereinfachte Methoden zu finden.
PostgreSQL hat dieses Risiko teilweise gemildert. Im Gegensatz zu „reinem“ MD5 wird hier eine Kombination aus Benutzername und Passwort vor der Hash-Berechnung verwendet. Dies verringert die Wahrscheinlichkeit trivialer Übereinstimmungen und erschwert die Wiederverwendung des Hashes. Doch dies beseitigt nicht das grundlegende Problem des Algorithmus. Wenn der MD5-Hash geleakt ist, bleibt das Risiko, eine übereinstimmende Zeichenfolge zu erraten. Daher hat die Community einen evolutionären Weg gewählt: schrittweiser Verzicht auf MD5. Zuerst — Status deprecated, dann Verbot der Erstellung neuer MD5-Passwörter, anschließend Deaktivierung der Authentifizierung und schließlich die Unmöglichkeit eines Upgrades mit solchen Daten. Dies verringert das Risiko plötzlicher Ausfälle in der Produktion und gibt Zeit für die Migration.
Eine Alternative ist scram-sha-256, die seit PostgreSQL 10 verfügbar ist. Hier ändert sich das Modell der Interaktion selbst. Die Authentifizierung wird bidirektional: Der Client und der Server tauschen Schlüssel aus, anstatt einfach den Hash zu vergleichen. Das Passwort wird nicht im Klartext übertragen. Es wird ein längerer Hash (256 Bit) und zusätzliche Protokollelemente verwendet. Dies erhöht die Rechenlast und erschwert die Implementierung, verringert jedoch das Risiko von Pass-the-Hash-Angriffen. Im Grunde genommen bewegt sich das System von einer statischen Überprüfung hin zu einem Protokoll mit Beteiligung beider Parteien.
In der Praxis ist der Übergang nicht kostenlos. scram-sha-256 erfordert ein Update der Clients und eine sorgfältige Konfiguration. Einige Szenarien ohne zusätzliche Authentifizierungsebene werden komplizierter. Auch bleibt das allgemeine Prinzip bestehen: Jeder Algorithmus ist theoretisch anfällig. Aber hier ist nicht das absolute Schutzniveau wichtig, sondern die Wahrscheinlichkeit einer Ausnutzung. In diesem Sinne ist scram-sha-256 ein widerstandsfähigerer Kompromiss.
Das Fazit ist pragmatisch. MD5 in PostgreSQL war nicht vollständig unsicher aufgrund der zusätzlichen Logik, aber sein Modell entspricht nicht mehr den aktuellen Sicherheitsanforderungen. Der Übergang zu scram-sha-256 ist keine Verstärkung „für alle Fälle“, sondern die Beseitigung einer bekannten Risikoklasse mit kontrollierten Kosten. Konkrete Metriken für Verbesserungen werden nicht angegeben, aber die Richtung entspricht dem allgemeinen Trend der Branche: der Übergang von einfachen Hashes zu Authentifizierungsprotokollen.