(Fully) Homomorphic Encryption - Shortened
(Fully) Homomorphic Encryption - Shortened
Encryption
Presentation by Tran Tien Dat
KeyGen:
Select a random P-bit odd integer p as the secret key
Encrypt(p, m):
Output ciphertext c = m + 2r + pq
where r is a random (N-1)-bit number,
q is a random Q-bit number.
Decrypt(p, c):
Output m = (c mod p) mod 2
Validity
Encrypt(p, m):= m + 2r + pq
Decrypt(p, c):= (c mod p) mod 2
Decrypt(p, Encrypt(p, m)) = Decrypt(p, m + 2r + pq)
= ((m + 2r + pq) mod p) mod 2
= (m + 2r) mod 2
=m
Works only if m + 2r < p
Satisfied initially because m + 2r is N-bit, p is P-bit, N < P
r is called the noise
Example: p = 17, m = 1
Encrypt(p, m) = c = m + 2r + pq = 1 + 2 . 0 + 17 . 2 = 39 (choose r = 0, q = 2)
Decrypt(p, c) = (c mod p) mod 2 = (39 mod 17) mod 2 = 5 mod 2 = 1 = m
Homomorphic Addition
c1 = Encrypt(p, m1) = m1 + 2r1 + pq1
Homomorphic Multiplication
c1 = Encrypt(p, m1) = m1 + 2r1 + pq1