--
At 09:02 AM 8/30/2000 -0700, Michael Thomas wrote:
 > A cross realm Kerberos based solution would be more than adequate to
 > give you a high level of confidence that a piece of information came
 > from the realm it claims to have come from.

While you are correct that we should use Kerberos like security 
servers,  Kerberos itself is broken. It has been broken for some time.

The problem is described in http://theory.stanford.edu/~tjw/krbpass.html, 
and with the passage of time the problem becomes ever worse, due to the 
increased power of offline dictionary attack hardware and software.

A modern security system, (which kerberos is not) must only permit online 
attacks on the password.  Kerberos permits offline attacks. In a modern 
system the attacker must only be able to test his guesses by using the 
guessed password to attempt to establish a secure connection to the 
security server.  After some large number of consecutive failures, the 
security server will temporarily disable the account, and send to the user 
an insecure notification containing a log of all information about the 
failed attempts.  After each successful logon, the system sends the user 
information about all previous failed attempts through the secure connection.

The proposal to use PGP keys or verisign keys uses modern security 
techniques to solve the wrong problem.

The proposal to use kerberos techniques addresses the right problem in the 
right way, but the particular details of the solution are obsolete.

I propose the following EKE like solution, similar to that described in my 
web page http://catalog.com/jamesd/kong/secure_video.htm

The user establishes a secure connection with the secure personal presence 
server.

The personal presence client logs in to the personal presence server using 
the name and password.  The password is never revealed to the server.   An 
outside attacker would have to try his guessed password by attempting to 
log on.  If he tried lots of logons, this would become noticeable.

The server knows, not the password p , but h(p)*G where G is an elliptic 
point that the server makes known to anyone.

When the user created his account, his client software informed the server 
of h(p)*G through https.  The software ensures that it gave this account 
creation information only to the real server, thanks to the usual https 
mechanism, which guarantees the server's true name.  The server does not 
need to verify the users true name.

Lower case letters stand for very large integers, upper case letters stand 
for elliptic points. h(x) means "one way hash of x "

The object of the logon protocol is to ensure that the client program is 
communicating with a server that knows h(p)*G , and the server knows it is 
communicating with a client who knows h(p)    In this the protocol differs 
from SPEKE, where both the client and the security server both know 
p.   The implementors have to keep in mind the usual EKE concerns described 
in http://world.std.com/~dpj/speke97.html.

When the user logs on he sends the server his logon name in the clear, The 
server generates a true random number b , and sends the user b*G .

The client similarly generates a true random number c and sends the server c*G.

An attacker can discover c*G, b*G, and G, but cannot calculate c or b from 
this information.

The client then generates the secret elliptic point (b*G)*[c+h(p)]

The server similarly generates the secret elliptic point b*[(c*G)+(h(p)*G)] 
, which will be equal to the point generated by the client.  This elliptic 
point is then used as the symmetric secret key for secure communications 
between client and the security server until the user logs off.

In order to succeed with the protocol, in order for the client to construct 
a secret elliptic point equal to that of the server, it must know h(p) 
corresponding to the server's h(p)*G
Of course, ultimately our objective is not secure communications with the 
security server, but secure communications between any  two users, and 
secure communications between a user  and all the various entities that are 
involved in setting up his communication.

The simplest way of solving this is the classic DH method, now patent free, 
where each entity generates one true random transient public/private key 
pair, which lasts the duration of a login session.  Each security server 
authenticates the public keys of its users and entities, and only the user 
or entity knows the private key.

This could potentially lead to a very large number of public key 
operations, which are quite slow  Because the keys change infrequently, 
this problem can be solved by each entity caching the results of previous 
public key operations.   The cache is discarded when the entity logs out..

When Bob sends an authenticated and secure message to Ann, saying "Hi Ann, 
how are things?" it would use intolerable bandwidth if that message, and 
each of the various acks and nacks by various entities required to locate 
Ann and set up and send the message, required a verisign style public key 
signature, or pgp style public key signatue.

Instead, for any two entities, there will be a unique DH shared secret, 
constructed from each one's DH key.  Each obtains the other's public DH key 
from the others security server.  That unique shared secret will not change 
as long as both entities remain logged on to their security server.   Since 
each ack and nack will be sent encrypted using that unique and unchanging 
shared secret, no  public key operations will be needed to prove who is 
sending the ack, since only the apparent author or the apparent recipient 
could decrypt it or encrypt it.  We have only one public key operation per 
logon time per pair of entities that need to communicate securely, which 
will have an insignificant bandwidth and computational cost, not several 
public key operations per ack and nack, as would be required if we employed 
a signature system similar to that employed by verisign or PGP.


     --digsig
          James A. Donald
      6YeGpsZR+nOTh/cGwvITnSR3TdzclVpR0+pr3YYQdkG
      i4N8MYu3lFyxRz7rj6IX3CMlEt8P5QsQNrYF+dGO
      478RouxqobjnPMPR6Cg+Lf/c/t2dukyvpj+QkrgkK


Reply via email to