Compartir tecnología

[Conceptos básicos de criptografía] Esquema de cifrado totalmente homomórfico basado en LWE (Aprendizaje con errores)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Recursos de aprendizaje:
Cifrado totalmente homomórfico I: teoría y fundamento (Profesor Yu Yu de la Universidad Jiao Tong de Shanghai)
Cifrado totalmente homomórfico II: teoría y construcción del cifrado totalmente homomórfico (Profesor Xiang Xie)


Hoy en día, los esquemas de cifrado totalmente homomórficos de segunda generación (como BGV y BFV) y de tercera generación se basan en LWE. Ahora los esquemas avanzados totalmente homomórficos también se basan en LWE, por lo que este artículo resume el conocimiento básico de LWE.
Primero considere, queremos cifrar un número ess, ahora usando una serie de yo yo_yoaibien essCifrar y obtener a es a_esais, de hecho, se puede resolver resolviendo el máximo común divisor MCD ess .Sin embargo, si se agrega un ruido aleatorio yo e_imii,conseguir ais + ei a_is+e_iais+mii, entonces será difícil de resolver ess valor. Este proceso es mi simple comprensión de LWE. El llamado error es un ruido.

Insertar descripción de la imagen aquí

El proceso de cálculo del cifrado totalmente homomórfico se divide en tres pasos: generación de claves KeyGen, cifrado Enc, cálculo homomórfico Eval y descifrado Dec. ,

Generación de claves:

Insertar descripción de la imagen aquí
Primero construya la ecuación anterior, s ⋅ A + e = s A + e scdot A + e = sA+esA+mi=sA+miy luego obtener la clave pública pk ( - Un -UnAy s A + e s A + esA+miempalme), y la clave privada sk ( ess y 1 empalme). Por tanto, se obtiene que el resultado de la multiplicación entre pk y sk es el ruido aleatorio e (cercano a 0).

Enc:

La clave pública pk utilizada para el cifrado, r es un vector aleatorio que contiene solo 0 o 1, y m es la información que se va a cifrar (colocada en el bit más bajo del vector).
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Dic:

Después de calcular el producto interno de la clave privada sk utilizada para el descifrado y ct, busque el mod 2 para obtener el resultado del descifrado.

Insertar descripción de la imagen aquí
Prueba de corrección:
Insertar descripción de la imagen aquí
Multiplique sk y pk para obtener 2e (la condición que cumple KeyGen) y luego haga el producto interno con r para obtener un ruido pequeño y uniforme. El resultado final es m+ un ruido pequeño y uniforme, por lo que el ruido puede eliminarse con el mod 2. Obtenga el resultado del descifrado m. Es por eso que el ruido construido es 2e, no e. Tengo entendido que al construir un ruido aleatorio par, es conveniente usar el mod 2 para eliminar el ruido durante el descifrado.

Prueba de seguridad:

Insertar descripción de la imagen aquí
Cuando pk es pseudoaleatorio y r tiene una entropía suficientemente alta (es decir, ¿la aleatoriedad es fuerte?), tanto pk como pk multiplicado por r son pseudoaleatorios. Después de agregar vectores naturales y con m, el resultado del cifrado también es pseudoaleatorio.

Insertar descripción de la imagen aquí

La siguiente es la descripción formulada del maestro Xiang Xie:
Fórmula de cifrado: texto cifrado c = clave pública pk ✖️ aleatorio r + texto sin formato m
Fórmula de descifrado: texto plano m = <texto cifrado sk, clave privada sk> mod q mod 2

Insertar descripción de la imagen aquí
Sobre esta base, el mod 2 se puede utilizar para descifrar el valor del texto sin formato m. Siempre que el ruido sea lo suficientemente pequeño, se puede garantizar la precisión.
Hay algo que es necesario distinguir aquí: lo anterior PK = ( A , b = As ′ + 2 e ) PK=(A, b=As'+2e)PAGAGK=(A,b=As+2mi)es la solución BGV y BFV es PK = ( A , b = As ′ + e ) PK=(A, b=As'+e)PAGAGK=(A,b=As+mi), la diferencia es que BGV codifica información en bits bajos, mientras que BFV codifica mensajes en bits altos (se explicará cuando aprenda BFV).

Eval (homomorfismo aditivo y homomorfismo multiplicativo):

Insertar descripción de la imagen aquí
Tenga en cuenta que la suma o multiplicación homomórfica generará una acumulación significativa de ruido y la multiplicación tiene una tendencia de crecimiento cuadrático.
Luego hablemos de cómo descifrar el resultado de la multiplicación homomórfica. Puede ver la siguiente fórmula: La multiplicación de dos textos cifrados equivale a hacer el producto tensorial del texto cifrado y la clave privada respectivamente, y luego hacer el producto interno. Obviamente, tanto el texto cifrado como la clave privada han duplicado su tamaño. El ejemplo es una prueba de equivalencia.

