Sinn oder Unsinn des PyLucids JS-MD5-Login...

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
BlackJack

jens hat geschrieben:Nein. decrypt() sollte eine Exception liefern, wenn der Key nicht der richtige ist.
z.Z. bei meiner XOR Variante, habe ich deswegen ja auch den hash() und jetzt die MD5() in den encrypteten Daten drin.
d.h. es wird zwar die XOR Operartion immer gemacht, egal welcher Key, aber danach muß die checksumme auch stimmen und das tut sie nicht, wenn der Key ein falscher war.
Ah, okay. Dann ist der einzige Vorteil wenn man den DB-Inhalt kennt, dass man in aller Ruhe lokal/verteilt Schlüssel durchprobieren kann. Direkt mit einem Suchraum von 2**64. Nicht so praktikabel, also wird man am schwächsten Glied, dem Benutzerpasswort angreifen, und es mit einem Wörterbuchangriff versuchen.
Mit DES bzw. Rijndael statt einem XOR, dürfte IMHO die Entschlüsselung nie mit einem falschen Key gehen. Aber das muß ich noch testen, ob ich da auch mit checksummen arbeiten muß.
Doch da musst Du auch ein Signatur irgendwo speichern, wenn Du das Ergebnis der Entschlüsselung testen möchtest.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja gut einen Wörterbuchangriff kann man wohl nie verhindern ;)

Du hast recht, es ist "nur" ein Suchraum von 2**64, weil es ja nur eine halbe MD5 Summe ist. Aber egal. Das ist immerhin eine Zahl mit 20 Stellen und dürfte erstmal reichen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Irgendwie erinnert mich das ganze Konzept etwas an aSSL welches Fefe verrissen hat :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Es ist allerdings schon etwas anderes... Dort wird versucht Daten wirklich zu verschlüsseln um diese hin und her schicken zu können.
Ich arbeite dagegen nur an einer sichereren Authentifizierung mit Hilfe von MD5 Checksummen.
Eine Verschlüsselung brauche ich nur auf dem Server und diese dient nur zum vergleichen der MD5 summen. Also um zu prüfen ob das ursprünglich eingegebene Passwort auch wirklich richtig ist.

Im übrigen werde ich die Tage eine erste Alpha Version mit dem neuen auth Modul fertig haben :lol:

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

So, in der neuen v0.7.2alpha ist es nun genau so verwirklicht, wie hier skizziert:

http://pylucid.net/trac/browser/trunk/t ... gin_doc.py

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Was man nicht so alles im Netz findet: http://pajhome.org.uk/crypt/md5/auth.html

Sehr Interessant... Hätte ich die Seite mal vorher gekannt...

Dort gibt es auch ein SHA-1 in JavaScript...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

jens hat geschrieben:Ja gut einen Wörterbuchangriff kann man wohl nie verhindern ;)
Verhindern nicht, aber stark einschränken auf jeden Fall: Nach mehreren fehlgeschlagenen Versuchen kann man den Account für eine gewisse Zeitspanne oder dauerhaft bis zur Freischaltung per Email oder durch einen Administrator sperren.

Und natürlich mit Passwörtern, die nicht in Wordlists stehen (auch nicht teilweise).

jens hat geschrieben:Dort gibt es auch ein SHA-1 in JavaScript...
Wow, interessante Idee einen Sicherheitsmechanismus davon abhängig zu machen, dass etwas anderes aktiviert sein muss, das zudem auch noch die Sicherheit gefährdet.

Edit: Hmm, der gute Autor von aSSL scheint auch ein Problem mit seinen Redirects zu haben. Wenn ich Fefes Link auf http://assl.sullof.com/assl/howitworks.asp folge, wird die URL zu dieser (1812 Zeichen lang...) umgewandelt bis es einen Abbruch wegen fehlerhafter Redirection gibt. Na gut.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Y0Gi hat geschrieben:Nach mehreren fehlgeschlagenen Versuchen kann man den Account für eine gewisse Zeitspanne oder dauerhaft bis zur Freischaltung per Email oder durch einen Administrator sperren.
Das werde ich auf jeden Fall demnächst realisieren. Da PyLucid allerdings es als CGI läuft, gibt es so oder so ein Limit der Request-Anfragen. Somit ist es jetzt auch Sinnlos einen Bruteforce zu versuchen.
Eine grobe Schätzung mit meinem simple_web_bench zu urteilen, kann der Server ca. 3 Request pro Sekunden verarbeiten. Dabei wird allerdings nur das Login Formular geholt und nicht ausgewertet. Die Auswertung dürfte wahrscheinlich noch etwas weniger sein.
Ich vermute das es eh ein Limit von Apache aus gibt, das bei einem Bruteforce/DOS zum tragen kommt...
Y0Gi hat geschrieben:Und natürlich mit Passwörtern, die nicht in Wordlists stehen (auch nicht teilweise).
Naja, Was soll man machen, wenn die User ein super einfaches Passwort nehmen? Pauschal eine google Suche machen und dann warnen, wenn zuviele Treffe auftauchen???
Das wäre zwar nett, aber dann verrät man das Passwort immer google, was bescheuert wäre ;)

