Procedimientos de firma
FALCON explicado matemáticamente
Cómo se firma una valoración de McGesund con FN-DSA (FALCON) — y por qué un solo carácter modificado rompe la firma.
Actualizado: 2026-09-07
1. De qué trata esto
Una valoración en McGesund no es un campo de texto de una base de datos en el que haya que creer sin más. Al enviarla se firma digitalmente, y cualquier visitante puede recalcular esa firma más tarde en su propio navegador.
Para una parte de esas firmas utilizamos FALCON — más concretamente FN-DSA-512 y FN-DSA-1024. Este artículo explica qué ocurre matemáticamente en el proceso.
Una precisión previa:
FALCON no es un cifrado. El texto de la valoración está justamente para leerse. FALCON no demuestra confidencialidad, sino origen e integridad.
2. Qué se firma exactamente
No se firma el texto corrido, sino un objeto de datos compacto que fija el texto de forma inequívoca:
{
"v": 1,
"typ": "rev-comment",
"f": "<ID de la empresa>",
"c": "<ID de la valoración>",
"h": "<SHA-256 del texto de la valoración>",
"rh": "<SHA-256 del registro de envío completo>",
"rv": 1,
"qh": "<SHA-256 del envelope QR, solo en valoraciones por QR>",
"iat": 1757203200
}
Ese es nuestro mensaje . Vincula entre sí:
- a qué empresa pertenece la valoración (
f), - de qué valoración se trata (
c), - qué texto había detrás — como valor hash (
h), - qué registro se envió en su conjunto (
rh): texto, corazones, estado de geolocalización y datos del motivo, serializados de forma canónica y con hash, en la versión de esquemarv, - de qué código QR procede la valoración (
qh) — en una valoración sin QR el campo no aparece, - cuándo se firmó (
iat).
Un solo carácter modificado en el texto de la valoración rompe esta cadena. Ese es exactamente el propósito — y desde rh lo mismo vale para un corazón desplazado a posteriori o un estado de geolocalización alterado.
3. El problema de fondo
Un lector que llega a un perfil de empresa se plantea dos preguntas:
- ¿Procede esta valoración realmente del sistema de McGesund?
- ¿Se ha modificado posteriormente?
Para eso existe un par de claves:
- una clave privada — permanece en el servicio de firma
- una clave pública — puede tenerla cualquiera
Se firma con la privada y se verifica con la pública. Y además en el dispositivo del lector, no en nuestro servidor.
4. ¿Por qué FALCON?
Muchos procedimientos de firma actuales se basan en problemas que son difíciles para los ordenadores clásicos, pero que podrían volverse mucho más fáciles para ordenadores cuánticos suficientemente grandes.
En una valoración eso es más relevante que en un mensaje efímero: una valoración debe seguir siendo verificable dentro de cinco o diez años. Quien firma hoy, firma para toda la vida útil de la entrada.
Por eso FALCON se basa en la criptografía de retículos:
Se construye un retículo matemáticamente fácil de describir en el que una determinada tarea de búsqueda es extremadamente difícil.
5. ¿Qué es un retículo matemático?
Dos vectores:
Todas las combinaciones enteras
dan lugar a un retículo de puntos. Por ejemplo:
Lo decisivo es:
El retículo en sí es fácil de describir. Encontrar en él determinadas propiedades es muy difícil.
6. El secreto son los vectores cortos
La tarea difícil clásica dice:
Ese es el Shortest Vector Problem. En dos dimensiones se puede resolver probando. FALCON trabaja en dimensión 512 o 1024 — allí no hay nada que hacer.
Ahora bien, FALCON no necesita el vector más corto en términos absolutos, sino algo emparentado: encontrar, para un punto objetivo dado, un punto del retículo cercano. Eso también es difícil sin la información adicional adecuada.
7. Polinomios en lugar de números
FALCON utiliza un retículo NTRU y calcula con polinomios. Es decir, en lugar de con números sueltos, con listas de coeficientes:
Se calcula en el anillo
Eso significa:
- : calcular módulo . Con , por ejemplo, , porque .
- : mantiene los polinomios en una longitud fija.
En concreto, FALCON utiliza:
8. El truco central
La clave privada consta de cuatro polinomios pequeños
con la ecuación NTRU
Los cuatro forman en conjunto una base secreta y bien comportada del retículo — una descripción del retículo mediante vectores cortos.
La clave pública es, en esencia, un único polinomio:
De resulta el mismo retículo, pero en una base poco manejable formada por vectores largos:
Ahí está todo el núcleo de FALCON. Ambas bases describen el mismo retículo. Solo que una sirve para calcular y la otra no.
Puede imaginarse como un plano de una ciudad: público es el mapa completo. Secreto es el conocimiento de los atajos.
9. La valoración se convierte en un punto
Antes de firmar, el objeto payload pasa por una función hash. FALCON emplea para ello Hash-to-Point: del mensaje no sale un valor numérico, sino directamente un punto en el anillo.
Además, el servicio de firma extrae un salt aleatorio (320 bits) y lo incluye en el hash:
El salt no es un adorno. Sin él, la misma valoración daría siempre la misma firma, y a partir de muchas firmas se podría reconstruir la base secreta. Por eso viaja también dentro de la firma.
10. Qué es una firma válida
Se busca un par
con dos propiedades:
La primera condición por sí sola es trivial de cumplir — basta con poner y . Es la segunda condición la que hace difícil la tarea.
11. Un miniejemplo calculado por completo
Reducimos todo a tamaño de juguete: polinomios con un solo coeficiente, es decir, números corrientes, y
La clave secreta. Dos números pequeños:
La clave pública. Se tiene , porque . Así pues:
El retículo. .
La base pública resulta directamente de :
Ambos están en — y ambos son largos.
La base secreta solo la conoce el servicio de firma:
porque y . El determinante es
de modo que la ecuación NTRU se cumple. Ambos vectores son cortos.
Paso 1: Calcular el hash de la valoración
Supongamos que el objeto payload de la valoración da
Paso 2: Una primera solución, mala
cumple . Pero la longitud es — demasiado larga con diferencia.
Paso 3: Acortar con la base secreta
El servicio de firma expresa el punto objetivo en su base corta:
Eso lleva a y . Redondeando a y resulta el punto del retículo
Comprobación: , es decir, efectivamente está en . Restamos:
Longitud:
Esa es la firma.
Paso 4: El mismo procedimiento con la base pública
Quien solo conoce dispone de la base . El mismo cálculo de redondeo da allí el punto del retículo y, con él,
También es una solución válida de la ecuación — pero siete veces más larga. Si la cota de aceptación se fija por debajo de 26, esa solución no vale nada.
Esa es la trampa de FALCON en una línea.
Paso 5: El navegador verifica
El navegador recibe la valoración, el salt y . Recalcula el hash, obtiene , reconstruye
y comprueba la longitud:
Paso 6: Alguien modifica el texto de la valoración
Si el texto se modifica a posteriori, cambia el hash del contenido y con él el punto, digamos que a
La firma antigua sigue siendo , pero
Podemos borrar una valoración. Lo que no podemos es modificarla sin que se note.
Nota de honestidad sobre el ejemplo
En dos dimensiones un atacante puede encontrar soluciones cortas simplemente probando — para , por ejemplo, . El ejemplo no es seguro; solo muestra el mecanismo. En FALCON-1024 el vector tiene 2048 coeficientes, y allí probar no lleva a ninguna parte.
12. ¿Por qué no basta con redondear?
El procedimiento del paso 3 se llama redondeo de Babai. Para un ejemplo didáctico basta — para un procedimiento de firma real, no.
La razón: las firmas redondeadas no se distribuyen de manera uniforme. Su forma depende de la geometría de la base secreta. A partir de un número suficiente de firmas se podría reconstruir esa geometría — y con ella la clave privada. Precisamente en eso fracasaron procedimientos de firma basados en retículos anteriores.
Por eso FALCON extrae los vectores cortos de una distribución gaussiana discreta sobre el retículo:
Los valores próximos al punto objetivo son más probables, pero cuál se elige exactamente es aleatorio. El resultado es una distribución que no revela nada sobre la base utilizada — matemáticamente: no se distingue de una distribución que dependa únicamente del retículo mismo.
Ese muestreador es la parte más exigente de FALCON. Funciona de forma recursiva sobre una estructura de árbol y trabaja con números en coma flotante — lo que hace delicada la implementación y es la razón principal de que FALCON sea más difícil de implementar correctamente que ML-DSA.
13. Qué se transmite realmente
La firma consta de
Solo — no el par. lo calcula el propio verificador:
Como los coeficientes de son pequeños y se dispersan en torno a cero, se pueden comprimir mucho. Esa es la razón de las firmas llamativamente compactas de FALCON:
| clave pública | firma | |
|---|---|---|
| FALCON-512 | 897 B | ~666 B |
| FALCON-1024 | 1.793 B | ~1.280 B |
Para comparar: ML-DSA-87 necesita 4.627 bytes. En McGesund, sin embargo, ninguna de estas firmas va dentro del propio código QR — el adhesivo lleva solo el envelope Ed25519; los sellos post-cuánticos están junto al registro y se cargan al verificar. El tamaño no decide aquí, por tanto, sobre la imprimibilidad, sino sobre almacenamiento y transmisión: un sello FALCON ocupa aproximadamente una cuarta parte de un sello ML-DSA.
14. Por qué FALCON verifica rápido
La multiplicación de polinomios ingenua cuesta
Con la transformada rápida de Fourier eso baja aproximadamente a
Con esa es la diferencia entre un millón y unas diez mil operaciones. Por eso la verificación se ejecuta en milisegundos en el navegador de un visitante — y por eso la F está en el nombre:
FAst Fourier Lattice-based COmpact signatures over NTRU.
15. El proceso en imagen
16. Por qué fracasa un atacante
Conoce y con ello todo el retículo. Conoce también el punto objetivo en cuanto la valoración es pública. Lo que le falta es la base corta.
Para falsificar una valoración tendría que encontrar, para un elegido por él mismo, un vector corto — únicamente a partir de la descripción pública. Esa es la tarea que ha ilustrado el paso 4 del ejemplo: sin los vectores buenos, el mismo cálculo acaba en una solución demasiado larga.
En dimensión 1024, los mejores procedimientos conocidos — tanto clásicos como cuánticos — están muy lejos de conseguirlo.
17. Qué hace McGesund concretamente con esto
El envelope. Cada valoración firmada lleva una firma Ed25519. Esa es la variante obligatoria — clásica, muy pequeña, verificable de forma nativa en cualquier navegador.
Los sellos post-cuánticos. Junto a ella se colocan una o dos firmas resistentes a la computación cuántica. Cuáles, depende de la tarifa:
| Tarifa | niveles de firma disponibles |
|---|---|
| Basis | Ed25519, FN-DSA-512 |
| Klassik | Ed25519, FN-DSA-512, FN-DSA-1024 |
| Pro | Ed25519, FN-DSA-1024, ML-DSA-87 |
| Premium | Ed25519, FN-DSA-1024, ML-DSA-87, ambas en paralelo |
La variante en paralelo es deliberadamente redundante. FALCON se apoya en retículos NTRU y ML-DSA en retículos de módulos. Si una de las dos familias resultara ser más débil de lo que hoy se supone, la otra sigue sosteniendo.
El ancla temporal. La huella de la clave de firma se ancla mediante OpenTimestamps en un bloque de Bitcoin. Con ello no solo queda acreditado que la firma es auténtica, sino también que ya existía en un momento determinado — sin que nadie tenga que creerse nuestra marca de tiempo.
Todo eso se calcula en el navegador del lector, mediante un módulo WASM. Nosotros entregamos los datos; la verificación se ejecuta en el dispositivo del visitante. Si mañana desapareciéramos de la red, una valoración ya cargada seguiría siendo verificable.
Sobre los nombres: FALCON se está estandarizando actualmente como FN-DSA; el borrador está previsto como FIPS 206, pero aún no está cerrado. Por eso los niveles se llaman FN-DSA-512 y FN-DSA-1024 en el código de McGesund, aunque en el uso corriente se siga hablando de FALCON.
18. La intuición más importante
La clave pública es la descripción completa de un laberinto. Cualquiera puede mirarla.
La firma es la prueba: «He encontrado un camino muy corto para exactamente esta valoración».
La clave privada es el conocimiento de los atajos.
El lector no necesita conocer los atajos. Solo comprueba si el camino presentado es realmente corto y si pertenece realmente a esta valoración. Ambas cosas puede hacerlas sin nosotros.
Quien modifica el texto desplaza el punto — y el camino antiguo lleva al vacío.