#4 Por el ejemplo que da, Google debería estar configurado con funciones que toman como entrada datos cifrados y una clave publica, y devolver el resultado, también con esa clave publica.
enc_sum = homomorphic_sum(enc1, enc2, public_key) <--- esta es la consulta, y lógicamente Google debe saber como se hace (no suma las claves, usa una propiedad matemática.
#lado cliente quiere sumar 5+3
public_key, private_key = generate_keypair(128)
enc1 = encrypt(5, public_key) #enc1 es un churro de 128 bytes
enc2 = encrypt(3, public_key) #enc2 es otro
#se envía la consulta al lado servidor
enc_sum = homomorphic_sum(enc1, enc2, public_key) <--- esta es la consulta, y lógicamente Google debe saber como se hace (no suma las claves, usa una propiedad matemática.
#lado cliente
dec_sum = decrypt(enc_sum, private_key, public_key)
print(dec_sum) # 8