Montag, 2. August 2010

Geschützte Passwortübertragung

Viele Websiteentwickler, vor allem private, haben meistens nicht das Budget oder die Möglichkeit Passwortübertragung per https verschlüsseln zu lassen.

So entwickelte ich mit php und JavaScript eine eigene Verschlüsselung, die zumindest das Passwort sicherer über das Internet transferiert.


HINWEIS: Auch diese Verschlüsselung ist nicht zu 100% sicher. Anwendung auf eigene Gefahr.

Das Prinzip


1. Server
Der Server erstellt einen Zufallsschlüssel, der mit der IP auf dem Server gespeichert wird und zum Clienten geschickt wird.

2. Client
Der User gibt sein Passwort ein. Dieses wird mit Klick auf den Submitbutton mit dem Zufallsschlüssel verschlüsselt und NUR das verschlüsselte Passwort wird über das Internet an den Server geschickt.

3. Server
Der Server entschlüsselt das Passwort anhand des Schlüssels, der mit der IP gespeichert wurde.

Vor- und Nachteile



  • Das Passwort wird nie unverschlüsselt über das Internet gesendet.

  • Jedes mal gibt es einen neuen Schlüssel für eine bestimmte IP, sodass man sich nicht mit dem verschlüsselten Passwort eines anderen Clienten anmelden kann.

  • Um das Passwort zu knacken, muss man den Schlüssel bei der Übertragung vom Server zum Clienten und das verschlüsselte Passwort bei der Übertragung vom Clienten zum Server abfangen. Diese muss man dann anhand des Scriptes auf der Webseite entschlüsseln.


Fazit: Die Verschlüsselung ist nicht extrem sicher, aber allemal besser als jedes mal das Passwort unverschlüsselt über das Web zu übertragen.

Scripting


Die Datei server.txt (In server.php umbenennen) beinhaltet zwei Funktionen: keygenerator und AESdecode.
keygenerator() erstellt einen 20 Zeichen langen Zufallsschlüssel, speichert diesen anhand der IP und gibt den Schlüssel aus.
AESdecode($input,$key) bekommt als $input das verschlüsselte Passwort und entschlüsselt dieses anhand des gespeicherten Schlüssels $key.


Die Datei client.txt (In client.php umbenennen) prüft, ob schon ein Schlüssel generiert wurde und speichert diesen in der Variable $key.
Im JavaScript-Bereich wird der neu erstellte Schlüssel ausgegeben. Die Funktion aespwd(idein,idaus) verschlüsselt das Passwort und schreibt es in ein verstecktes Feld (hidde zu hidden ändern).
Wenn das Formular abgeschickt wurde und bereits ein Schlüssel generiert wurde, wird das verschlüsselte Passwort unverschlüsselt ausgegeben.

Die Funktion in der Datei js.js verschlüsselt ein Passwort mit dem eingegebenen Schlüssel.


Viel Erfolg beim Anwenden wünscht dir Harry! :)
(Vielleicht bastel' ich bald eine sicherere Verschlüsselung mit dem RSA-Verfahren)

Keine Kommentare:

Kommentar veröffentlichen