Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Passwortschutz


Jacer - Sa 31.10.09 16:31
Titel: Passwortschutz
Moin allerseits,

ich möchte einen Teil in einem Programm (um genauer zu sagen ein TabSheet eines PageControls) mit einem Passwort schützen.
Also lediglich bei Aufruf eine Abfrage des Passwortes, danach Freigabe des TabSheets.
Da ich für den Benutzer ebenfalls die Funktion einbauen will, das Passwort ändern zu können, und aus Sicherheitsgründen möchte ich dass Passwort natürlich nicht hardcoded direkt im Quelltext stehen haben.

Ich habe jetzt als erstes daran gedacht eine Datenbank zu erstellen und über md5 ein Passwort einzutragen bzw abzufragen.
Ist das mit die sicherste Methode oder was habe ich für Alternativen mit Delphi?

gruß
jacer


Xion - Mo 02.11.09 22:22

Du hast an sich alle Möglichkeiten.

Ich würde es am einfachsten so machen:
Du verschlüsselst einfach dein Passwort und speicherst es in irgendeine Datei rein (ist ja dann verschlüsselt). Zum verschlüsseln kannst dir ja z.B. selbst was überlegen oder was fertiges angucken.

Wenn die Datei gelöscht wird (=das Programm kennt das richtige Passwort nichtmehr) ist das die selbe Frage wie, was passiert wenn der User das Passwort nichtmehr weiß.

Master-Passwort, dass nur du als Programmierer kennst?


dummzeuch - Di 03.11.09 21:21

user profile iconJacer hat folgendes geschrieben Zum zitierten Posting springen:

Ich habe jetzt als erstes daran gedacht eine Datenbank zu erstellen und über md5 ein Passwort einzutragen bzw abzufragen.

Die Idee mit einem Hash ist schonmal gut, deutlich besser, als das Kennwort verschluesselt abzuspeichern. Dabei nicht vergessen, ein "salt" zu verwenden, so dass der Hash nicht so einfach geknackt werden kann.
Zur Kennwortaenderung kannst Du analog zu Windows die Eingabe des alten Kennworts verlagen, dieses gegen den aktuellen Hash pruefen und erst dann das neue setzen.
Haeufig gibt es noch weitere Anforderungen:
1. Ein Kennwort darf nicht mehrfach hintereinander verwendet werden. Das kann man erreichen, indem man die letzten n Hashes abspeichert und das neue Kennwort dagegen checkt.
2. Das neue Kennwort muss sich um mindestens n Zeichen vom alten unterscheiden. Das kann man durch Vergleich mit dem alten Kennwort erreichen,
das man bei der Kennwortaenderung ebenfalls abfragt.
3. Manchmal ist auch gefordert, dass sich das neue Kennwort von den letzten n in mindestens m Zeichen unterscheidet. Das laesst sich meines wissens leider nicht sicher (d.h. ohne speichern der alten Kennworte) erreichen. Deshalb wuerde ich versuchen den Auftraggeber davon abzubringen. (Was natuerlich nur dann notwendig ist, wenn es einen Auftraggeber gibt.)

twm