Knoppia

Wiki de Informática y otras historias

Herramientas de usuario

Herramientas del sitio


pan:cifrado_homomorfico_v2

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
pan:cifrado_homomorfico_v2 [2025/12/24 16:44] thejuanvisupan:cifrado_homomorfico_v2 [2025/12/31 16:36] (actual) thejuanvisu
Línea 19: Línea 19:
  
 Sabiendo esto, sabemos que la clave pública (a,b) del cifrado homomorfico es:  Sabiendo esto, sabemos que la clave pública (a,b) del cifrado homomorfico es: 
 +<WRAP box>
 +$(a,b = S^T*a+e $ $MOD q) ∈ Z^n_q * Z_q$ 
 +</WRAP>
 +Esta fórmula es solo la clave pública, si queremos proceder a realizar el cifrado utilizando esta, debemos introducir otros 2 elementos:
 +  * **m** -> Mensaje a Cifrar
 +  * **Δ** -> Constante (Normalmente su valor es una potencia de 2)
  
-$(a,b= S^T*a+e MOD (q)$ +El cifrado homomórfico se vería de la siguiente forma: 
 +<WRAP box> 
 +$(a,b = S^T*a+e+Δ*m $ $MOD q)$  
 +</WRAP> 
 +  * Clave pública -> $S^T*a+e$ 
 +  * Texto Cifrado -> $b = S^T*a+e+Δ*m $ $MOD q$  
 +  * **OJO**: a y b son necesarios para poder descrifrar el mensaje
  
 +Cuando se mandan datos a un tercero para operar con ellos, se madan a y b
  
 +<WRAP box>
 +$Δ*m+e = b+S^T*a$
 +</WRAP>
 +  * $m' = Δ*m+e$ -> Mensaje aproximado con error
 +
 +<WRAP box>
 +$m+e = (b+S^T*a)/Δ$ $MOD q$
 +</WRAP>
 +  * $m' = m+e$
 +
 +<WRAP box>
 +$m = ||(b+S^T*a)/Δ - e$ $MOD q||$
 +</WRAP>
 +  * Redondeamos el resultado para el descifrado
 +  * Si todo va bien, al realizar el redondeo desaparece el error aplicado y el valor final obtenido es el mensaje inicial.
 +
 +{{drawio>pan:chomoej1.png}}
 +
 +===== Sumas sobre cifrado Homomórfico =====
 +
 +{{drawio>pan:chsuma.png}}
 +
 +===== Multiplicación de cifrado homomórfico contra una pequeña constante =====
 +
 +{{drawio>pan:chmultcons.png}}
 +
 +**NOTA**: Si el valor de C es muy grande puede descuadrarse todo al multiplicarse el error.
 +
 +===== Descomposición gadget =====
 +
 +La descomposición gadget consiste en tomar un número grande y descomponerlo en bloques. Esto se usa en las multiplicaciones con cifrado homomórfico para evitar que se descuadren los valores.
 +{{drawio>pan:descgadget1.png}}
 +
 +La descomposición gadget permite calcular varios factores de la constante C. Se tienen en cuenta los siguientes datos:
 +  * C: Constante a descomponer
 +  * B: En cuantos trozos se va a descomponer, normalmente equivale al número de restos que obtenemos.
 +  * P: Valor de la potencia de 2 que se va a utilizar para realizar las divisiones.
 +{{drawio>pan:descgadget2.png}}
 +
 +==== Descomposición Gadget en el Cifrado Homomórfico ====
 +
 +Gracias a la descomposición gadget podemos descomponer una multiplicación homomórfica por una constante muy grande de la siguiente forma para $(a*c, b*c)$:
 +  * $(a*c_0, b*c_0)$
 +  * $(a*c_1, b*c_1)$
 +  * $(a*c_2, b*c_2)$
 +Lo que reduce el error de forma considerable
 +<WRAP box>
 +$C = C_2*2^{P*2} + C_1*2^{P*1} + C_0*2^{P*0}$
 +</WRAP>
 +Para ello, se crean varios mensajes cifrados:
 +{{drawio>pan:descgadget3.png}}
 +
 +{{drawio>pan:descgadgetejemplo.png}}
pan/cifrado_homomorfico_v2.1766594645.txt.gz · Última modificación: 2025/12/24 16:44 por thejuanvisu