MD5 Encryption

Hallo Hallo.

Ich hab ein Java Programm und möchte die MD5 verschlüsselung für das Passwort benutzen. Kann ich irgendwie den Treiber einstellen das er das Klarsichtpasswort in MD5 verschlüsselt (bzw. einen Hashwert erzeugt) und überträgt? Oder wie muss ich vorgehen. Was ich PGSQL einstellen muss ist mir klar aber was ist mit der Client Seite?

Ich hoffe ihr könnt mir helfen. Und schon jetzt vielen Dank für eventuelle Antworten.


Waldi

Achso ihr solltet noch den Treiber wissen: JDBC

Was spricht gegen SSL?


Andreas

Eigentlich nichts. MD5 hätte mir nur ausgreicht. Wieso denn so kompliziert? Die Sache mit MD5 ist eigentlich ja sehr einfach. Ich habe zum Thema SSL schon einiges bei Postgres.org gefunden aber MD5?? Hat soetwas noch nie einer gemacht?

Wenn Du dem Netz nicht traust, dann wäre SSL halt für alles eine Sicherheit, und nicht nur das Passwort wäre sicher übertragen. Ich versteh auch grad ned so recht, was der Unterschied ist, wenn ich Klartext Passwort oder Klartext Hash übertrage, ein Angreifer, der mitlauscht, kann beides sehen und selbst verwenden.


Andreas

Na ja, den Hash kann ich ja nur erzeugen, wenn ich auf beiden Seiten das Passwort kenne, es wird aber nicht im Klartext übertragen.

Allerdings ist das Argument, das akretschmer angeführt hat, nicht von der Hand zu weisen: mit SSL wird die komplette Übertragung verschlüsselt. Und wenn ich schon Angst um Mithörer habe, sollte ich nicht beim abhörsicheren Passwort aufhören.

Ganz egal. Ein Angreifer sieht das, was übertragen wird, falls dies ungeschützt ist. Ob ich auf Client-Seite das Passwort als Plaintext rausblase und am Server daraus MD5 mache und prüfe oder auf dem Client MD5 mache und das übertrage und am Server das, was kommt, direkt vergleiche, ist aus des Angreifers Sicht egal. Er braucht nur das zu nehmen, was er gesnifft hat, um sich anzumelden.

Oder hab ich da jetzt einen Denkfehler?

Andreas

Hast du, ja.

Vorgehensweise ist:

  • der Server schickt dem Client einen Text
  • der Client verschlüsselt den Text mit seinem Passwort als Hash
  • der Client schickt dem Server den verschlüsselten Hash
  • der Server wiederholt das ganze und vergleicht die Ergebnisse

Wenn nun jemand mitliest, bekommt er auf diesem Weg das Passwort nicht zu sehen, er kann auch nicht einbrechen, weil er ohne Passwort den passenden Hash nicht generieren kann.

Allerdings ist der Rest der Kommunikation halt trotzdem Klartext.

Ah ja, Danke für die Erklärung.

OK ich werde dann die ganze Sache via SSL machen. Ist ja auch nicht so viel mehr aufwand. Ich sage an dieser Stelle auch Dankeschön für die schöne Erklärung.