• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Verschlüsselung im Generellen

Timboo89

New member
Hi,

ich überlege gerade das erste Mal eine sichere Übertragung von Daten für mehrere Benutzer einzurichten.
Dabei kommen mir einige Fragen in den Kopf, ich denke mir wird jemand mein Hirnmysterium auflösen können. Hier also meine Gedanken:

- Wenn ich eine einfache SSL Verbindung aufbaue sind die übertragenen Daten verschlüsselt. Richtig?
- Sind diese Daten auch sicher verschlüsselt?
- Wenn der Nutzer nun über diese SSL Verbindung ein Passwort überträgt, wird dieses also verschlüsselt übertragen und kommt bei mir am Ende in Klartext raus.
- Um dieses zu speichern sollte ich dieses natürlich hashen und nicht in Klartext. Richtig?
- Hashe ich das Passwort nun aber bereits auf Clientseite oder erst auf Serverseite? Serverseite richtig?
- Mit was für einer Methode hasht man sicher?
- Wie geht es jetzt weiter?

Danke schon ein Mal ;-)
 
- Wenn ich eine einfache SSL Verbindung aufbaue sind die übertragenen Daten verschlüsselt. Richtig?
ja
- Sind diese Daten auch sicher verschlüsselt?
sicher ist, dass nichts sicher ist
https://www.google.de/search?q=ssl+nsa
Black Hat: Neue Angriffsmethoden auf SSL vorgestellt | heise online
- Wenn der Nutzer nun über diese SSL Verbindung ein Passwort überträgt, wird dieses also verschlüsselt übertragen und kommt bei mir am Ende in Klartext raus.
ja
- Um dieses zu speichern sollte ich dieses natürlich hashen und nicht in Klartext. Richtig?
Ausgebremst | heise Security
- Hashe ich das Passwort nun aber bereits auf Clientseite oder erst auf Serverseite? Serverseite richtig?
ja
- Mit was für einer Methode hasht man sicher?
bcrypt
- Wie geht es jetzt weiter?
womit?
 
Danke schon Mal für die schnelle Antwort.
Mit wie geht es jetzt weiter meine ich:
Ist es sicher über die bestehende SSL Verbindung die Daten des Nutzers zu übertragen oder sollte/muss man das Passwort/den Hash des Passwortes irgendwie in die Verschlüsselung mit einbringen??
 
Ist es sicher über die bestehende SSL Verbindung die Daten des Nutzers zu übertragen oder sollte/muss man das Passwort/den Hash des Passwortes irgendwie in die Verschlüsselung mit einbringen??
das sind 2 verschiedene sachen. das eine ist die sichere übertragung von daten, das andere dient der authentifizierung.
 
Das an sich war mir schon klar, ich dachte nur, man müsse das dann doch noch ein wenig verquirlen ;-) Danke also!

Nun fallen mir aber noch zwei Fragen ein:
1) Wenn ich Daten des Nutzer (außer dem Passwort, da dies ohne Frage gehasht wird) speichere, sollten diese dann nicht auch auf irgendeine Art verschlüsselt bei mir liegen? Sonst kann ich ja alles lesen. Das einzige was mir dazu einfällt, wäre es mit dem Passwort des Nutzers zu verschlüsseln, doch das würde zu Problemen führen, wenn der Benutzer sein Passwort einmalig wechselt. Dann müsste man alle Daten neu verschlüsseln. Was sagst du dazu?

2) Ich habe davon gelesen, dass Passwörter versalzen werden sollten. Was habe ich davon? Wenn ich das Prinzip richtig verstehe nichts.
So verstehe ich das Prinzip:
- Nutzer gibt mir ein Passwort
- Ich hashe dieses
- Ich füge zum gehashten PW mein Salz hinzu
- Ich hashe das saltedPW nochmal
- Das speichere ich.
- Nun ist es doch genau das Selbe, wenn jemand das Passwort kennt, der nicht an die Daten kommen darf, der aber das Passwort kennt. Denn ich versalze die Nummer freiwillig und füge damit die fehlenden Daten hinzu....

-> Verständlich? Und möglich mein Mysterium aufzulösen? =)
 
Wenn jemand das Passwort kennt, braucht er das verhashte und versalzene ja nicht knacken.
Das Prinzip beruht darauf, dass man es bei Erstvergabe hasht und salzt damit es nicht gelesen werden kann. Wenn der User es dann später eingibt tut man das selbe. Wenn das Ergebnis nun gleich ist stimmt das Passwort.
Das bezieht sich aber nur auf das Passwort selbst z.B. für Logins.
Bei Daten ist das schwieriger. Da habe ich auch noch kein Patentrezept gefunden. Insbesondere dann nicht, wenn fremde Admins an Bord sind, z.B. bei einem Webhosting.
 
