Patent ID: 6724893
Filing Date: 2004-04-20
Classification: H04L

Abstract:
A method of passing a cryptographic key that allows recover of the key by a third party, comprising the steps of:a) generating a first random number â€œk1aâ€  by a first user, where â€œk1aâ€  is a non-zero member of a group â€œZqâ€  and where â€œqâ€  is a prime number; b) generating â€œkey1=m(k1a)â€  by the first user, where â€œmâ€  is a hashing function; c) generating a second random number â€œk2aâ€  by the first user, where â€œk2aâ€  is a non-zero member of the group â€œZqâ€ ; d) computing â€œy1=m(hp2(k2a))â€  by the first user, where â€œhp2â€  is a public function of a public-key encryption function of a second user; e) computing â€œy2=m(Hp(k1a))â€  by the first user, where â€œHpâ€  is a public function of a public-key encryption function of a key escrow agent; f) computing â€œr1=f(y1,k1a)â€  by the first user, where â€œfâ€  is a secure encryption function; g) computing â€œz=f(y2, key1)â€  by the first user; h) computing a signature, by the first user, by computing â€œA=(1/k2a)(xaB+k1aC)mod q,â€ where â€œzâ€ , â€œr1â€ , and â€œsâ€  are substituted for â€œAâ€ , â€œBâ€ , and â€œC,â€  where the equation for computing a signature is solved for â€œs,â€  and where â€œxaâ€  is a long-term secret of the first user; i) computing â€œG=g{circumflex over ( )}k1a mod pâ€  by the first user; j) passing (G,z,r1,s) from the first user to the second user; k) receiving â€œY=g{circumflex over ( )}xa mod pâ€  by the second user, where â€œgâ€  is a base element, and where â€œpâ€  is a prime integer; l) verifying the computed signature, by the second user, by computing â€œT=(YB*GC)((1/A) mod q) mod p,â€  where â€œzâ€ , â€œr1â€ , and â€œsâ€  are substituted for â€œAâ€ , â€œBâ€ , and â€œCâ€ ; m) computing â€œy1=m(hs2(T))â€  by the second user, where â€œhs2â€  is a secret function of the public-key encryption function of the second user; n) computing â€œk1a=(fâˆ’1)(y1,r1)â€  by the second user; o) computing â€œkey1=m(k1a)â€  by the second user; p) intercepting, by a third party, (G,z,r1,s) transmitted from the first user to the second user; q) presenting â€œGâ€  and â€œz,â€  by the third party, to a key-escrow agent; r) computing â€œy2=m(Hs(G))â€  by the key-escrow agent, where â€œHsâ€  is a secret function of the public-key encryption function of the key-escrow agent; s) computing â€œkey2=(fâˆ’1)(y2, z)â€  by the key-escrow agent, where key2=key1; t) returning â€œkey2â€  from the key-escrow agent to the third party if the third party is authorized to receive â€œkey2â€ ; and u) using â€œkey2,â€  by the authorized third party, to decrypt an encrypted message sent between the first user and the second user which was encrypted using â€œkey1â€ .