Tach!
Morgen!
Und nun? Wie kommt das jeweilige Passwort des Accounts zum Anmeldeformular des Dienstes?
Ich melde mich beim jeweiligen Dienst an und ändere das Passwort manuell.
Und was macht der Hash in dem Szenario? Ein Hash ist ein Einweg-Verfahren, geeignet für einen Dienst, der Nutzerpasswörter nicht im Klartext speichern möchte. Der Anwender gibt sein Passwort an, der Dienst errechnet daraus den Hash und vergleicht mit dem gespeicherten Hash.
Ja, mir ist schon klar, dass ein Hash normalerweise auf die von dir beschriebene Weise verwendet wird. Ich möchte den Hash aber nicht zur Überprüfung eines Klartextpassworts verwenden, sondern der Hash selbst ist mein Passwort. Der Sinn dahinter ist, dass der einzelne Dienst niemals mein Master-Passwort bekommt.
PHP-Beispiel:
$master_passwort = 'sehr_geheim'; // steht nicht im Quellcode, sondern wird vom Nutzer eingegeben!
$dienst_bezeichner = 'onlinebanking_db';
$hash = md5($master_passwort.$dienst_bezeichner);
printf('Das Passwort für %s lautet: %s', $dienst_bezeichner, substr($hash, 0, 8));
Dieses Passwort würde ich dann z.B. für's Online-Banking verwenden. Es wäre „zufällig“ und ließe keine Rückschlüsse auf mein Master-Passwort zu. So könnte ich mit Hilfe dieses Skripts und des immer gleichen Master-Passworts bei verschiedenen Diensten doch immer verschiedene Passwörter verwenden.
Ein Hash eignet sich auch nicht überall als Passwort, weil nicht alle Dienste solche langen Zeichenketten akzeptieren. Ein gutes Passwort bei dem einen Dienst lässt sich vielleicht verwenden, beim anderen nicht, weil der eine andere Regel für Passwörter festgelegt hat. Manche gestatten ja noch nicht mal Sonderzeichen.
Stimmt, daher meine Überlegung, nur einen Teil des Hashs als Passwort zu verwenden, etwa die ersten 8 Zeichen. Mit einer Buchstaben-Zahlen-Kombination von 8 Zeichen sollte ich denke ich meistens ein gültiges Passwort haben.
Und wenn du mal eine PIN speichern willst, versagt das System ebenfalls.
Stimmt, die anderen 98% meiner Anwendungsfälle wären aber abgedeckt. ;-)
Wenn es dir darum geht, die Passwörter der einzelnen Dienste verschlüsselt abzulegen, dann musst du eine Verschlüsslung nehmen, die gegenüber einem Hash auch umkehrbar ist.
Klar, aber genau das möchte ich ja nicht. Ich möchte das tatsächliche Passwort nirgends ablegen. Aber ich denke, das macht das Code-Beispiel oben deutlich.
Schlechte Idee. Du musst dann dafür sorgen, dass bei allen Diensten zeitnah das Passwort gewechselt wird. Der Vorteil der einen Masteränderung ist so gering. Beim Abklappern der Dienste fällt ein individuelles Generieren nicht ins Gewicht.
Du meinst, es wäre genauso effizient, einfach gelegentlich ein neues, zufälliges Passwort zu setzen? Dann müsste ich mir diese neuen Passwörter aber alle merken oder irgendwo notieren … Den Vorteil sehe ich genau darin, mir die neuen Passwörter weder merken noch notieren oder speichern zu müssen – merke ich mir das neue Master-Passwort, ergeben sich direkt aus diesem Master-Passwort alle neuen Passwörter.
Haltet ihr die Idee für vollkommen blödsinnig?
Es sieht erstmal so aus, ja.
Danke für deine Ehrlichkeit. ;-)
Aber du hast ja wesentliche Details der Lösung noch nicht vorgestellt.
Ist jetzt klarer, was ich vorhabe? Aus viel mehr Details besteht die gesamte Idee eigentlich garnicht. Bei dem Beispielcode oben fehlt eigentlich nur noch das „Drumherum“ im Sinne von Eingabefeld für das Master-Passwort, Möglichkeiten, Accounts zum System hinzuzufügen und zu bearbeiten etc. - doch das Wesentliche, nämlich wie aus Master-Passwort und Account-Bezeichner ein Passwort wird, das zeigt mein Beispiel-Code oben - hoffe ich.
Die anderen Fragen sind vermutlich irrelevant, weil ein Hash für die Lösung deiner Aufgabenstellung sicher nicht zielführend ist.
Konnte ich dich überzeugen?
dedlfix.
Danke dir jedenfalls für deine Antwort und Anregungen.
Gruß,
Claudius