simple (&secure??) PW-based web login (was Re: Another entry in theinternet security hall of shame....)

Amir Herzberg herzbea at macs.biu.ac.il
Wed Sep 14 07:47:01 EDT 2005


Below is a proposal, based on the problem statement by Paul Hoffman:

>In many deployments of "SSL first, then authenticate the user with a
>password", the "site" consists of two or more machines. Many or most
>high-traffic secure sites use SSL front-end systems to terminate the SSL
>connection, then pass the raw HTTP back to one or more web servers
>inside the network.
>
>The reason I bring this up is that the SSL server generally does not
>have access to the users' credentials. It could, of course, but in
>today's environments, it doesn't. Changing to TLS-PSK involves not only
>changing all the client SSL software and server SSL software, but also
>the what the SSL server's role in the transaction is.

Excellent point. From which follows the question: can we improve the 
security of password-based web login, with less drastic changes - at 
least in the servers? Or is TLS-PSK the best/only way for us to improve 
pw-based web login?

I think we can. For simplicity and concreteness, let's say we have the 
following architecture: regular SSL-supporting client and server, and 
behind the SSL server we have a web server with the improved pw-login 
mechanism. We want to support some `improved pw-login clients`, let's 
say these will be regular browsers with an extension such as (a new 
version of) TrustBar.

Client and server begin with SSL `as is`. Now, the web server sends over 
this SSL-protected page a login page. Browsers without the extension, 
will handle it as a `classical` login form. But if the extension exists, 
it will detect that the server supports improved pw-based login, 
signalled e.g. with a META tag. The tag may also include number, denoted 
_Iterations_, which is the request number of hash-function iterations.

Now, we need to consider two cases: a `nomad` user, vs. a `stationary` 
user. Stationary case is much nicer, and can use a single PW for all 
sites (`single sign on`), and/or biometric/device solutions (which I 
won't discuss).

For a stationary user, the extension compares _Iterations_ and confirm 
it is at most one less than previous value of _Iterations_ used with 
this site. Also, the extension keeps a table r(PK) mapping the public 
key PK of each login site to an independant random value (we need this 
as real random value and can't derive them from the PW, to prevent 
dictionary attacks by fake sites).

Now, using a single PW, extension computes for a site with given PK the 
value H(0)=h(PK, h(r(PK), PW). It then sends to the web server 
H(_Iterations_), by H(i)=h(H(i-1)) - the usual trick. This looks pretty 
good at first sight, so let's see who finds a big, unfixable hole in 
this simple design - which requires `only` support by a script on the 
web server (and of course an appropriate extension, but that's something 
we know how to do... and we can do some `secure UI` to deal with 
spoofing by other applications on the PC).

Well, the case of nomad users - using a public terminal, without any 
secure storage facility - is less cool, imho, but there are some 
solutions there as well. The first is to use the old S/Key scratchpad 
method - user prints a few `one time passwords` for each of his login 
sites at home, to use on the road. Well, maybe not the most friendly 
solution, but will work (for known sites only). Notice that the `public 
PC` does not even need to have the extension for this low-tech solution 
to work (of course, this may allow a rogue site/PC to learn a specific 
OTP for a specific login site).

Another solution is to use site-specific randomizers, i.e. user will 
provide the value for the r(PK) table - or, we can give to the user the 
values of r(PK) table... these do NOT have to be passwords, since their 
role is really to act as `salt` - make it impractical for sites to do 
dictionary attack on the `main` password. Maybe we can get away with 
this, and try to prevent users from using the same values for multiple 
sites... Of course, in this solution, user still enters her real PW to 
the hosting, public PC - and security fails against key loggers etc. 
Also this still requires us to use the extension on these machines... so 
I like the previous solution better.

Ok, enough for now; now tell me what's wrong, etc.... It is definitely 
too simple to be any good.
-- 
Best regards,

Amir Herzberg

Associate Professor
Department of Computer Science
Bar Ilan University
http://AmirHerzberg.com
Try TrustBar - improved browser security UI: 
http://AmirHerzberg.com/TrustBar
Visit my Hall Of Shame of Unprotected Login pages: 
http://AmirHerzberg.com/shame

---------------------------------------------------------------------
The Cryptography Mailing List
Unsubscribe by sending "unsubscribe cryptography" to majordomo at metzdowd.com



More information about the cryptography mailing list