Cryptography/Protocols

The ideas used in cryptography have been used to create a large number of protocols.

The original application of these ideas was secret hiding -- Alice wanted to send a message to Bob, but Alice and Bob didn't want anyone else to know exactly what the message said.

More recently, many "cryptographic protocols" have been developed that do useful things *other* than secret hiding.

Some cryptographic protocols make secret hiding better or more convenient in some way --

key-agreement protocols such as Diffie-Hellman key exchange

Message authentication

(FIXME: say something here about commutative ciphers)

Other cryptographic protocols and cryptography-related ideas are used to improve on non-cryptographic systems:

Early "everyone in favor, hold up their hands while I count" voting systems don't hide any secrets; end-to-end auditable voting systems (which internally use cryptographic ideas) are arguably better.

mental poker

convergent encryption

digital signatures

version identifiers in Mercurial and git.

error-detection and error-correction codes.

the rsync protocol

verifiable computing

various ideas for improving (non-secret) email to reduce the amount of spam, such as hashcash, Sender ID, DomainKeys Identified Mail (DKIM), etc.

In particular, the first fully homomorphic encryption was announced in 2009 by Craig Gentry. It is widely expected that homomorphic encryption will make it relatively easy to do things that were previously considered impossible or infeasible.