Das Passwort wird immer verschlüsselt, wenn es über das Netzwerk übertragen wird.
Das heißt nicht, dass es für Angriffe unempfindlich ist. Wenn ein Angreifer den Hash eines Benutzerkennworts und abrufen kann, um den Netzwerkverkehr zwischen einem legitimen Client und der Datenbank zu überwachen, ist es möglich, das Nur-Text-Passwort zu erhalten .
Für die Neugierigen gibt es hier eine Zusammenfassung des Authentifizierungsprozesses zwischen verschiedenen Versionen der Oracle-Datenbanksoftware. Die Schritte zur Übertragung des verschlüsselten Passworts sind fett gedruckt. Es ist nicht völlig intuitiv, welche Version des Authentifizierungsprotokolls vom JDBC-Treiber verwendet wird, da sie nicht immer der beworbenen Version entspricht. Dies liegt daran, dass der Client aushandeln kann, welches Protokoll er verwenden möchte. Zum Beispiel verwendet der 11g JDBC-Treiber möglicherweise nicht das 11g-Authentifizierungsprotokoll, wenn er eine Verbindung zu einer 11g-Datenbank herstellt (er kann auf das 10g-Authentifizierungsprotokoll zurückgreifen). Ich vergesse, welche Treiber welche Protokolle verwenden.
Authentifizierungsprotokoll in Oracle Database 8
- Der Client fordert einen Server-Sitzungsschlüssel für einen bestimmten Benutzer an.
- Der Server generiert einen Server-Sitzungsschlüssel.
- Der Server verschlüsselt den Server-Sitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers als geheimen Schlüssel.
- Der Server überträgt den verschlüsselten Server-Sitzungsschlüssel an den Client.
- Der Client entschlüsselt den verschlüsselten Server-Sitzungsschlüssel mit dem Kennwort-Hash des Benutzers als geheimen Schlüssel.
- Der Client verschlüsselt das Kennwort des Benutzers mithilfe des Serversitzungsschlüssels als geheimen Schlüssel. (proprietärer Algorithmus basierend auf DES)
- Der Client sendet das verschlüsselte Passwort an den Server.
- Der Server entschlüsselt das verschlüsselte Passwort unter Verwendung seines Serversitzungsschlüssels als geheimen Schlüssel.
- Der Server berechnet den Hash des entschlüsselten Passworts.
- Wenn der berechnete Passwort-Hash (aus Schritt 9) mit der auf dem Server gespeicherten Kopie übereinstimmt, hat der Benutzer das korrekte Passwort angegeben.
Authentifizierungsprotokoll in Oracle Database 9i
- Der Client fordert einen Server-Sitzungsschlüssel für einen bestimmten Benutzer an.
- Der Server generiert einen Server-Sitzungsschlüssel.
- Der Server verschlüsselt den Server-Sitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers als geheimen Schlüssel.
- Der Server überträgt den verschlüsselten Server-Sitzungsschlüssel an den Client.
- Der Client entschlüsselt den verschlüsselten Server-Sitzungsschlüssel mit dem Kennwort-Hash des Benutzers als geheimen Schlüssel.
- Der Client verschlüsselt das Kennwort des Benutzers mithilfe des Serversitzungsschlüssels als geheimen Schlüssel. (proprietärer Algorithmus basierend auf DES)
- Der Client sendet das verschlüsselte Passwort an den Server.
- Der Server entschlüsselt das verschlüsselte Passwort unter Verwendung seines Serversitzungsschlüssels als geheimen Schlüssel.
- Der Server berechnet den Hash des entschlüsselten Passworts.
- Wenn der berechnete Passwort-Hash (aus Schritt 9) mit der auf dem Server gespeicherten Kopie übereinstimmt, hat der Benutzer das korrekte Passwort angegeben.
Authentifizierungsprotokoll in Oracle Database 10g
- Der Client fordert einen Sitzungsschlüssel vom Server an und gibt an, mit welchem Benutzer er sich verbinden möchte.
- Der Server generiert einen Server-Sitzungsschlüssel.
- Der Server verschlüsselt den Server-Sitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers als geheimen Schlüssel.
- Der Server überträgt den verschlüsselten Server-Sitzungsschlüssel an den Client.
- Der Client entschlüsselt den verschlüsselten Server-Sitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers als geheimen Schlüssel.
- Der Client generiert einen Clientsitzungsschlüssel.
- Der Client kombiniert den Client-Sitzungsschlüssel mit dem Server-Sitzungsschlüssel.
- Der Client salzt das Passwort des Benutzers.
- Der Client verschlüsselt das gesalzene Passwort des Benutzers unter Verwendung der kombinierten Sitzungsschlüssel (ab Schritt 7) als seinen geheimen Schlüssel. (AES-128)
- Der Client verschlüsselt den Client-Sitzungsschlüssel mit dem Kennwort-Hash des Benutzers als geheimen Schlüssel.
- Der Client sendet den verschlüsselten Clientsitzungsschlüssel und das verschlüsselte, gesalzene Benutzerpasswort an den Server.
- Der Server entschlüsselt den verschlüsselten Clientsitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers.
- Der Server kombiniert den Client-Sitzungsschlüssel mit seinem Server-Sitzungsschlüssel.
- Der Server entschlüsselt das verschlüsselte, gesalzene Passwort unter Verwendung der kombinierten Sitzungsschlüssel (ab Schritt 13) als geheimen Schlüssel.
- Der Server hebt das gesalzene Passwort auf.
- Der Server hasht das entschlüsselte Passwort.
- Der Server vergleicht den berechneten Passwort-Hash (ab Schritt 16) mit dem gespeicherten Passwort-Hash. Wenn sie gleich sind, hat der Benutzer das richtige Passwort angegeben.
Authentifizierungsprotokoll in Oracle Database 11g
- Der Client fordert einen Sitzungsschlüssel vom Server an und gibt an, mit welchem Benutzer er sich verbinden möchte.
- Der Server generiert einen Server-Sitzungsschlüssel.
- Der Server generiert Verifier-Daten.
- Der Server verschlüsselt den Server-Sitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers als geheimen Schlüssel.
- Der Server überträgt den verschlüsselten Server-Sitzungsschlüssel ("AUTH_SESSKEY") und die Verifier-Daten ("AUTH_VFR_DATA") an den Client.
- Der Client gibt das Passwort des Benutzers mit den Verifier-Daten als Salz aus.
- Der Client entschlüsselt den verschlüsselten Server-Sitzungsschlüssel mit dem Kennwort-Hash des Benutzers als geheimen Schlüssel.
- Der Client generiert einen Clientsitzungsschlüssel.
- Der Client kombiniert den Client-Sitzungsschlüssel mit dem Server-Sitzungsschlüssel.
- Der Client salzt das Passwort des Benutzers.
- Der Client verschlüsselt das gesalzene Passwort des Benutzers unter Verwendung der kombinierten Sitzungsschlüssel (ab Schritt 9) als seinen geheimen Schlüssel. (AES-192)
- Der Client verschlüsselt den Client-Sitzungsschlüssel mit dem Kennwort-Hash des Benutzers als geheimen Schlüssel.
- Der Client sendet den verschlüsselten Clientsitzungsschlüssel und das verschlüsselte, gesalzene Benutzerpasswort an den Server.
- Der Server entschlüsselt den verschlüsselten Clientsitzungsschlüssel mit dem Kennwort-Hash des angeforderten Benutzers.
- Der Server kombiniert den Client-Sitzungsschlüssel mit seinem Server-Sitzungsschlüssel.
- Der Server entschlüsselt das verschlüsselte, gesalzene Passwort unter Verwendung der kombinierten Sitzungsschlüssel (ab Schritt 15) als geheimen Schlüssel.
- Der Server hebt das gesalzene Passwort auf.
- Der Server hasht das entschlüsselte Passwort.
- Der Server vergleicht den berechneten Passwort-Hash (aus Schritt 18) mit dem gespeicherten Passwort-Hash. Wenn sie gleich sind, hat der Benutzer das richtige Passwort angegeben.