Homomorphic encryption is a form of encryption that allows for some computations to be performed on the ciphertext without decrypting the ciphertext. The result of the operations is returned as an encrypted result, which when decrypted is the same as if some operation was performed on the original plaintext. Some applications for such a system are the implementation of secure voting systems and cloud computing. There are many forms of partially homomorphic cryptosystems that allow for some specific operations to be performed, but due to some very major drawbacks of fully homomorphic encryption, fully homomorphic encryption is not very practical. Some examples of such drawbacks are processing time and implementation complexity.
Many cryptosystems with homomorphic properties have been around for quite awhile. For example, RSA, Paillier, and ElGamal are all at at least partially homomorphic. It was thought that a fully homomorphic cryptosystem was possible, although no one had yet implemented such a system. In 2009 the first fully homomorphic cryptosystem was developed by Craig Gentry. Rather than using simple modular arithmetic like most other cryptosystems, Gentry's cryptosystem is lattice-based. While this was very exciting for the field of cryptography, just because such a system is possible does not mean it is practical. The lattice-based cryptosystem presented by Gentry requires a very large ciphertext relative to the plaintext. The fact that it is lattice-based also makes implementation very complex and makes any operations run very slowly on the ciphertext.