Hallo allerseits! 
Ich weiß nicht genau, ob ich hier auf Anhieb das richtige Unterforum erwischt habe, allerdings treiben sich hier vielleicht die passenderen Leute rum als unten im Programmierbereich, deshalb steht's nun hier.
Ich habe da ein Konzept (welches sogar schon fast fertig umgesetzt ist) und würde das gerne von ein paar Leuten, die sich mit Passwortsicherheit auskennen, absegnen lassen bevor ich es endgültig benutze bzw. veröffentliche. Ich setze hier mal voraus, dass allgemeine Richtlinien für sichere Passwörter hinlänglich bekannt sind.
Das Problem
In der Interaktion mit dem PC (und insbesondere auch mit verschiedenen Internetdiensten) hat man mit einer ständig wachsenden Anzahl von Authentifizierungsvorgängen zu tun, die meist über Passwörter abgewickelt werden. Dabei ist (neben Problemen wie unverschlüsselter Übertragung) ein schwaches Passwort nicht selten das "schwächste Glied der Kette" - besonders häufig im Bereich der Kryptographie.
Desweiteren ist es ein beträchtliches Sicherheitsrisiko, für mehrere (oder gar alle) Dienste das gleiche Passwort zu benutzen. Dadurch ergibt sich das Problem, dass man unzählige sichere Passwörter verwalten muss. Hierfür gibt es einige Programme, die Passwörter unter Verwendung von hinreichend starker Verschlüsselung irgendwo abspeichern und nur mit einem "Master"-Passwort den Zugriff erlauben.
Die Alternative
Warum sollte es keine Software geben, die eine Liste von Verschiedenen Diensten (Applikationen, Webseiten, ...) entgegennimmt, sowie weiteren Input vom User ("Master"-Passwort) und daraus für jeden Dienst deterministisch, aber irreversibel ein Passwort generiert? Das setzt natürlich voraus, dass der Benutzer für jeden Dienst sein Passwort selbst wählen kann.
Mit Blick auf die Sicherheit hat dieses Verfahren einen Vorteil und einen Nachteil gegenüber den diversen Passwort-Safes, Schlüsselbunden oder wie sie alle heißen:
Vorteil: Die einzelnen Passwörter sind nirgends gespeichert. Das heißt, dass keine Passwort-Datenbank existiert, die hypothetisch geknackt werden könnte. Noch interessanter dürfte allerdings sein, dass die Passwörter mit diesem Verfahren auch nicht bei einem Datenverlust (Headcrash, Hausdurchsuchung, ...) verlorengehen können.
Nachteil: Dadurch, dass keine Passwort-Datenbank existiert, muss ein Angreifer nur das Master-Passwort in Erfahrung bringen (-> Social Engineering) und verfügt sofort über alle Passwörter des Users ohne weiteren Datenklau betreiben zu müssen.
Die Zielgruppe für mein Konzept wäre also eher die Sorte Benutzer, für die ein Headcrash ein größeres Risiko darstellt als die durchschnittliche Phishing-Mail.
Bisherige Umsetzung
Ich entwickle gerade ein kleines Programm (auf der Basis von Lazarus/FreePascal) das genau dies leistet. Es speichert eine Liste von Diensten, die als Namen jedwede Bezeichnung haben können, sowie zu jedem dieser Dienste eine gewünschte Passwortlänge. Der Benutzer muss seinen Namen sowie sein Master-Passwort eingeben. Damit wird für jeden Dienst ein String konkateniert:
Name + Master-Passwort + Dienst + Passwort-Länge
Von diesem String wird der SHA512 gebildet. Das ergibt 64 Bytes an pseudozufälligen Daten für jeden Dienst. Ich unterstelle, dass SHA512 hinreichend "zufällig" und kollisionsfrei ist. Je nachdem, wie viele Zeichen für das Passwort gewünscht sind, werden dann aus dem Hash Zeichen des Ausgabealphabets gewählt. Dieses kann frei gewählt werden und umfasst alle Zeichen, die in den generierten Passwörtern enthalten sein dürfen (Standard: Ziffern, Groß-/Kleinbuchstaben, per Tastatur schnell erreichbare Sonderzeichen). Das Resultat ist dann für jeden Dienst ein (bei Standardeinstellung des Programms) sicheres Passwort.
---
Nun frage ich mich natürlich, warum das noch niemand vor mir gemacht hat, oder warum ich dazu im Netz nichts finde.
Außerdem hätte ich gerne etwas Rückmeldung, ob ein generelles Interesse an diesem Programm bestünde (wäre natürlich Open Source). Falls ja, würde ich gerne mit ein paar Leuten, die sich vielleicht besser damit auskennen, Details des Algorithmus und der Implementierung ausarbeiten bzw. Fragen klären.
Also erstmal her mit Nachfragen, konstruktiver Kritik und Geflame.
Ich weiß nicht genau, ob ich hier auf Anhieb das richtige Unterforum erwischt habe, allerdings treiben sich hier vielleicht die passenderen Leute rum als unten im Programmierbereich, deshalb steht's nun hier.
Ich habe da ein Konzept (welches sogar schon fast fertig umgesetzt ist) und würde das gerne von ein paar Leuten, die sich mit Passwortsicherheit auskennen, absegnen lassen bevor ich es endgültig benutze bzw. veröffentliche. Ich setze hier mal voraus, dass allgemeine Richtlinien für sichere Passwörter hinlänglich bekannt sind.
Das Problem
In der Interaktion mit dem PC (und insbesondere auch mit verschiedenen Internetdiensten) hat man mit einer ständig wachsenden Anzahl von Authentifizierungsvorgängen zu tun, die meist über Passwörter abgewickelt werden. Dabei ist (neben Problemen wie unverschlüsselter Übertragung) ein schwaches Passwort nicht selten das "schwächste Glied der Kette" - besonders häufig im Bereich der Kryptographie.
Desweiteren ist es ein beträchtliches Sicherheitsrisiko, für mehrere (oder gar alle) Dienste das gleiche Passwort zu benutzen. Dadurch ergibt sich das Problem, dass man unzählige sichere Passwörter verwalten muss. Hierfür gibt es einige Programme, die Passwörter unter Verwendung von hinreichend starker Verschlüsselung irgendwo abspeichern und nur mit einem "Master"-Passwort den Zugriff erlauben.
Die Alternative
Warum sollte es keine Software geben, die eine Liste von Verschiedenen Diensten (Applikationen, Webseiten, ...) entgegennimmt, sowie weiteren Input vom User ("Master"-Passwort) und daraus für jeden Dienst deterministisch, aber irreversibel ein Passwort generiert? Das setzt natürlich voraus, dass der Benutzer für jeden Dienst sein Passwort selbst wählen kann.
Mit Blick auf die Sicherheit hat dieses Verfahren einen Vorteil und einen Nachteil gegenüber den diversen Passwort-Safes, Schlüsselbunden oder wie sie alle heißen:
Vorteil: Die einzelnen Passwörter sind nirgends gespeichert. Das heißt, dass keine Passwort-Datenbank existiert, die hypothetisch geknackt werden könnte. Noch interessanter dürfte allerdings sein, dass die Passwörter mit diesem Verfahren auch nicht bei einem Datenverlust (Headcrash, Hausdurchsuchung, ...) verlorengehen können.
Nachteil: Dadurch, dass keine Passwort-Datenbank existiert, muss ein Angreifer nur das Master-Passwort in Erfahrung bringen (-> Social Engineering) und verfügt sofort über alle Passwörter des Users ohne weiteren Datenklau betreiben zu müssen.
Die Zielgruppe für mein Konzept wäre also eher die Sorte Benutzer, für die ein Headcrash ein größeres Risiko darstellt als die durchschnittliche Phishing-Mail.
Bisherige Umsetzung
Ich entwickle gerade ein kleines Programm (auf der Basis von Lazarus/FreePascal) das genau dies leistet. Es speichert eine Liste von Diensten, die als Namen jedwede Bezeichnung haben können, sowie zu jedem dieser Dienste eine gewünschte Passwortlänge. Der Benutzer muss seinen Namen sowie sein Master-Passwort eingeben. Damit wird für jeden Dienst ein String konkateniert:
Name + Master-Passwort + Dienst + Passwort-Länge
Von diesem String wird der SHA512 gebildet. Das ergibt 64 Bytes an pseudozufälligen Daten für jeden Dienst. Ich unterstelle, dass SHA512 hinreichend "zufällig" und kollisionsfrei ist. Je nachdem, wie viele Zeichen für das Passwort gewünscht sind, werden dann aus dem Hash Zeichen des Ausgabealphabets gewählt. Dieses kann frei gewählt werden und umfasst alle Zeichen, die in den generierten Passwörtern enthalten sein dürfen (Standard: Ziffern, Groß-/Kleinbuchstaben, per Tastatur schnell erreichbare Sonderzeichen). Das Resultat ist dann für jeden Dienst ein (bei Standardeinstellung des Programms) sicheres Passwort.
---
Nun frage ich mich natürlich, warum das noch niemand vor mir gemacht hat, oder warum ich dazu im Netz nichts finde.
Also erstmal her mit Nachfragen, konstruktiver Kritik und Geflame.