Posted: Mon Jul 25, 2005 11:51 am
Hmm... we really should have a tutorial here about that.
Okay, here are my misgivings about the JavaScript implementation of SSL:
The point is, even though the "password" is never known, the sniffed hash is good enough. The only way to do SSL is with Public Key encryption. Unfortunantely, you can't send a JS library that does that (or can you)? I'm saying that this hacking does at the very least minimal good.
The challenge outlined http://pajhome.org.uk/crypt/md5/auth.html requires both a preemptive session cookie / identifier and extra queries to the database. But it does solve the problem outlined above.
Okay, here are my misgivings about the JavaScript implementation of SSL:
Code: Select all
Normal Password System:
====== ========
|USER| ------------->|SERVER|
====== password ========
cleartext | password
| into
| hash (this process
\/ will move in
========== JS implementation)
|DATABASE|
----------
database_hash == hash
==========
SSL System
====== encrypted ======== decrypt and hash
|USER| |---password--> |SERVER| ---------------
====== | ======== | |
| |_Public Key |_Private Key |
|___Password \/
==========
|DATABASE|
==========
database_hash == hash
==========
JS System
====== ====== ========
|USER| |--hashed password-->SERVER->DATABASE
====== | ====== ========
|_JS Hash Function ||
database_hash == hash
JS System Hacked
Hacker has compromised server and knows the
password hashes OR has sniffed the hashed
password (second is more likely)
===========
MALICIOUS ---hashed password (sniffed)--> ETC
USER bypassed JS
===========
|_JS Hash FunctionThe challenge outlined http://pajhome.org.uk/crypt/md5/auth.html requires both a preemptive session cookie / identifier and extra queries to the database. But it does solve the problem outlined above.