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

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

Beitragvon BlackJack » Freitag 8. Dezember 2006, 11:25

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 8. Dezember 2006, 12:00

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 ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 20. Dezember 2006, 08:58

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

Beitragvon jens » Mittwoch 20. Dezember 2006, 11:21

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:

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 20. Dezember 2006, 17:47

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Freitag 9. Februar 2007, 15:10

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...

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

Beitragvon Y0Gi » Freitag 9. Februar 2007, 17:57

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 08:56

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 ;)

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

Beitragvon N317V » Montag 12. Februar 2007, 09:56

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 10:21

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

CMS in Python: http://www.pylucid.org
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

Beitragvon birkenfeld » Montag 12. Februar 2007, 10:30

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

Beitragvon N317V » Montag 12. Februar 2007, 10:52

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 11:27

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/

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

Beitragvon N317V » Montag 12. Februar 2007, 11:55

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 12. Februar 2007, 12:04

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...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder