This is a solved problem, under slightly different assumptions.

At 07:34 AM 7/20/00 -0700, James A. Donald wrote:
>     --
>Weak user keys.
>
>Suppose the user's key p, may be weak and easily guessed from G^p
>
>Suppose the key server constructs for each user a strong supplementary 
>key, q. which the server knows but the user does not know.
>
>We would like the keyserver to protect people who are not so paranoid as 
>to protect themselves from the keyserver.

This can be done by using p to establish a password-authenticated secure 
channel to the server
and retrieve q through that channel.  The client combines p and q to 
re-create the private key.
The public key that corresponds with the private key is made public.

>[1] We want a public key system that does not make public G^p, though it 
>will make public G^q and G^(pq).
>
>[2] A signature in this public key system should show that the document 
>has been signed by someone who knows p, with the assistance of someone who 
>knows both q and the shared secret key, G^p.
>
>[3] Someone who knows G^q and G^(pq) should be able to check the signature 
>without knowing G^p, p, or q.
>
>[4] Anyone knowing G^q and G^(pq) should be able encrypt a document in 
>such a way that only a person who knows p can decrypt it, provided  he has 
>the assistance of someone who knows q and G^p
>
>I have not been able to design such a system

... Because at least one of your assumptions was wrong.  As David Wagner 
noted, there is no method
that works in this model.  Knowing G^q and G^(pq) one can test and verify 
guesses for p.
If you get rid of goals [3] and [4], limiting the public information to the 
public key you can make
this work.

>One can achieve almost the same effect by having transient user keys 
>separate from the user logon key, random keys which randomly generated  by 
>the users client software and authenticated by the server, but this 
>exposes the client to man in the middle attack from the server, and only 
>works for instant messaging and for transactions that either fail or 
>complete within a single logon session at the server.

I'm not sure what method you have in mind, but there are several ways to do 
achieve
goals [1] and [2] without MITM attack.  The general model works like this:

Using a password-authenticated key exchange, the client proves knowledge of 
p to
a server that knows f(p) (a special one way transformation of p) and 
derives a mutually
authenticated session key K.

K is mutually authenticated by the client's knowledge of p, and the 
server's knowledge of f(p).
There are several ways to do this, like B-SPEKE, SRP, A-EKE, AMP, all 
described in papers at
<www.integritysciences.com>.

The client then retrieves q through the channel encrypted with K, and then
combines p and q to re-create the private key.

In some of these methods, f(p) is in fact G^p, so you weren't too far off 
the mark.

----------------------------------
David P. Jablon
[EMAIL PROTECTED]
www.IntegritySciences.com


Reply via email to