An Introduction to Homomorphic Encryption Systems
By: Atharv Singh Patlan
Tags: Cloud Computing, Math, Cryptography, Homomorphic Encryption, Programming

Homomorphic Encryption

According to Wikipedia, Homomorphic encryption is a form of encryption allowing one to perform calculations on encrypted data without decrypting it first. The computation result is encrypted; when decrypted, the output is exactly the same as the output if the operations had been performed on the unencrypted data.

It has been observed that most of the data theft from the cloud is possible at two possible times. It is either done when either the data is stored in plain text (is unencrypted), or if it is encrypted, it is done while the data is being decrypted by a user to view. As can be seen by the definition of Homomorphic encryption, as we do not need to decrypt the data to perform operations on it, using it will certainly make the entire cloud system much more secure to use and store data, preventing data theft and privacy breaches.

The possibility of leakage of sensitive information from complex IT systems can’t be ignored and is too big a risk to not pay attention to. Hence, there is a growing interest in applying homomorphic technology to provide data privacy and decentralized access to organizational data.

In a more formal sense, as presented by this blog, suppose we have a function f that we employ to perform a calculation on two inputs x and y and outputs a result f(x, y). Then, a homomorphic encryption scheme lets one perform the function f on the individual encrypted elements, such that H(f(x, y)) = f(H(x), H(y)), where H is the HE function. The function f is a simple addition or multiplication function, and at the moment, we have not been able to develop a scheme that allows us to use an arbitrary function f.

A graphical description of the working of HE

There are three types of homomorphic encryption:

Partially homomorphic encryption (PHE) enables only one type of mathematical operation (such as multiplication) on a given data set for an unlimited number of times. Somewhat homomorphic encryption (SHE) is more permissive yet still restrictive, allowing for both addition and multiplication on a given data set only a few times. Fully homomorphic encryption (FHE) is the best of all worlds, allowing different types of operations on data for unlimited times, but with a significant performance tradeoff.

Wikipedia is an excellent source for knowing about the methods employed by each of these encryption systems.

Each approach leans toward offering either performance, utility, or protection, with FHE being highly intensive and currently inefficient (and therefore offering poor performance in a real-world scenario).

The current homomorphic encryption developments are a constant balancing act among the three to achieve an optimal solution. Once unlocked, the potential of FHE will bring forward ground-breaking possibilities, as detailed in the section below.

So, how does one employ this functionality provided by HE? Let’s say that one wants to perform some computation in the cloud using some data but still want to preserve its privacy. So, by using HE, he or she can send the encrypted version of the data to the cloud, perform the computation there and get back the encrypted result that one can decrypt later on. All these steps don’t require the client to stay connected (to provide additional help during the computation), and that’s a benefit of HE.