<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LWE on kenji.blog</title><link>http://kenji.blog/es/tags/lwe/</link><description>Recent content in LWE on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 21:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/es/tags/lwe/index.xml" rel="self" type="application/rss+xml"/><item><title>Intuición matemática de la criptografía basada en retículos (Lattice-based cryptography)</title><link>http://kenji.blog/es/p/lattice-based-cryptography-math-intuition/</link><pubDate>Fri, 11 Sep 2026 21:00:00 +0900</pubDate><guid>http://kenji.blog/es/p/lattice-based-cryptography-math-intuition/</guid><description>&lt;img src="http://kenji.blog/p/lattice-based-cryptography-math-intuition/img/eyecatch.jpg" alt="Featured image of post Intuición matemática de la criptografía basada en retículos (Lattice-based cryptography)" />&lt;h1 id="1-introducción-el-amanecer-de-la-criptografía-poscuántica-pqc-y-el-auge-de-la-criptografía-basada-en-retículos">1. Introducción: El amanecer de la criptografía poscuántica (PQC) y el auge de la criptografía basada en retículos
&lt;/h1>&lt;p>La infraestructura digital de la sociedad moderna se basa en tecnologías de criptografía de clave pública, como el cifrado RSA y la criptografía de curva elíptica (ECC). Estos métodos basan su seguridad en la dificultad matemática de problemas como la &amp;ldquo;factorización de enteros&amp;rdquo; o el &amp;ldquo;logaritmo discreto&amp;rdquo;, los cuales se cree que no pueden resolverse eficientemente (requieren tiempo exponencial) con computadoras clásicas convencionales.&lt;/p>
&lt;p>Sin embargo, el &amp;ldquo;Algoritmo de Shor&amp;rdquo;, publicado por Peter Shor en 1994, sacudió el mundo de la criptografía. Este algoritmo demostró matemáticamente que una vez que se construyan computadoras cuánticas a gran escala, estas podrán resolver los problemas de factorización de enteros y de logaritmo discreto en tiempo polinomial. Esto significa que la criptografía de clave pública ampliamente utilizada en la actualidad se volverá completamente descifrable en el futuro.&lt;/p>
&lt;p>Para contrarrestar esta &amp;ldquo;Amenaza Cuántica (Quantum Threat)&amp;rdquo;, se hizo imperativo investigar nuevos métodos de cifrado que sean difíciles de descifrar incluso utilizando computadoras cuánticas. Este es el campo conocido como &amp;ldquo;Criptografía Poscuántica (Post-Quantum Cryptography: PQC)&amp;rdquo; o &amp;ldquo;Criptografía resistente a la computación cuántica&amp;rdquo;.&lt;/p>
&lt;p>Existen varios candidatos prometedores para la PQC, como la criptografía basada en hashes, la criptografía basada en códigos, la criptografía multivariable y la criptografía basada en isogenias. Sin embargo, el método que actualmente atrae más la atención y que está en el centro del proceso de estandarización de PQC por parte del NIST (Instituto Nacional de Estándares y Tecnología de EE. UU.) es la &amp;ldquo;Criptografía basada en retículos (Lattice-based cryptography)&amp;rdquo;. En comparación con otros métodos, la criptografía de retículos ofrece velocidades de cifrado y descifrado muy rápidas, y cuenta con una característica destacada: una prueba de seguridad extremadamente sólida en la teoría criptográfica basada en la reducción de la &amp;ldquo;complejidad en el peor de los casos (Worst-case complexity)&amp;rdquo; a la &amp;ldquo;complejidad en el caso promedio (Average-case complexity)&amp;rdquo;.&lt;/p>
&lt;p>En este artículo, partiremos de la definición matemática de &amp;ldquo;Retículo (Lattice)&amp;rdquo;, que es la base de esta criptografía, y explicaremos profundamente mediante fórmulas, intuición geométrica y ejemplos numéricos específicos los problemas difíciles sobre retículos como SVP (Problema del vector más corto) y CVP (Problema del vector más cercano), y el corazón de la criptografía de retículos moderna, el &amp;ldquo;Problema LWE (Learning With Errors)&amp;rdquo;.&lt;/p>
&lt;h1 id="2-definición-matemática-e-intuición-geométrica-de-un-retículo-lattice">2. Definición matemática e intuición geométrica de un Retículo (Lattice)
&lt;/h1>&lt;h2 id="21-espacio-vectorial-y-retículos">2.1 Espacio vectorial y retículos
&lt;/h2>&lt;p>En matemáticas, un &amp;ldquo;Retículo (Lattice)&amp;rdquo; es un conjunto discreto de puntos dispuestos regularmente en un espacio vectorial real de $n$ dimensiones $\mathbb{R}^n$. Es similar al espacio vectorial (Vector Space) que se estudia en álgebra lineal, pero existe una diferencia crucial. Mientras que un espacio vectorial es un espacio continuo representado por combinaciones lineales de vectores base con &amp;ldquo;coeficientes reales&amp;rdquo;, un retículo es un espacio discreto representado por combinaciones lineales de vectores base con &amp;ldquo;coeficientes enteros&amp;rdquo;.&lt;/p>
&lt;p>Demos una definición matemática rigurosa. Consideremos $n$ vectores linealmente independientes $\mathbf{b}_1, \mathbf{b}_2, \dots, \mathbf{b}_n$ (donde $n \le m$) en un espacio vectorial real de $m$ dimensiones $\mathbb{R}^m$. Sea $B = [\mathbf{b}_1, \mathbf{b}_2, \dots, \mathbf{b}_n] \in \mathbb{R}^{m \times n}$ una matriz que tiene estos vectores como columnas. Llamamos a esta $B$ la &amp;ldquo;Base (Basis)&amp;rdquo; del retículo.&lt;/p>
&lt;p>El retículo $\mathcal{L}(B)$ generado por esta base $B$ se define de la siguiente manera:&lt;/p>
$$
\mathcal{L}(B) = \left\{ \sum_{i=1}^{n} x_i \mathbf{b}_i \mathrel{\bigg|} x_i \in \mathbb{Z} \right\} = \{ B \mathbf{x} \mid \mathbf{x} \in \mathbb{Z}^n \}
$$
&lt;p>Lo importante aquí es que los coeficientes $x_i$ están limitados a números enteros $\mathbb{Z}$, en lugar de números reales $\mathbb{R}$. Como resultado, en lugar de puntos continuos que existen en un número infinito en el espacio, se forma un &amp;ldquo;conjunto discreto de puntos&amp;rdquo; similar a las intersecciones espaciadas uniformemente en una cuadrícula.&lt;/p>
&lt;h2 id="22-imagen-geométrica">2.2 Imagen geométrica
&lt;/h2>&lt;p>Consideremos un ejemplo en el plano bidimensional $\mathbb{R}^2$. Si elegimos los vectores base $\mathbf{b}_1 = \begin{pmatrix} 1 \\ 0 \end{pmatrix}$ y $\mathbf{b}_2 = \begin{pmatrix} 0 \\ 1 \end{pmatrix}$, el retículo generado por ellos será el conjunto de todas las coordenadas enteras $(x, y) \in \mathbb{Z}^2$ en el plano cartesiano. Este es el &amp;ldquo;retículo cuadrado&amp;rdquo; más simple.&lt;/p>
&lt;p>Sin embargo, los retículos no siempre son ortogonales. Por ejemplo, considerando una base como $\mathbf{b}_1 = \begin{pmatrix} 2 \\ 1 \end{pmatrix}$ y $\mathbf{b}_2 = \begin{pmatrix} 1 \\ 3 \end{pmatrix}$, los puntos generados se parecerán a las intersecciones de una malla sesgada diagonalmente.&lt;/p>
&lt;h2 id="23-no-unicidad-de-la-base-y-transformación-unimodular">2.3 No unicidad de la base y transformación unimodular
&lt;/h2>&lt;p>Existe una propiedad importante relacionada con la base de la seguridad de la criptografía de retículos: &amp;ldquo;existen infinitas bases que generan el mismo retículo&amp;rdquo;.&lt;/p>
&lt;p>Por ejemplo, el retículo $\mathbb{Z}^2$ generado por la base $\mathbf{b}_1 = (1, 0)^T, \mathbf{b}_2 = (0, 1)^T$ mencionada anteriormente es exactamente el mismo retículo $\mathbb{Z}^2$ que el generado por la base $\mathbf{b}'_1 = (1, 1)^T, \mathbf{b}'_2 = (2, 3)^T$.&lt;/p>
&lt;p>La condición necesaria y suficiente para que una base $B$ y otra base $B'$ generen el mismo retículo es que exista una matriz con componentes enteros $U \in \mathbb{Z}^{n \times n}$ cuyo determinante sea $\det(U) = \pm 1$, tal que:
&lt;/p>
$$ B' = B U $$
&lt;p>
A una matriz $U$ de este tipo se le llama &amp;ldquo;Matriz unimodular (Unimodular matrix)&amp;rdquo;.&lt;/p>
&lt;p>La idea básica en la aplicación a la criptografía es utilizar una &amp;ldquo;buena base&amp;rdquo; (una base casi ortogonal formada por vectores cortos) como clave privada, y una &amp;ldquo;mala base&amp;rdquo; (una base con vectores extremadamente oblicuos entre sí y muy largos) como clave pública. Calcular una buena base a partir de una mala base se vuelve muy difícil a medida que aumentan las dimensiones. Esta es la intuición básica de la criptografía basada en retículos.&lt;/p>
&lt;h1 id="3-problemas-computacionalmente-difíciles-en-retículos">3. Problemas computacionalmente difíciles en retículos
&lt;/h1>&lt;p>La seguridad de la criptografía basada en retículos depende de la dificultad de resolver problemas matemáticos específicos en los retículos. Aquí presentaremos dos de los problemas más fundamentales y conocidos.&lt;/p>
&lt;h2 id="31-problema-del-vector-más-corto-shortest-vector-problem-svp">3.1 Problema del vector más corto (Shortest Vector Problem: SVP)
&lt;/h2>&lt;p>SVP es el problema más clásico y famoso de la teoría de retículos.&lt;/p>
&lt;p>&lt;strong>Definición (SVP):&lt;/strong>
Dada una base de retículo arbitraria $B$, encontrar el vector $\mathbf{v}$ distinto de cero que pertenece al retículo $\mathcal{L}(B)$ y tiene la norma euclidiana (longitud) mínima.&lt;/p>
&lt;p>Expresado en fórmula matemática, es el problema de encontrar $\mathbf{v}$ tal que $\min_{\mathbf{v} \in \mathcal{L}(B) \setminus \{\mathbf{0}\}} \| \mathbf{v} \|$. A esta longitud mínima se le denota como $\lambda_1(\mathcal{L})$ y se le llama &amp;ldquo;Primer mínimo sucesivo (First successive minimum) del retículo&amp;rdquo;.&lt;/p>
&lt;p>En dimensiones bajas como 2 o 3, podemos encontrar el vector más corto visualmente dibujando un gráfico, o podemos resolverlo eficientemente usando algoritmos como el algoritmo de reducción de bases de Gauss. Sin embargo, cuando la dimensión $n$ alcanza valores altos como cientos o miles, se sabe que resolver estrictamente SVP es NP-difícil.&lt;/p>
&lt;p>En criptografía real, no se busca el vector más corto estricto, sino que se utiliza un SVP aproximado ($\gamma$-SVP) para encontrar un &amp;ldquo;vector aproximadamente corto&amp;rdquo;. Si el factor de aproximación $\gamma$ es de tamaño polinomial, este problema se sigue considerando extremadamente difícil.&lt;/p>
&lt;h2 id="32-problema-del-vector-más-cercano-closest-vector-problem-cvp">3.2 Problema del vector más cercano (Closest Vector Problem: CVP)
&lt;/h2>&lt;p>CVP es también un problema de extrema importancia en la criptografía basada en retículos.&lt;/p>
&lt;p>&lt;strong>Definición (CVP):&lt;/strong>
Dada una base de retículo arbitraria $B$ y un vector objetivo arbitrario $\mathbf{t} \in \mathbb{R}^m$ en el espacio (que no necesariamente es un punto del retículo), encontrar el punto del retículo $\mathbf{v} \in \mathcal{L}(B)$ más cercano a $\mathbf{t}$.&lt;/p>
&lt;p>Expresado matemáticamente, es el problema de buscar un punto de retículo $\mathbf{v}$ tal que $\min_{\mathbf{v} \in \mathcal{L}(B)} \| \mathbf{v} - \mathbf{t} \|$.&lt;/p>
&lt;p>Al igual que SVP, CVP también es NP-difícil en altas dimensiones. Desde la perspectiva de la aplicación criptográfica, el problema LWE que discutiremos más adelante está estrechamente relacionado con una variante especial de este CVP (Decodificación de distancia acotada o Bounded Distance Decoding: BDD).&lt;/p>
&lt;h2 id="33-por-qué-es-insoluble-en-altas-dimensiones-los-límites-de-lll-y-bkz">3.3 ¿Por qué es insoluble en altas dimensiones? (Los límites de LLL y BKZ)
&lt;/h2>&lt;p>Un algoritmo famoso para resolver problemas de retículos de altas dimensiones es el algoritmo LLL (Lenstra-Lenstra-Lovász algorithm). El algoritmo LLL se ejecuta en tiempo polinomial y puede reducir en cierta medida la base del retículo a una &amp;ldquo;buena base&amp;rdquo;. Sin embargo, el vector más corto que el algoritmo LLL puede encontrar tiene un factor de aproximación exponencial ($2^{\mathcal{O}(n)}$) en relación con la longitud del vector más corto verdadero, por lo que no es suficiente para romper la seguridad criptográfica.&lt;/p>
&lt;p>Si se utiliza un algoritmo de reducción de bases más potente como el algoritmo BKZ (Block Korkine-Zolotarev), que es una mejora de LLL, se pueden encontrar vectores más cortos, pero su complejidad computacional aumenta exponencialmente con respecto al tamaño del bloque. En la criptografía de retículos, los parámetros seguros (como el tamaño de la dimensión $n$) se determinan estimando el tiempo de ejecución de este algoritmo BKZ. Con los parámetros estándar actuales de PQC, se eligen dimensiones $n$ de 500 a 1000 o más, y se considera que descifrarlos tomaría más tiempo que la edad del universo, incluso utilizando supercomputadoras o futuras computadoras cuánticas.&lt;/p>
&lt;h1 id="4-formulación-matemática-del-problema-lwe-learning-with-errors">4. Formulación matemática del problema LWE (Learning With Errors)
&lt;/h1>&lt;p>La mayor parte de la criptografía de retículos moderna se basa en el &amp;ldquo;Problema LWE (Learning With Errors)&amp;rdquo; propuesto por Oded Regev en 2005. La belleza del problema LWE radica en la simplicidad de su formulación y en el hecho de que cuenta con una poderosa prueba matemática de &amp;ldquo;reducción de la complejidad en el peor caso a la complejidad en el caso promedio&amp;rdquo;.&lt;/p>
&lt;h2 id="41-sistema-de-ecuaciones-lineales-sin-ruido">4.1 Sistema de ecuaciones lineales sin ruido
&lt;/h2>&lt;p>Para entender el problema LWE, primero consideremos un simple sistema de ecuaciones lineales sin ruido.
Supongamos que hay un vector secreto desconocido $\mathbf{s} \in \mathbb{Z}_q^n$ (donde cada componente es un número entero de $0$ a $q-1$). Aquí $q$ es un número primo.&lt;/p>
&lt;p>Elegimos vectores de coeficientes aleatorios $\mathbf{a}_1, \mathbf{a}_2, \dots \in \mathbb{Z}_q^n$ y calculamos su producto interno con el vector secreto $\mathbf{s}$ módulo $q$.
$b_1 = \langle \mathbf{a}_1, \mathbf{s} \rangle \pmod q$
$b_2 = \langle \mathbf{a}_2, \mathbf{s} \rangle \pmod q$
$\vdots$&lt;/p>
&lt;p>Si se nos da un número suficiente (al menos $n$) de pares $(\mathbf{a}_i, b_i)$, podemos recuperar fácilmente el vector secreto $\mathbf{s}$ usando la &amp;ldquo;Eliminación de Gauss (Gaussian elimination)&amp;rdquo; de álgebra lineal. Este es un problema que puede resolverse fácilmente en tiempo polinomial.&lt;/p>
&lt;h2 id="42-definición-del-problema-lwe-agregando-ruido">4.2 Definición del problema LWE: Agregando ruido
&lt;/h2>&lt;p>Entonces, ¿qué sucedería si añadimos un ligero &amp;ldquo;ruido (error)&amp;rdquo; a este problema?
Esta es la esencia del problema LWE.&lt;/p>
&lt;p>Para el vector secreto desconocido $\mathbf{s} \in \mathbb{Z}_q^n$, añadimos un pequeño error $e_i \in \mathbb{Z}_q$ al resultado de cada ecuación.
$b_i = \langle \mathbf{a}_i, \mathbf{s} \rangle + e_i \pmod q$&lt;/p>
&lt;p>Aquí, $e_i$ es un pequeño valor entero con media 0 y una desviación estándar relativamente pequeña (por ejemplo, elegido de una distribución gaussiana discreta, similar a una distribución normal).
La información proporcionada es una lista de pares de un vector aleatorio $\mathbf{a}_i$ y $b_i$ calculado añadiendo un error.
$( \mathbf{a}_1, b_1 ), ( \mathbf{a}_2, b_2 ), \dots, ( \mathbf{a}_m, b_m )$&lt;/p>
&lt;p>Representar esto en forma matricial lo hace muy claro.
Usando una matriz aleatoria $A \in \mathbb{Z}_q^{m \times n}$, un vector secreto $\mathbf{s} \in \mathbb{Z}_q^n$ y un vector de error $\mathbf{e} \in \mathbb{Z}_q^m$:
&lt;/p>
$$ \mathbf{b} = A \mathbf{s} + \mathbf{e} \pmod q $$
&lt;p>
Solo se nos proporciona $A$ y $\mathbf{b}$. Encontrar $\mathbf{s}$ a partir de aquí es el &amp;ldquo;Problema de búsqueda LWE (Search LWE problem)&amp;rdquo;.&lt;/p>
&lt;p>Debido a que el error $e_i$ está presente, intentar usar la eliminación de Gauss amplificaría el error de forma exponencial durante el proceso de sumar y restar ecuaciones, haciendo imposible llegar a la respuesta correcta. A primera vista, parece un simple sistema de ecuaciones lineales, pero al agregar este pequeño ruido, la dificultad del problema se eleva al nivel de NP-difícil.&lt;/p>
&lt;h2 id="43-problema-lwe-de-decisión-decision-lwe">4.3 Problema LWE de decisión (Decision LWE)
&lt;/h2>&lt;p>En las pruebas de la teoría criptográfica, la variante frecuentemente utilizada es el &amp;ldquo;Problema LWE de decisión (Decision LWE problem)&amp;rdquo;, que es una variante del problema de búsqueda LWE.&lt;/p>
&lt;p>El problema LWE de decisión es el problema de determinar de cuál de las siguientes dos distribuciones proviene una lista de muestras dada:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Distribución LWE&lt;/strong>: $(A, \mathbf{b} = A\mathbf{s} + \mathbf{e} \pmod q)$ calculada intencionadamente.&lt;/li>
&lt;li>&lt;strong>Distribución aleatoria uniforme&lt;/strong>: $(A, \mathbf{u})$ formada por una matriz $A$ y un vector $\mathbf{u}$ elegidos de forma completamente aleatoria.&lt;/li>
&lt;/ol>
&lt;p>Sorprendentemente, si se eligen adecuadamente los parámetros del problema LWE, los pares obtenidos de la distribución LWE se vuelven &amp;ldquo;computacionalmente indistinguibles (Computationally Indistinguishable)&amp;rdquo; de los pares de datos completamente aleatorios. Esta propiedad es la base que permite a la criptografía basada en LWE generar &amp;ldquo;textos cifrados indistinguibles de números aleatorios&amp;rdquo;.&lt;/p>
&lt;h2 id="44-reducción-de-la-complejidad-en-el-peor-caso-a-la-del-caso-promedio-teorema-de-regev">4.4 Reducción de la complejidad en el peor caso a la del caso promedio (Teorema de Regev)
&lt;/h2>&lt;p>El mayor logro de Oded Regev fue vincular matemáticamente la dificultad de este problema LWE con la dificultad de los problemas de retículos mencionados anteriormente (SVP y CVP).&lt;/p>
&lt;p>Utilizó la reducción cuántica (Quantum reduction) para demostrar que &amp;ldquo;si existe un algoritmo de tiempo polinomial capaz de resolver el problema LWE en el caso promedio (para $A$ y $\mathbf{e}$ elegidos al azar), entonces existe un algoritmo cuántico de tiempo polinomial capaz de resolver el Gap-SVP en el peor caso (el caso más difícil) para cualquier retículo&amp;rdquo;. (Posteriormente, Peikert y otros también demostraron una reducción clásica).&lt;/p>
&lt;p>Esta es una propiedad soñada en la teoría criptográfica. Esto se debe a que disipa la preocupación de que &amp;ldquo;la criptografía podría romperse si por casualidad elegimos una clave débil (una parte del caso promedio)&amp;rdquo; y ofrece una fuerte garantía de que &amp;ldquo;si se puede resolver el LWE promedio, entonces se pueden resolver todos los problemas difíciles del retículo (por lo tanto, el LWE es absolutamente difícil)&amp;rdquo;.&lt;/p>
&lt;div class="mermaid">graph TD
A["Problemas de retículos en el peor caso (Gap-SVP, SIVP)"] -->|Reducción Cuántica/Clásica| B["Problema LWE en el caso promedio"]
B -->|Construcción Criptográfica| C["Criptosistemas basados en LWE (PKE, KEM, FHE)"]
style A fill:#ffcccc,stroke:#ff0000,stroke-width:2px,color:#000
style B fill:#ccffcc,stroke:#00aa00,stroke-width:2px,color:#000
style C fill:#ccccff,stroke:#0000ff,stroke-width:2px,color:#000&lt;/div>
&lt;h1 id="5-construcción-de-un-sistema-de-criptografía-de-clave-pública-utilizando-lwe-criptografía-de-regev">5. Construcción de un sistema de criptografía de clave pública utilizando LWE (Criptografía de Regev)
&lt;/h1>&lt;p>Habiendo entendido la dificultad del problema LWE, veamos cómo funciona el cifrado y descifrado usándolo en el sistema de criptografía de clave pública básico propuesto por Oded Regev. Aquí explicaremos el mecanismo más básico para cifrar un mensaje de 1 bit $M \in \{0, 1\}$.&lt;/p>
&lt;h2 id="51-generación-de-claves-key-generation">5.1 Generación de claves (Key Generation)
&lt;/h2>&lt;ol>
&lt;li>Como parámetros del sistema, se determinan el módulo primo $q$, la dimensión $n$ y el número de ecuaciones $m$ ($m > n \log q$).&lt;/li>
&lt;li>Se elige al azar el vector secreto $\mathbf{s} \in \mathbb{Z}_q^n$ como clave privada.&lt;/li>
&lt;li>Se genera una matriz aleatoria $A \in \mathbb{Z}_q^{m \times n}$.&lt;/li>
&lt;li>Se selecciona un pequeño vector de error $\mathbf{e} \in \mathbb{Z}_q^m$ a partir de una distribución de errores como la distribución gaussiana discreta.&lt;/li>
&lt;li>Se calcula el vector $\mathbf{b} = A \mathbf{s} + \mathbf{e} \pmod q$.&lt;/li>
&lt;li>La clave pública (Public Key) será $(A, \mathbf{b})$.&lt;/li>
&lt;li>La clave secreta o privada (Secret Key) será $\mathbf{s}$.&lt;/li>
&lt;/ol>
&lt;p>La clave pública es precisamente una &amp;ldquo;instancia del problema LWE&amp;rdquo;. Dado que derivar la clave secreta $\mathbf{s}$ a partir de la clave pública $(A, \mathbf{b})$ equivale a resolver el problema de búsqueda LWE, la seguridad está garantizada.&lt;/p>
&lt;h2 id="52-cifrado-encryption">5.2 Cifrado (Encryption)
&lt;/h2>&lt;p>Alice cifra un mensaje de 1 bit $M \in \{0, 1\}$ utilizando la clave pública de Bob $(A, \mathbf{b})$.&lt;/p>
&lt;ol>
&lt;li>Elige un vector binario aleatorio (con componentes 0 o 1) $\mathbf{r} \in \{0, 1\}^m$.&lt;/li>
&lt;li>Como primera parte del texto cifrado, calcula el vector $\mathbf{u} = A^T \mathbf{r} \pmod q$. ($A^T$ es la matriz transpuesta de $A$. Es decir, suma las filas de $A$ donde el componente de $\mathbf{r}$ es 1).&lt;/li>
&lt;li>Como segunda parte del texto cifrado, calcula el escalar $v = \mathbf{b}^T \mathbf{r} + M \cdot \lfloor \frac{q}{2} \rfloor \pmod q$.
(Si el mensaje $M$ es 0, no suma nada; si es $1$, suma exactamente la mitad del valor de $q$, $\lfloor \frac{q}{2} \rfloor$).&lt;/li>
&lt;li>El texto cifrado (Ciphertext) será $(\mathbf{u}, v)$.&lt;/li>
&lt;/ol>
&lt;p>La implicación intuitiva del cifrado es tomar la &amp;ldquo;suma de un subconjunto aleatorio&amp;rdquo; de la matriz de la clave pública $A$ y del vector $\mathbf{b}$. Debido a la dificultad del problema LWE de decisión, este texto cifrado $(\mathbf{u}, v)$ parece indistinguible de un vector completamente aleatorio y de un número aleatorio uniforme (Seguridad semántica: Semantic Security).&lt;/p>
&lt;div class="mermaid">flowchart LR
M["Mensaje M en {0,1}"] --> Enc
PK["Clave Pública (A, b)"] --> Enc
r["Vector binario aleatorio r"] --> Enc
subgraph Enc ["Proceso de Cifrado"]
direction TB
u_calc["u = A^T * r mod q"]
v_calc["v = b^T * r + M * floor(q/2) mod q"]
end
Enc --> CT["Texto Cifrado (u, v)"]&lt;/div>
&lt;h2 id="53-descifrado-decryption">5.3 Descifrado (Decryption)
&lt;/h2>&lt;p>Bob descifra el texto cifrado $(\mathbf{u}, v)$ usando su clave secreta $\mathbf{s}$.&lt;/p>
&lt;ol>
&lt;li>Calcula el siguiente valor: $D = v - \mathbf{s}^T \mathbf{u} \pmod q$&lt;/li>
&lt;li>Si el resultado calculado está cerca de $0$, la salida es $M=0$; si está cerca de $\lfloor \frac{q}{2} \rfloor$, la salida es $M=1$.&lt;/li>
&lt;/ol>
&lt;p>Desarrollemos matemáticamente por qué se puede descifrar con esto.
Recuerde que $\mathbf{b} = A \mathbf{s} + \mathbf{e}$.&lt;/p>
$$
\begin{aligned}
v - \mathbf{s}^T \mathbf{u} &amp;= (\mathbf{b}^T \mathbf{r} + M \cdot \lfloor \frac{q}{2} \rfloor) - \mathbf{s}^T (A^T \mathbf{r}) \\
&amp;= ((A \mathbf{s} + \mathbf{e})^T \mathbf{r} + M \cdot \lfloor \frac{q}{2} \rfloor) - \mathbf{s}^T A^T \mathbf{r} \\
&amp;= (\mathbf{s}^T A^T \mathbf{r} + \mathbf{e}^T \mathbf{r} + M \cdot \lfloor \frac{q}{2} \rfloor) - \mathbf{s}^T A^T \mathbf{r} \\
&amp;= \mathbf{e}^T \mathbf{r} + M \cdot \lfloor \frac{q}{2} \rfloor \pmod q
\end{aligned}
$$
&lt;p>Aquí, $\mathbf{s}^T A^T \mathbf{r}$ se cancela claramente y desaparece de la ecuación.
Lo que queda es $\mathbf{e}^T \mathbf{r} + M \cdot \lfloor \frac{q}{2} \rfloor$.&lt;/p>
&lt;p>$\mathbf{e}$ es un vector de ruido con componentes muy pequeños, y $\mathbf{r}$ es un vector binario con componentes de 0 o 1. Por lo tanto, su producto interno $\mathbf{e}^T \mathbf{r}$ también permanece como un valor relativamente pequeño (si los parámetros se eligen adecuadamente).&lt;/p>
&lt;ul>
&lt;li>Si $M=0$, el resultado es $\mathbf{e}^T \mathbf{r}$, que será un valor pequeño cerca de $0$.&lt;/li>
&lt;li>Si $M=1$, el resultado es $\mathbf{e}^T \mathbf{r} + \lfloor \frac{q}{2} \rfloor$, que se situará alrededor de la mitad del valor de $q$, $\lfloor \frac{q}{2} \rfloor$.&lt;/li>
&lt;/ul>
&lt;p>Si los parámetros están diseñados para que el valor absoluto del error $\mathbf{e}^T \mathbf{r}$ sea menor a $\frac{q}{4}$, Bob puede determinar (descifrar) con precisión el mensaje $M$ simplemente verificando si el resultado del cálculo está más cerca de $0$ o de $\lfloor \frac{q}{2} \rfloor$. Este es el hermoso mecanismo por el cual funciona la criptografía basada en LWE.&lt;/p>
&lt;div class="mermaid">flowchart LR
CT["Texto Cifrado (u, v)"] --> Dec
SK["Clave Secreta s"] --> Dec
subgraph Dec ["Proceso de Descifrado"]
direction TB
calc["Calcular D = v - s^T * u mod q"]
check["Comprobar si D está más cerca de 0 o q/2"]
end
calc --> check
Dec --> M_out["Mensaje Recuperado M"]&lt;/div>
&lt;h1 id="6-ejemplo-ilustrativo-de-criptografía-lwe-usando-valores-numéricos-específicos">6. Ejemplo ilustrativo de criptografía LWE usando valores numéricos específicos
&lt;/h1>&lt;p>Es posible que resulte difícil comprender solo con una lista de fórmulas matemáticas, así que intentemos establecer parámetros numéricos muy pequeños y seguir los cálculos desde el cifrado hasta el descifrado.
(* En un sistema de criptografía real, se utilizan valores para $n$ mayores de 500 y para $q$ valores de miles o más para garantizar la seguridad).&lt;/p>
&lt;p>&lt;strong>[Configuración de parámetros]&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Módulo $q = 17$ (Un número primo. Por tanto, los valores están en el rango de $0$ a $16$).&lt;/li>
&lt;li>Dimensión $n = 2$&lt;/li>
&lt;li>Número de ecuaciones $m = 4$&lt;/li>
&lt;li>Supondremos que se cifrará el mensaje $M = 1$.&lt;/li>
&lt;li>Cantidad de desplazamiento del mensaje: $\lfloor \frac{q}{2} \rfloor = \lfloor \frac{17}{2} \rfloor = 8$&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>[1. Fase de generación de claves]&lt;/strong>
Bob elige su clave secreta $\mathbf{s}$, la matriz $A$ y el vector de error $\mathbf{e}$ al azar.
&lt;/p>
$$ \mathbf{s} = \begin{pmatrix} 3 \\ 4 \end{pmatrix} \in \mathbb{Z}_{17}^2 $$
$$ A = \begin{pmatrix} 2 &amp; 15 \\ 1 &amp; 8 \\ 14 &amp; 5 \\ 9 &amp; 10 \end{pmatrix} \in \mathbb{Z}_{17}^{4 \times 2} $$
$$ \mathbf{e} = \begin{pmatrix} 1 \\ -1 \\ 0 \\ 2 \end{pmatrix} \equiv \begin{pmatrix} 1 \\ 16 \\ 0 \\ 2 \end{pmatrix} \pmod{17} $$
&lt;p>Luego calcula la clave pública $\mathbf{b}$.
&lt;/p>
$$ A \mathbf{s} = \begin{pmatrix} 2 &amp; 15 \\ 1 &amp; 8 \\ 14 &amp; 5 \\ 9 &amp; 10 \end{pmatrix} \begin{pmatrix} 3 \\ 4 \end{pmatrix} = \begin{pmatrix} 2\times 3 + 15\times 4 \\ 1\times 3 + 8\times 4 \\ 14\times 3 + 5\times 4 \\ 9\times 3 + 10\times 4 \end{pmatrix} = \begin{pmatrix} 6 + 60 \\ 3 + 32 \\ 42 + 20 \\ 27 + 40 \end{pmatrix} = \begin{pmatrix} 66 \\ 35 \\ 62 \\ 67 \end{pmatrix} $$
&lt;p>
Calculando esto módulo 17 (como $66 = 17 \times 3 + 15$ etc.):
&lt;/p>
$$ A \mathbf{s} \pmod{17} = \begin{pmatrix} 15 \\ 1 \\ 11 \\ 16 \end{pmatrix} $$
&lt;p>
Sumando el vector de error $\mathbf{e}$:
&lt;/p>
$$ \mathbf{b} = A \mathbf{s} + \mathbf{e} = \begin{pmatrix} 15 \\ 1 \\ 11 \\ 16 \end{pmatrix} + \begin{pmatrix} 1 \\ 16 \\ 0 \\ 2 \end{pmatrix} = \begin{pmatrix} 16 \\ 17 \\ 11 \\ 18 \end{pmatrix} \equiv \begin{pmatrix} 16 \\ 0 \\ 11 \\ 1 \end{pmatrix} \pmod{17} $$
&lt;p>La clave pública es $A$ y $\mathbf{b} = (16, 0, 11, 1)^T$.&lt;/p>
&lt;p>&lt;strong>[2. Fase de cifrado]&lt;/strong>
Alice cifra el mensaje $M = 1$.
Elige un vector aleatorio $\mathbf{r}$. Aquí usaremos $\mathbf{r} = (1, 0, 1, 0)^T$.&lt;/p>
&lt;p>Calcula $\mathbf{u}$:
&lt;/p>
$$ \mathbf{u} = A^T \mathbf{r} = \begin{pmatrix} 2 &amp; 1 &amp; 14 &amp; 9 \\ 15 &amp; 8 &amp; 5 &amp; 10 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \\ 1 \\ 0 \end{pmatrix} = \begin{pmatrix} 2 \times 1 + 14 \times 1 \\ 15 \times 1 + 5 \times 1 \end{pmatrix} = \begin{pmatrix} 16 \\ 20 \end{pmatrix} \equiv \begin{pmatrix} 16 \\ 3 \end{pmatrix} \pmod{17} $$
&lt;p>Calcula $v$:
&lt;/p>
$$ \mathbf{b}^T \mathbf{r} = (16, 0, 11, 1) \begin{pmatrix} 1 \\ 0 \\ 1 \\ 0 \end{pmatrix} = 16 \times 1 + 11 \times 1 = 27 \equiv 10 \pmod{17} $$
&lt;p>
Suma el valor correspondiente al mensaje $M=1$, $\lfloor 17/2 \rfloor = 8$:
&lt;/p>
$$ v = \mathbf{b}^T \mathbf{r} + M \cdot 8 = 10 + 1 \times 8 = 18 \equiv 1 \pmod{17} $$
&lt;p>Alice envía el texto cifrado $(\mathbf{u}, v) = \left( \begin{pmatrix} 16 \\ 3 \end{pmatrix}, 1 \right)$ a Bob.&lt;/p>
&lt;p>&lt;strong>[3. Fase de descifrado]&lt;/strong>
Bob, al recibir el texto cifrado, lo descifra usando su clave secreta $\mathbf{s} = (3, 4)^T$.
Fórmula de descifrado: Calcula $D = v - \mathbf{s}^T \mathbf{u} \pmod{17}$.&lt;/p>
$$ \mathbf{s}^T \mathbf{u} = (3, 4) \begin{pmatrix} 16 \\ 3 \end{pmatrix} = 3 \times 16 + 4 \times 3 = 48 + 12 = 60 \equiv 9 \pmod{17} $$
$$ D = v - \mathbf{s}^T \mathbf{u} = 1 - 9 = -8 \pmod{17} $$
&lt;p>Aquí, en el mundo del módulo 17, $-8$ es igual a $9$ ($-8 + 17 = 9$).
Determina si el valor obtenido $D = 9$ está más cerca de $0$ o de $8$ ($\lfloor 17/2 \rfloor$).
Dado que $9$ está claramente más cerca de $8$ que de $0$, ¡Bob logra restaurar correctamente $M = 1$!&lt;/p>
&lt;p>¿Por qué resultó 9? Recordemos la prueba anterior.
La parte de error es $\mathbf{e}^T \mathbf{r} = (1, -1, 0, 2) (1, 0, 1, 0)^T = 1 \times 1 + 0 \times 1 = 1$.
Por lo tanto, el resultado del cálculo es $\mathbf{e}^T \mathbf{r} + M \cdot 8 = 1 + 8 = 9$, confirmando que se ha calculado el valor tal como en la teoría.&lt;/p>
&lt;h1 id="7-evolución-hacia-la-aplicación-práctica-ring-lwe-y-module-lwe">7. Evolución hacia la aplicación práctica: Ring-LWE y Module-LWE
&lt;/h1>&lt;p>El problema LWE estándar (Standard LWE) explicado hasta ahora tiene pruebas de seguridad muy sólidas, pero en la práctica tiene defectos fatales. Estos son el &amp;ldquo;tamaño gigante de las claves&amp;rdquo; y el &amp;ldquo;alto costo computacional&amp;rdquo;.&lt;/p>
&lt;p>En Standard LWE, la clave pública incluye una matriz gigante $A \in \mathbb{Z}_q^{m \times n}$. Cuando el parámetro $n$ alcanza cifras entre cientos y miles, el tamaño de esta matriz llega a varios megabytes, lo que la hace demasiado pesada para enviar y recibir cada vez a través de protocolos de comunicación en internet (como TLS). Además, la multiplicación de matrices y vectores requiere una complejidad computacional de $\mathcal{O}(n^2)$.&lt;/p>
&lt;p>Para resolver estos problemas se introdujeron el &amp;ldquo;Ring-LWE (RLWE)&amp;rdquo; y el &amp;ldquo;Module-LWE (MLWE)&amp;rdquo;, que incorporan estructuras algebraicas llamadas anillos de polinomios (Polynomial rings) en los retículos.&lt;/p>
&lt;h2 id="71-intuición-de-ring-lwe">7.1 Intuición de Ring-LWE
&lt;/h2>&lt;p>En Ring-LWE, los vectores y matrices se sustituyen por elementos (polinomios) de un anillo de polinomios $\mathcal{R}_q = \mathbb{Z}_q[X]/(X^n + 1)$. (Donde $n$ se elige como una potencia de 2).&lt;/p>
&lt;p>Mientras que la clave pública en Standard LWE era una matriz $A$, en Ring-LWE se utiliza un solo polinomio $a(x)$. La clave secreta $s(x)$ y el error $e(x)$ también se convierten en polinomios.
La ecuación queda de la siguiente manera:
&lt;/p>
$$ b(x) = a(x) \cdot s(x) + e(x) \pmod q $$
&lt;p>Al tratarse de multiplicación de polinomios, utilizando la &amp;ldquo;Transformada Teórica de Números (Number Theoretic Transform: NTT)&amp;rdquo;, que es similar a la Transformada Rápida de Fourier (FFT), la complejidad computacional se puede reducir drásticamente a $\mathcal{O}(n \log n)$. Además, debido a que el tamaño de la clave pública se reduce de una matriz a un solo polinomio, el tamaño de los datos se reduce a $\mathcal{O}(n)$. Esto proporciona una ventaja abrumadora en términos de ancho de banda de comunicación.&lt;/p>
&lt;p>Matemáticamente, Ring-LWE se reduce a problemas en retículos con una simetría especial conocidos como &amp;ldquo;Retículos Ideales (Ideal Lattices)&amp;rdquo; en lugar de retículos generales.&lt;/p>
&lt;h2 id="72-module-lwe-y-estandarización-del-nist-kyber--ml-kem">7.2 Module-LWE y Estandarización del NIST (Kyber / ML-KEM)
&lt;/h2>&lt;p>Aunque Ring-LWE es eficiente, había una ligera preocupación de que la estructura algebraica especial del retículo ideal pudiera ser la base para futuros ataques. Por lo tanto, el &amp;ldquo;Module-LWE (MLWE)&amp;rdquo; tomó &amp;ldquo;lo mejor de ambos mundos&amp;rdquo;: la seguridad conservadora de Standard LWE y la eficiencia de Ring-LWE.&lt;/p>
&lt;p>En Module-LWE, consideramos matrices y vectores pequeños cuyos elementos son polinomios. Es decir, manejamos módulos sobre anillos.
Actualmente, &amp;ldquo;CRYSTALS-Kyber&amp;rdquo; (Nombre estandarizado: ML-KEM), que ha sido seleccionado por el NIST como estándar para el algoritmo de intercambio de claves PQC (KEM), está construido precisamente en base a la dificultad de este problema Module-LWE.&lt;/p>
&lt;h1 id="8-por-qué-es-seguro-contra-las-computadoras-cuánticas">8. ¿Por qué es seguro contra las computadoras cuánticas?
&lt;/h1>&lt;p>Finalmente, tocaremos el núcleo de la pregunta: &amp;ldquo;¿Por qué se cree que la criptografía basada en retículos no se puede descifrar ni siquiera usando computadoras cuánticas?&amp;rdquo;&lt;/p>
&lt;p>El algoritmo de Shor, que hace que las computadoras cuánticas rompan RSA y ECC, es esencialmente un algoritmo para resolver el &amp;ldquo;Problema del Subgrupo Oculto (Hidden Subgroup Problem: HSP)&amp;rdquo;. La estructura matemática (grupos abelianos finitos) detrás de RSA y ECC tiene periodicidad, y al usar una operación cuántica específica llamada Transformada Cuántica de Fourier (QFT), este período (el subgrupo oculto) se puede extraer de una vez.&lt;/p>
&lt;p>Sin embargo, los problemas de retículos son fundamentalmente diferentes. Aunque los retículos también tienen periodicidad, lo que se busca en SVP y CVP son propiedades geométricas no lineales, como la &amp;ldquo;distancia más corta&amp;rdquo; o la &amp;ldquo;eliminación del ruido&amp;rdquo;. Incluso aplicando directamente la &amp;ldquo;Transformada Cuántica de Fourier sobre un grupo abeliano&amp;rdquo; como en el algoritmo de Shor, no se puede extraer eficientemente información útil que resuelva el problema del retículo. Hasta la fecha, no se han descubierto algoritmos cuánticos capaces de resolver SVP o LWE en tiempo polinomial, y se cree ampliamente que, a pesar del poder de cálculo paralelo de las computadoras cuánticas, el único método efectivo es una búsqueda casi exhaustiva (aproximadamente una aceleración de la raíz cuadrada mediante el algoritmo de Grover).&lt;/p>
&lt;h1 id="9-conclusión">9. Conclusión
&lt;/h1>&lt;p>En este artículo, explicamos detalladamente la intuición matemática de la criptografía de retículos, comenzando con la definición geométrica de los retículos, seguido de la formulación del problema LWE, hasta la construcción de la criptografía de clave pública.&lt;/p>
&lt;ol>
&lt;li>Un &lt;strong>Retículo (Lattice)&lt;/strong> es un espacio discreto representado por combinaciones lineales con coeficientes enteros de vectores base, y en altas dimensiones resulta difícil encontrar una &amp;ldquo;buena base&amp;rdquo; casi ortogonal (SVP).&lt;/li>
&lt;li>El &lt;strong>Problema LWE (Learning With Errors)&lt;/strong> es un problema de resolver sistemas de ecuaciones lineales con ruido, y dado que esto está ligado a la dificultad del problema del retículo en el peor de los casos, proporciona una base sólida para la seguridad.&lt;/li>
&lt;li>Utilizando el problema LWE, el cifrado y descifrado (&lt;strong>Criptografía de Regev&lt;/strong>) se logran mediante un ingenioso mecanismo que intencionalmente añade y elimina el ruido.&lt;/li>
&lt;li>En los protocolos reales, se emplean &lt;strong>Ring-LWE&lt;/strong> o &lt;strong>Module-LWE&lt;/strong> usando anillos de polinomios para aumentar la eficiencia de comunicación y la velocidad de cálculo, sirviendo como la base del estándar &lt;strong>ML-KEM&lt;/strong> del NIST.&lt;/li>
&lt;/ol>
&lt;p>Con el cambio de paradigma computacional sin precedentes que representan las computadoras cuánticas acercándose, es muy fascinante que la &amp;ldquo;criptografía de retículos&amp;rdquo;, nacida del abismo del álgebra lineal clásica y la teoría de números, se convierta en la base de la seguridad del internet del futuro. Las matemáticas subyacentes a la criptografía de retículos no son excesivamente complejas, y con conocimientos básicos de álgebra lineal y probabilidades, es perfectamente posible comprender su hermosa estructura. Esperamos que este artículo sirva de ayuda para comprender la criptografía de retículos, el núcleo de la PQC.&lt;/p></description></item></channel></rss>