Introduction to Homomorphic Cryptography and its State of the Art:
Homomorphic cryptography is a branch of cryptography that deals with the manipulation of encrypted data without the need for decryption. This technology enables computations to be performed directly on encrypted data, providing increased security and privacy. The field of homomorphic cryptography is still in its early stages, but it has already shown great potential for applications in areas such as cloud computing, database outsourcing, and electronic voting.
The state of the art in homomorphic cryptography has been rapidly evolving, with significant advances in the development of new algorithms and techniques. Currently, fully homomorphic encryption (FHE) is considered the gold standard in the field, allowing for arbitrary computations to be performed on encrypted data. However, FHE schemes are still limited by high computational overhead and large ciphertext sizes, making them unsuitable for many practical applications.
Approximate homomorphic encryption (AHE) is a newer alternative that offers a trade-off between security and efficiency. AHE schemes allow for approximations of computations on encrypted data, making them more suitable for many practical applications.
Overall, homomorphic cryptography represents a promising area of research and development, with the potential to revolutionize the way sensitive data is processed and stored. However, much work remains to be done in terms of improving the efficiency and security of homomorphic cryptography schemes.
2. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 2 / 31
3. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 3 / 31
4. Problema
El volumen de datos con los que una empresa trabaja no permite que esta
los almacene de forma local. Estas empresas deben recurrir a Proveedores
cloud que permitan gestionar de forma ágil y escalable estos paquetes de
información.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 4 / 31
5. Problemática
Dado un dataset, el objetivo es poder analizarlo de una forma segura. Por
tanto, podemos dividir el problema en dos fases:
1. Encontrar una forma de guardar los datos de forma segura
2. Encontrar una forma de procesar los datos
En este caso, GMV pone a nuestra disposición un dataset de pacientes con
cáncer de pulmón: https://www.kaggle.com/datasets/mysarahmadbhat/
lung-cancer para poner en práctica la solución que vamos a plantear.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 5 / 31
6. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 6 / 31
8. Cifrado homomórfico
Se dice que un sistema de cifrado es homomórfico si es capaz de realizar
una operación algebraica concreta sobre un texto claro, equivalente a otra
operación algebraica (no necesariamente la misma) sobre el resultado cifrado
de ese texto original. Es decir, si denotamos por E a una supuesta función
que cifra mensajes, tendríamos:
E(m1 ◦ m2) = E(m1) ∗ E(m2)
donde ◦ y ∗ son dichos operadores.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 8 / 31
9. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 9 / 31
10. RSA
Componentes del método:
Clave pública: (N, e)
• N = p ·q es producto de dos primos p y q suficientemente grandes
y distintos
• e, exponente de cifrado, es un entero positivo tal que mcd(e, ϕ(N)) =
1, donde ϕ(N) = (p − 1)(q − 1) es la función ϕ de Euler
Clave privada: (N, d)
• d, exponente de descifrado, es el inverso de e módulo ϕ(N)
Con estos ingredientes ya podemos caracterizar los espacios de textos claros
y cifrados como:
M = C = (ZN)∗
que es el grupo multiplicativo de las unidades módulo N.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 10 / 31
11. RSA
Y la función que habíamos denotado por E, la podemos caracterizar
mediante el isomorfismo de grupos
E : (ZN)∗
−→ (ZN)∗
m 7→ me
mod N
que permite descifrar un mensaje cifrado c mediante su inversa
D(c) = cd
mod N
Finalmente como ((ZN)∗, ·) es un grupo multiplicativo obtenemos la
propiedad deseada para el producto
E(m1 · m2) = E(m1) · E(m2)
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 11 / 31
12. Implementación en Python: RSA
def E_RSA(publicKey, mensaje):
n = publicKey[0]
e = publicKey[1]
return pow(mensaje, e, n)
def D_RSA(privateKey, criptotexto):
n = privateKey[0]
d = privateKey[1]
return pow(criptotexto, d, n)
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 12 / 31
13. Conclusión del análisis con RSA
Del análisis de los datos se desprende la siguiente tabla:
Fumador No fumador
174 135
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 13 / 31
14. Limitaciones RSA
Al ser un proceso determinista, el método RSA es potencialmente inseguro
para el fin que se ha propuesto.
El segundo principio de Kerckhoffs nos advierte de lo siguiente:
La efectividad del sistema no debe depender de que su diseño per-
manezca en secreto.
Los pacientes fumadores y no fumadores siempre se cifran de la misma
manera. Esto se puede traducir en que, en el peor caso, con un par de
evaluaciones obtenemos si un paciente es o no fumador. Por tanto, el
algoritmo no es seguro.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 14 / 31
15. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 15 / 31
16. Sistema de encriptación de Paillier
Se dice que un procedimiento es CPA seguro si en tiempo polinómico un
atacante no puede distinguir entre dos criptotextos partiendo de dos textos
sin cifrar elegidos por él.
Debemos buscar un algoritmo de cifrado que sea homomórfico y además
CPA seguro. Por ejemplo, el sistema de encriptación de Paillier.
Este sistema es un algoritmo asimétrico probabilístico que se utiliza en
criptografía de clave pública y fue inventado por Pascal Paillier en 1999.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 16 / 31
17. Esquema de Paillier
1. Generación de claves. Se generan dos primos aleatorios p y q y se
obtiene la clave pública n = pq y la clave privada (n, ϕ(n)).
2. Cifrado. El conjunto de textos sin cifrar será Zn y el de criptotextos
(Zn2 )∗. Para cifrar un mensaje m ∈ Zn, se elige r ∈ (Zn2 )∗ al azar y
se calcula el criptotexto como
c = E(n, m) := ((1 + n)m
· rn
) mod n2
∈ (Zn2 )∗
3. Descifrado. Para descrifrar c con la clave privada (n, ϕ(n)) se hace
m = D((n, ϕ(n)), c) :=
(cϕ(n) mod n2) − 1
n
· ϕ(n)−1
mod n
donde ((cϕ(n) mod n2) − 1)/n se calcula en Z.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 17 / 31
18. Esquema de Paillier
Hay que tener en cuenta que, Zn es aditivo, y (Zn2 )∗ multiplicativo.
Además, el homomorfismo de grupos se define sobre la aplicación de
descifrado
D : (Zn2 )∗
→ Zn
Por lo que, sean m1 y m2 ∈ Z, la propiedad homomórfica queda definida
por
D((n, ϕ(n), c), (c1 · c2) mod n2
) = (m1 + m2) mod n
donde:
c1 = E(n, m1), c2 = E(n, m2)
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 18 / 31
19. Implementación en Python: Paillier cryptosystem
def E_PAI(publicKey, mensaje):
r = randint(1, n)
nc = n**2
return pow((1+n), mensaje, nc) * pow(r, n, nc)
def D_PAI(privateKey, criptotexto):
n = privateKey[0]
phi = privateKey[1]
nc = n**2
numerador = ((pow(criptotexto, phi, nc) - 1) // n) % n
denominador = pow(phi, -1, n)
return (numerador * denominador) % n
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 19 / 31
20. Implementación en Python: Paillier cryptosystem
En local, dentro de nuestra empresa, podemos descrifrarlo sabiendo que la
función de descifrado obtendrá
l
X
i=0
mi mod n
Dicho número debe representar la suma de pacientes fumadores y no
fumadores de la columna SMOKING del dataset. En efecto, se obtiene 483,
resultado coherente con el estudio realizado por RSA, ya que
El total de pacientes fumadores es: 174.
El total de pacientes no fumadores es: 135.
es decir,
174 · 2 + 135 · 1 = 483
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 20 / 31
21. Implementación en Python: Paillier cryptosystem
Bastaría con caracterizar con 0 y 1, en vez de 1 y 2, las opciones del
dataset. De esta forma la suma representaría una de las opciones.
Por ser un homomorfismo aditivo, podemos calcular medias fácilmente. Un
estudio del dataset, asociando 0 a M (male) y 1 a F (female) desprende el
siguiente resultado
La media de edad de los pacientes de 62.7 años. De los cuales 162 son
hombres y 147 mujeres.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 21 / 31
22. Limitaciones algoritmo de Paillier
El ataque que intentamos para RSA en este caso es inútil. No obstante, se
conocen formas de atacar estos sistemas permitiendo conocer, en nuestro
caso por ejemplo, si un paciente es o no fumador. Este tipo de ataques se
conocen como Ataque de Texto Cifrado Escogido o ataques CCA. Se
elegirán dos mensajes, y uno de ellos (al azar) es cifrado, el criptotexto es
entregado al atacante que intenta descifrar a cuál corresponde. El atacante,
utiliza la propiedad homomórfica y adapta su ataque según la respuesta.
“Un esquema criptográfico se dice no maleable si la probabilidad de
que el adversario encuentre dichos textos [...] no es significativa-
mente mayor que dicha probabilidad para el cifrado de una cadena
de bits x elegida al azar.”
González Vasco, 2003, p.26
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 22 / 31
23. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 23 / 31
24. Esquemas SHE y FHE
¿Existe un sistema de cifrado completamente homomórfico?
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 24 / 31
25. Esquemas SHE y FHE
La diferencia entre el uso de un sistema parcialmente homomórfico
(Somewhat Homomorphic Encryption o SHE) y uno completamente
homomórfico (Fully Homomorphic Encryption o FHE), es que el segundo
permite un número de operaciones no acotado.
Para la solución final se estudió el esquema Fan-Vercauteren cuyo espacio
de textos claros corresponde a Rt = Zt[x]/(xn + 1) y el de criptotextos a
Rq = Zq[x]/(xn + 1).
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 25 / 31
26. Esquema Fan-Vercauteren
Denotaremos R = Z[x]/(xn + 1).
Generación de clave privada: es un polinomio en R con coeficientes
en {0, 1}.
Generación de clave pública: tomando a en Rq y un error e en
función de una cierta distribución χ sobre R así
pubKey = ([−(a · s + e)]q, a) ∈ Rq × Rq
Encriptación: sea el texto claro m ∈ Rt y pk = (pk0, pk1) entonces
Enc(pk, m) = ([pko · u + e1 + ∆ · m]q, [pk1 · u + e2]q) ∈ Rq × Rq
Desencriptación: dado un criptotexto ct = Enc(pk, m) = (ct0, ct1)
se desencripta usando la clave pública sk = s según
Dec(sk, ct) =
t · [ct0 + ct1 · s]q
q
t
∈ Rt
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 26 / 31
27. Esquema Fan-Vercauteren
La operación homomórfica de suma viene dada por
[ct(s)]q + [ct′
(s)]q = ∆ · (m + m′
) + v + v′
[ct(s) + ct′
(s)]q = ∆ · [m + m′
]t + d mod q
donde d = v + v′ − (q − ∆ · t) · ε.
El producto requiere de una técnica intermedia llamada relinearization.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 27 / 31
28. Implementación en C++
Microsoft SEAL es una librería open source de criptografía homomórfica
desarrollado por Cryptography and Privacy Research Group en Microsoft.
El código se puede encontrar en GitHub.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 28 / 31
29. Contenido
1 Problema
2 Cifrado homomórfico
3 Primera aproximación: Algoritmo RSA
4 Mejorando el sistema: Algoritmo de Paillier
5 Solución final: Esquemas SHE y FHE
6 Referencias
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 29 / 31
30. Referencias
González Vasco, M.I. Criptosistemas basados en Teoría de grupos.
2003.
Milanov, E. The RSA algorithm. RSA laboratories, 1-11. 2009.
Pardo, J. L. G. Cifrado homomórfico: ejemplos y aplicaciones. Gaceta
de la Real Sociedad Matematica Española, 15(4), 697-712. 2012.
Javier López Gismeros PROBLEMA MODELIZACIÓN GMV 1 de diciembre de 2022 30 / 31