Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#23

Re: [PHP] Verständnisfrage zu Passwort abfrage

  Alt 16. Aug 2005, 16:35
nicht ganz

1.) Client sendet LoginName := Hash(NameSalt || eindeutigen Namen) an Server
2.) Server sucht mit spezielle Methode in DB nach LoginName == Hash(NameSalt || BenutzerName aus DB)
3.) Server sendet PasswortSalt aus Datensatz + ChallengeSalt aus dem Datensatz an Client
3.) Client sendet LoginVerifierClient := Hash(ChallengeSalt || Hash(PasswortSalt || Passwort))) an Server
4.) Server erzeugt LoginVerifierServer := Hash(ChallengeSalt || HashPasswortAusDB)
5.) Server acceptiert wenn LoginVerifierClient == LoginVerifierServer

So, nun existiert in der Serverdatenbank nur zwei Felder -> NameSalt, NameHash, PassworrtHash, PasswordSalt
Wird der Server hijacked so muß der Angreifer erstmal in der Lage sein
1.) einen eindeutigen Namen zu einem PasswortHash zuzuordnen, unmöglich bei ausreichend sicherem Hash.
2.) per Brute Force das Passwort zum Password Hash knacken, unmöglich da es unendlich viele Passwörter gibt die identisch zum gespeicherten Hash sein müssen.

Allerdings gibt es immer noch ein Problem warum diese Protokoll nicht wasserdicht sein kann.
Die Man in the Middle Attack. Dabei gehen wir davon aus das eine dritte Partei, nennen wir sie mal Nsa, die komplette Kommunikation belauschen und verändern kann.
Nsa gibt sich dem Client gegenüber als Server aus, und dem Server gibt sich Nsa als Client aus. Jeder Protokollschritt oben wird nun durch Nsa in beiden Richtungen ausgeführt. Die weitere Kommunikation zwischen Client<->Sever kann nun Nsa durch Client<->Nsa<->Server mitlauschen und sogar manipulieren.

Ein dagegen sicheres Protokoll ist das SRP, Secure Remote Protocoll.

Gruß Hagen
  Mit Zitat antworten Zitat