Claudius L.: Eigenes System zur Passwortverwaltung

Hallo zusammen,

ich habe in letzter Zeit schon öfter darüber nachgedacht, mir ein eigenes kleines System zur Verwaltung von Passwörtern zu basteln. Bevor ich das aber tue und dabei etwas furchtbar dummes anstelle, würde ich gerne eure Meinung dazu hören.
Gleich vorweg: Es geht hier um keine professionelle Anwendung, sondern um etwas für den Eigenbedarf. Dass es für so etwas schon fertige Softwarelösungen gibt ist mir bewusst, allerdings würde ich das gerne SELF machen …
Überhaupt angeregt, über so etwas nachzudenken, hat mich das Problem, dass ich mir (und da geht es mir vermutlich ähnlich wie den meisten Menschen) beim besten Willen nicht für jeden Online-Account ein möglichst kryptisches und mindestens 8 Zeichen langes Passwort merken kann. Andererseits wird ja auch immer wieder vor der Nutzung des selben Passworts für verschiedene Dienste gewarnt. Daher meine Idee:
Ich wähle ein „Master-Passwort“ und habe eine Tabelle mit einem Eintrag für jeden Account. Jeder Account hat einen eindeutigen Bezeichner, z.B. für Ebay „ebay“, ansonsten stehen in der Tabelle nur allgemeine Informationen wie eine Beschreibung des Accounts. Das Passwort für Ebay wird dann mit MD5 (oder auch mit einer moderneren Hash-Funktion) aus der Zeichenkette „Master-Passwort“+„ebay“ erzeugt.
Also, um es zu verdeutlichen: das Master-Passwort ist nirgends gespeichert, die jeweiligen Account-Passworte ebenso wenig. Vielmehr wird bei der Eingabe eines beliebigen Master-Passworts immer ein Passwort (also ein Hash aus Master-Passwort und Accountname) ausgegeben – nur, ob es sich um das richtige handelt, hängt eben ab vom korrekten Master-Passwort (ich hoffe, dies ist verständlich).
Einen besonderen Vorteil sehe ich darin, dass ich durch die Verwendung eines neuen Master-Passworts für jeden Account ein neues Passwort erhalte und so quasi ohne jeglichen Verwaltungsaufwand sämtliche Passwörter ändern kann (natürlich muss ich sie aber bei den entsprechenden Online-Diensten ändern). Eine ähnliche, noch einfachere Methode zum Passwortwechsel wäre, das Passwort-Hash aus HASHFUNKTION(Master-Passwort+Zähler+Accountname) zu generieren. So müsste ich nur den Zähler erhöhen und müsste nichtmal das Master-Passwort ändern.

Nun zu meinen Fragen:

Haltet ihr die Idee für vollkommen blödsinnig?

Muss ich etwas beachten, wenn ich statt des ganzen Hashs nur einen Teilstring daraus als Passwort verwenden möchte (z.B. die ersten 8 Zeichen)?

Wäre es eurer Meinung nach wesentlich sicherer, nicht den (als Klartext in einer Datenbank gespeicherten) Account-Bezeichner als Teil des Inputs der Hash-Funktion zu verwenden, sondern sich den Bezeichner stattdessen auch zu merken? (Und ja, in diesem Fall bestünde die Funktionalität meiner „Anwendung“ eigentlich nur im Ausgeben des Hashs.)

Ist es in diesem Anwendungsfall überhaupt relevant, was für einen Hash-Algorithmus ich nutze und ob ich meine Daten mehrere Runden durch den Hash-Algorithmus schicke?

Ich würde mich sehr über einige Gedanken und Anregungen zu diesem Thema freuen.

Schönen Abend und einen guten Start ins Wochenende,