Insertar descripción de la imagen aquí

Entonces la pregunta es, ¿cómo restaurar el tamaño del texto cifrado y el tamaño de la clave privada después de la multiplicación homomórfica? Este es el problema que resuelve el cambio de clave.

La siguiente es la descripción del maestro Xiang Xie:

Insertar descripción de la imagen aquí

Cambio de clave

El objetivo es restaurar el tamaño del texto cifrado y la clave privada a un tamaño lineal.
Insertar descripción de la imagen aquí
Ahora encuentre la multiplicación de los textos cifrados c1 y c2:

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

El proceso anterior se basa en el concepto de descomposición de bits:

Insertar descripción de la imagen aquí

La siguiente es la descripción del maestro Xiang Xie:

El objetivo del cambio de clave: convertir la clave privada s ~ tilde ss~abajo c ~ tilde cC~ Convertir a clave privada essabajo C.C.C,y c ~ tilde cC~y C.C.CTodos están cifrados con el mismo texto sin formato.
Un concepto central aquí es la clave de cambio de clave (KSK), que significa usar una clave privada. esscifrar s ~ tilde ss~

Insertar descripción de la imagen aquí
A través del proceso de cambio de clave, la clave privada se puede derivar de s ⊗ s a veces sssse volvió lineal ess, mientras que el texto cifrado cambia de c ~ tilde cC~se volvió lineal C.C.C .Y se puede ver en la última línea de la fórmula que después del cambio de clave ⟨ c, s ⟩ langle c, srangleC,sy el original ⟨ c ~ , s ⊗ s ⟩ c con tilde larga, a veces con tilde largaC~,ssHay una diferencia de ruido entre 2 c ~ T e ~ 2tilde c^Ttilde e2C~yomi~ ¡Esta parte puede ser muy grande! Por lo tanto, todavía no hay forma de implementar el cambio de clave aquí.

Aquí se presenta una matriz de gadget G:
Insertar descripción de la imagen aquí
Por lo tanto, el proceso de cambio de clave queda como sigue:

Insertar descripción de la imagen aquí
En este punto, el error añadido es muy pequeño.
En resumen, a través del cambio de clave, la clave privada original s ~ = s ⊗ s tilde s=s o veces ss~=ssabajo c ~ = c ⊗ c tilde c=co veces cC~=CC, se convierte en una clave privada essabajo C.C.C, preste atención a la clave después del cambio de clave s, c, cs,CNo son los valores originales (nueva verificación).

Insertar descripción de la imagen aquí
Para BGV, el ruido de la suma aumenta linealmente y el ruido de la multiplicación aumenta al cuadrado. Aunque el cambio de clave puede admitir la multiplicación (limitando sk para que sea extremadamente grande), el ruido es en realidad un ruido muy pequeño agregado al ruido de multiplicación original. también es muy grande. Por lo tanto, es necesario reducir aún más este ruido.

Reducción del módulo

Insertar descripción de la imagen aquí
Hasta ahora, los cálculos homomórficos de multiplicación y suma con una pequeña profundidad se han implementado a través de LWE. El cambio de clave utiliza una nueva clave para cada capa. Sin embargo, a medida que la profundidad del cálculo se profundiza, la expansión del ruido es explosiva, por lo que aún no está nivelada. FHE (puede calcular FHE a una profundidad específica).
Ahora esperamos implementar un FHE que pueda calcular una cierta profundidad sin usar bootstrapping, lo que requiere conversión de módulo.
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

No entiendo muy bien el proceso intermedio. En resumen, se trata de transformar el texto cifrado c del módulo de dominio q al módulo de dominio p (p <).
Aquí hay un ejemplo específico:
Si no se realiza la reducción del módulo, el ruido crecerá en una tendencia exponencial doble a medida que la profundidad se profundiza y se producirán errores de descifrado después del nivel >= 3.
Insertar descripción de la imagen aquí
Si se realiza la reducción del módulo en cada nivel, el ruido también se mantendrá dentro de un rango de valores absolutos, a costa de una reducción continua del módulo.

Insertar descripción de la imagen aquí

Entonces, si desea implementar un FHE nivelado, puede establecer un módulo B d B^dBd, entonces puedes calcular una profundidad de Oídodcircuito (donde CAMA Y DESAYUNOB es el límite superior de ruido del texto cifrado actualizado).Calculado OídodDespués de la profundidad, el módulo debe reducirse a CAMA Y DESAYUNOB , para garantizar que no haya ningún error al descifrar en este momento. BGV es un FHE nivelado.

Insertar descripción de la imagen aquí