开发者

how to prove that someone's previous public key was really theirs?

I'm in the planning开发者_如何学Go stage of an open-source credit clearing system, and my idea is to use GPG keys to sign IOUs. But I'm concerned that if Bob signs an IOU he emails to Alice, then later deletes his keys, creates a new keypair and uploads his new key to keyservers, he'll be able to plausibly deny ownership of the IOU. Is there some programmatic way of proving a key once belonged to the owner of the email account that sent the signed email? My google-fu is failing me on this one.

Update: "non-repudiation" is the word I was looking for. Still researching...


Most of the time non-repudiation is achieved with cryptographic time-stamps. A time-stamp is a proof of existence of a document at a given time and is issued by a trustworthy third-party with sign the document hash along with the time at which this document was submitted.

I do not know GPG model very well but there is probably something like a certificate which binds the public key with the key owner identity. You have to time-stamp this certificate. Actually you should also time-stamp a proof that that Bob's key is not revoked. In X.509 this is achieved by time-stamping the current revocation list which proves the "not revoked" status the key.

Cryptographic time-stamp are standardized in RFC 3161

More globally you point out one of the numerous issues and complexity of advanced digital electronic signatures: non-repudiation, long-term validation, signature commitment rules... This is the main goals of AdES standards (CAdES, XAdES and PAdES)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