Patent ID: 7480384

Claim:
A method for a second machine to distribute a public cryptographic key (PK s ) to a first machine, said method comprising: receiving message data, by the second machine from the first machine as a result of the message data having been sent by the first machine to the second machine, wherein the message data consists of a concatenation of an identifier (ID) of the first machine, a character string (StrPK c ) denoting that a private key (PK c ) of the first machine has been compromised, and eSK c (Hash(ID,StrPK c )), wherein Hash(ID,StrPK c ) denotes a hashing of ID and StrPK c , and wherein eSK c (Hash(ID,StrPK c )) denotes an encryption of Hash(ID,StrPK c ) using the private key PK c to form a signature represented by the encryption; after said receiving the message data, said second machine verifying the signature using a public key associated with PK c ; after a suspension of data exchange between the first machine and the second machine after said verifying the signature, receiving a message, by the second machine from the first machine as a result of the message having been sent by the first machine to the second machine, wherein the message consists of a concatenation of ID, a first Diffie-Hellman public key (D c ), and a prime modulus (P), wherein Dc=(PW**R c ) Mod P, wherein PW is a secret password known by both the first machine and the second machine, and wherein R c is a first random number; after said receiving the message, generating, by the second machine, a second random number (R s ); after said generating R s , computing, by the second machine, a second Diffie-Hellman public key (D s ) according to D s =(PW**R s ) Mod P; after said computing D s , computing, by the second machine, a Diffie-Hellman symmetric secret key (S) according to S=(Dc**R s ) Mod P; after said computing S, providing, by the second machine, an argument (ARG s ) that consists of a concatenation of ID, D c , P, PK s , D s , and S; after said providing ARG s , hashing ARG s , by the second machine, to provide a hashed value denoted as Hash(ARG s ); after said hashing ARG s , forming, by the second machine, an extended concatenation EXT s that consists of a concatenation of ID, PK s , D s , and Hash(ARG s ); and after said forming EXT s , sending, by the second machine to the first machine, EXT s .