Y0Gi hat geschrieben:
jens hat geschrieben:Dort gibt es auch ein SHA-1 in JavaScript...
Wow, interessante Idee einen Sicherheitsmechanismus davon abhängig zu machen, dass etwas anderes aktiviert sein muss, das zudem auch noch die Sicherheit gefährdet.
Hä? Wie meinst du das denn jetzt???
Ich könnte halt das JS-MD5 Skript mit dem SHA-1 tauschen. Bringt zwar auch keinen mehrgewinn, aber ist netter ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

jens hat geschrieben:Naja, Was soll man machen, wenn die User ein super einfaches Passwort nehmen? Pauschal eine google Suche machen und dann warnen, wenn zuviele Treffe auftauchen???
Das wäre zwar nett, aber dann verrät man das Passwort immer google, was bescheuert wäre ;)
Schonmal was von John, the Ripper gehört?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ja, und was willst du mir damit sagen???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Dass Google so ziemlich das umständlichste Mittel ist, um schlechte Passwörter zu erkennen.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Nochmal ne doofe Frage hierzu: wenn ich Zugriff auf die darunter liegende Datenbank habe, wofür muss ich dann noch ein Passwort cracken?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

N317V hat geschrieben:Nochmal ne doofe Frage hierzu: wenn ich Zugriff auf die darunter liegende Datenbank habe, wofür muss ich dann noch ein Passwort cracken?
Weil bei PyLucid das nicht so einfach ist!

Bei PyLucid steckt nicht einfach ein hash des Passwortes in der DB! Schau dir mal die Sache genauer an:
http://pylucid.org/index.py/JSMD5Login/
http://pylucid.org/index.py/PseudoCode/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Nö, jens, ich pfeif auf das Passwort und ändere einfach in der DB, was ich ändern will ohne mich über PyLucid einzuloggen, was ich ja auch gar nicht mehr muss, wenn ich schon anderweitig auf die DB zugreifen kann.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Das ist wohl klar. Wenn du lokalen Zugriff auf die Kiste hast, kannst du eh alles hacken...

Interessant ist es, wenn jemand eine SQL-Dump Datei in die Finger bekommt. Das ist ja schon nicht komplett undenkbar.
Dumm wäre es, wenn dann die Passwörter im Klartext oder als einfacher Hash-Wert drin stehen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

N317V hat geschrieben:Nö, jens, ich pfeif auf das Passwort und ändere einfach in der DB, was ich ändern will ohne mich über PyLucid einzuloggen, was ich ja auch gar nicht mehr muss, wenn ich schon anderweitig auf die DB zugreifen kann.
Ja, als Admin und **nicht** als User ;) Und das ist doch Normal das man als Admin auf das System vollen Zugriff hat mit z.B. phpMyAdmin. Ist bei vBulletin auch nicht anders oder bei phpBB, etc. Und das hat doch nichts mit dem zu tun was Jens angesprochen hat.

Oder verstehe ich euch beide falsch?
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Warum ist es dumm, wenn sie da als Hash drinstehen? Mit dem Hash kann man sich nicht einloggen. Könnte man das, bräuchte man den Aufwand mit dem Hashen ja gar nicht betreiben.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Da User in der Regel simple Passwörter haben, sollte man besonders leicht Erfolg beim Suchen der Hashes in Rainbowtables haben. Mit zunehmender Größe der vorberechneten Daten ist das aber noch weniger relevant.
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

Irgendwie erzeugt das jsmd5 eine halbsichere Lösung für den Fall, dass es irgendwo eine riesige Sicherheitslücke gibt (z.B. dass jemand falsches einen SQL-Dump in die Finger kriegt). Zudem setzt es Javascript voraus, das ja selbst immer wieder für Sicherheitsprobleme sorgt.

Da ich mich eigentlich schon für PyLucid interessiere: kann man das jsmd5 deaktivieren?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

N317V hat geschrieben:Da ich mich eigentlich schon für PyLucid interessiere: kann man das jsmd5 deaktivieren?
Noch nicht, weil es bisher keiner Nachgefragt hatte ;)

Im Grunde klappt der Login auch super... z.Z. allerdings nicht im IE7, was aber wohl nur ein dummer JS Fehler ist.

Es wäre aber IMHO recht einfach ein PlainText Login zusätzlich zu realisieren. Aber da es bisher keiner wollte, mit mir eingeschlossen, wollte ich mir die zusätzliche Arbeit ersparen ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten