Patent ID: 7796761

Claim:
A system, comprising: a second machine; and a program storage device, said program storage device comprising a storage medium in which program instructions are stored, said program instructions configured to be read and executed by the second machine to perform a method for the 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, said method further comprising: after said receiving the message data, said second machine verifying the signature using a public key associated with PK C ; and 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 comprises 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, said method further comprising: 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 (ARGs) that comprises 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 comprises 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 .