# Passwort wo encrypten



## OlliL (29. Dez 2012)

Hallo,

Passwörter werden als SHA1 Hash in einer DB abgespeichert. Architektur ist Swing -> JBoss Remoting -> EJB -> Hibernate -> MySQL. Aktuell wird das Passwort aus "Bequemlichkeitsgründen" mittels der MySQL SHA1() Function erst in MySQL in den Hash umgewandelt. Das ist mir etwas zu weit hinten, da man z.B. bei aktiver MySQL Protokollierung das ganze dann auch als Query-String mitloggen kann und so an Klartextpasswörter käme.

Die Verbindung via JBoss Remoting ist aktuell nicht SSL verschlüsselt (muesste man auch nochmal ueberlegen), daher schwebt mir vor, den Swing-Client bereits ein SHA1-Hash machen zu lassen und diesen dann weiter zu verarbeiten. Aber Client find ich halt auch nicht so optimal... ist  ja eigentlich "Businesslogik" wie das Passwort gespeichert wird. Also doch besser SHA1 im EJB machen und dann Remoting mittels SSL?

Was wäre aus Eurer Sicht her architektonisch sinnvoll?


----------



## tröööt (29. Dez 2012)

grundsätzlich würde ich erstmal einen SHA2 algo nutzen .. also SHA256/384/512 ...
auch ist mir noch nicht klar wozu dann das passwort genutzt werden soll ...
in der regel verwendet man eine sog. challenge ... also der server schickt dem client einen zufallswert ... dieser verarbeitet dies mit dem hash des passwortes und schickt es zurück ... der server macht das selbe ... und wenn beides übereinstimmt kann man von ausgehen das das korrekte passwort eingegeben wurde ...

zum initialen speichern in der DB würde ich RSA nutzen ... also der server sendet dem client sein public-key ... dieser verpackt damit den hash des passwortes (also hashing bereits schon im client) ... und der server entschlüsselt es mit seinem private und trägt den hash in die DB ein ..

die kommunikation zwischen den einzelnen komponenten würde ich auch mit RSA/AES bzw SSL absichern


----------



## OlliL (29. Dez 2012)

Jo, Challenge Response kann man mal drüber nachdenken. Macht es einen Tick sicherer, da dann nur noch Brute Force im stillen Kämmerlein mit den gesnifften Strings hilft. SSL fügt dann nochmal ein Quäntchen Sicherheit hinzu. SHA1 bin ich (leider?) festgelegt. Es ist aber auch eh nein reines Hobby-Projekt


----------



## trääät (30. Dez 2012)

gut ... was genau dich zu SHA1 zwingt kann ich jetzt nicht wirklich nachvollziehen da jede sprache heutzutage mindestens SHA256 von haus aus mit bringt ... aber du grundzüge wie man es auch für ein hobby projekt recht sicher machen kann hab ich genannt ... nur umsetzen musst du es dann alleine


----------

