Management of signature keys for government

Brian Gladman gladman at seven77.demon.co.uk
Wed, 4 Mar 1998 08:37:16 -0000


Thanks, Bodo, for this idea - I had wondered whether there might be this
sort of approach but I had not worked the idea through.  When I have a
moment I will think about the scheme you have suggested since we need some
mechanism of this kind if these things are going to be seen as trustworthy.

Thanks again.

   Brian

-----Original Message-----
From: Bodo Moeller <Bodo_Moeller@public.uni-hamburg.de>
To: ukcrypto@maillist.ox.ac.uk <ukcrypto@maillist.ox.ac.uk>
Date: 04 March 1998 00:30
Subject: Re: Management of signature keys for government


>Brian Gladman <gladman@seven77.demon.co.uk>:
>> Dave Howe <DHowe@tecsun.demon.co.uk>:
>
>>> I don't know why, but I seem completely unable to see why
>>> users can't generate their own keys for use in smart cards,
>>> using their own trusted software, and uplink their own trusted
>>> copy of the key to the smartcard.
>
>> One issue in the self generation of keys is how to prevent a user
>> repudiating their own key by revealing its private component.
>
>If DSA or the ElGamal signature algorithm in a prime-order subgroup
>of  (Z/pZ)*  is employed, then there is no need to argue who should
>generate the signing key.
>
>Assume that parameters  p,  q,  and  g  (with the usual meaning of
>those letters) have already been determined, e.g. by using the
>parameter generation algorithm from FIPS 186 with seeds provided by
>customer Carol.  Then the following scheme could be employed:
>
>(All computations are understood to be in the appropriate groups;
>i.e., those computations where  g  appears are  "mod p"  and the
>others are  "mod q".)
>   When Carol obtains her card, it already has a "temporary key"
>y = g^x  provided by the issuer of the card.  Of course, the card
>issuer is expected to use high quality randomness, not to store  x
>etc.  Carol can read out   y,  but the card will not reveal the secret
>exponent  x.  Now Carol creates a random number  z  and sends it to
>the card.  The card computes and stores a new private key
>     X := x*z
>and a new public key
>     Y := g^X   (= g^(x*z) = y^z).
>The card may then delete  x  and  y.
>
>Y  (together with  p, q, g)  is Carol's public key.  She computes it
>as  y^z  and can thus verify that the smartcard really used her random
>number  z.
>
>If at least one party -- the card issuer or Carol -- used a good random
>number generator (for  x  or  z, respectively), then the new private
>key  X  is also a good random number.  Specifically, if the card
>issuer tries to cheat, but Carol uses a good randomness source, then
>her key is okay.  The other way around, if the card issuer is fair and
>uses good random numbers, then deficiencies of Carol's random number
>generator do not hurt.  For Carol, finding out  X  is as hard as it is
>in the case where key generation is entirely the card issuer's job.
>(Of course, both parties should check the plausibility of parameters
>provided by the other one:  p  and  q  are really prime and have the
>correct length [and were created using the FIPS 186 algorithm with the
>correct seed];  q  divides  p-1;  g, y and  Y  are generators of the
>order  q  subgroup of  (Z/pZ)*.)
>
>
>This is the scheme from G.J. Simmons' paper at the 1993 IEEE Computer
>Security Workshop.  There, it is used during signing in order to
>thwart subliminal channels; i.e., two parties contribute to an
>ephemeral value  k  rather than to the private key  X  as in our
>application.  Here, it should probably be used for both purposes (so
>that Carol's card can't leak her private key in the  r (= g^k)
>components of her signatures).
>
>Bodo M"oller
><Bodo_Moeller@public.uni-hamburg.de>
>