Andere Tipps

Drei Pass Protokoll würde praktisch sein. Im Grunde ist es läuft darauf hinaus:

  • Person A verschlüsselt sein Passwort, und sendet sie an Person B.
  • Person B verschlüsselt das verschlüsselte Passwort und sendet sie zurück an Person A.
  • Person A entschlüsselt sie und sendet sie zurück.
  • Person B entschlüsselt, und bekommt das Passwort im Klartext.

Auf diese Weise wird das Passwort niemals unverschlüsselt gesendet werden, weder sind Verschlüsselungsschlüssel. Es ist ein relativ schnelles Protokoll zu, da es (vermutlich) auf symetrische Verschlüsselung beruht, die sehr schnell ist.

in der Datenbank, um die Passwort-Hash zu speichern ist nicht optimal sicher, falls der Inhalt der Datenbank in unbefugte Hände gelangen. Es gibt keine Möglichkeit, den Hash direkt rückgängig zu machen, aber es gibt online dictinonaries (wie hier ) zum Umkehren gehasht (pass) Worte.

In der DB sollten Sie speichern somethig wie:

md5(login_name +  domain_or_appname_salt + password);

Das Salz in der Mitte verhindert viele Formen von Wörterbuch-Attacken.

Auf der Seite Clients (im Browser) würden Sie ein Login-Formular mit Benutzername und Passwort. Ein kleines Stück Javascript würde Hash das userame + app_salt_ und Passwort, so dass nur die login_name und erzeugten Hash werden an den Server gesendet werden.

Nun wird das Klartext-Passwort nie auf den Server im Klartext gesendet. So sollten Sie hier nicht auf HTTPS verlassen haben.

Die gleiche Technik kann in dem Passwort-Update-Formular verwendet werden. Damit der Server nie das Klartext-Passwort kennt.

Ich hoffe, Sie haben Inspiration aus diesem und den anderen Antworten.

Happy Hacking!

Huibert

Wenn das Protokoll auf TCP läuft können Sie einfach die Authentifizierung in deutlich schreiben und dann die Kommunikation mit SSL wickeln. Zum Beispiel, wenn Sie Port 1234 für das Protokoll verwenden, können Sie dann diesen Port auf dem Server schließen und Kunden Tunnel mit SSH lassen. Dies kann programmatisch durchgeführt werden, und es ist eine sehr, sehr gemeinsame Lösung.

Wenn Ihr Protokoll über HTTP läuft, können Sie dies in üblichen Weise tun, indem Sie HTTPS verwenden. Zum Beispiel Standardauthentifizierung über HTTPS ist sicher genug für die Bedürfnisse Sie angegeben haben.

Auf der anderen Seite, wenn Sie nie das Passwort auf dem Draht senden möchten, müssen Sie eine Challenge-Response-Authentifizierung tun.

  1. Server sendet zufällige Zeichenfolge
  2. Client sendet Hash zufällige Zeichenfolge + Passwort
  3. Server überprüft Hash.

Dies hat den Nachteil, dass das Passwort (verschlüsselt auf im Klartext) auf dem Server jedoch verfügbar sein wird. Wenn Sie dann keine Passwörter auf dem Server speichern wollen, müssen Sie zurück zu meinem ersten Beispiel gehen.

SASL ist ein sicherer Authentifizierungsmechanismus. Unterstützung für SASL ist in den Java-Standardbibliotheken für Versionen 1.5 + geliefert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top