JensDiemer
CryptoIdee

In PyLucid hab ich mir ja den MD5-JS-Login ausgefriemelt: http://pylucid.org/index.py?p=/Doku/JS-MD5+Login

Die Frage ist, ob man das besser machen kann... Und kiesner aus dem IRC hatte dazu eine Idee: http://en.wikipedia.org/wiki/Diffie-Hellman

(21:38:35) kiesner: jedie, was Du willst: http://en.wikipedia.org/wiki/Diffie-Hellman
(21:38:56) kiesner: Mit denen tauscht Du bei der Registrierung zwischen Server und Client einen Schl?ssel aus.
(21:39:03) kiesner: Mit diesem Schl?ssel verschl?sselst Du das Kennwort.
(21:39:10) kiesner: Das wird dann bei der Registrierung verschl?sselt ?bertragen.
(21:39:21) kiesner: Der Server speichert eine MD5-Summe.
(21:39:40) kiesner: Nachher wird beim einloggen einfach nur noch die MD5-Summe ?bertragen.
(21:39:56) kiesner: Und diese halt mit noch irgendwas anderem gehasht.
(21:40:07) kiesner: Dann kannst Du auch Dein 4+x-Verfahren benutzen, das soweit i.O. ist.
(21:40:35) jedie: "4+x-Verfahren" <- interessant... Muß ich mir merken ;)
(21:40:48) jedie: Aber geht das auch nur mit Python <-> JS ?
(21:40:58) jedie: Und das alles auf CGI Basis?
(21:41:11) kiesner: Jo.
(21:41:15) kiesner: Python kann mit longs rechnen.
(21:41:31) kiesner: F?r JavaScript gibts auf http://shop-js.sourceforge.net/crypto2.htm eine Implementierung von long-number arithmetic.
(21:41:39) kiesner: (das ganze RSA-ged?ns dazu brauchst Du nicht)
(21:41:52) kiesner: Du mu?t auf dem Server eine Primzahl g und p erstellen (am besten 1024-bit)
(21:41:55) kiesner: Die schickst Du im Request an den Client mit.
(21:42:07) kiesner: Der Client muss dann mittels AJAX halt das Diffie-Hellman-Verfahren machen.
(21:42:23) kiesner: Dann haben beide einen Schl?ssel um RC4 (was auch in dem JavaScript da implementiert ist) zu machen.
(21:42:34) kiesner: Sie k?nnen also das Kennwort beim Registrieren verschl?sselt ?bertragen.
(21:42:36) xorAxAx: erfinde doch nicht das rad neu, sowas sollte es schon geben
(21:42:46) kiesner: xorAxAx, f?r JS? Hab nix gefunden auf die Schnelle...
(21:42:52) xorAxAx: und solche algorithmen sicher selbst zu implementieren, scheitert oft
(21:42:54) kiesner: Sonst gibts das nat?rlich schon, SSL genannt. ;-)
(21:42:57) xorAxAx: kiesner: dann such nochmal :)
(21:43:08) kiesner: xorAxAx, sag das jedie. Er fragt. ;-)
(21:43:15) jedie: :)
(21:43:45) Hirion [n=hirion@draugr.de] hat den Raum betreten.
(21:43:53) jedie: Also auf dem sf-Seite steht die "Change Log" ganz unten auf 2002...
(21:43:59) kiesner: jedie, und?
(21:44:14) jedie: Naja, ob das wirklich geht?
(21:44:36) kiesner: jedie, ich hab mir die Quellen nicht angeguckt.
(21:44:39) kiesner: Sollte aber doch eigentlich schon gehen.
(21:44:43) jedie: Nun frage ich mich gerade, warum das nicht schon Leute einsetzten?
(21:44:49) jedie: Weil es SSL gibt?
(21:44:56) kiesner: jedie, weil es relativ lahm ist und weil es ssl gibt? ;-)
(21:44:59) jedie: Was aber nicht immer verfügbar ist...
(21:45:20) jedie: Ist die Frage wie lahm, lahm ist ;)
(21:45:22) kiesner: Auf jeden Fall ist modulo-exponentiation was n?mlich Diffie-Hellman-Schl?sseltausch braucht eigentlich relativ trivial zu implementieren.
(21:45:33) jedie: Sollte man mal auf jeden Fall Probieren...
(21:45:37) kiesner: Man kann also den Quellcode durchgucken.
(21:45:43) kiesner: (und verstehen, denke ich mal
(21:45:44) kiesner: )
(21:45:52) kiesner: Die Primzahlgenerierung machst Du auf dem Server, das braucht am mei?ten Zeit.
(21:46:06) jedie: Also MD5.js ist auch recht umfangreich...
(21:46:25) kiesner: Auf jeden Fall hast Du so einen "abh?rsicheren" Kanal um einen Verschl?sselungsschl?ssel auszutauschen mit dem Du das Kennwort beim Registrieren verschl?sseln kannst.
(21:46:26) jedie: kiesner: Schau mal hier: http://aktuell.de.selfhtml.org/artikel/javascript/md5/
(21:46:33) kiesner: jedie, hab ich schon-
(21:46:40) kiesner: In C o.?. ist der aber auch nicht k?rzer.
(21:46:44) kiesner: Der Algorithmus ist so lang.
(21:46:52) jedie: Was mich da stutzig macht ist:
Es gibt kein solches Kommando.
(21:46:56) jedie:  /* Einige grundlegenden Funktionen müssen wegen  * Javascript Fehlern umgeschrieben werden.  * Man versuche z.B. 0xffffffff >> 4 zu berechnen..  * Die nun verwendeten Funktionen sind zwar langsamer als die Originale,  * aber sie funktionieren.  */
(21:47:43) jedie: kiesner: Also ein Versuch ist es Wert.. Wobei ich auch noch keine AJAX Erfahrung hab...
(21:47:46) kiesner: jedie, k.A. kann gut sein dass da ein JS-Implementationsbug ist, der zum Beispiel aus 0xffffffff -1 macht, o.?., und -1 >> 4 = 0
(21:48:10) kiesner: 0xffffffff ist -1.
(21:48:19) kiesner: Nur ist es halt interpretationssache was -1 >> 4 ist.
(21:48:33) ***jedie bin kurz weg
(21:48:37) kiesner: (zumindest bei zweierkomplement Zahlen)
(21:51:52) kiesner: Wogegen Du Dich halt dadurch sch?tzt ist den passiven MITM-Angriff.
(21:51:59) kiesner: Gegen den aktiven kannst Du auch hier nichts machen.
(21:52:33) ryu heißt nun anna
(21:52:46) jedie: kiesner: re
(21:57:42) kiesner: Wenn Du im Endeffekt die ?bertragung des Kennworts beim ersten mal sicher machen kannst, ist auch der Rest des Algorithmus den Du Dir ausgedacht hast sicher (w?rde ich mal so sagen), da man im Endeffekt nur brute-forcen kann.

JensDiemer/CryptoIdee (last edited 2009-06-17 16:14:17 by localhost)