# How can we sign a contract digitally between two parties?

I'm trying to sign a contract with another party, without using handwritten signatures.

I've just read through Applied Cryptography, but there doesn't seem to be a protocol that can solve this problem. Digital signatures simply don't work. Even if the other party signs the contract with his private key and I can verify it using his public key taken from a Certificate Authority, he can claim that he had lost his private key, and an imposer had signed the document.

In fact, he can shamelessly broadcast his own private key anonymously over the internet moments before he signed the document with me, thus securing his "proof" that everyone has his private key at a time before the document was signed. Besides this, there are many other reasons why digital signatures cannot achieve non-repudiation, as elaborated by D.W. in another post.

What alternatives do we have?

How can we make digital signing work?

-
One could use a hardware security module that will only sign a message when given the right password. $\hspace{.36 in}$ – Ricky Demer Feb 11 '14 at 19:47
@RickyDemer Sadly, I have lost said device. Oh and I had written down the password on a post-it attached to the device. What a shame... – orlp Feb 11 '14 at 20:54

No. Cryptography alone cannot solve this problem.

Solving this problem requires a combination of technical (e.g., cryptography, systems security) and non-technical (e.g., legal, regulatory, contractual) solutions. Even the technical part is not solely a cryptography question; it as much about systems security.

-

I think destroying the private key and using a notary could be some kind of solution to that problem.

1. Both Parties create a private and public key.
2. The public keys are signed by a CA.
3. Both parties sign the document with their private key.
4. After signing the document both parties destroy their private key.

After step 4 nobody can claim that he lost the private key and that somebody else did sign the document. Of course, all these steps must be supervised by a notary.

Ideally, both parties generate their keys on a computer with a fresh operating system and without and internet connection. This reduces the probability that a) malware is installed and b) that key material is transmitted to someone else. When the keys are generated the data on the computer must be destroyed. Again, all those steps should be supervised by a notary.

-

A theoretical concept for that is covered by so called contract signing protocols.

There are quite some research papers into this direction, such as the seminal paper and follow up works in the field of (optimistic) contract signing. For instance, this one or this one.

Such protocols always involve a trusted third party, although this party might not be required to be involved in the contract signing itself.

This fact that some trusted third party is required is not really surprising, as in the non-digital world we already early recognised that without a notary such stuff cannot really be done in a fair way ;)

-