Zuletzt bearbeitet:
1) Wenn ich Daten des Nutzer (außer dem Passwort, da dies ohne Frage gehasht wird) speichere, sollten diese dann nicht auch auf irgendeine Art verschlüsselt bei mir liegen?
i.d.R. nicht.

Sonst kann ich ja alles lesen.
prinzipiell ja

Das einzige was mir dazu einfällt, wäre es mit dem Passwort des Nutzers zu verschlüsseln, doch das würde zu Problemen führen, wenn der Benutzer sein Passwort einmalig wechselt. Dann müsste man alle Daten neu verschlüsseln.
außerdem hast du das ja nicht, sondern nur den hash. und der steht auch in der db und ist damit zum verschlüsseln unbrauchbar. das pw musst du immer irgendwo haben, entweder im code oder in der db. von daher sinnlos.

2) Ich habe davon gelesen, dass Passwörter versalzen werden sollten. Was habe ich davon? Wenn ich das Prinzip richtig verstehe nichts.
wenn du keinen salt verwendest, haben gleiche pw gleiche hashwerte. damit könnte man sich ein Wörterbuch basteln und du findest alle pw die gleich sind ("12345678") schnell raus. wenn du dann noch bedenkst, daß viele überall das gleiche pw nutzen, ist das fatal.
auch den aufbau einer Rainbow Table erschwerst du beachtlich.


-> Verständlich? Und möglich mein Mysterium aufzulösen? =)
nicht wirklich. aber, es geht nicht darum nicht an die daten zu kommen(die sind in dem fall schon bekannt), sondern darum das pw nicht/schwerer herauszubekommen.
weil mit daten und pw hat man in vielen fällen zugriff auf weitere dienste wenn dort die selben daten verwendet werden.
 
Ah, okay... Verstehe so langsam ;-) Jetzt noch eine Frage zum Salt. Es erscheint mir recht sinnfrei ein statisches Salt zu verwenden, beispielsweise immer "SalzIstToll". Wenn ich aber kein statisches verwende, muss ich es nach einer festen Logik aus dem PW des Nutzers errechnen, damit ich am Ende immer den selben Hash rausbekomme. Somit gewissermaßen immernoch statisch.

Warum ich es sinnfrei finde: Wer auf meine Datenbank zugreifen kann, um das gehashte PW zu lesen, wird mit Sicherheit auch meine roh-Algorithmen auf dem Server finden können. Damit kennt er dann auch den Salt.

Wenn ich mein eben gesagtes aber mit dem gerade gelernten Verknüpfe, ist es nicht möglich, mit Hilfe des Salzes und dem Hash(Salt+Hash(PW)) das Hash(PW) zu ermitteln und darin liegt der eigentliche Sinn, um den Aufbau von Rainbow Tables zu erschweren und das rückkoppeln zu einfachen Passwörtern zu verhindern. Richtig?
 
Ah, okay... Verstehe so langsam ;-) Jetzt noch eine Frage zum Salt. Es erscheint mir recht sinnfrei ein statisches Salt zu verwenden, beispielsweise immer "SalzIstToll".
natürlich, das ist sinnlos

Wenn ich aber kein statisches verwende, muss ich es nach einer festen Logik aus dem PW des Nutzers errechnen, damit ich am Ende immer den selben Hash rausbekomme. Somit gewissermaßen immernoch statisch.
der wird/sollte aus einem Kryptographisch sicherer Zufallszahlengenerator bestimmt werden.

Warum ich es sinnfrei finde: Wer auf meine Datenbank zugreifen kann, um das gehashte PW zu lesen, wird mit Sicherheit auch meine roh-Algorithmen auf dem Server finden können. Damit kennt er dann auch den Salt.
natürlich, der steht ja in der db. nochmal, der salt dient nur dazu keine muster in den hashes zu finden.

und darin liegt der eigentliche Sinn, um den Aufbau von Rainbow Tables zu erschweren und das rückkoppeln zu einfachen Passwörtern zu verhindern. Richtig?
richtig.
 
Der Thread ist wirklich nicht schlecht. Könnte glatt als "Bedienungsanleitung" zum Thema Verschlüsseln dienen ;)
 
Zurück
Oben