1. Homomorphic Encryption¶
1.1. Definition¶
The encryption algorithm \(E()\) is homomorphic if given \(E(x)\) and \(E(y)\), one can obtain \(E(x~op~y)\) without decrypting \(x\) and \(y\).
The \(op\) is for addition / multiplication (XOR / AND for bits).
partially homomorphism : arbitrary addition or multiplication
fully homomorphism: arbitrary addition and multiplication
1.2. Example¶
RSA:
Let \(c_1 = E(M_1)\) and \(c_2 = E(M_2)\),
So RSA has multiplicative homomorphism.
ELGamal
For a cyclic group \(G\) order of \(q\) and generator \(g\),
public key: \((G, q, g, h)\) where \(h=g^x\)
private key: \(x\)
ElGamal also has multiplicative homomorphism.
GM:
For \(E(b_1) = x^{b_1} r_1^2~mod~n\) and \(E(b_2) = x^{b_2} r_2^2~mod~n\)
GM has additive homomorphism.
We need better homomorphic algorithms because all the algorithms above are neither semantic secure nor support fully homomorphism.