Homomorphic encryption is one of the hot research topics in the field of encryption. This technique enables the computation to be done in the encrypted data without requiring the encryption key. The basic flow of homomorphic encryption can be expressed as follows:
1. The user uses KeyGenerator()to create a key pair (SecretKEY, PublicKey).
2. The user uses Encrypt() and the above PublicKey to encrypt the original dataDATA, and get CipherText, i.e.,CipherText =Encrypt(PublicKey,DATA).
3. The third party, like the cloud, executes Evaluate() based on the computation functionf() on the above CiperText and gets CiperTextResult = Evaluate(f, CipherText), which equals to Encrypt(PublicKey,f(DATA)).
4. The user uses Decrypt() to decrypt theCiperTextResult and get thePlainResult = Decrypt(SecretKEY,CiperTextResult). Combine equations in step 3 and 4, we can get PlainResult =Decrypt(SecretKEY, Encrypt(PublicKey,f(DATA))) =f(DATA).