The idea is to create and standardize a Password based Zero-Knowledge, Mutual Authentication extension for SSL/TLS.

Name

Comments

TLS-PSK

Is an RFC already

TLS-SRP

Implementations are available

Waidner

Gühring

It´s broken, it´s not zero knowledge.

User Interface

Quoted from http://www.cs.auckland.ac.nz/~pgut001/pubs/man_usability.pdf :

Design Example: TLS Password-based Authentication
    A useful design exercise for visual cues involves the use of TLS´ password-based
    authentication (TLS-PSK). What´s required to effectively apply TLS-PSK are three things:
     
                1.   A means of indicating that TLS-PSK security is in effect, namely that both
                     client and server have performed a mutual authentication process.
                2.   An unmistakeable means of obtaining the user password that can´t be
                     spoofed by something like a password-entry dialog on a normal web page.
                3.   An unmistakeable link between the TLS-PSK authentication process and the
                     web page that it´s protecting.

           The obvious way to meet the first requirement is to set the URL bar to a distinctive
           colour when TLS-PSK is in effect. Users have become accustomed to this as a
           security indicator because some browsers already do this for standard SSL/TLS,
           setting the URL bar to light yellow, and browser vendors have indicated that they
           plan to extend this usage in future browser versions. For TLS-PSK well’ use light
           blue to differentiate it from the standard SSL/TLS security, producing a non-zero
           Hamming weight for the security indicators. Using an in-band indicator (for example
           something present on the web page) is a bad idea, both because as the previous
           section showed it´s quite easily spoofable by an attacker, and because usability tests
           on such an interface have shown that users just consider it part of the web page and
           don´t pay any attention to it [32].
           To meet the second and third requirements, instead of popping up a normal password-
           entry dialog box in front of the web page (which could be coming from hostile code
           on the web page itself), we make the blue URL bar zoom out into a blue-tinted or
           blue-bordered password-entry dialog, and then zoom back into the blue URL bar once
           the TLS-PSK authentication is complete.

  This process creates a clear indication even for novice users of a connection between
  the URL bar indicating that TLS-PSK security is in effect, the TLS-PSK password-
  entry system, and the final result of the authentication. The user learning task has
  been simplified to a single bit, "If you don´t see the blue indicators and graphical 
  effects, run away". This is no more complex than the "If you don´t see the yellow
  URL bar, run away" exercise that users have already demonstrated a reasonable grasp
  of.
  
  Finally, this authentication mechanism is an integral part of the critical action
  sequence. If it´s implemented as described above then you can´t do TLS-PSK 
  authentication without being exposed to the security interface. Unlike the certificate
  check in standard SSL/TLS security, you can´t choose to avoid it.

TLS-PSK

http://www.ietf.org/rfc/rfc4279.txt For this application, the Diffie-Helman variant of TLS-PSK MUST be used. The problem I see with TLS-PSK, is that it isn´t a zero-knowledge proof, and is therefore attackable with dictionary based Active Man-in-the-Middle attacks.

TLS-SRP

http://www.ietf.org/internet-drafts/draft-ietf-tls-srp-12.txt

Waidner

http://citeseer.ist.psu.edu/buhler00secure.html

Gühring

First a normal Diffie-Hellman Key Agreement is done.

The same procedure is done in the other direction with a nonce generated by B too. The calculations and messages can be parallelized and done at the same time as the Diffie-Helman agreement to speed up the handshake.

The price of this method is 1 Diffie-Hellman exchange, 2 nonces (can be /dev/urandom quality), 4 block encryptions (AES could be used here), 4 hash functions (SHA2/SHA1), and 2 more messages in each direction. I think that is efficient enough.

The attack is to create a random string, and send that to B. Be decrypts it with the real password, and produces the hash, and sends the hash back. Now you can do a dictionary attack by decrypting the random number with the dictionary password, and hashing it together with the dictionary password and the key.

MutualAuthentication (last edited 2008-05-22 22:16:42 by anonymous)