Claudius

  1. Tach!

    Gleich vorweg: Es geht hier um keine professionelle Anwendung, sondern um etwas für den Eigenbedarf. Dass es für so etwas schon fertige Softwarelösungen gibt ist mir bewusst, allerdings würde ich das gerne SELF machen …

    Ja, Keepass inklusive Sourcecode und jeder Menge Anpassungen an andere Systeme.

    Ich wähle ein „Master-Passwort“ und habe eine Tabelle mit einem Eintrag für jeden Account. Jeder Account hat einen eindeutigen Bezeichner, z.B. für Ebay „ebay“, ansonsten stehen in der Tabelle nur allgemeine Informationen wie eine Beschreibung des Accounts. Das Passwort für Ebay wird dann mit MD5 (oder auch mit einer moderneren Hash-Funktion) aus der Zeichenkette „Master-Passwort“+„ebay“ erzeugt.

    Und nun? Wie kommt das jeweilige Passwort des Accounts zum Anmeldeformular des Dienstes? 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.

    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. Und wenn du mal eine PIN speichern willst, versagt das System ebenfalls.

    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.

    Einen besonderen Vorteil sehe ich darin, dass ich durch die Verwendung eines neuen Master-Passworts für jeden Account ein neues Passwort erhalte und so quasi ohne jeglichen Verwaltungsaufwand sämtliche Passwörter ändern kann (natürlich muss ich sie aber bei den entsprechenden Online-Diensten ändern).

    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.

    Haltet ihr die Idee für vollkommen blödsinnig?

    Es sieht erstmal so aus, ja. Aber du hast ja wesentliche Details der Lösung noch nicht vorgestellt. Die anderen Fragen sind vermutlich irrelevant, weil ein Hash für die Lösung deiner Aufgabenstellung sicher nicht zielführend ist.

    dedlfix.

    1. 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

      1. Tach!

        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.

        Ich meine nicht das Ändern sondern das Einloggen.

        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.

        Wenn du schon eine Passwortverwaltung verwenden willst, dann kannst du auch individuelle Passwörter generieren. Den Hash kannst du dir ja auch nicht merken, also ist es völlig egal, wie das Passwort entsteht. Das Programm muss es in jedem Fall entweder verwalten oder jedes Mal berechnen.

        $hash = md5($master_passwort.$dienst_bezeichner);
        printf('Das Passwort für %s lautet: %s', $dienst_bezeichner, substr($hash, 0, 8));[/code]

        Damit hast du dann 8 Zeichen aus dem Vorrat 0-9a-f. Das ist nicht besonders sicher. Und du scheiterst damit bei Diensten, die Sonderzeichen haben wollen.

        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.

        Schau dir KeePass an. Das Masterpasswort um die Verschlüsslung aufzuheben kannst du ja in deinem Gedächtnis ablegen. Wenn das ausreichend gut gewählt ist, sind die anderen Passwörter (und zwar für 99,99% der Anwendungsfälle) gut gesichert.

        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?

        Ja.

        Dann müsste ich mir diese neuen Passwörter aber alle merken oder irgendwo notieren …

        Ja.

        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.

        Du hast mehr Nachteile als Vorteile bei dieser Vorgehensweise.

        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?

        Ja, und nun kann ich dir die Unsinnigkeit/Unsicherheit des Vorhabens sogar zweifellos bestätigen. Ich weiß, das ist für dich nicht besonders toll, aber das ist die Idee leider nicht.

        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?

        Ja, aber nicht in deinem Sinne.

        dedlfix.

        1. Hallo dedlfix!

          Erstmal, denke bitte nicht, ich hätte aus Desinteresse so lange nicht geantwortet - ich wollte mir nur die Sache erst nochmal durch den Kopf gehen lassen und hatte außerdem nicht sonderlich viel Zeit. Was ich sagen will: Ich bin immer dankbar für deine Antworten, unabhängig davon, ob sie aussagen, was ich vielleicht gerne hören würde …

          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.

          Ich meine nicht das Ändern sondern das Einloggen.

          In der Regel sind meine Passworte ohnehin im Passwortmanager von Opera gespeichert (abgesehen von sensiblen Dingen wie Bankdaten oder Amazon-Account etc. - alles, was Kosten verursachen kann). Beim ersten Anmelden  nach einer Passwortänderung bzw. wenn das Passwort nicht gespeichert wird, kommt es meiner Idee nach per Copy&Paste von meiner Passwortverwaltung in den Browser.

          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.

          Wenn du schon eine Passwortverwaltung verwenden willst, dann kannst du auch individuelle Passwörter generieren. Den Hash kannst du dir ja auch nicht merken, also ist es völlig egal, wie das Passwort entsteht. Das Programm muss es in jedem Fall entweder verwalten oder jedes Mal berechnen.

          Meine Hashs (also meine Passwörter) sind ja individuell. Nur nicht zufallsgeneriert. Sie sind nur dann nicht individuell, wenn es zwischen dem Hash aus "foo_1" und "foo_2" eine Ähnlichkeit gibt. Gibt es aber nicht, oder? (Auch das ist eine der Fragen, die ich mir bei diesem Thema gestellt habe, auch wenn ich die Antwort zu kennen glaube.)
          Den Reiz an der Idee, dass die Passwörter eben nicht zufallsgeneriert, verschlüsselt gespeichert und mit Master-Passwort entschlüsselt wieder ausgegeben werden, sondern sie immer neu zu berechnen, ist ja, dass es (hoffentlich) nicht möglich ist, ohne das Master-Passwort das gesuchte Passwort zu berechnen.

          Damit hast du dann 8 Zeichen aus dem Vorrat 0-9a-f. Das ist nicht besonders sicher. Und du scheiterst damit bei Diensten, die Sonderzeichen haben wollen.

          Naja, an solchen Details ließe sich arbeiten. Ich könnte ja je nach Dienst z.B. eine andere Länge festlegen. Über Sonderzeichen müsste man noch nachdenken, ja.

          Schau dir KeePass an. Das Masterpasswort um die Verschlüsslung aufzuheben kannst du ja in deinem Gedächtnis ablegen. Wenn das ausreichend gut gewählt ist, sind die anderen Passwörter (und zwar für 99,99% der Anwendungsfälle) gut gesichert.

          Ja, das werde ich bei Gelegenheit noch tun (bisher kenne ich nur den Wikipadia-Artikel dazu, aber habe das Programm selbst noch nicht getestet). Natürlich stellt eine solche Lösung eine Alternative dar. Mir ging es vor allem darum, diesen Ansatz - der ja ein völlig anderer ist - zur Diskussion zu stellen. Unabhängig davon, ob es einen anderen, funktionsfähigen Ansatz gibt.
          Aber trotzdem danke für diesen Tipp. Sollte ich mich gegen die Selbermachen-Lösung entscheiden, dann weiß ich jetzt immerhin schon eine gute Alternative.

          Du hast mehr Nachteile als Vorteile bei dieser Vorgehensweise.

          Vermutlich hast du Recht. Vor allem Auto-Type ist ein so großer Vorteil, dass meine Idee (mangels solcher Features) wohl nicht vergleichbar leistungsfähig ist. Wobei ich den Ansatz immernoch spannend finde … ;-)

          Ja, und nun kann ich dir die Unsinnigkeit/Unsicherheit des Vorhabens sogar zweifellos bestätigen. Ich weiß, das ist für dich nicht besonders toll, aber das ist die Idee leider nicht.

          Naja, wäre ich mir hundertprozentig sicher gewesen, dass meine Idee das Non-Plus-Ultra darstellt und ich es auf jeden Fall so machen will, dann hätte ich nicht gefragt. Deshalb hält sich meine Enttäuschung in Grenzen, auch wenn ich natürlich auf ein anderes Ergebnis gehofft hatte.

          Gruß,

          Claudius

          1. Tach!

            Erstmal, denke bitte nicht, ich hätte aus Desinteresse so lange nicht geantwortet -

            Mach dir da mal keine Sorgen, man muss das als Antwortender abkönnen, wenn Probleminhaber spät oder gar nicht mehr auftauchen. Mir wachsen deswegen keine grauen Haare, ist ja nicht mein Problem :-)

            Meine Hashs (also meine Passwörter) sind ja individuell. Nur nicht zufallsgeneriert. Sie sind nur dann nicht individuell, wenn es zwischen dem Hash aus "foo_1" und "foo_2" eine Ähnlichkeit gibt. Gibt es aber nicht, oder? (Auch das ist eine der Fragen, die ich mir bei diesem Thema gestellt habe, auch wenn ich die Antwort zu kennen glaube.)

            Kann man nicht direkt voraussagen. Du müsstest die Ergebnisse deines Verfahrens einzeln miteinander vergleichen. Zudem ist die Frage, wie "Ähnlichkeit" in diesem Fall zu definieren wäre.

            Schau dir KeePass an. [...]
            Ja, das werde ich bei Gelegenheit noch tun (bisher kenne ich nur den Wikipadia-Artikel dazu, aber habe das Programm selbst noch nicht getestet). » [...] Vor allem Auto-Type ist ein so großer Vorteil, dass meine Idee (mangels solcher Features) wohl nicht vergleichbar leistungsfähig ist.

            Ja, gerade Auto-Type ist an Komfort kaum zu überbieten. Mit einer globalen Tastenkombination kann man das Auto-Tippen auslösen, egal in welchem (Programm-)Fenster man ist. Wenn die Titelzeile des Fenster einem Eintrag zugeordnet ist, wird dieser genommen. Programm oder eine Webseite öffnen, Passwort-Dialig erscheint, Ctrl-Alt-A, eingeloggt.

            dedlfix.

            1. Hi,

              wollte nur als Rückmeldung noch Bescheid sagen, dass ich heute KeePass in Betrieb genommen habe und eigentlich sehr zufrieden bin. Hab auch gleich mal ein paar uralte, unsichere und mehrfach genutzte Passwörter ersetzt ...
              Nur „eigentlich“ sehr zufrieden, weil ich noch mit einem kleinen Problem zu kämpfen habe - das aber an Opera, nicht an KeePass liegt.
              Und zwar sind die Zugangsdaten in KeePass ja je nach Fenstertitel zugeordnet. Daher wären eindeutige und aussagekräftige Fenstertitel sehr praktisch. Genau da steht mir Opera momentan im Weg (Version 11.52 unter Win7). Denn ich bekomme es partout nicht hin, dass ich sowohl den Seitentitel als auch die URL im Fenstertitel stehen habe. Genau das bräuchte ich aber für KeePass. Wenn ich „opera:config#UserPrefs|ShowAddressInCaption“ aktiviere, habe ich den Seitentitel nicht mehr im Fenstertitel, unabhängig davon, was ich bei „opera:config#UserPrefs|Title“ einstelle (ja, %t habe ich schon versucht). Ohne ShowAdressInCaption habe ich zwar den Seitentitel, aber nicht die URL.
              Hat vielleicht schon jemand anderes diesen Kampf gegen Opera geführt und optimalerweise gewonnen?

              Viele Grüße,

              Claudius

              1. Tach!

                Opera [...] (Version 11.52 unter Win7). Denn ich bekomme es partout nicht hin, dass ich sowohl den Seitentitel als auch die URL im Fenstertitel stehen habe. Genau das bräuchte ich aber für KeePass.

                Da kann ich dir nicht helfen, bei mir war bisher der Seitentitel eindeutig genug.

                dedlfix.

                1. Hi,

                  Da kann ich dir nicht helfen, bei mir war bisher der Seitentitel eindeutig genug.

                  Tatsächlich? Vor allem (oder eigentlich nur) hier im Forum scheint mir das nicht der Fall zu sein. Je nachdem, ob ich die Hauptseite, einen Thread oder sonst was aufrufe ist der Fenstertitel unterschiedlich … Aber gut, dann speichere ich dieses Passwort eben im Browser.

                  Gruß,

                  Claudius

                  1. Tach!

                    Da kann ich dir nicht helfen, bei mir war bisher der Seitentitel eindeutig genug.
                    Tatsächlich? Vor allem (oder eigentlich nur) hier im Forum scheint mir das nicht der Fall zu sein. Je nachdem, ob ich die Hauptseite, einen Thread oder sonst was aufrufe ist der Fenstertitel unterschiedlich … Aber gut, dann speichere ich dieses Passwort eben im Browser.

                    "Eindeutig genug" in dem Sinne, dass jede der von mir verwendeten Login-Seiten einen individuellen Titel hat, denn das Auto-Type-Feature von anderen unterscheiden kann. Wenn es mehrere Möglichkeiten gibt, muss man die passende wählen. Zum Beispiel bei mehreren Kennungen für ein Ziel, wie mehrere Accounts beim selben Hoster/Provider, und dementsprechend mehreren Einträgen im KeePass.

                    dedlfix.

  2. Einen besonderen Vorteil sehe ich darin, dass ich durch die Verwendung eines neuen Master-Passworts für jeden Account ein neues Passwort erhalte und so quasi ohne jeglichen Verwaltungsaufwand sämtliche Passwörter ändern kann (natürlich muss ich sie aber bei den entsprechenden Online-Diensten ändern).

    Du musst dir dann auf einmal alle alten Passwörter ausgeben lassen und dann in sämtlichen Accounts die neuen eintragen, weil du nach Änderung des Masterpassworts nicht mehr an die alten Passwörter kommst.
    Siehst du das wirklich als Vorteil?

    1. Hallo Encoder!

      Du musst dir dann auf einmal alle alten Passwörter ausgeben lassen und dann in sämtlichen Accounts die neuen eintragen, weil du nach Änderung des Masterpassworts nicht mehr an die alten Passwörter kommst.

      Der Punkt ist, dass ich das Master-Passwort nicht „ändere“. In meiner Antwort auf dedlfix' Posting habe ich etwas Beispielcode gepostet - wenn ich dort $master_passwort auf einen neuen Wert setze, erhalte ich das neue Passwort. Verwende ich den alten Wert, erhalte ich das alte Passwort. Ich kann also beliebig zwischen neuen und alten Passworten wechseln.
      Zudem ließe sich das Ganze wie schon im Eingangsposting angedacht mit der Verwendung einer Zähler-Variable noch weiter vereinfachen:

      $master_passwort = 'sehr_geheim'; // steht nicht im Quellcode, sondern wird vom Nutzer eingegeben!  
      $i = 0;  
      $dienst_bezeichner = 'onlinebanking_db';  
      $hash_current = md5($master_passwort.$dienst_bezeichner.$i);  
      printf('Das Passwort für %s lautet: %s', $dienst_bezeichner, substr($hash_current, 0, 8));  
      $hash_next = md5($master_passwort.$dienst_bezeichner.($i+1));  
      printf('Das nächste Passwort für %s lautet: %s', $dienst_bezeichner, substr($hash_next, 0, 8));
      

      Sind alle Accounts auf das neue Passwort umgestellt, wird $i um 1 erhöht und das Spiel kann auf Wunsch von vorne beginnen. So könnte man also sogar ohne eine Änderung des Master-Passworts ein neues Set an Passwörtern erhalten (ob der zu verwendende Wert von $i gespeichert wird oder eingegeben wird wäre noch zu überlegen).

      Gruß,

      Claudius

  3. Hallo Claudius,

    interessante Idee - mir gefällt sie.

    Man darf (um deine Idee zu realisieren) aber nicht in den "traditionellen Wegen" von Verschlüsselung denken - deswegen hast du wahrscheinlich auch so viele negative Rückmeldungen bekommen.

    Aus 2 Geheimnissen, einem Bezeichner (der Dienst) und einem Regelsatz für Zeichen pro Dienst kannst du mit deiner Idee Passwörter generieren.

    Jeder hat seine beiden Geheimnisse im Kopf und erhält damit eine unendliche Anzahl an generischen und komplizierten Passwörtern.

    Im Endeffekt könnte man das sogar als öffentlichen Dienst sicher anbieten, weil nirgendwo was gespeichert wird. Brute-force-Attacken wären sinnlos ;-)

    Grüße
    Erik

    1. Hallo Erik,

      ja, du scheinst in eine ähnliche Richtung zu denken wie ich. Da bei jedem noch so falschen Master-Passwort immer etwas, das das Passwort sein könnte, ausgegeben wird, gibt es keine Möglichkeit, das Master-Passwort gezielt zu knacken.
      Allerdings hat dedlfix wohl Recht, dass die Idee so, wie ich sie beschrieben habe, noch zu viele Nachteile hat. In Kombination mit dem Auto-Type-Feature von KeePass und einer sicheren Möglichkeit, Hashs bestehend nicht nur aus Zahlen und Buchstaben, sondern mit zusätzlichen Sonderzeichen zu generieren, sähe das vielleicht anders aus. Aber das wäre sehr viel Arbeit für ein Ergebnis, das KeePass ohne all diesen Aufwand liefert - nur mit Hilfe einer anderen Methode.

      Gruß,

      Claudius