Mecanismos Criptográficos CCN-STIC 221
Mecanismos Criptográficos CCN-STIC 221
CCN-STIC 221
Octubre de 2024
CCN-STIC-221 Guía de Mecanismos Criptográficos autorizados por el CCN
[Link]
Catálogo de Publicaciones de la Administración General del Estado
[Link]
Edita:
CENTRO CRIPTOLOGICO
NACIONAL
cn=CENTRO CRIPTOLOGICO
NACIONAL, [Link]=VATES-
Pº de la Castellana 109, 28046 Madrid
S2800155J, ou=CENTRO
Centro Criptológico Nacional, 2023 CRIPTOLOGICO NACIONAL,
o=CENTRO CRIPTOLOGICO
NIPO: pendiente de asignación. NACIONAL, c=ES
Fecha de Edición: octubre de 2024 2024.10.18 12:09:23 +02'00'
LIMITACIÓN DE RESPONSABILIDAD
El presente documento se proporciona de acuerdo con los términos en él recogidos, rechazando
expresamente cualquier tipo de garantía implícita que se pueda encontrar relacionada. En ningún caso,
el Centro Criptológico Nacional puede ser considerado responsable del daño directo, indirecto, fortuito
o extraordinario derivado de la utilización de la información y software que se indican incluso cuando se
advierta de tal posibilidad.
AVISO LEGAL
Quedan rigurosamente prohibidas, sin la autorización escrita del Centro Criptológico Nacional, bajo las
sanciones establecidas en las leyes, la reproducción parcial o total de este documento por cualquier
medio o procedimiento, comprendidos la reprografía y el tratamiento informático, y la distribución de
ejemplares del mismo mediante alquiler o préstamo públicos.
ÍNDICE
1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1 Objetivo de la Guía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 Mecanismos Criptográcos . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.1 Algoritmos, Protocolos y Esquemas . . . . . . . . . . . . . . . . . . . . . 13
1.2.2 Tipos de Ataque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.3 Esquemas Simétricos y Asimétricos . . . . . . . . . . . . . . . . . . . . . 16
1.3 Complejidad de un Ataque y Niveles de Seguridad . . . . . . . . . . . . . . 16
1.3.1 Complejidad de un Ataque . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3.2 Niveles de Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.4 Organización de la Guía . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2 Mecanismos Simétricos . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1 Primitivas Simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 Cifradores en Flujo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.2 Cifradores en Bloque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.3 Funciones Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.4 Funciones resumen con salida variable . . . . . . . . . . . . . . . . . . . . 25
2.1.5 Compartición de Secretos . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 Construcciones Simétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.1 Modos de operación en el Cifrado y Descifrado . . . . . . . . . . . . . . . 27
2.2.2 Cifrado de Disco Duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.2.3 Códigos de Autenticación de Mensajes . . . . . . . . . . . . . . . . . . . . 30
2.2.4 Esquemas Simétricos de Autenticación de Entidades . . . . . . . . . . . . 33
2.2.5 Cifrado Autenticado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.2.6 Protección de las Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2.7 Funciones de Derivación de Claves . . . . . . . . . . . . . . . . . . . . . . 37
2.2.8 Mecanismos de Protección de Contraseñas . . . . . . . . . . . . . . . . . 38
2.2.9 Mecanismos de Combinación de Claves . . . . . . . . . . . . . . . . . . . 40
3 Mecanismos Asimétricos . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1 Primitivas Asimétricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1.1 Problema de la Factorización de Números Enteros (RSA) . . . . . . . . . . 42
3.1.2 Problema del Logaritmo Discreto Multiplicativo . . . . . . . . . . . . . . . 43
3.1.3 Problema del Logaritmo Discreto Aditivo . . . . . . . . . . . . . . . . . . 45
3.1.4 Otros Problemas Computacionalemente Difíciles . . . . . . . . . . . . . . 48
3.2 Construcciones Asimétricas . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.1 Esquemas de Cifrado Asimétrico . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.2 Firmas Digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2.3 Esquemas de Autenticación de Entidad Asimétrica . . . . . . . . . . . . . 55
3.2.4 Establecimiento de Claves y Encapsulación de Claves . . . . . . . . . . . . 55
4 Protocolos Criptográcos . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.1 TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.1.1 TLS Versión 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.1.2 TLS Versión 1.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.2 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4.2.1 Acuerdo de Clave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.2.2 Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
4.2.3 Integridad y Autenticidad en Origen . . . . . . . . . . . . . . . . . . . . . 74
4.2.4 Autenticación del Servidor y del Cliente . . . . . . . . . . . . . . . . . . . 75
4.3 IPSEC con IKEV2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
4.3.1 Acuerdo de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
4.3.2 Cifrado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.3.3 Integridad y Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.3.4 Funciones Pseudo-aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . 78
4.3.5 Mecanismos de Autenticación . . . . . . . . . . . . . . . . . . . . . . . . 78
5 Generadores de Números Aleatorios . . . . . . . . . . . . . . . . . . . 80
5.1 Generadores de Números Aleatorios . . . . . . . . . . . . . . . . . . . . . . 80
5.2 Generadores Físicos de Números Aleatorios . . . . . . . . . . . . . . . . . . 81
5.3 Generadores Deterministas de Números Aleatorios . . . . . . . . . . . . . . 83
5.4 Generadores No Físicos de Números Realmente Aleatorios . . . . . . . . . . 85
5.5 Generación de Números Aleatorios con una Distribución Especíca . . . . . 87
6 Gestión de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.1 Generación de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.2 Almacenamiento y Transporte de Claves . . . . . . . . . . . . . . . . . . . 91
6.3 Uso de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.4 Destrucción de Claves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
7 Autenticación de Personas . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.1 Autenticación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7.2 Procedimientos de Autenticación . . . . . . . . . . . . . . . . . . . . . . . 93
7.2.1 Limitación en el Número de Ensayos . . . . . . . . . . . . . . . . . . . . . 94
7.2.2 Limitación Temporal en el Número de Ensayos . . . . . . . . . . . . . . . 94
ANEXOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
A Generación de Primos y Claves RSA . . . . . . . . . . . . . . . . . . . 97
A.1 Generación de Números Primos . . . . . . . . . . . . . . . . . . . . . . . . 97
A.2 Test de Primalidad y de Pseudo-Primalidad . . . . . . . . . . . . . . . . . . 99
A.2.1 Generación de Primos Probables (Probable Primes ) . . . . . . . . . . . . . 100
A.3 Generación del Par de Claves de RSA . . . . . . . . . . . . . . . . . . . . . 103
A.4 Ataque ROCA al Algoritmo RSA . . . . . . . . . . . . . . . . . . . . . . . 104
B Criptografía Postcuántica . . . . . . . . . . . . . . . . . . . . . . . . . 106
B.1 La Amenaza Cuántica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
B.1.1 Convocatoria del NIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
B.1.2 Seguridad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
B.2 Criptografía Basada en Retículos . . . . . . . . . . . . . . . . . . . . . . . 111
B.2.1 Retículos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
B.2.2 ML-KEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
B.2.3 FRODOKEM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
B.2.4 ML-DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
B.3 Firmas Digitales Basadas en Funciones Resumen . . . . . . . . . . . . . . . 140
TABLAS
Tabla 2.1. Tipos autorizados de cifradores en bloque . . . . . . . . . . . . . . 23
Tabla 2.2. Funciones resumen autorizadas . . . . . . . . . . . . . . . . . . . . 25
Tabla 2.3. Primitivas XOF autorizadas . . . . . . . . . . . . . . . . . . . . . . 26
Tabla 2.4. Compartición de secretos autorizada . . . . . . . . . . . . . . . . . 27
Tabla 2.5. Modos autorizados de cifrado simétrico . . . . . . . . . . . . . . . . 28
Tabla 2.6. Modos autorizados de cifrado simétrico para cifrado de disco . . . . 30
Tabla 2.7. MAC autorizados basados en cifradores en bloque y funciones resumen 31
Tabla 2.8. Tamaño de los protocolos de desafío-respuesta autorizados . . . . . 34
Tabla 2.9. Esquemas simétricos de cifrado autenticado autorizados . . . . . . . 35
Tabla 2.10. Esquemas de protección de claves autorizados . . . . . . . . . . . . 37
Tabla 2.11. Caption without FN . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Tabla 2.12. Mecanismos de protección de contraseñas autorizados . . . . . . . . 39
Tabla 2.13. Mecanismos de hibridación de claves autorizados . . . . . . . . . . . 40
Tabla 3.1. Tamaño de las Primitivas RSA autorizadas . . . . . . . . . . . . . . 43
Tabla 3.2. Tamaño de las primitivas autorizadas del logaritmo discreto
multiplicativo sobre un cuerpo nito . . . . . . . . . . . . . . . . . 44
Tabla 3.3. Esquemas autorizados para generar nuevos grupos . . . . . . . . . . 44
Tabla 3.4. Parámetros autorizados para generar nuevos grupos . . . . . . . . . 44
Tabla 3.5. Curvas elípticas autorizadas . . . . . . . . . . . . . . . . . . . . . . 47
Tabla 3.6. Esquema de cifrado asimétrico autorizado . . . . . . . . . . . . . . 50
Tabla 3.7. Esquemas de rma digital autorizados . . . . . . . . . . . . . . . . 52
Tabla 3.8. Esquemas de establecimiento de claves y de encapsulación de claves
autorizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Tabla 4.1. Versiones del protocolo TLS autorizadas . . . . . . . . . . . . . . . 62
Tabla 4.2. Suites criptográcas autorizadas para el protocolo TLS 1.3 . . . . . 65
Tabla 4.3. Modos de clave precompartida recomendados para el protocolo TLS 1.3 65
Tabla 4.4. Grupos de Die-Hellman recomendados para el protocolo TLS 1.3 . 66
Tabla 4.5. Algoritmos de rma (cliente/servidor) recomendados para el protocolo
TLS 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Tabla 4.6. Algoritmos de rma (en certicados) recomendados para el protocolo
TLS 1.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Tabla 4.7. Suites criptográcas recomendadas para TLS 1.2 con un servidor que
disponga de un certicado con la clave pública EC-DSA . . . . . . . 68
Tabla 4.8. Suites criptográcas heredadas para TLS 1.2 con un servidor que
disponga de un certicado con la clave pública RSA . . . . . . . . . 68
Tabla 4.9. Suites criptográcas recomendadas para TLS 1.2 cuando no hay
soporte ECC o modo de cifrado autenticado . . . . . . . . . . . . . 69
Tabla 4.10. Suites criptográcas recomendadas para TLS 1.2 con clave
precompartida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Tabla 4.11. Grupos de Die-Hellman recomendados para el protocolo TLS 1.2 . 71
Tabla 4.12. Algoritmos de rma recomendados para el protocolo TLS 1.2 . . . . 71
Tabla 4.13. Funciones resumen para el protocolo TLS 1.2 . . . . . . . . . . . . 71
Tabla C.1. Curvas twisted de Edwards aprobadas para su uso en el esquema EdDSA173
1. Introducción
1 [Link]
6. A lo largo de esta guía se incluirán diferentes cajas de texto, con fondos de diferentes
colores, con información relevante y destacada. A continuación se muestra un
ejemplo de cada una de ellas señalando el tipo de información que contiene.
7.
[ Denición:] estas cajas de texto con fondo verde contienen la denición del
término que aparece en negrita y entre corchetes al inicio del mismo.
8.
[ Recomendación:] las cajas de texto con fondo amarillo contienen
recomendaciones a tener en cuenta, pero sin que tengan un carácter obligatorio.
10. Por otra parte, es importante señalar que en esta Guía se consideran, inicialmente,
dos tipos de productos criptográcos, fundamentalmente relacionados con su
perdurabilidad en el tiempo, a tenor de la fortaleza o robustez que ofrecen, en
tanto no se conozcan nuevos ataques, vulnerabilidades o debilidades que pongan en
entredicho tal fortaleza. Por ello, se llevará a cabo una actualización permanente
de esta Guía que tenga en cuenta los posibles ataques que se publiquen, ya sean de
tipo criptoanalítico, por canal lateral e inducción de fallos, o por el desarrollo de la
computación cuántica.
de tal manera que su seguridad es solo aceptable a corto plazo. Esto es,
son mecanismos que deben dejar de utilizarse en un corto plazo de tiempo
porque el estado del arte ha demostrado que su garantía de seguridad se ha
visto comprometida. Para estos mecanismos heredados, se ha considerado un
periodo de validez. La principal razón para que el uso de estos mecanismos
se mantenga durante determinado periodo de tiempo se debe a razones de
compatibilidad dado que están implementados a gran escala y necesitan de
un tiempo para ser sustituidos por otros más seguros (los recomendados).
12.
[ Mecanismos recomendados:] son aquellos que ofrecen un nivel de seguridad
criptográca probada de, al menos, 125 bits.
14. Dado que no es posible establecer a priori durante cuánto tiempo un mecanismo
criptográco permanecerá siendo seguro, debido a la publicación de nuevos ataques
o a la mejora en los tiempos de computación que puedan vulnerar los algoritmos
en los que tales mecanismos se basan, esta Guía puede considerarse conservadora
en el sentido de que primará la seguridad sobre cualquier otro aspecto. Por ello, los
nuevos mecanismos criptográcos que puedan recomendarse en el futuro deberán
utilizar los algoritmos y los tamaños de clave que hayan sido probados seguros.
15. Así, si el estado del arte lo aconseja, es posible que un mecanismo recomendado en
una versión determinada de esta Guía, pase a ser considerado como heredado en
versiones posteriores, si existen razones de peso para ello, como por ejemplo, por
compatibilidad con implementaciones o arquitecturas previas. Esta cuestión es de
especial relevancia si, por ejemplo, los avances de la computación cuántica son más
rápidos de los que se consideran en la literatura.
16. De hecho, es sabido que los dos problemas computacionalmente difíciles en los
que se fundamenta la seguridad de la mayoría de los criptosistemas asimétricos
(o de clave pública), como son el problema de la factorización de enteros o IFP
(Integer Factorization Problem) y el problema del logaritmo discreto o DLP (Discrete
18. Así, por ejemplo, si la criptografía simétrica puede ver reducida su seguridad a la
mitad de las longitudes de las claves usadas hoy en día, debería recomendarse el uso
de sistemas cuya seguridad equivalente sea considerada segura, esto es, al menos,
256 bits (ya hemos mencionado que los mecanismos recomendados son aquellos que
ofrecen una seguridad probada de, al menos, 128 bits).
21. Con el n de establecer una terminología clara a lo largo de esta Guía, a continuación
presentamos los principales conceptos utilizados. Es importante tener en cuenta que
las deniciones que se ofrecen a continuación, como por ejemplo, la distinción entre
esquemas criptográcos, protocolos criptográcos o primitivas de construcciones,
pueden considerarse en cierto modo arbitrarias, ya que los límites entre los diferentes
conceptos pueden ser difusos.
22. Con el n de tener una referencia externa, seguimos la propuesta de [Sch21], que
está en consonancia con las prácticas comunes de la comunidad criptográca y
parece ser compartida por otros organismos internacionales como [ACM1.3].
Al igual que con los algoritmos, se espera que un protocolo satisfaga ciertos
objetivos de seguridad. Los protocolos criptográcos requieren la interacción
entre dos o más partes y, por lo tanto, la denición de estos protocolos requiere
la denición de los tipos de canales que están disponibles para estos usuarios.
23.
[ Algoritmo Criptográco:] conjunto de pasos que para una entrada dada
proporciona una salida vericando determinados objetivos de seguridad.
24.
[ Protocolo Criptográco:] algoritmo distribuido que describe las interacciones
entre dos o más entidades, logrando ciertos objetivos de seguridad.
25.
[ Esquema Criptográco:] conjunto de algoritmos y protocolos criptográcos
relacionados que cumplen ciertos objetivos de seguridad.
28. Debe tenerse en cuenta que es posible que un mecanismo criptográco dado
sea simultáneamente una primitiva y una construcción, dependiendo de si forma
parte como primitiva de un protocolo o de si está compuesto por otras primitivas
criptográcas. A modo de ejemplo, el algoritmo de rma digital basado en
curvas elípticas o ECDSA (Elliptic Curve Digital Signature Algorithm) puede
considerarse como una construcción, dado que se basa en una función resumen
(hash ) criptográca y en el logaritmo discreto en un grupo de puntos de una curva
elíptica, y, a la vez, puede usarse como una primitiva en un protocolo de intercambio
de claves autenticado.
30. Ejemplos de primitivas atómicas son, por ejemplo, el estándar de cifrado avanzado
o AES (Advanced Encryption Standard ), la función resumen SHA-256, o problemas
como el de la factorización de enteros y el del logaritmo discreto sobre cuerpos
nitos (ya sea en su versión multiplicativa o aditiva).
33. Muchas veces se da por hecho que los canales de comunicación ofrecen garantías de
seguridad especícas. Así, suele entenderse que un canal privado (o canal seguro)
es un canal punto a punto que utiliza alguna forma de cifrado para proteger la
información intercambiada contra posibles escuchas y, además, es muy probable que
emplee alguna forma de autenticación para evitar la manipulación de los mensajes.
Por otra parte, un canal sin protección contra escuchas ilegales y manipulaciones
suele denominarse canal público (o canal inseguro).
34. Los modelos de comunicación describen los tipos de canales que están disponibles
entre diferentes conjuntos de entidades.
35. Por otra parte, también se distinguen los ataques pasivos de los activos, de modo
que ambos tipos de ataque se denen en función del adversario o atacante. Si una
entidad ha caído bajo el control de un adversario se dice que es corrupta; mientras
que las entidades restantes se consideran honestas.
36.
[ Ataque Pasivo:] ataque en el que el adversario no interere, solo escucha y
registra, la comunicación entre las entidades.
40. Los esquemas criptográcos simétricos y asimétricos siguen diseños muy diferentes
y, por extensión, los mecanismos criptográcos se clasican de forma análoga a
los esquemas. Es interesante indicar que las funciones resumen son mecanismos
criptográcos que no emplean claves y se consideran primitivas criptográcas
simétricas.
seguridad proporcionada por dicho mecanismo. mente este número se expresa como
un logaritmo en base 2, de modo que una seguridad de 100 bits signica que son
100
necesarias 2 operaciones para romper el mecanismo.
42. Las diferentes métricas de complejidad que evalúan el coste de ejecutar un ataque
son las siguientes:
43.
[ Complejidad temporal:] es la cantidad de cálculos fuera de línea necesarios
para realizar con éxito un ataque criptográco.
44.
[ Complejidad en memoria:] es la cantidad de almacenamiento necesario para
ejecutar exitosamente un ataque.
45.
[ Complejidad en datos:] es la cantidad de interacciones que el adversario
necesita realizar con el mecanismo criptográco para desarrollar el ataque.
Por ejemplo, dado que en una red a 100 Gb/s, el tiempo necesario para
64
intercambiar 2 bloques de AES es aproximadamente setecientos años, los
64
posibles ataques contra AES que requieran acceder a más de 2 bloques de
datos no son un problema real.
52. A modo de ejemplo, es sabido que las claves de DES se almacenan en 64 bits y
que 8 de esos bits (el último de cada byte) son redundantes, esto es, son los bits
de paridad que verican que cada grupo de 7 bits que precede a cada uno de ellos
es correcto. Así pues, la longitud de la clave de DES es, realmente, de solo 56 bits.
Como consecuencia, la longitud de la clave de Triple-DES con 2 claves (resp. 3
claves) es de 112 bits (resp. 168 bits), que es estrictamente menor que los 128 bits
(resp. 192 bits) utilizados para su almacenamiento.
esta clave es de 283,89 operaciones (resp. 2112,63 operaciones), que sería equivalente
a una seguridad de unos 83 bits en el primer caso (resp. 112 bits).
55. Después de este primer capítulo introductorio, el resto de esta Guía se organiza
de la siguiente manera. En el capítulo 2 se presentan las primitivas atómicas
y construcciones criptográcas simétricas. El capítulo 3 introduce las primitivas
atómicas y construcciones criptográcas asimétricas. El capítulo 4 incluye uno de
los principales protocolos criptográcos de comunicación como es el protocolo de
seguridad de la capa de transporte o TLS (Transport Layer Security ), además del
protocolo SSH y del protocolo IPSec con IKEv2. La idea es ir complementado este
capítulo con más protocolos en el futuro. Los generadores de números aleatorios
se detallan en el capítulo 5; mientras que los protocolos de gestión de claves
se contemplan en el capítulo 6 y en el capítulo 7 se incluyen los mecanismos
de autenticación e identicación. En el anexo A se presenta la generación de
números primos y de claves para el criptosistema asimétrico RSA. por su parte, en
el anexo B se tratan los principales fundamentos en los que se basa la criptografía
postcuántica, que propone soluciones criptográcas seguras para ser implementadas
en ordenadores como los actuales, pero capaces de resistir la potencia de cómputo
de los futuros ordenadores cuánticos. Finalmente, en el anexo C se comentan los
esquemas de rma digital basados en el problema del logaritmo discreto.
56. Cada una de las primitivas y construcciones autorizadas estará acompañada de una
tabla en la que se incluirán sus nombres o denominaciones, los tamaños de los
parámetros (si ha lugar), si se considera recomendada o heredada (denotándose
2 Se ha elegido esta función a modo de ejemplo y con nes didácticos, aunque está
estrechamente relacionada con el problema de la factorización de enteros, que es la base de
la seguridad del criptosistema RSA.
57. Este documento incluye, además, un Glosario de términos para facilitar su lectura y
una Bibliografía que permitirá al lector ampliar determinados aspectos introducidos
en esta Guía, en la que no tiene cabida un desarrollo en profundidad de los mismos.
2. Mecanismos Simétricos
60. En esta sección presentamos las primitivas atómicas simétricas aprobadas, para
describir posteriormente las construcciones simétricas construidas sobre estas
primitivas.
61. El procedimiento para cifrar en ujo un texto claro de L bits consiste en generar
una secuencia de L bits, aparentemente aleatorios, a partir de una clave secreta
corta de k bits, que es conocida solo por las dos partes interesadas), y un algoritmo
público que genera la secuencia de los L bits. Esta secuencia generada se denomina
secuencia de ujo de claves (keystream sequence ).
62. Para el cifrado, el remitente realiza la operación XOR bit a bit entre los bits del
texto claro y la secuencia de ujo de claves. El resultado es el texto cifrado que
se enviará al receptor. Para el descifrado, el receptor genera la misma secuencia
de ujo de claves, realiza la misma operación XOR bit a bit entre el texto cifrado
recibido y la secuencia generada, recuperando el texto claro original. El objetivo es
hacer prácticamente imposible para un adversario la recuperación del texto claro a
partir del texto cifrado sin el conocimiento de la clave secreta k.
63. En la versión actual de esta Guía no se recomienda ningún cifrado en ujo concreto,
por lo que no se presenta ninguna tabla de primitivas de cifrado.
64. Es sabido que en 2004 se lanzó el proyecto eSTREAM como parte de ECRYPT
3
(European Network of Excellence in Cryptology ). El proyecto es un esfuerzo de
varios años para identicar nuevos cifrados en ujo que podrían ser adecuados
3 [Link]
65. El cifrado en bloque es un método que permite cifrar cada uno de los bloques en
los que se divide un mensaje de texto claro, cada uno de ellos de la misma longitud,
sea L bits, dando como resultado un bloque cifrado, también de L bits de longitud,
la misma que el original. La operación de cifrado viene determinada por una clave
secreta de r bits de longitud, elegida uniformemente al azar. La operación inversa,
esto es, el descifrado de cada bloque, utiliza la misma clave que para el cifrado y
devuelve el bloque del texto claro original. El objetivo de este tipo de cifrado es
hacer que sea prácticamente imposible recuperar el texto claro a partir del texto
cifrado si no se conoce la clave secreta utilizada.
67. En la Tabla 2.1 se listan las primitivas autorizadas, los tamaños de sus parámetros,
si se considera Recomendada o Heredada y otros aspectos que puedan ser de interés.
k = 128 R
∅
69. Una función resumen (hash en inglés) es una función, sin clave, computacionalmente
eciente, h, que aplica cadenas binarias de longitud arbitraria en cadenas binarias
de longitud ja [MvV96, Cap. 9]. La salida de este tipo de funciones se llama
resumen o valor hash. La idea principal que subyace a estas funciones es que su
salida o resumen puede usarse como una representación compacta de una cadena de
entrada de longitud arbitraria. Las funciones resumen se emplean, preferentemente,
en esquemas de rma digital y para vericar la integridad de datos.
70. Las funciones resumen deben vericar las siguientes cuatro propiedades para ser
consideradas seguras:
71. Es sabido que las funciones hash de la familias SHA2 y SHA3 verican estas
condiciones, por lo que se consideran funciones autorizadas y de ahí su inclusión en
esta guía.
72. En la Tabla 2.2 se listan las funciones resumen autorizadas, los tamaños de sus
resúmenes (h) y la denominación de la función resumen correspondiente, si se
considera Recomendada o Heredada y con qué plazo de caducidad y las referencias
apropiadas.
h = 256 (SHA-256) R
∅
SHA-2
h = 384 (SHA-384) R
[FIPS180-4], 4
h = 512
h = 256
(SHA-512)
(SHA-512/256)
R
R
∅
[ISO10118-3]
h = 256 R
∅
73. las funciones hash. En contextos donde se requiere resistencia contra ataques
que utilizan ordenadores cuánticos, se recomienda no usar las funciones hash con
h = 256 bits. Los algoritmos que incumplen con este requisito se muestran con el
∅
símbolo R .
74. La función SHA-1 no es una función resumen autorizada; sin embargo, el código de
autenticación de mensajes conocido como HMAC-SHA-1, cuya construcción se basa
en SHA-1, se acepta como un esquema heredado, como se verá en la sección 2.2.3.
76. En particular, a partir de la familia SHA-3 se puede denir una familia de funciones
con salidas extensibles, esto es, funciones como la SHA-3 pero con una salida innita
que puede ser jada. La familia se conoce como SHAKE (Secure Hash Algorithm
and Keccak ) y las dos versiones más utilizadas son SHAKE-128 y SHAKE-256,
que proporcionan salidas de 128 y 256 bits, respectivamente [FIPS202]. Si m es
un mensaje y d el número de bits de salida, la función SHAKE-XXX(d, m), con
XXX=128 o 256, ofrece una seguridad contra colisiones de mı́n(d/2, XXX) y con
respecto a la segunda preimagen de mı́n(d, XXX). Dado que el menor de estos
valores ha de ser superior a 256 bits, solo cabe considerar la función SHAKE-256
con d = 512, de modo que la seguridad contra colisiones es mı́n(512/2, 256) = 256,
y contra la segunda preimagen es mı́n(512, 256) = 256.
s = 128
[FIPS202]
∅
(SHAKE128) R
SHAKE 5, 6
s = 256 (SHAKE256) R
s = 128
[SP800-185]
∅
(cSHAKE128) R
cSHAKE 5, 6
s = 256 (cSHAKE256) R
Nota 5 [ Funciones XOF] Las primitivas criptográcas XOF deben ser siempre
79. implementadas como primitivas subyacentes de construcciones criptográcas como
KMAC o XMSS. Por lo tanto, su uso independiente se considera no recomendado.
80. las funciones hash y las XOFs. En contextos donde se requiere resistencia contra
ataques que utilizan ordenadores cuánticos, se recomienda no usar las funciones
XOF con s = 128. Los algoritmos que incumplen con este requisito se muestran
∅
con el símbolo R .
83. La Tabla 2.4 muestra el único esquema de compartición de secretos autorizado, que
corresponde a la propuesta de Shamir del año 1979.
85. Cada cifrador en bloque utiliza diferentes modos de operación, los cuales
permiten gestionar de diferente manera, para los procesos de cifrado y descifrado,
los bloques en los que se divide el texto claro o cifrado. El objetivo que persiguen
estos modos de operación es proporcionar diferentes objetivos de seguridad a la hora
de cifrar o descifrar un texto. Cada modo describe cómo aplicar de forma iterada
una operación de cifrado (descifrado) en un bloque simple para transformar de modo
seguro textos claros (cifrados) mayores que un único bloque.
86. La mayoría de los modos de operación utiliza una secuencia binaria única, llamada
vector de inicialización o IV (Initialization Vector ), para cada operación de cifrado.
Este IV se utiliza para garantizar que se generan textos cifrados distintos aunque el
mismo bloque se cifre varias veces con la misma clave. En algunos modos, el IV se
puede elegir aleatoriamente.
87. En la Tabla 2.5 se muestran los diferentes modos de esquemas de cifrado simétrico
con sus principales características.
CTR R
∗
[SP800-38A], [ISO10116] 7, 8, 9
OFB R
∗
[SP800-38A], [ISO10116] 7, 8, 9
CBC R
∗
[SP800-38A], [ISO10116] 7, 8, 10
CBC-CS R
∗
[SP800-38A-Add] 7, 8
CFB R
∗
[SP800-38A], [ISO10116] 7, 8, 10
92. Como ya hemos mencionado en 2.2.1, los modos de cifrado de propósito general
permiten cifrar y descifrar datos atendiendo a diferentes características y según
diferentes niveles de seguridad. Además, para lograr una seguridad en un sentido
estricto, en determinadas ocasiones hace falta expandir los datos de algunos bloques
debido al uso de un vector de inicialización o nonce. Sin embargo, en algunos
entornos, estas modicaciones resultan ser un inconveniente. Este es el caso, por
ejemplo, del cifrado del disco duro. En estas situaciones se permite el uso de modos
de cifrado deterministas, como se muestra a continuación, si bien deben tenerse en
cuenta las notas que se incluyen en cada caso.
94. En la Tabla 2.6 se muestran los diferentes modos de esquemas de cifrado autorizados
para cifrado de disco, con sus principales características.
95. ubicación donde se almacenan los datos cifrados. Por ello, los modos de operación
de cifrado en ujo son inapropiados, dado que los textos cifrados correspondientes
a dos textos claros diferentes almacenados en la misma ubicación ltrarían la
diferencia entre los textos en claro.
Nota 12 Tweak único] El valor tweak que se utilice para cifrar cada posición de
[
bloque (completo o incompleto) en cada sector de disco deber ser único, es decir,
96.
un disco o conjunto de discos cifrados con la misma clave nunca deberá contener
dos bloques distintos cifrados con la misma clave y el mismo valor tweak.
98.
Nota 14 [ Claves en XTS-AES] Es conveniente asegurarse que en el modo
XTS-AES las claves K1 y K2 son diferentes [FIPS-140IG].
función resumen. Un MAC consta de dos funciones, una que genera el código y otra
que lo verica. La primera tiene como entradas una clave secreta y un mensaje y
proporciona como salida el código. La segunda tiene como entrada la misma clave
secreta, el mismo mensaje y el código, siendo su salida un elemento del conjunto
{V erdadero, F also}.
100. Para ahorrar ancho de banda en las comunicaciones, es costumbre truncar el
resultado de un esquema MAC, pero a la vez, para que el esquema sea resistente a
los ataques de suposición (guessing ), en los que un adversario intenta falsicar el
MAC mediante un valor aleatorio, la longitud nal del MAC no debe ser demasiado
corta.
101. El MAC basado en funciones resumen se denota por HMAC. La seguridad de este
HMAC depende directamente de la seguridad de la función resumen que se utilice
y se recomienda utilizar una función con al menos 256 bits de seguridad. A pesar
de que la función resumen SHA-1 no está autorizada se acepta su uso con HMAC
hasta el año 2030.
102. El algoritmo KMAC (Keccak Message Authentication Code ) consta de una función
pseudo-aleatoria y una función hash con clave basada en Keccak. KMAC proporciona
una salida de longitud variable y la modicación de la longitud de salida genera una
nueva salida no relacionada. Por este motivo en vez de truncar la salida de KMAC se
recomienda utilizar el parámetro denido para tal efecto. KMAC tiene dos variantes:
KMAC-128 y KMAC-256.
KMAC-128 k ≥ 128 R
∅
[SP800-185] 22, 23
KMAC-256 k ≥ 256 R [SP800-185] 22
104.
MAC a, al menos, 96 bits, generado por un mecanismo MAC autorizado. Esta
condición necesaria no tiene por qué ser una condición suciente para determinados
esquemas MAC, como el GMAC (ver Nota 21).
113. Los esquemas de autenticación de entidades permiten que una entidad pruebe su
identidad ante un vericador demostrando que conoce determinado secreto. Por su
estructura, son esquemas interactivos y, en general, utilizan un esquema MAC o un
esquema de cifrado con un protocolo de desafío-respuesta aleatorio. Para este tipo de
esquemas de autenticación no se proporciona ninguna tabla de esquemas autorizados
en concreto, dado que son esquemas con diferentes objetivos de seguridad a los de
los MAC aunque puedan basarse en ellos. Así, los modos de integridad y los esquemas
de autenticación de entidad simétricos no deben utilizar la misma clave (véase la
Nota 102). Una condición necesaria para que se acuerde un esquema basado en
un esquema de cifrado (resp. MAC) es que el cifrado en bloque subyacente (resp.
MAC) esté autorizado.
114. Sin embargo, en la Tabla 2.8 sí se muestran los tamaños de los protocolos de
desafío-respuesta autorizados.
125 ≤ l R 24
96 ≤ l < 125 H 24
117. En muchas ocasiones, los AE incorporan una característica adicional que consiste
en combinar la autenticación de los datos cifrados con la autenticación de datos
adicionales no cifrados. El AE con esa propiedad se conoce como cifrado autenticado
con datos asociados o AEAD (Authenticated Encryption with Associated Data).
Ambos tipos de esquemas se pueden obtener a partir de la combinación de un
esquema de cifrado y un MAC.
118. El modo CCM (Counter with Cipher Block Chaining-Message Authentication Code )
garantiza la condencialidad y autenticidad de los datos y se basa en un algoritmo
de cifrado en bloque de claves simétricas recomendado cuyo tamaño de bloque sea
de 128 bits. Este modo usa conjuntamente los modos CBC-MAC y CTR y ambos se
aplican al mismo mensaje; el primero para autenticar el mensaje mediante un MAC
y el segundo para cifrarlo. En los dos procesos se usa la misma clave.
autenticación y privacidad del mensaje con un esquema de dos pasadas, una para
lograr privacidad y otra para autenticidad para cada bloque.
121. La Tabla 2.9 presenta los cifrados autenticados autorizados con sus principales
propiedades.
125. variante del cifrador ChaCha20 con 20 rondas y una clave de 256 bits. Es sabido
que existen variantes con claves de 128 bits y de entre 8 y 12 rondas, pero no esas
otras variantes no están autorizadas.
126. cifrado autenticado. Así, es esencial asegurarse de que un adversario nunca pueda
hacer que se use el mismo valor IV para proteger dos pares diferentes de mensaje
y datos asociados con la misma clave. La reutilización de un IV puede afectar la
condencialidad.
130. La Tabla 2.10 presenta los esquemas de protección de claves autorizados y sus
principales propiedades.
SIV R [RFC5297]
AES-Keywrap R [SP800-38F, Alg. KW & KWP]
Tabla 2.10: Esquemas de protección de claves autorizados
131. Una función de derivación de claves o KDF (Key Derivation Function) permite
obtener varias claves a partir de una única clave maestra. En general, la
función considera como entrada tres argumentos: un valor secreto K, un valor
(posiblemente) público N y una longitud n, y genera n bits, que pueden dividirse
en varias claves que parecen ser independientes. Hay muchas buenas formas para
implementar estas funciones. La lista de mecanismos de derivación de claves
autorizados que se proporciona en la Tabla 2.11 no pretende ser exhaustiva. En
general, una KDF se considera autorizada si los mecanismos criptográcos que
emplea lo están.
132. Los dos primeros grupos de funciones de derivación de claves están estandarizadas
por el NIST en los documentos 56A, 56B, 56C y 108 de la familia SP800. Estas
KDF se basan en los problemas del logaritmo discreto, de la factorización de enteros
y de una extracción seguida de una expansión.
de fuerza bruta [SP800-132]. Esta función forma parte de los estándares PKCS de
los laboratorios RSA, especícamente PKCS #5 v2.0 [RFC2898], [RFC8018]. No
debe confundirse esta PBKDF2 con la PBKDF1, dado que la última solo da lugar
a claves derivadas de hasta 160 bits. Para la PBKDF2 se añade una nota especíca
que los desarrolladores y evaluadores deben tener en cuenta.
135. La función HKDF es una función de derivación de clave simple (KDF) basada en el
código de autenticación de mensajes HMAC [RFC5869]. HKDF sigue el protocolo
de extraer y luego expandir, donde el KDF consta de dos etapas. En la primera
considera la entrada y extrae una clave pseudoaleatoria de longitud ja y en la
segunda la expande en varias claves pseudoaleatorias adicionales, que es su salida.
hecho, si la clave HMAC es más larga que la longitud del bloque de mensajes de la
función resumen, la clave es resumida. Este prerresumen en HMAC puede reducir
la entropía efectiva de la clave derivada.
139. SCRYPT, por su parte, es una KDF basada en contraseñas propuesta en [Per09]
para el servicio de copias de seguridad en línea de Tarsnap. Esta KDF se diseñó para
que fuera difícil realizar ataques de hardware personalizados a gran escala, dado que
requiere grand cantidad de memoria. De hecho, algunas criptomonedas utilizan una
versión simplicada de SCRYPT como esquema de prueba de trabajo.
Argon2id R [RFC9106] 31
PBKDF2 R [RFC8247] 32, 33
SCRYPT R [RFC7914]
Tabla 2.12: Mecanismos de resumen de contraseñas autorizados
necesita una ejecución, mientras que un ataque de fuerza bruta precisa una gran
cantidad de ejecuciones. Así pues, para proteger este mecanismo, el número de
iteraciones de PBKDF2 debe seleccionarse lo más grande posible.
Nota 33 [Salt ] Este proceso consiste en generar un valor aleatorio (salt ) cuando
se registra una contraseña y que se almacena junto con el valor de vericación
de dicha contraseña. De este modo, el Salt de un mecanismo de resumen de
contraseñas permite contrarrestar los ataques por precálculo. La longitud del valor
generado debe ser de, al menos, 128 bits.
144. Este mecanismo es necesario para crear los denominados métodos híbridos de
establecimiento de claves, por ejemplo, combinando un KEM postcuántico con uno
clásico basado en EC-DH. Estos mecanismos toman como entrada dos o más claves
secretas (y posiblemente además los mensajes intercambiados por los respectivos
métodos de establecimiento de claves) y genera una clave combinada como salida.
3. Mecanismos Asimétricos
148. La criptografía asimétrica (a veces también llamada de clave pública) tiene como
propiedad distintiva que cada usuario emplea dos claves, una para el proceso de
cifrado y otra diferente para el de descifrado. La primera de las claves es la clave
pública que cada usuario da a conocer para que sea utilizada como clave para
cifrar los mensajes que se le envíen; mientras que la otra es la clave privada (o
secreta), que solo conoce dicho usuario y le permite descifrar los mensajes cifrados
que recibe.
149. Ambas claves están relacionadas mediante un problema matemático y dado que
ambas llevan a cabo procesos inversos (una cifra y la otra descifra), tal problema
se elige de modo que el primero de los procesos (cifrado) suponga resolver un
problema matemático sencillo, a la vez que el segundo proceso (descifrado) equivalga
a determinar la solución de un problema matemático computacionalmente imposible
de resolver en un tiempo razonable. Es claro que, como las claves están relacionadas,
el problema matemático seleccionado debe garantizar que el conocimiento de la clave
pública no permite recuperar la clave privada. Así pues, la seguridad de la criptografía
asimétrica se basa en la supuesta dicultad de resolver computacionalmente un
problema matemático.
150. Debido a que los mecanismos asimétricos hacen uso de la clave privada de un usuario
para, principalmente, descifrar un texto cifrado (esquemas de cifrado) o elaborar una
rma válida (esquemas de rma electrónica), no debería ser posible realizar ninguna
operación que requiera la clave privada con el conocimiento exclusivo de la clave
pública. Esta propiedad debe mantenerse incluso en el caso de que un adversario
reciba resultados de operaciones privadas que requieren la clave privada, donde los
recursos de estas operaciones privadas son conocidos o elegidos por el adversario.
151. Comenzamos presentando en esta sección las primitivas atómicas asimétricas que
están aceptadas y los problemas matemáticos correspondientes. En la siguiente
sección se mostrarán las construcciones asimétricas construidas a partir de estas
primitivas. Debe tenerse en cuenta que solo se consideran aceptadas las primitivas
o construcciones cuyos parámetros satisfagan las condiciones que se muestren en
las diferentes tablas que se incluyen.
153. La primitiva RSA puede considerarse como permutación pública parametrizada por
una clave pública y la permutación inversa privada parametrizada por la clave privada
asociada. Esta primitiva se utiliza en los esquemas de cifrado y rma de RSA. Tales
esquemas especican, por su parte, aspectos relacionados con la vericación de
relleno (padding ), redundancia, etc. Recordamos que las primitivas por sí solas no
debe considerarse como esquemas completos de cifrado o rma, dado que precisan
convenciones adicionales para garantizar su seguridad.
154. Sean p y q dos números primos grandes, elegidos al azar, y sea su producto N = p·q ,
que se denotará como el módulo RSA. El valor n = ⌊log2 (N )⌋+1 es el tamaño de
N , esto es, su longitud en binario. La clave pública es el par formado por el módulo N
junto con un elemento e, llamado exponente público, que es un invertible módulo
ϕ = (p − 1)(q − 1), es decir, es primo con ϕ, o lo que es igual, mcd (e, ϕ) = 1.
El inverso de e módulo mcm (p − 1, q − 1), denotado por d, se llama exponente
privado. La clave privada está formada por este exponente privado junto con el
módulo.
155. La permutación pública mencionada en el párrafo anterior opera sobre los números
enteros módulo N , ZN , y consiste en la exponenciación de la entrada considerada
elevada a la potencia e, módulo N . Recuérdese que tanto N como e son públicos, por
lo que cualquiera que los conozca puede determinar, fácilmente, el valor resultante
de la expresión
M e (mod N ) , donde M ∈ ZN .
Por otra parte, la permutación privada opera sobre el conjunto de los números
enteros módulo N , ZN , y consiste en la exponenciación de la entrada elevada a la
potencia d, módulo N , esto es,
C d (mod N ) , siendo C ∈ ZN .
156. En la Tabla 3.1 se muestran los tamaños de las claves autorizadas para la primitiva
basada en el problema de la factorización de números enteros (RSA) y otras
características.
RSA
n ≥ 3000, log2 (e) > 16
n ≥ 1900, log2 (e) > 16
R
H[2025]
[RSA78] 34
159. Es posible elegir diferentes cuerpos nitos en los que implementar este problema,
pero la solución más segura y ampliamente utilizada es considerar un cuerpo nito
primo, Fp ≈ GF (p), siendo p un número primo grande. En esta guía, y mientras
no se diga lo contrario, se supondrá que el cuerpo considerado es de este tipo.
160. Esta primitiva cuya seguridad se basa en el problema del logaritmo discreto en el
grupo multiplicativo de Fp se utiliza en varios esquemas de acuerdo o intercambio
de claves y rmas. Sea g un generador de un subgrupo de orden q del grupo
∗ ∗
multiplicativo Fp , donde q divide a p − 1 dado que p − 1 = |Fp |, y sea r el
factor primo más grande de q . La primitiva es la función de exponenciación de
base g en Fp de modo que si se considera como entrada el entero x, en general
x
con 1 ≤ x ≤ q − 1, proporciona como salida el entero y = g . Según como el
esquema considerado utilice esta primitiva, x e y pueden representar (una parte de)
una clave privada y la clave pública asociada, o pueden representar un exponente
efímero de Die-Hellman y su valor público asociado, etc. En general, el mecanismo
de intercambio de claves efímeras de Die-Hellman basado en cuerpos nitos se
representa por FFDHE (Finite-Field-based Die-Hellman Ephemeral key exchange
mechanism).
161. La Tabla 3.2 presenta los tamaños de las claves autorizadas para la primitiva basada
en el problema del logaritmo discreto multiplicativo sobre un cuerpo nito primo,
3072 bits R
4096 bits R
MODP 6144 bits R [RFC3526]
8192 bits R
2048 bits H[2025] 35, 36
3072 bits R
4096 bits R
FFDHE 6144 bits R [RFC7919]
8192 bits R
2048 bits H[2025] 35, 36
162. En el caso de que no se empleen los parámetros señalados en la Tabla 3.2, existe la
posibilidad de generar nuevos grupos, siempre que se tengan en cuenta los esquemas
incluidos en la Tabla 3.3.
163. Estos métodos generan un subgrupo de orden primo, es decir, q es primo y por
tanto r = q. Se autorizan los siguientes tamaños de parámetros mostrados en la
Tabla 3.4.
164. en términos de complejidad del ataque. Como consecuencia, para los módulos del
logaritmo discreto compartidos por muchos usuarios y aplicaciones, se recomienda
encarecidamente no utilizar módulos de longitud cercana al límite inferior del rango
heredado.
166. La dicultad del problema del logaritmo discreto también se puede denir en
el grupo de puntos racionales de una curva elíptica denida sobre un cuerpo
nito. En este caso, el problema se denomina problema del logaritmo discreto
sobre curvas elípticas, elíptico, aditivo o ECDLP (Elliptic Curve Discrete Logarithm
Problem), en contraposición al caso anterior, en el que la operación considerada
era la multiplicación en un grupo nito. En este caso, la primitiva se conoce como
logaritmo discreto sobre curvas elípticas y de forma abreviada como EC-DLOG
(Elliptic Curve Discrete Logarithm).
167. Para comprender bien la primitiva asociada a este problema, conviene considerar la
siguiente notación y recordar las siguientes propiedades.
168. Sea p un número primo y Fp el cuerpo primo con p elementos. Sea, además, E (Fp )
una curva elíptica denida sobre Fp , denotada por E . Dicha curva está denida por
una ecuación general del tipo
6
E : y 2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 ,
donde a1 , a2 , a3 , a4 , a6 ∈ Fp .
169. La curva E está formada por los puntos del plano Fp × Fp que verican dicha
ecuación y sobre este conjunto se dene una operación de suma de puntos que,
junto con el punto del innito, O, hace que E sea un grupo abeliano (para un
estudio más exhaustivo de la criptografía basada en curvas elípticas, recomendamos
al lector [GHM18]).
Según sea el cuerpo considerado y su característica, la curva elíptica puede tomar expresiones
6
más sencillas a la dada aquí, de modo que los coecientes vericarán determinadas condiciones.
(q−2)
170. Sea P un punto de orden q de la curvaE , esto es, tal que qP = P + · · · + P = O.
Sea además, r el factor primo más grande de q . La primitiva asociada al problema
del logaritmo discreto en E es la multiplicación de puntos de la curva por escalares,
de modo que si se considera como entrada el entero x, con 1 ≤ x ≤ q − 1, la salida
es el punto de la curva E dado por Q = xP .
171. El orden de la curva, esto es, el número de puntos de la curva, #E , puede ser
un número primo o un número compuesto. Al cociente del orden de la curva entre
su mayor factor primo se le denomina cofactor, de manera que si G es un punto
n que genera un subgrupo cíclico de orden primo, y no existe otro factor
de orden
#E mayor que n, entonces se cumplirá que el cofactor, h, de la curva será
primo de
h = #E/n. En general se recomienda utilizar curvas cuyo orden sea un número
primo o que, como segunda opción, sea el producto de un número primo y un
cofactor pequeño (típicamente 2, 3 o 4) [HMV04].
172. El conjunto de parámetros públicos de los esquemas criptográcos donde se usa esta
primitiva es {p, E, P, q}. En función del esquema criptográco que se considere, x y
Q pueden representar (una parte de) una clave privada y la clave pública asociada,
o pueden representar un valor secreto efímero de Die-Hellman y su valor público
asociado, etc.
173. En estos grupos, el problema del logaritmo discreto también se considera difícil, en
comparación con su operación inversa que, como hemos visto, es la multiplicación de
puntos de la curva por escalares. Por otra parte, en este caso es posible seleccionar
dos parámetros: el cuerpo nito sobre el cual se denirá la curva elíptica y la propia
curva elíptica. También, como en el caso del logaritmo discreto multiplicativo, solo
se consideran curvas elípticas denidas sobre cuerpos primos.
174. En la literatura se han propuesto numerosas curvas elípticas, buscando, sobre todo,
la sencillez de sus ecuaciones, y cuerpos nitos en los que su cardinal, es decir,
el primo considerado, tenga una expresión binaria en la que abunden los ceros, de
modo que la implementación de la aritmética de la curva sea eciente.
175. En la Tabla 3.5 se muestran las familias de curvas elípticas autorizadas para su
implementación, así como el nombre correspondiente de cada una de ellas.
BrainpoolP256r1 R
Brainpool BrainpoolP384r1 R [RFC5639] 37, 38, 39
BrainpoolP512r1 R
NIST P-256 R
NIST NIST P-384 R [SP800-186] 37, 38, 39, 40
NIST P-521 R
FR FRP256v1 R [ANS11] 37, 38, 39
Montgomery
Curve25519
Curve448
R
R
[SP800-186] 37, 38, 39
Twisted
Edwards
Edwards25519
Edwards448
R
R
[SP800-186] 37, 38, 39
176. Nota 37 [ Puntos en la curva ] Es preciso vericar que los puntos considerados
están en la curva, es decir, verican su ecuación.
178.
es, q = r, y es tal que r2 no divide al cardinal de la curva, #E (Fp ), las
comprobaciones mencionadas en la Nota 38 se reducen a vericar que los puntos
considerados tienen orden precisamente r.
180.
multiplicación escalar de un punto Q por un entero secreto x, se debe comprobar
que Q es un múltiplo del punto base P , donde x se genera mediante la aplicación de
la función de decodicación denida en [RFC7748, 5] y, además, que el resultado
de la multiplicación escalar no es un valor nulo.
183. En el Anexo B se detallarán los tipos de criptografía que están teniendo más
relevancia en la actualidad:
Basada en retículos.
184. No obstante, conviene mencionar que estos ≪nuevos problemas≫ han sido mucho
menos estudiados que los tres mencionados anteriormente por lo que solo las
primitivas basadas en estos últimos son las autorizadas. Los restantes problemas
mencionados están siendo escrutados por la convocatoria internacional hecha por
el NIST [NIS17] en busca de estándares que se pretende sean resistentes a la
computación cuántica (quantum resistant ).
186. En los esquemas asimétricos, cada usuario posee un par de claves. La primera de
ellas es una clave públicamente conocida, denotada por pk , y una segunda clave
privada, esto es que se mantiene en secreto, designada como sk . La seguridad de tal
esquema debe basarse en la dicultad computacional de un problema matemático,
esto es, que conocida la clave pública, determinar la clave privada asociada sea
equivalente a resolver dicho problema matemático. Ello supone que no es posible
descifrar los mensajes destinados a un usuario que se hayan cifrado con su clave
pública, salvo, claro está, el propietario de la clave privada asociada a tal clave
pública. De forma análoga, nadie podrá rmar digitalmente un chero haciendo uso
de la clave privada, aunque sí podrá vericar que dicha rma corresponde a tal
usuario para lo que utilizarán su correspondiente clave pública.
188. Al margen de lo ya dicho en los párrafos anteriores, es claro que la seguridad de los
esquemas asimétricos con clave también requiere de la condencialidad e integridad
de la clave privada y de la integridad y autenticidad del origen de datos de la clave
pública.
189. Para cada esquema asimétrico con clave considerado en esta sección, los aspectos
especícos de la generación de pares de claves se tratan en la misma subsección que
el resto del esquema.
193. Los estándares de criptografía de clave pública PKCS son una colección
de estándares (desde el PKCS#1 al PKCS#15) desarrollados y publicados
por los laboratorios RSA ([Link]
https:
//[Link]/web/20061209135809/[Link]
rsalabs/[Link]?id=2124).
194. En la Tabla 3.6 se incluyen las características del esquema de cifrado asimétrico
RSA autorizado.
197.
Nota 44 [Ataque de padding ] Si hubiera un oráculo de padding disponible, el
esquema RSA-PCKS #1v1.5 sería vulnerable a ataques ecientes.
199. Los esquemas de rma digital permiten realizar la rma de un documento y constan
de tres protocolos: uno de generación del par de claves (pública y privada); otro de
elaboración de la rma, cuyas entradas son la clave privada del rmante y el mensaje
a rmar) y cuya salida es la rma del mensaje; y un protocolo de vericación de
la rma, cuyas entradas son la clave pública del rmante, el mensaje rmado y la
rma, siendo su salida o Verdadero o Falso. Los esquemas de rma digital garantizan
la autenticación de los datos y el no repudio.
200. En la presente versión de esta guía se incluyen nuevos algoritmos de rma digital
resistentes a la computación cuántica. Sin embargo, los ataques a la autenticación en
los protocolos basados en rma digital no se pueden realizar de manera retroactiva.
Actualmente, el CCN no considera urgente implementar medidas de protección
contra la computación cuántica excepto en el caso de rmas digitales de rmware
(FW) o software (SW) para aquellos productos en los que no sea fácil actualizar
esta vericación.
201. Además, se considera que actualmente las especicaciones de X509 para la gestión
de certicados basados en algoritmos de rma digital postcuánticos y que tengan
en cuenta la hibridación de distintos sistemas de rma no se encuentran en un
estado de madurez suciente. Por ello cuando exista el requisito de resistencia a
la computación cuántica, en este momento solo se considera necesario proteger
adecuadamente la rma de FW/SW, con XMSS o con ML-DSA hibridado con un
esquema clásico.
202. En la Tabla 3.7 se incluyen las características de los esquemas de rma digital
autorizados.
203.
Nota 46 Función resumen]
[ El esquema estará autorizado siempre que la
función resumen subyacente lo esté (ver 2.1.3).
[Ble98].
207.
Nota 50 [ Firmas digitales postcuánticas con estado] Se acepta el uso de
XMSS únicamente para vericación de FW/SW.
adecuadas para evitar que suceda este problema durante el proceso de recuperación
de una copia de seguridad.
214. Merecen mención especial los algoritmos de rma con resistencia a la computación
cuántica que se han añadido recientemente: XMSS, ML-DSA y SLH-DSA.
217. Está recomendado únicamente para ciertos casos de uso como es la rma de
Firmware y Software por parte de las raíces de conanza (Root of Trust). Las
peculiaridades de su implementación no lo hacen recomendable para un uso general
como algoritmo de rma, ya que cada clave puede emitir un número limitado de
rmas y requiere gestionar su estado interno para evitar duplicidades de uso. Para
más detalles sobre el funcionamiento de este algoritmo véase B.3.2.
223. Los esquemas de autenticación de entidades asimétricas permiten que una entidad
pruebe su identidad ante otra, demostrando su conocimiento de una clave privada.
Estos esquemas son esquemas interactivos por naturaleza y generalmente consisten
en utilizar un esquema de rma en un protocolo de desafío-respuesta aleatorio.
En esta subsección no se proporciona ningún listado autorizado de estos esquema
porque, aunque pueden basarse en esquemas de rma, son un tipo distinto de
esquemas, con diferentes objetivos de seguridad. Por lo tanto, la misma clave no
debe ser utilizada por un esquema de rma y por un esquema de autenticación de
entidad asimétrica (ver Nota 102).
225. Los esquemas de establecimiento de claves asimétricas permiten que dos o más
partes generen un secreto común sin utilizar ningún valor secreto previamente
compartido. Por lo general, estos esquemas se combinan con los de autenticación
3. Ambos usuarios pueden entonces calcular el elemento común del grupo, que
v vB
vendrá dado como (g A ) = (g vB )vA = g vA vB en el caso multiplicativo y
como vA (vB · g) = vB (vA · g) = (vA vB )g en el caso aditivo. Es claro que cada
uno de ellos puede calcular dicho valor a partir del propio valor aleatorio y del
elemento recibido del otro usuario.
226. Por otro lado, los métodos de encapsulación de claves (KEM) ofrecen una alternativa
para la compartición de claves entre dos partes. El destinatario comienza generando
un par de claves (sk, pk). El remitente luego, para la clave pública pk , puede
encapsular una clave secreta K en un texto cifrado C. Finalmente, el destinatario
puede desencapsular la clave secreta K del texto cifrado C, utilizando su clave
privada sk .
227. De forma más precisa, un KEM consta de los siguientes tres algoritmos:
228. Es importante destacar que estos protocolos son vulnerables a los ataques de MitM.
En particular, se deben realizar pasos adicionales y se deben intercambiar datos
adicionales para garantizar la autenticación de los usuarios y de los mensajes de
establecimiento de claves.
DH [ISO11770-3], [SP800-56A]
[ISO18033-2]
∅
FF-DLOG R 57,58,63
DLIES-KEM
EC-DH [ISO11770-3], [SP800-56A]
[ISO18033-2]
∅
EC-DLOG R 57,58,63
ECIES-KEM
ML-KEM [FIPS203] 57,59,60
Retículo
FrodoKEM
R
[FRODO-KEM] 57,59,61,62
233.
Nota 60 ML-KEM]
[ Es preferible utilizar la versión ML-KEM-1024. Si no es
posible, la versión ML-KEM-768 también está aceptada.
236. manera retroactiva: el cifrado puede almacenarse ahora y descifrarse más tarde
cuando un ordenador cuántico esté disponible. En contextos donde se requiere
resistencia contra ataques que utilizan ordenadores cuánticos, estos mecanismos
criptográcos no deben usarse sin combinarse con un mecanismo resistente a la
computación cuántica. Los algoritmos que requieren hibridación se muestran con
∅
el símbolo R .
241. Las razones que el NIST alegó para su decisión se deben, en gran parte, a que su
rendimiento es menor que el de otros algoritmos basados en retículos. Este menor
rendimiento se debe a que FrodoKEM no emplea ninguna estructura matemática
adicional, al contrario de lo que sucede con otros algoritmos basados en retículos.
Esta falta de estructura subyacente hace que FrodoKEM sea la opción de seguridad
más conservadora, de ahí que el CCN, al igual que otros organismos de seguridad
europeos, lo mantenga como algoritmo autorizado para KEM.
4. Protocolos Criptográcos
4.1. TLS
244.
Nota 64 [ Versiones de SSL] Las versiones v2 y v3 de SSL no están
recomendadas.
245.
Nota 65 [ Versiones de TLS] Las versiones 1.0 y 1.1 de TLS no están
recomendadas.
246. No obstante, antes de que se puedan transmitir los datos, se debe establecer un
canal o conexión segura entre el cliente y el servidor. Este proceso se denomina
protocolo de enlace o handshake y es una parte importante del protocolo TLS. En
este protocolo, el cliente y el servidor acuerdan
8 El protocolo SSL no está recomendado por haber quedado obsoleto y ser vulnerable [RFC756]
249. Con relación a las diferentes versiones de los protocolos SSL y TLS disponibles, es
importante señalar que ninguna de las versiones del protocolo SSL debe utilizarse,
ya sea la v2 [EH95, RFC6176] o la v3 [FKK11, RFC756] (la versión v1 no fue
publicada). Por su parte, TLS 1.0 es un desarrollo adicional directo de SSL 3.0
[RFC2246] por lo que tampoco debe ser utilizado. También están disponibles para
el TLS las versiones 1.1 [RFC4346], 1.2 [RFC5246] y 1.3 [RFC8446], pero solo las
versiones TLS 1.2 y TLS 1.3 están autorizadas para su uso.
250. Las especicaciones propias de TLS 1.3 han modicado la estructura genérica
del protocolo TLS. De hecho, el TLS 1.3 solo requiere un viaje de ida y
vuelta (Round-Trip Time ) para completar el protocolo de enlace, mientras
que las versiones anteriores requerían dos. Esta modicación permite al cliente
transmitir datos de la aplicación desde el tercer paquete transmitido. La reducción
en el número de intercambios requeridos se debe a la eliminación de ciertos
mensajes presentes en versiones anteriores. Así, se han eliminado los mensajes
de señalización ChangeCipherSpec y ServerHelloDone, junto con los mensajes
ClientKeyExchange y Server-KeyExchange utilizados para intercambiar valores
públicos del protocolo DH. Con estas modicaciones, el protocolo TLS 1.3 es como
sigue:
1. El cliente inicia una solicitud enviando un mensaje del tipo ClientHello, que
contiene las suites criptográcas que admite y sus extensiones.
251. ClientHello contiene una lista de parámetros criptográcos que el cliente puede
utilizar durante la sesión, de modo que el servidor selecciona los parámetros
criptográcos para dicha sesión, después de compararlos con los que él acepta. Esta
selección afecta a la forma en que se utilizarán las claves criptográcas para proteger
los registros intercambiados después del protocolo de enlace, que transportan los
datos de la aplicación. El propio procedimiento de negociación de claves se modica
de acuerdo con los parámetros adoptados. Los mecanismos criptográcos negociados
durante el protocolo de enlace son:
252. En la Tabla 4.1 se muestran las versiones recomendadas del protocolo TLS de
comunicaciones.
253. está aceptada siempre que se sigan las recomendaciones de esta guía. Así pues,
no están permitidas las versiones v2 y v3 de SSL y las versiones 1.0 y 1.1 de TLS.
Además, debería preferirse el uso de software que no admita ninguna de estas
versiones.
254. Se recomienda utilizar una suite criptográca que ofrezca Perfect Forward Secrecy
(PFS), es decir, secreto perfecto persistente.
255. PFS es una característica de los protocolos criptográcos que asegura que incluso
si la clave privada a largo plazo se ve comprometida, las claves de sesión y las claves
de sesión anteriores aún permanecen secretas. En general, esta propiedad se puede
obtener mediante el uso de claves públicas efímeras.
256. Acuerdo de clave: Con relación a los mecanismos de acuerdo de clave, se debe
garantizar la propiedad de condencialidad persistente, lo que requiere de una suite
criptográca basada en un intercambio Die-Hellman con claves efímeras, esto es,
claves generadas en cada nueva sesión (denotados como DHE o EC-DHE).
258. Los grupos multiplicativos autorizados son los denidos en [RFC7919] y se listan en
la Tabla 4.4 para el protocolo TLS 1.3 y en la Tabla 4.11 para el protocolo TLS 1.2.
En el caso de EC-DHE, se deben utilizar grupos cuyos órdenes sean múltiplos de un
número primo mayor de, al menos, 256 bits.
262. Cifrado de integridad: Para evitar las debilidades de las versiones de TLS
anteriores a la 1.2, TLS 1.2 introdujo la capacidad de utilizar modos de cifrado
fuertes, proporcionando una función de cifrado combinada y una función de
cálculo de patrón de integridad; por su parte, TLS 1.3 solo ofrece modos de
cifrado combinados. Se han estandarizado las suites que ofrecen los modos de
funcionamiento GCM y CCM, también se permite el modo ChaCha20_Poly1305
[RFC8439]. Los modos combinados de GCM y ChaCha20_Poly1305 requieren
especial atención al administrar las claves de un solo uso (nonces ). En estos dos
modos, el cifrado de cada registro requiere el uso de un nonce único durante la
sesión y si no se garantiza la unicidad del mismo, la condencialidad y la integridad
de los datos intercambiados puede quedar comprometida. En el caso del TLS 1.2
no se especica cómo se debe generar este nonce ; mientras que en el TLS 1.3 la
construcción de estos nonces sí se ha incorporado a sus especicaciones.
264. A continuación se presentan las tablas que contienen los diferentes conjuntos de
mecanismos criptográcos autorizados para la versión 1.3 del protocolo TLS.
265. La Tabla 4.2 presenta la suite de cifradores para la versión 1.3 de TLS. La convención
que se sigue para esta tabla es TLS_ENC_Long_Mod_Hash, siendo ENC el
sistema de cifrado, Long es la longitud de la clave considerada, Mod es el modo de
operación del cifrado y Hash hace referencia a la función resumen considerada.
266. Además del acuerdo de clave de Die-Hellman sobre cuerpos nitos o curvas
elípticas, TLS 1.3 ofrece modos de protocolo de enlace adicionales utilizando claves
precompartidas o PSK (Pre-Shared Key ). En este contexto, las PSK se reeren
a claves que se proporcionan fuera de banda o al material de claves que se ha
establecido en una sesión anterior a través del mecanismo de ticket de sesión. En la
Tabla 4.3 se presentan los modos PSK recomendados para TLS 1.3.
de consultar a un experto.
Nota 68 [ Datos 0-RTT] El protocolo TLS 1.3 ofrece una opción para incluir
datos de aplicación ya en el primer mensaje de un protocolo de enlace PSK, son
268. los datos llamados de tiempo cero de ida y vuelta o datos 0-RTT (zero Round-Trip
Time data). Estos datos no están protegidos contra ataques de reproducción por
lo que no se recomienda enviar o aceptar datos de este tipo.
269. Existen algunas extensiones para el protocolo TLS 1.3 que se mostrarán a
continuación y que tienen que ver con los grupos que se pueden utilizar, los
algoritmos de rma, etc.
273. En la versión 1.2 de TLS, los mecanismos criptográcos de una conexión se denen
mediante una suite criptográca que especica un mecanismo de acuerdo de claves
(con autenticación) para el protocolo de enlace, un algoritmo de cifrado autenticado
para el protocolo de registro y una función resumen para el proceso de derivación de
claves. Dependiendo de la suite criptográca, también se debe especicar un grupo
para el protocolo de Die-Hellman, ya sea en un subgrupo de un cuerpo nito o en
una curva elíptica sobre un cuerpo nito, y un algoritmo de rma para el acuerdo
de claves.
275. Se muestran a continuación las tablas que contienen las diferentes suites
criptográcas autorizadas para el protocolo TLS 1.2.
276. En las Tablas 4.7 y 4.8 se muestran las suites criptográcas recomendadas para la
versión 1.2 de TLS en los casos en los que el servidor disponga de un certicado
con la clave pública ECDSA o RSA, respectivamente.
277. Cuando una de las dos partes en una comunicación no es la dominante, no siempre
es posible negociar una sesión TLS con una de las suites criptográcas anteriores.
Si se ha identicado una gran necesidad de compatibilidad, se pueden adoptar otras
suites, con detrimento de la seguridad en las comunicaciones. En este caso, es
necesario evaluar el perl de los servidores o de los clientes interesados y adoptar
solo las suites que se consideren esenciales para llevar a cabo las funciones de la
aplicación consideradas.
278. La Tabla 4.9 lista las suites criptográcas recomendadas para uso general con
TLS 1.2 cuando no hay soporte ECC o modo de cifrado autenticado.
Nota 70 [ TLS Cifrado y luego MAC ] Las suites criptográcas TLS cuyos
279. mecanismos de cifrado se basan en CBC deben utilizarse junto con la extensión
encrypt_then_mac.
el uso de EC-DHE para el intercambio de claves, dado que en este caso, los
parámetros de grupo se negocian en el protocolo de enlace.
281. Nota 72 [ TLS con RSA] El intercambio de clave con RSA no ofrece PFS.
282. Si los datos adicionales que se han intercambiado de antemano se van a incorporar en
el acuerdo de clave, se pueden utilizar suites criptográcas con una PSK. En general,
se recomienda utilizar suites criptográcas para los que se incorporan al acuerdo
de claves más claves efímeras o números aleatorios previamente intercambiados,
además de la clave precompartida. En el caso del protocolo TLS 1.2 cuando
se utilizan suites criptográcas con una clave previamente compartida no se
recomienda el uso de suites criptográcas de tipo TLS_PSK_*, es decir, sin claves
efímeras o números aleatorios adicionales, porque la seguridad de la conexión se
basa únicamente en la entropía y la condencialidad de las claves previamente
compartidas para estos conjuntos de cifrado.
283. En la Tabla 4.10 se incluyen las suites criptográcas con PSK que se recomiendan.
284. En cuanto a las extensiones para TLS 1.2, a continuación se presentan las
recomendadas para esta versión del protocolo.
4.2. SSH
288. La primera versión del protocolo SSH se conoce como SSH-1 [Ylö96], pero su uso
no está recomendado. La versión que sí está recomendada es la versión 2, denotada
por SSH-2 [RFC4251].
289. El protocolo SSH está formado por tres subprotocolos: Protocolo de capa de
transporte, Protocolo de autenticación de usuario y Protocolo de conexión. El
Protocolo de la capa de transporte [RFC4253] permite la autenticación del servidor,
el cifrado, la protección de la integridad y, opcionalmente, la compresión de datos. Se
basa en el protocolo TCP/IP. El Protocolo de autenticación de usuario [RFC4252]
se utiliza para autenticar al usuario en el servidor y se basa en el Protocolo de la capa
de transporte. Finalmente, el Protocolo de conexión [RFC4254] es el responsable de
crear y administrar canales lógicos dentro del túnel cifrado y se basa en el Protocolo
de autenticación de usuarios.
290. Cuando se establece una conexión SSH se intercambian las claves con el n de crear
e intercambiar claves de sesión compartidas para la autenticación y el cifrado. El
mecanismo de acuerdo de clave del protocolo SSH se basa en el de Die-Hellman.
De hecho, hay varios grupos recomendados, todos ellos con la función SHA512. Los
números primos y el generador de cada grupo están publicados en [RFC3526]. En
el caso del acuerdo de clave con curvas elípticas, se emplea el mecanismo ECDH
[RFC5656]. En la Tabla 4.14 se presentan las versiones recomendadas del protocolo
SSH.
4.2.2. Cifrado
301. En esta sección se tratará la seguridad del protocolo de Internet o IPsec (Internet
Protocol Security ) [RFC8221] y el protocolo de intercambio de claves de Internet o
IKE (Internet Key Exchange ), cuya versión 2 se denota por IKEv2 [RFC7296]. En
esta guía no se considera la versión 1 de este protocolo (IKEv1).
302. IPsec es un estándar que proporciona seguridad a nivel de capa de red del Protocolo
de Internet o IP (Internet
Protocol ) en la pila del protocolo TCP/IP (Transmission
Control Protocol/Internet Protocol ). A diferencia de los protocolos TLS (ver 4.1)
y SSH (ver 4.2), IPsec proporciona seguridad en las capas superiores, como la de
aplicación.
303. El uso más importante de IPsec es el de crear redes privadas virtuales o VPN (Virtual
Private Network ), esto es, establecer canales de comunicación seguros mediante
redes IP que no son seguras.
306. En la Tabla 4.18 se muestran las versiones del protocolo IPsec autorizadas.
IPsec R [RFC8221] 81
IKEv2 R [RFC7296], [RFC8247]
ESP R [RFC4303] 81
AH o ESP con autenticidad e integridad sin que le siga otro AH. Por lo tanto, se
recomienda el uso de ESP siempre con las opciones de protección de integridad y
autenticidad, además de condencialidad.
basados en curva elípticas modulo un primo, ECP (curva elípticas modulo un primo)
[RFC5903] o curvas Brainpool [RFC8031].
4.3.2. Cifrado
310. Las propuestas para los esquemas de cifrado IKEv2 y ESP pueden incluir
tanto esquemas de cifrado clásico como esquemas AEAD. Atendiendo a las
recomendaciones señaladas en las subsecciones 2.2.1 y 2.2.5, se acuerdan los
esquemas de cifrado o esquemas de cifrado autenticado que se incluyen en las
Tablas 2.5 y 2.9.
311. Los protocolos IKEv2 y ESP utilizan mecanismos MAC para la vericación de
la integridad y la autenticación de origen. Los mecanismos MAC autorizados
para uso recomendado son los basados en esquemas AES-CMAC, AES-GMAC y
HMAC-SHA2. Por su parte, los esquemas HMAC-SHA2, cuando se utilizan en IPsec
como mecanismos de integridad y autenticidad, la longitud de la clave sera ja en
función del tamaño del valor hash de salida, y se realiza un truncado de la salida
tal y como se comenta en las notas de la Tabla 4.20.
HMAC-SHA2-256_128 R [RFC4868] 82
HMAC-SHA2-384_192 R [RFC4868] 82
HMAC-SHA2-512_256 R [RFC4868] 82
AES-CMAC-96 R [RFC4494]
AES-GMAC R [RFC4543]
Tabla 4.20: Esquemas MAC y HMAC autorizados para IKEv2 y ESP
312.
Nota 82 [HMAC-SHA-XXX-YYY] Cada uno de estos esquemas utiliza una
longitud de clave ja de XXX bits, truncando la salida a YYY bits.
HMAC-SHA2-256 R [RFC4868]
HMAC-SHA2-384 R [RFC4868]
HMAC-SHA2-512 R [RFC4868]
AES128-CMAC R [RFC4615]
Tabla 4.21: Funciones pseudo-aleatorias autorizadas para IKEv2
315.
Nota 83 ( RSASSA-PSS) Este esquema solo debe utilizarse con PSS
[RFC8017, 8 y 9.1] y con una función de la familia SHA-2.
317. Es bien sabido que muchas aplicaciones criptográcas requieren números aleatorios,
como por ejemplo la generación de claves, ya sea para ser utilizadas un largo periodo
de tiempo (asimétricas), uno corto (simétricas), para una sola vez (claves efímeras
y nonces ); o para generar determinados parámetros del sistema (desafíos, etc.). Por
ello, es básico establecer los tipos y propiedades que deben vericar los generadores
de números aleatorios.
318. El objetivo a la hora de generar números aleatorios suele ser el de producir bits (0 y
n
1) de modo que se distribuyan uniformemente en el conjunto {0, 1} (ver [ANS20a],
[ACM1.3], [ANS21], [BSI22]). Esta generación de bits puede transformarse de modo
inmediato a la generación de números. Además, la mayoría de las aplicaciones
criptográcas precisa de determinado grado de imprevisibilidad y que los bits o
números generados sean secretos. De hecho, a los generadores que se puedan
usar se les exige la propiedad de que si un adversario llegara a conocer largas
subsecuencias de los números aleatorios generados, no debería poder determinar
predecesores o sucesores de la subsecuencia conocida. Dicho de otro modo, conocida
determinada subsecuencia de números, la probabilidad de conocer el siguiente o el
anterior número de la subsecuencia no debería ser mayor de 1/2. Así pues, en las
aplicaciones criptográcas es fundamental utilizar generadores de números aleatorios
fuertes y seguros.
319. Dos fuentes de gran interés para la elección y estudio de los generadores de números
aleatorios o RNG (Random Number Generator )9 pertenecen al esquema alemán,
conocidas como AIS 31 [BSI13b] para el caso de los generadores físicos de números
aleatorios o PTRNG (Physical True Random Number Generator ) y AIS 20 [BSI13a],
para los generadores deterministas de números aleatorios o DRNG (Deterministic
Random Number Generator ). Para ambas fuentes, es de interés el anexo de Killman
y Schindler [KS11], que dene la clases de funcionalidad para generadores físicos
de números aleatorios PTG.1PTG.3, para generadores deterministas de números
aleatorios DRG.1DRG.4 y para generadores de números aleatorios no físicos ni
deterministas o NPTRNG (Non Physical True Random Number Generator ) NTG.1.
Cuando se habla de generadores de bits aleatorios en lugar de números aleatorios, estos se
9
denotan por RBG (Random Bit Generator ). Suele ser indiferente hacer referencia a un tipo o a
otro de generador puesto que ambas generaciones pueden considerarse equivalentes: todo número
se puede transformar en una colección de bits y viceversa.
320. Los generadores físicos de números aleatorios utilizan hardware dedicado ([Link]. un
circuito electrónico) como generador de números realmente aleatorios o TRNG (True
Random Number Generator ), es decir, números aleatorios impredecibles. En general
se hace uso del comportamiento impredecible del hardware empleado, de modo que
a la postre, la entropía de la señal se debe a un nivel físico o a las inuencias
ambientales dentro del sistema empleado. En muchos casos, es preciso utilizar un
postprocesamiento determinista de los datos del ruido digitalizados tal como se
obtienen de la fuente (raw noise data) con el n de eliminar cualquier sesgo o
dependencia.
321. Así pues, una fuente realmente aleatoria de números puede entenderse como un
procedimiento probabilístico que proporciona bits aleatorios. En general, es muy
difícil evaluar la calidad de la salida de una fuente aleatoria y se suelen emplear
dos aproximaciones: 1) Mediante pruebas estadísticas a la salida de la fuente y 2)
Modelando el proceso probabilístico de la fuente empleada.
2. El aumento medio de la entropía por bit aleatorio está por encima de un límite
mínimo dado (cercano a 1).
325. En la Tabla 5.1 se muestran las clases de los PTRNG que están autorizados.
330. Es claro que el estado interno de un DRNG debe protegerse de manera conable
contra lectura y manipulación.
333. La Tabla 5.2 presenta las diferentes clases de los DRNG autorizados.
del estado interno actual, con una probabilidad signicativamente mayor de lo que
sería posible sin conocer el estado interno.
esta guía. En los escenarios en los que esto no fuera posible, se podría aceptar que
fuera (re)semillado por otro DRNG como parte de un compliant seed tree.
Dicho de otro modo, el atacante que recupere el estado interno del DRNG, podrá
calcular claves efímeras generadas anteriormente con este DRNG. Por lo tanto,
solo se deben utilizar los DRNG que no permitan dicho cálculo hacia atrás.
341. Como en los PTRNG, los NPTRNG también generan números realmente aleatorios,
por lo que deben producir la entropía suciente, pero no utilizan hardware dedicado,
sino determinados recursos del sistema (como el tiempo del sistema, el contenido de
la RAM, etc.) o interacciones con el usuario (como el movimiento del ratón, cadencia
en la entrada del teclado, etc.). Los NPTRNG se utilizan, en general, en ordenadores
que no se han desarrollado especícamente para aplicaciones criptográcas, como
los ordenadores domésticos y de omática, los portátiles o los smartphones, entre
otros.
342. Una forma típica de proceder con los NPTRNG es la siguiente: se generan largas
cadenas de bits no deterministas, siendo la entropía por bit generalmente bastante
baja. A continuación esta cadena de bits se mezcla con un estado interno. Sobre
la base del estado interno, se calculan y se emiten posteriormente los números
aleatorios.
343. En [KS11] se dene una clase de funcionalidad para tales generadores de números
aleatorios, denominada NTG.1. La clase de estos generadores de números aleatorios
345. basándose en el conocimiento del estado interno y las cadenas de bits aleatorias
utilizadas previamente para actualizaciones de semillas, con una probabilidad
signicativamente mayor de lo que sería posible sin conocer el estado interno.
347. Ya se ha mencionado que para inicializar un DRNG se precisa una semilla con una
entropía sucientemente alta (ver 5.3). Por ello, la semilla debe generarse con un
generador físico de números aleatorios de las clases de funcionalidad PTG.2 o PTG.3.
Como en los ordenadores normales no se dispone de un PTRNG o tal RNG no está
certicado por una entidad independiente del fabricante, se recomienda el uso de
un generador de números aleatorios ni físico ni determinista. Para este propósito,
los RNG que cumplen con la clase NTG.1 son adecuados, dado que presentan un
alto potencial de ataque.
350. La Tabla 5.5 muestra los esquemas autorizados para generar números enteros
aleatorios módulo un número q dado, que no es una potencia de 2.
3. k = k ′ + a.
4. Devolver k.
2. k = (k ′ mod (b − a + 1)) + a.
3. Devolver k.
351. La técnica de prueba asegura la generación uniforme modulo q a costa del uso
de una cantidad variable de aleatoriedad, posiblemente adicional. Por su parte, la
técnica extra aleatoria hace que los sesgos sean insignicantes a costa de una
pequeña cantidad ja de aleatoriedad adicional.
6. Gestión de Claves
354. Dado que los mecanismos criptográcos autorizados se consideran robustos, su uso
no pone en riesgo la CIA de las claves que utiliza. No obstante, cuando se evalúa
un producto que implementa mecanismos criptográcos, se deben considerar todas
las formas en las que el producto manipula el material clave y cualquier forma en
la que un adversario podría intentar vulnerarlo, de modo que quede asegurado el
hecho de que no puede obtener las claves.
355. Como los criptosistemas simétricos suelen estar restringidos a un grupo de cerrado
de usuarios, las claves simétricas deben distribuirse entre ellos de modo que nadie
externo al grupo cerrado pueda tener conocimiento de las mismas. También es
fundamental que el canal de distribución de las claves esté protegido para la
autenticidad e integridad.
356. En el caso de los criptosistemas asimétricos, como una de las claves es pública,
puede enviarse o compartirse a través de un canal no condencial, aunque debe
protegerse para garantizar su autenticidad e integridad. Por el contrario, como la
clave privada se puede generar localmente, debe estar protegida para evitar que
pueda acceder a ella cualquier otro usuario que no sea su legítimo propietario.
359. Para que un adversario no tenga conocimiento a priori de las claves utilizadas por
un determinado mecanismo criptográco, dichas claves deben ser impredecibles.
Además, se requiere que las claves sean lo sucientemente largas como para
garantizar la CIA de los protocolos que las utilicen, así como que la distribución
de la salida del proceso utilizado para generarlas no se pueda distinguir de una
distribución uniforme.
360. En esta sección se presentan los métodos de generación de claves autorizados para
los mecanismos criptográcos genéricos que requieran claves. Salvo que se indique
lo contrario, las claves utilizadas para los mecanismos criptográcos convenidos de
los apartados anteriores se obtendrán truncando una secuencia de bits de salida
por un método de generación autorizado y dependiente del tamaño de la clave del
mecanismo.
361. En la Tabla 6.1 se presentan los métodos autorizados para la generación de claves
genéricas y algunas notas relacionadas.
Método Notas
registro TLS. En cualquier caso, la entropía de los secretos preexistentes será de,
al menos, 125 bits, o de 188 bits en caso de que se requiera resistencia a la
computación cuántica.
365. Para aquellos mecanismos que tengan necesidades especícas a la hora de generar
sus claves, o bien se especica cómo generarlas en el momento en el que son tratados
en esta guía, o bien se suele denir un procedimiento especíco de generación de
claves utilizando un generador de bits aleatorios a modo de caja negra.
367. El uso de una misma clave para diferentes mecanismos con el n de garantizar, por
ejemplo, la CIA, es una fuente de errores y también puede abrir vías de ataque que
exploten los diversos contextos de uso de dicha clave. Hay que tener en cuenta que
el uso de una clave debe entenderse en términos del objetivo de seguridad logrado
y no restringido en términos de mecanismos criptográcos. Así, por ejemplo, un
contexto de rma digital de un mensaje y un esquema de autenticación asimétrica
pueden utilizar el mismo esquema de rma digital, pero los pares de claves utilizados
en los dos contextos deben ser diferentes.
368.
Nota 102 [ Uso de claves] Una misma clave no debe utilizarse con diferentes
mecanismos.
370.
Nota 104 [Distribución] La distribución de claves secretas y privadas se limitará
al entorno de conanza que haga un uso efectivo de la clave.
Nota 105 [ Destrucción de claves] Al nal del ciclo de vida de una clave, la
371. clave se borrará de forma segura de la plataforma de conanza en la que se utilizó.
373. El proceso de borrado debe adaptarse al entorno y tener en cuenta los problemas
de remanencia de la memoria.
7. Autenticación de Personas
7.1. Autenticación
375. En general, la autenticación de una persona ante una entidad se asegura mediante
el uso de mecanismos criptográcos. Sin embargo, si la persona debe identicarse
ante sí misma en un sistema de información, entonces hay algunas diferencias.
376. La primera de ellas es que dicha persona no puede hacer uso directo de mecanismos
criptográcos. La segunda es que lo más probable es que el procedimiento de
autenticación se reproduzca, como es el caso, por ejemplo, de las autenticaciones a
largo plazo basadas en contraseñas. En tercer lugar, suele suceder que la entropía
de los datos usados para la identicación (como contraseñas), es inferior a lo que
se esperaría de un sistema criptográco estándar.
377. Por ello, los procedimientos de autenticación de personas solo se pueden realizar
localmente en una plataforma conable o a través de un canal conable. Por ejemplo,
introduciendo un número de identicación personal o PIN (Personal Identication
Number) o proporcionando una cookie a un sitio web. Además, estos procedimientos
deben requerir una interacción con el sistema porque si los datos de vericación de
la identidad pudieran extraerse del sistema, un atacante podría recuperar los datos
de identicación mediante el uso de fuerza bruta.
380. En esta guía consideraremos los dos casos que se detallan a continuación.
382. En general, este caso se implementa mediante recursos criptográcos, por ejemplo,
tarjetas inteligentes o módulos de seguridad hardware (HSM o Hardware Security
Module ), con el n de desbloquear el acceso a operaciones que afecten a claves
almacenadas de forma segura en el recurso.
384. En la Tabla 7.1 se presentan las probabilidades máxima de falsa aceptación para el
caso de los intentos que se citan.
5 5 × 10−6 R
5 5 × 10−4 H
385. En el segundo caso, se trataría de limitar el tiempo que el usuario dispondría para
llevar a cabo su identicación. Esta limitación no es práctica en aplicaciones reales
porque no se discrimina la velocidad con la que un usuario puede llevar a cabo
diferentes intentos. Cabría la posibilidad de que el sistema limitara la velocidad a
la que la persona que se intenta autenticar puede someterse a tal procedimiento.
Dicho de otro modo, este caso proporciona una solución de peor calidad que el caso
anterior al limitar la cantidad de intentos de autenticación por unidad de tiempo.
de que sea posible un nuevo intento. Por el momento, esta guía no considera ningún
requisito para este segundo caso.
ANEXOS
387. En este anexo se muestran diferentes métodos para la generación de números primos
de determinada longitud. Tal generación es básica puesto que la generación de
primos de modo seguro es utilizada en varios mecanismos de clave asimétrica, en
especial en el RSA.
390. En esta sección se muestran dos algoritmos autorizados que permiten generar
números primos (véanse los Algoritmos 3 y 4). En ambos casos se supone que se
dispone de una primera prueba Test, que verica las condiciones que debe vericar
el primo y de una segunda, TestPrime, que es una prueba de primalidad.
391. El primer algoritmo para generar números primos (ver Algoritmo 3) no es
excesivamente eciente y utiliza pruebas como las mencionadas anteriormente, esto
es, Test y TestPrime.
392. El segundo algoritmo para generar números primos (ver Algoritmo 4) es más
eciente que el anterior. También en este caso se dispone de pruebas similares
a las mencionadas anteriormente, Test y TestPrime.
393. La Tabla A.1 muestra dos métodos de generación de primos por muestreo de rechazo
autorizados. El segundo de ellos es más eciente que el primero.
5. Devolver p.
6. Devolver p.
394.
Nota 106 ( Ataque ROCA) El método considerado no es susceptible de ser
vulnerado por el ataque ROCA (véase A.4) [NSv+ 17].
determinista.
401. Es bien conocido que el problema de la primalidad, esto es, decidir si un número
dado es primo o no, es un problema que se puede resolver de forma determinista en
tiempo polinómico [AKS04]. Si bien desde un punto de vista teórico este resultado
21
es fundamental, el algoritmo requiere un tiempo de ejecución Õ k 2 , siendo k el
402. Por este motivo en la práctica se usan métodos probabilísticos, que aunque no
aseguren la primalidad del número testeado, demuestran que la probabilidad de
que el número sea compuesto sea muy baja. En la Tabla A.2 se muestra el test
autorizado para la determinación de la primalidad de un número candidato.
404. El test de Miller-Rabin (ver [Mil76], [Rab80], [MvV96, Algor. 4.24] y [DHM05, Algor.
5.28]) es el algoritmo probabilístico por excelencia. Se basa en el Teorema (pequeño)
de Fermat, que arma que para cualquier número p primo, y para cualquier número
a coprimo con p, esto es, con mcd (a, p) = 1, se verica que ap−1 ≡ 1 (mod p). El
2+ε
tiempo de ejecución esperado para el algoritmo de Miller-Rabin es O ((log n) ),
ε ≥ 1, dependiendo del algoritmo de multiplicación empleado y siendo n el número
candidato.
405. En el Teorema de Fermat, cuando tal número a existe, se denomina base prima
con p. Si se desea comprobar la primalidad de un número candidato n y se encuentra
un valor a, coprimo con n, tal que la congruencia anterior no se verique, entonces
se puede asegurar que n es compuesto. Sin embargo, la armación recíproca no es
siempre cierta. Dicho de otro modo, el hecho de que no se encuentre base alguna
en la que no se verique dicho teorema no garantiza que el número n sea primo.
an−1 ≡ 1 (mod n), para toda base a ∈ [2, n−1], prima con n, reciben el nombre de
números de Carmichael (el más pequeño de tales números es n = 3 · 11 · 17 = 561).
2. for i from 1 to t do
Se elige al azar un entero a, con 2 ≤ a ≤ n − 2
n
b ← a (mod n)
if (b ̸= 1 and b ̸= n − 1) then do
j←1
while j ≤ s − 1 and b ̸= n − 1 do
b ← b2 (mod n)
if b = 1 then devuelve Compuesto
j ←j+1
if b ̸= n − 1 then devuelve Compuesto
3. Devuelve Primo con probabilidad (1 − 2−2t ).
l √ m
donde 3 ≤ M ≤ 2 k − 1 − 1 . En denitiva, se acepta el valor del número de
Pobj = 2−125
Nº iter., t k
Long. bits candidato,
412. Según la Tabla A.3, obtenida haciendo uso de la fórmula (A.1), se deduce que serán
necesarias t=6 rondas con k = 1024,t = 3 rondas con k = 2048 para para
o
−125
excluir, con una probabilidad de error de 2 , que p es un número compuesto,
aunque el algoritmo de Miller-Rabin identique a p como un número primo.
413. Dado que el mínimo número de bits exigido para un primo en el caso del
criptosistema RSA es de 1536 (el módulo tendrá un tamaño de 3072 bits) y que
para el algoritmo de Die-Hellman el tamaño del primo es de 3072 bits, siguiendo
la expresión (A.1), para k = 1536, se necesitan t=4 iteraciones y si k = 3072, el
número de iteraciones es t = 2.
10El número de iteraciones y las longitudes en bits de los candidatos mostrados en la Tabla A.3
las hemos computado a la hora de elaborar dicha Tabla. En el caso de P = 2 , se muestran
−125
entre paréntesis los valores publicados en [ACM1.3]. Suponemos que la diferencia entre los valores
obj
calculados y los publicados para este caso, se debe a la distinta precisión numérica empleada a la
hora de calcular los valores correspondientes aplicando la fórmula (A.1).
6. Devolver p, q .
415. En la Tabla A.4 se presenta el algoritmo autorizado para la generación del par de
claves para el mecanismo asimétrico RSA.
Nota 108 ( Generación de claves RSA) Los números primos p y q deben ser
dos primos generados aleatoriamente de la misma longitud y cuyo producto
(módulo RSA) debe tener la longitud de bits dada. Los dos números primos
416. no deben ser demasiado cercanos para evitar ataques de factorización que
exploten una posible distancia pequeña entre los dos factores, por lo que
debería vericarse que |p − q| ≥ 2 2 −100 , siendo k el tamaño de dichos números
k
primos.
419. Desde 2016 han aparecido algunas publicaciones que plantean la cuestión de si los
bits de una clave pública RSA, (n, e), pueden revelar información sobre la elección
realizada en el diseño e implementación del algoritmo que genera los números primos
p y q, es decir, si es posible identicar el origen de los primos conociendo sólo el
módulo RSA y no su factorización.
+ +
420. De hecho, en [Nem16], [vNS 16b] y en [vNS 16a], los autores intentan vericar
si los pares de claves RSA generados por cierto software y determinadas tarjetas
inteligentes ofrecen la calidad y la seguridad requerida en relación con la aleatoriedad
deseada y la resiliencia frente a los ataques más generalizados. Para ello, estudian
si es posible determinar el origen de las claves, es decir, identicar qué librería de
software o qué tarjeta inteligente es la responsable de generar los números primos
asociados a una clave RSA, suponiendo que solo se conoce la clave pública. Así,
+
venda et al. [vNS 16b] demostraron que las opciones de implementación en las
bibliotecas criptográcas permiten suponer el origen de las claves RSA públicas.
+
421. Posteriormente, Nemec et al. informaron en [NSv 17] sobre su descubrimiento de
un fallo en el algoritmo en la construcción de números primos para la generación
de claves RSA en una biblioteca ampliamente utilizada de un importante fabricante
de hardware criptográco. Este ataque ha sido llamado ataque ROCA debido
al título del artículo. Los números primos generados por la biblioteca sufren una
importante pérdida de entropía, defecto que aprovecharon los autores para proponer
422. Se identicaron, de esta forma, decenas de miles de claves con esta debilidad. Los
autores estimaron que la cantidad de dispositivos afectados era del orden de decenas
de millones. Además, en el peor de los casos, la factorización de claves de 1024 y
2048 bits precisaba de menos de 3 meses de CPU y 100 años de CPU en un solo
núcleo de CPU, respectivamente. Pero además, todas las claves susceptibles de ser
atacadas contienen una característica digital que es vericable en microsegundos en
un ordenador común, por lo que todas las claves vulnerables se pueden identicar
de forma inmediata.
423. Los resultados del ataque ROCA obligó a varios gobiernos europeos a revocar todos
los certicados digitales de millones de tarjetas de identicación de sus ciudadanos,
ya que tenían claves de 1024 bits y se podía suplantar la identidad de sus ciudadanos.
En España se optó por la misma medida de prevención, aunque los DNIe españoles
no corrían el mismo peligro que los documentos de identidad utilizados en otros
países, ya que el DNIe español utiliza claves de 2048 bits.
B. Criptografía Postcuántica
425. En esta sección se hará una breve introducción a las razones que han dado
lugar al nacimiento de la denominada criptografía postcuántica (Post-Quantum
Cryptography, PQC) , cuyo principal objetivo es el de resistir a la amenaza real que
supone la enorme potencia de los ordenadores cuánticos. Por otra parte, a lo largo de
las siguiente secciones se describirán, brevemente, las herramientas matemáticas y
los correspondientes problemas matemáticos
11 utilizados para garantizar la seguridad
herramientas y problemas en algunos casos, más complejos que los empleados hasta ahora
hace necesaria la inclusión de unas deniciones preliminares que no obliguen al lector a tener que
recurrir a libros especializados.
discretos (véanse 3.1.2 y 3.1.3) podrían resolverse solo en unas pocas horas. De
√ 3
log n
hecho, si un ordenador actual necesita O 2 operaciones bit para romper un
427. En relación con los mecanismos simétricos (véase 2.1), los algoritmos de Grover
[Gro96], [Gro97] y Simon [Sim97] reducirían el tiempo de cálculo necesario para
romperlos a la raíz cuadrada del tiempo actual. Esto es, si se desarrolla un ordenador
cuántico con la capacidad de cómputo suciente, la seguridad de los mecanismos
simétricos actuales sería equivalente a la de los mismos mecanismos con claves de
longitud la mitad. Dicho de otro modo, si un PC actual necesita O(n) operaciones
bits para romper uno de estos mecanismos, con el algoritmo de Grover este tiempo
√
se reduciría a O ( n) operaciones bits y requeriría un almacenamiento en memoria
de O(log n) bits.
431. Como ya se han mencionado, existen cuatro algoritmos que el NIST ha mantenido
para ser estudiados en una cuarta ronda. Los mismos se listan en la Tabla B.3.
432. En los capítulos anteriores de esta guía hemos incluido los mecanismos criptográcos
que a nivel nacional se consideran autorizados, porque ofrecen una seguridad
adecuada. Debe notarse que algunos de ellos podrán ser vulnerados si la computación
cuántica acaba teniendo la potencia de cálculo necesaria. Por ello, su papel pasará
a ser el de los nuevos estándares que se consideren tanto por el NIST como por la
comunidad internacional y española.
433. Dado que el NIST está a punto de concluir y publicar los resultados de su
convocatoria sobre PQC, en este capítulo solo hemos incluido las propuestas que
se han superado la tercera ronda o que siguen considerándose para ser evaluadas
en la cuarta. Por ello, hemos añadido en este capítulo las primitivas matemáticas
consideradas en la convocatoria del NIST. No obstante, no se ha incluido la primitiva
de isogenias sobre curvas elípticas dado que, aunque en la fecha de la publicación
de los candidatos que habían superado la tercera ronda, SIKE era un candidato
incluido, todo apunta a que no será tenido en cuenta en el futuro, dado que se ha
encontrado un ataque de recuperación de clave eciente para SIKEp434 (nivel de
seguridad 1) utilizando un procesador de un solo núcleo en, aproximadamente, una
hora [CD22]. No obstante, a la anterior consideración se hará una excepción. Se
trata de la propuesta FrodoKEM.
B.1.2. Seguridad
435. Una de las primeras consideraciones a tener en cuenta para determinar nuevos
estándares para la PQC es su seguridad. Esto es, cualquier nuevo mecanismo
criptográco que se proponga debe ser seguro frente a ataques clásicos y a ataques
cuánticos.
436. Las pruebas de reducción han sido las principales herramientas utilizadas para
lograr conanza en un mecanismo criptográco. Hablando informalmente, estas
pruebas de reducción consisten en considerar un problema matemático difícil
de resolver (supuestamente), de modo que la armación de que un mecanismo
criptográco es demostrablemente seguro frente a una denición de seguridad
signica que se puede probar que romper el mecanismo criptográco implica
resolver (en tiempo polinómico) el problema difícil considerado. Dicho de otro
modo, la seguridad del mecanismo queda reducida a la seguridad del problema
matemático.
439. Lo que se pretende con la criptografía postcuántica es que se utilice allá donde
se usa la criptografía asimétrica en la actualidad, esto es, los futuros mecanismos
estándares postcuánticos deberían reemplazar directamente a los actuales.
comunicación con ancho de banda limitado. Por otra parte, además de la velocidad
de procesamiento, también se debe considerar la velocidad en la generación de
claves, en el cifrado y el descifrado, y en la generación de rma y su vericación.
Para estos mecanismos también se considera como una propiedad deseada el secreto
perfecto persistente y la garantía de seguridad para resistir ataques de canal lateral.
441. Presentaremos, en primer lugar, unas nociones elementales sobre retículos (lattices )
y los principales problemas denidos en esta estructura, para posteriormente
comentar las propuestas que han superado la tercera ronda del NIST.
B.2.1. Retículos
Nota 111 [ Problema del vector más corto] (Shortest Vector Problem, SVP)
446. Consiste en encontrar un vector no nulo, x ∈ L, que sea el más corto de L, es
decir, ||x|| ≤ ||y||, para todo y ∈ L, esto es,||x|| = λ1 (L).
Nota 112 [ Problema del vector más cercano] (Closest Vector Problem,
447.
CVP) Dado L en Rn y un vector x ∈ Rn de modo que x ̸∈ L, este problema
consiste en encontrar un vector y ∈ L de modo que ||x − y|| ≤ ||x − z|| para
todo z ∈ L.
Nota 114 [ Problema del aprendizaje con errores] (Learning With Errors,
LWE) Este problema se parametriza por un entero n, un número primo q≥2 y
una distribución de probabilidad χ sobre Zq . Típicamente χ es una distribución
normal de media ν y desviación estándar δ:
1 1 x−ν 2
449. χ = G(x) = √ exp 2 ( δ ) .
δ 2π
Una distribución As,χ de un problema LWE sobre Znq × Zq se muestrea eligiendo
$ $
uniforme y aleatoriamente a ←− Znq , e ←− Zq , y considerando como salida el par
(a, b), siendo b = ⟨s, a⟩ + e (mod q).
450. Existen dos versiones del problema LWE: búsqueda y decisión, que se denen a
continuación.
$
a1 ←− Znq , b1 = ⟨s, a1 ⟩ + e1 (mod q) ,
451.
$
a2 ←− Znq , b2 = ⟨s, a2 ⟩ + e2 (mod q) ,
.
.
.
$
am ←− Znq , bm = ⟨s, am ⟩ + em (mod q) .
Nota 117 Problema LWE sobre anillos] (Ring Learning With Errors, RLWE)
[
Se considera el anillo de polinomios, R = Z[x]/(ℓ(x)), de grado n sobre Z. En
n n
general se considera ℓ(x) = x − 1 si n es primo o ℓ(x) = x + 1 si n es una
potencia de 2. Se considera además, el anillo cociente Rq = R/qR, siendo q impar
y sucientemente grande (hacer módulo q ).
454. El problema RLWE se parametriza por el anillo R, de grado n sobre Z, un módulo
entero positivo, q , que dene el anillo cociente Rq , y una distribución de error, χ,
sobre R.
Dado un secreto s ∈ Rq , una distribución RLWE, As,χ , sobre Rq × Rq se muestrea
eligiendo uniforme y aleatoriamente a ∈ Rq , con e ← χ y considerando como
salida (a, b = ⟨s, a⟩ + e (mod q)).
Nota 118 [ Problema LWE sobre anillos (decisión)] En este caso, se trata
de distinguir entre muestras de RLWE y muestras uniformemente aleatorias. El
problema se parametriza, además, con el número de muestras disponibles, m.
455. Este problema consiste en: dadas m muestras independientes (ai , bi ) ∈ Rq × Rq ,
distinguir si cada muestra se distribuye de acuerdo a una de las dos opciones
siguientes: (1) As,χ para un s ∈ Rq uniformemente aleatorio (jo para todas las
muestras), o (2) una distribución uniforme, sin una ventaja apreciable.
Nota 119 [Problema LWE sobre módulos] (Module Learning With Errors,
456. MLWE) Este problema es análogo al problema RLWE pero en lugar de considerar
la estructura subyacente de anillo, se considera la estructura de módulo
12 .
B.2.2. ML-KEM
459. El esquema general de ML-KEM se muestra en la Tabla B.5. Dicho esquema cuenta
con los tres algoritmos estándar de un KEM genérico: algoritmo de generación
de claves, [Link], encapsulado, [Link], y desencapsulado,
[Link].
Generación
↰
de claves
↱
← →
↰
Clave de encapsulado
Clave de desencapsulado
↓ ↓
Encapsulado → Texto cifrado → Desencapsulado
↓ ↓
Copia compartida Copia compartida
de la clase secreta de la clase secreta
de Bernardo
de Alicia
461. Debe tenerse en cuenta que si las entradas a los diferentes algoritmos son las
adecuadas, el procedimiento de establecimiento de claves de ML-KEM nunca fallará
de forma explícita. De hecho, los algoritmos [Link] y [Link]
siempre generarán un valor con el mismo tipo de datos que una clave secreta
compartida y nunca generarán un símbolo de error o fallo. Sin embargo, es
posible, aunque muy improbable, que el proceso falle de modo que Alicia
(con [Link]) y Bernardo (con [Link]) produzcan resultados
diferentes, aunque ambos se comporten honestamente y no haya interferencias
de posibles adversarios. Si este hecho se produce, se dice que hay un fallo de
desencapsulado.
ML-KEM-512 2−138,8
ML-KEM-768 2−164,8
ML-KEM-1024 2−174,8
463. Los algoritmos que dene ML-KEM emplean subrutinas basadas en un esquema
de cifrado de clave pública denominado K-PKE. Los algoritmos de generación de
claves ([Link]), cifrado ([Link]) y descifrado ([Link])
son solo componentes del ML-KEM, por lo que ninguno de ellos está aprobado para
ser utilizado como esquema criptográco independiente. La descripción detallada
de estos algoritmos puede verse en [FIPS203, 5].
464. Al margen de los tres algoritmos anteriores, existen otros algoritmos auxiliares
que son necesarios para la ejecución completa del ML-KEM, como BitsToBytes,
BytesToBits, Compress,
Decompress, ByteEncode, ByteDecode, SampleNTT,
−1
SamplePolyCBD, NTT, NTT , MultiplyNTTs y BaseCaseMultiply (para una
descripción pormenorizada de cada uno de ellos, véase [FIPS203, 4.2, 4.3]).
466. Por otra parte, ML-KEM emplea, como es sabido, tres componentes de un PKE,
conocido como K-PKE, que no está aprobado para su uso de manera independiente.
Su uso es exclusivamente como una colección de subrutinas para ser empleada en
los algoritmos del estándar ML-KEM. K-PKE está formado por tres algoritmos:
Generación de claves, [Link], Cifrado, [Link], y Descifrado,
[Link] (los algoritmos correspondientes se presentan de forma precisa en
[FIPS203, 5.1-5.3]).
467. Cuando se hace uso del K-PKE, como parte del estándar ML-KEM, este hereda
los parámetros seleccionados para ML-KEM. Como ya se ha mencionado, siempre
se consideran n = 256 y q = 3329, pero los restantes parámetros varían según el
conjunto de parámetros elegido para ML-KEM. Por otra parte, conviene señalar que
los tres algoritmos de K-PKE mencionados no verican las entradas correspondientes
dado que solo son llamados como subrutinas de los algoritmos de ML-KEM, que
son los que verican las entradas, según cada caso.
469. Los tres algoritmos internos son deterministas, es decir, su salida está
completamente determinada por su entrada, sin que exista aleatoriedad dentro de
ellos. Los parámetros que emplean son los correspondientes a los utilizados por
algoritmos que les invocan.
470. Como ya hemos mencionado, para crear una instancia concreta de ML-KEM, se
debe seleccionar un conjunto de parámetros especíco, se debe garantizar que los
tres algoritmos de ML-KEM solo se invocan con un conjunto de parámetros válido,
apropiado para la aplicación deseada, y que el mismo debe coincidir con el conjunto
de parámetros asociado a las entradas proporcionadas de cada algoritmo.
472. Se denota por B al conjunto {0, 1, . . . , 255} de los enteros sin signo de 8-bits y la
función hash a emplear es siendo H(·) = SHA3-256(·).
2. ek ← ekPKE
3. dk ← (dkPKE ||ek||H(ek)||z)
475. La generación de una clave segura depende de la claves que se hayan generado con
el algoritmo [Link]. Si las claves no fueron generadas por su propietario,
este puede, opcionalmente, realizar determinadas comprobaciones con el n de
detectar posibles corrupciones, aunque el algoritmo que se propone a continuación,
Key pair check (ver Algoritmo 9), no garantiza que las mismas se hayan generado
correctamente.
¯ dk
Comprobación de un par de candidatos a clave (ek, ¯ ).
$
a) Generar una matriz de 32 bytes aleatorios ejecutando m ←− B32 .
$ ¯ m).
b) Ejecutar (K, c) ←− ML-KEM.Encaps_internal(ek,
$ ¯ c).
c) Ejecutar K ′ ←− ML-KEM.Decaps_internal(dk,
1. (K, r) ← G(m||H(ek))
2. c ← [Link](ek, m, r)
3. devuelve (K, c)
2. if m == NULL then
3. devuelve ⊥
4. end if
5. (K, c) ← ML-KEM.Encaps_internal(ek, m)
6. devuelve (K, c)
481. Por otra parte, el algoritmo [Link] no debe ejecutarse con una clave de
encapsulado que no haya sido vericada. Sin embargo, no es necesario que la parte
que realiza la encapsulado realice la vericación de la clave de encapsulado ni con
cada ejecución de [Link].
5. m′ ← [Link](dkPKE , c)
6. (K ′ , r′ ) = G(m′ ||h)
7. K̄ ← J(z||c, 32)
8. c′ ← [Link](ekPKE , m′ , r′ )
9. if c ̸= c′ then
10. K ′ = K̄
11. end if
12. devuelve K ′
1. K ′ ← ML-KEM.Decaps_internal(dk, c)
2. if c ̸= c′ then
3. devuelve K ′
489. A la vista de los algoritmos anteriores, se puede armar que existen algunas
diferencias entre CRYSTALS-Kyber y la versión de ML-KEM publicada por el NIST.
490. Las diferencias más destacables son las que se derivan de un comportamiento
diferente en la entrada y la salida de los tres algoritmos principales: la generación de
claves, el encapsulado y el desencapsulado. Esto es, no se detallan las diferencias de
cómo estos algoritmos obtienen la salida a partir de la entrada. En todo caso, debe
tenerse en cuenta que cualquier implementación que sea conforme con la propuesta
con la del NIST debe coincidir con el comportamiento de las entradas y salidas de
los tres algoritmos mencionados y de sus correspondientes algoritmos internos.
492. Como ya hemos mencionado, ML-KEM tiene tres conguraciones diferentes para
tres conjuntos de parámetros, cada uno de los cuales está formado por dos
parámetros jos, n = 256 y q = 3329, y otros cinco parámetros, k , η1 , η2 , du
y dv , cuyo valor varía para cada conguración.
494. El estándar publicado por el NIST en [FIPS203] considera aprobados los conjuntos
de parámetros que se muestran en la Tabla B.7.
495. Por su parte, los tamaños de las claves (en bytes) para ML-KEM y los textos cifrados
para cada conjunto de parámetros se presentan en la Tabla B.8.
Conjunto Clave encapsulado Clave desencapsulado Texto cifrado Clave secreta compartida
ML-KEM-512 800 1632 768 32
ML-KEM-768 1184 2400 1088 32
ML-KEM-1024 1568 3168 1568 32
Tabla B.8: Tamaño en bytes de las claves y textos cifrados para ML-KEM
B.2.3. FRODOKEM
497. FrodoKEM está diseñado considerando una función hash que toma como entradas
un texto claro elegido al azar y el hash de la clave pública, y genera una cadena
de bits grande. El hecho de introducir la clave pública en la generación de r o K
2. s ←R {0, 1}lens
3. pkh = H1 (pk)
3. c ← E(pk, m; r)
4. K = H3 (c||k)
5. Devuelve (c, K)
2. (r′ , k ′ ) = H2 (pkh||m)
3. K0′ = H3 (c||k ′ )
4. K1′ = H3 (c||s)
B.2.4. ML-DSA
501. Además de estos tres algoritmos, existen otros algoritmos auxiliares que son
necesarios para la ejecución completa del ML-DSA. Estos son: IntegerToBits,
BitsToInteger, IntegerToBytes, BitsToBytes, BytesToBits, CoeFromThreeBytes,
CoeFromHalfByte, SimpleBitPack, BitPack, SimpleBitUnpack, BitUnpack,
HintBitPack, HintBitUnpack, pkEncode, pkDecode, skEncode, skDecode,
sigEncode, sigDecode, w1Encode, SampleInBall, RejNTTPoly, RejBoundedPoly,
ExpandA, ExpandS, ExpandMask, Power2Round, Decompose, HighBits,
LowBits, MakeHint, UseHint, NTT, NTT-1, BitRev8 , AddNTT, MultiplyNTT,
AddVectorNTT, ScalarVectorNTT y MatrixVectorNTT (para una descripción
pormenorizada de cada uno de ellos, véase [FIPS203, 7.2-7.6]).
502. Por otra parte, en [FIPS204] se dene un nuevo esquema de rma que está
estrechamente relacionado con ML-DSA, conocido como HashML-DSA. Este se
504. Este protocolo presenta un fallo de seguridad dado que la respuesta z está sesgada
según el valor privado S1 . Del mismo modo, r = wApprox − Az + T c = y2 + S2 c
está sesgado por el valor privado S2 . Sin embargo, este defecto se puede corregir
cuando el protocolo interactivo anterior se convierte en un esquema de rma. Esto
es, al igual que con las rmas de Schnorr, el rmante deriva el desafío mediante
un proceso pseudoaleatorio a partir de un hash del compromiso concatenado con
el mensaje. Sin embargo, para corregir el sesgo, el rmante aplica un muestreo de
rechazo a z de modo que si los coecientes de z caen fuera de un determinado
rango, el proceso de rma se cancela y el rmante comienza otra vez con un nuevo
valor de y . También se debe aplicar un muestreo de rechazo similar a r. En la rma
resultante, de tipo Fiat-Shamir with aborts, la clave pública es (A, T ) y la clave
privada es (S1 , S2 ).
507. Por otra parte, ML-DSA utiliza, en ocasiones, la API incremental denida en
[SP800-185], que consta de tres funciones para cada variante de SHAKE. Tales
funciones se pueden utilizar para inicializar (Init) una función hash, absorber
(Absorb) una secuencia de cadenas de longitud arbitraria o comprimir (Squeeze)
una secuencia de cadenas de longitud arbitraria. De forma resumida, si H y G
denotan, respectivamente SHAKE256 y SHAKE128, también se hará uso ocasional
de las funciones [Link], [Link], [Link], [Link], [Link] y [Link].
508. Además de SHAKE128 y SHAKE256, los algoritmos [Link] y
[Link] pueden llamar a otras funciones hash que estén aprobadas
para el hash previo. El pseudocódigo de este estándar también trata estas funciones
como si devolvieran una cadena de bytes como salida, mientras que admiten como
entrada una cadena de bits o una cadena de bytes.
2. Â ← ExpandA(ρ)
3. (s1 , s2 ) ← ExpandS(ρ′ )
5. (t1 , t0 ) ← Power2Round(t, d)
6. pk ← pkEncode(ρ, t1 )
7. tr ← H(pk, 64)
8. sk ← skEncode(ρ, K, tr, s1 , s2 , t0 )
$
1. ξ ←− B32
2. if ξ == NULL then
3. devuelve ⊥
4. end if
5. devuelve ML-DSA.KeyGen_internal(ξ)
513. Hay dos formas en las que un algoritmo de rma puede usar ML-DSA.Sign_internal:
la protegida y la determinista. Las variantes protegidas predeterminadas de
[Link] y [Link] utilizan un valor aleatorio nuevo para rnd,
mientras que las variantes deterministas opcionales utilizan la cadena de bytes
32
constante {0} .
514. En las dos variantes mencionadas, el rmante extrae de la clave privada: la semilla
aleatoria pública ρ; la semilla aleatoria privada de 32 bytes, K ; el hash de 64 bytes de
la clave pública, tr , los vectores polinómicos secretos s1 y s2 y el vector polinómico
t0 , que codica los d bits menos signicativos de cada coeciente del polinomio de
clave pública sin comprimir t. Luego, ρ se expande a la misma matriz A que en la
generación de claves.
515. Antes de rmar el mensaje, M, este se concatena con el hash de clave pública tr y
se reduce a un representante del mensaje de 64 bytes, µ, utilizando la función hash
H.
516. El rmante produce entonces una semilla adicional de 64 bytes, rho′′ ←
H(K||rnd||µ, 64), para obtener una aleatoriedad privada durante cada operación
de rma. En la variante protegida predeterminada, rnd es la salida de un RBG;
mientras que en la variante determinista rnd es una cadena de 32 bytes que consta
enteramente de ceros.
517. La parte principal del algoritmo interno de rma consiste en un bucle de muestreo
de rechazo, donde cada iteración del bucle produce una rma válida o una rma no
válida cuya publicación ltraría información sobre la clave privada. El bucle se repite
hasta que se produce una rma válida, que luego se codica como una cadena de
bytes yes la salida. El ciclo de muestreo de rechazo sigue el paradigma de las rmas
de Fiat-Shamir with aborts y (aparte del paso de rechazo) es similar en estructura a
las rmas Schnorr (por ejemplo, la EdDSA, ver 3.2.2). El rmante produce primero
un compromiso w1 , luego determina pseudoaleatoriamente un desafío c de w1 y el
mensaje representativo µ. Finalmente, el rmante calcula una respuesta z.
9. σ ← ML-DSA.Sign_internal(sk, M ′ , rnd)
10. devuelve σ
522. Por último, el vericador comprueba que la respuesta z y la pista h del rmante son
′
válidas, y que el valor de w1 es consistente con el hash del compromiso del rmante,
c̃. De forma más precisa, el vericador comprueba que todos los coecientes de z
son lo sucientemente pequeños, es decir, están en el rango (−(γ1 −β), γ1 −β), que
h no contiene más de ω coecientes distintos de cero y que c̃ coincide con el hash,
c̃′ , del mensaje representativo µ concatenado con w1′ . Si todas estas comprobaciones
son correctas, el algoritmo devuelve verdadero; en caso contrario devuelve falso.
1. (ρ, t1 ) ← pkDecode(pk)
2. (c̃, z, h) ← sigDecode(σ)
3. if h =⊥ then Devuelve falso
4. end if
5. Â ← ExpandA(ρ)
6. tr ← H(pk, 64)
7. µ ← H(BytesToBits(tr)||M ′ , 64)
8. c ∈ Rq ← SampleInBall(c̃)
9.
′
wApprox ← NTT−1 (Â ◦ NTT(z) − NTT(c) ◦ NTT(t1 2d ))
10. w1′ ← UseHint(h, wApprox
′
)
′ ′
11. c̃ ← H(µ||w1Encode(w1 ), lambda/4)
12. Devuelve [[||z||∞ < γ1 − β]] and [[c̃ = c̃′ ]]
5. Devuelve ML-DSA.Verify_internal(pk, M ′ , σ)
524. Es importante señalar que para algunos módulos criptográcos que generan rmas
de tipo ML-DSA, puede suceder que su rendimiento sea inaceptable si el mensaje
M es grande, como podría pasar en el paso 6 del algoritmo ML-DSA.Sign_internal
(Algoritmo 21). Para estos casos se propone el uso de algoritmos modicados,
denominados genéricamente HashML-DSA, si bien, se recomienda el uso de los
algoritmos ML-DSA siempre que sea posible.
19. ...
8. case SHA-512
15. ...
529. El NIST considera tres especicaciones diferentes para ML-DSA, denotadas como
ML-DSA-44, ML-DSA-65 y ML-DSA-87, de modo que los dos últimos dígitos de
cada una de ellas hacen referencia al tamaño de la matriz A, esto es, ML-DSA-XY
señala que el tamaño de A es X ×Y sobre Rq .
530. El conjunto de parámetros establecido por el NIST para este esquema de rma
estándar se presenta en [FIPS204] y es el de la Tabla B.9, cuyo signicado se
presenta a continuación.
d: # de bits descartados de t
τ: # de ±1 del polinomio c
λ: fortaleza de la colisión de c̃
532. Finalmente, en la Tabla B.11 se muestran los tamaños (en bytes) de claves y de las
rmas de ML-DSA.
533. Existen dos algoritmos de rma digital basados en funciones hash aceptados en
esta guía: XMSS y SLH-DSA. El algoritmo SLH-DSA (ver B.3.1) es el resultado
+
del proceso de estandarización del algoritmo SPHINCS , que superó la tercera
ronda del NIST. Por otro lado, el algoritmo XMSS (ver B.3.2) fue estandarizado
con anterioridad a pesar de sus peculiaridades de uso para cubrir la necesidad
de proveer una solución de rma con resistencia a la computación cuántica en
escenarios donde es difícil realizar actualizaciones, como es el caso de las rmas
de FW/SW mediante dispositivos hardware. En general, el problema computacional
sobre el que se basan las rmas digitales basadas en funciones resumen se considera
sucientemente robusto. Por este motivo su uso no requiere de hibridación con otras
B.3.1. SLH-DSA
+
534. El algoritmo SPHINCS , candidato que superó la tercera ronda del NIST en 2022,
fue seleccionado por esta institución como esquema de rma digital. Una vez que
el NIST ha publicado el estándar de esta rma digital en [FIPS205], en esta sección
comentaremos sus principales propiedades, así como los cambios realizados por el
NIST. La nueva propuesta se denota como Stateless Hash-Based Digital Signature
Standard o SLH-DSA.
535. SLH-DSA es un esquema de rma basado en hash sin estado que se construye
utilizando como componentes otros esquemas de rma basados en hash: un esquema
de rma de pocas veces, un bosque de subconjuntos aleatorios o FORS (Forest Of
Random Subsets ) y el esquema de rma XMSS (ver B.3.2). XMSS se construye
+
utilizando el esquema de rma única basado en hash WOTS como componente.
+
De hecho, los esquemas WOTS y XMSS que se utilizan como componentes de
+
SLH-DSA no son los mismos que los esquemas WOTS y XMSS denidos en
[RFC8391] y [SP800-208].
+
538. Las principales diferencias entre SLH-DSA y SPHINCS son las siguientes
539. En las secciones 3-8 de [FIPS205] se presentan aspectos concretos y con mayor
detalle de este estándar. En ellas se abordan aspectos generales del esquema de
rma, funciones que se emplean en su implementación, la rma única Winternitz
Plus, la rma XMSS, el hiperárbol SLH-DSA y el bosque de subconjuntos aleatorios.
También se incluyen funciones que son necesarias para la implementación de los
diferentes algoritmos. No obstante, a continuación se comentan de forma genérica
algunas de estas características.
540. Este se diferencia del primero en el hecho de que incluye un paso de prehash
adicional antes de la rma. Al igual que el ML-DSA, HashML-DSA también consta
de tres algoritmos: el de generación de claves, que es el mismo algoritmo utilizado
para ML-DSA, [Link] (Algoritmo 20), el de rma, [Link]
(Algoritmo 25), y el de vericación, [Link] (Algoritmo 26).
541. Como ya hemos dicho, SLH-DSA utiliza el hiperárbol y las claves FORS para crear
un esquema de rma basado en hash sin estado. La clave privada SLH-DSA contiene
un valor inicial secreto y una clave PRF secreta. La clave pública está formada por
un identicador de clave, [Link], y la raíz del hiperárbol. Una rma SLH-DSA
se crea aplicando un hash al mensaje, utilizando h bits del resumen del mensaje
′
para seleccionar una clave FORS, h − h bits para seleccionar un árbol XMSS
′ +
en la capa más baja y h bits para seleccionar una clave WOTS (y la clave
FORS correspondiente) de ese árbol. Además, se rman ka bits del resumen del
mensaje con la clave FORS. Aunque sólo se utilizan bits h + ka bits del resumen
del mensaje, la implementación se simplica extrayendo los bits necesarios de un
resumen ligeramente más grande.
542. La clave pública de SLH-DSA contiene dos elementos: el primero es una semilla
pública, [Link], de n bytes, que se utiliza en muchas llamadas a funciones hash
para proporcionar separación de dominio entre diferentes pares de claves SLH-DSA.
El segundo es la clave pública del hiperárbol, es decir, la raíz del árbol XMSS de
la capa superior, [Link], que se genera utilizando un generador de bits aleatorios
aprobado que admita, al menos, 8n bits de seguridad.
543. Por su parte, la clave privada SLH-DSA contiene dos valores secretos aleatorios
de nbytes: uno de ellos, [Link], se utiliza para generar todos los elementos de
+
clave privada de WOTS y FORS; mientras que el otro, [Link], se emplea para
generar un valor aleatorio para el hash aleatorio del mensaje en SLH-DSA. La clave
privada incluye, además, una copia de la clave pública. Tanto [Link] como [Link]
546. Las claves públicas SLH-DSA contienen dos elementos: una semilla pública [Link]
de n bytes, que se utiliza en muchas llamadas a funciones hash para proporcionar
separación de dominios entre diferentes pares de claves SLH-DSA, y la clave pública
del hiperárbol (es decir, la raíz del árbol XMSS de la capa superior), [Link], que se
generará utilizando un generador de bits aleatorios aprobado donde la instanciación
del generador de bits aleatorios admita al menos 8n bits de seguridad. La clave
privada SLH-DSA contiene dos valores secretos aleatorios de n
bytes: el primero,
+
[Link], se utiliza para generar todos los elementos de clave privada de WOTS y
FORS. El segundo, [Link], se utiliza para generar un valor de aleatorización para
el hash aleatorio del mensaje en SLH-DSA. La clave privada también incluye una
copia de la clave pública. Tanto [Link] como [Link] se generarán utilizando un
generador de bits aleatorios aprobado, donde la instanciación del generador de bits
aleatorios admita al menos 8n bits de seguridad.
547. La rma SLH-DSA tiene dos variantes: protegida y determinista, cuyas claves
solo deben usarse para la generación y vericación de rmas digitales SLH-DSA
protegidas y deterministas, respectivamente.
2. [Link](d − 1)
549. por su parte, el Algoritmo 28 muestra el procedimiento para generar las claves
para SLH-DSA. Como se puede apreciar, en las líneas 13 se generan los valores
aleatorios para las claves privada y pública; mientras que la línea 7 llama al algoritmo
slh_keygen_internal para calcular [Link] y devolver la clave privada y pública.
Además, [Link], [Link] y [Link] se generarán utilizando un generador de bits
aleatorios aprobado, donde la instanciación del generador de bits aleatorios admita
al menos 8n bits de seguridad.
Genera un par de claves para SLH-DSA. Salida: par de claves, (SK, P K), para
SLH-DSA.
$
1. [Link] ←− Bn
$
2. [Link] ←− Bn
$
3. [Link] ←− Bn
550. Por otra parte, en [FIPS205] se dene, al igual que en el caso de las rmas
ML-DSA, además del esquema puro de generación de una rma, un esquema de
rma conocido como prehash y denotado por hashslh-dsa. Ambas versiones utilizan
los correspondientes algoritmos internos para rmar y para vericar las rmas (los de
generación de claves son los mismos para ambas versiones); si bien dieren en cómo
se crean las entradas a tales algoritmos internos. En lo que sigue, se presentarán, en
primer lugar, los algoritmos internos y los conocidos como puros para la generación y
vericación de las rmas y, más tarde, se mostrarán los correspondientes algoritmos
para hashslh-dsa.
551. Una rma SLH-DSA consta de una cadena aleatoria de n bits, R, una rma FORS
de k(1 + a)n bytes, SIGF ORS , y una rma de hiperárbol de (h + d · len)n bytes,
SIGHT .
552. El procedimiento para elaborar una de tales rmas se muestra como Algoritmo 30,
que crea un resumen de mensaje de m bytes (líneas 25). De hecho, se utiliza un
PRF para crear un generador aleatorio de mensajes (línea 3) y se aplica un hash
junto con el mensaje para crear el resumen (línea 5). Posteriormente, se extraen
los bits del resumen del mensaje para rmarlos con la clave FORS (línea 6), para
+
seleccionar un árbol XMSS (líneas 7 y 9) y para seleccionar una clave WOTS
y la clave FORS correspondiente dentro de ese árbol XMSS (líneas 8 y 10). A
continuación, se calcula la rma FORS (líneas 1114) y se obtiene la clave pública
FORS correspondiente (línea 16). Finalmente, se rma la clave pública FORS (línea
17).
12. [Link](FORS_TREE)
554. Las versiones de rma pura y prehash utilizan slh_sign_internal, pero dieren en
cómo se crea la entrada de mensaje a slh_sign_internal a partir del contenido que
se va a rmar. En la versión pura, el contenido se rma con slh_sign_internal
junto con cierta información de separación de dominios. En la versión prehash, un
hash del contenido se rma con slh_sign_internal junto con cierta información de
separación de dominios. Ambas versiones toman el contenido que se va a rmar,
la clave privada y un contexto como entrada. La versión prehash, como luego se
verá, también toma como entrada una función hash o XOF que se va a utilizar para
hacer un prehash del contenido que se va a rmar. La cadena de contexto tiene una
longitud máxima de 255 bytes. De forma predeterminada, el contexto es la cadena
vacía. Sin embargo, las aplicaciones pueden especicar el uso de una cadena de
contexto no vacía.
5. if addrnd = NULLthen
6. devuelve ⊥
7. end if
8. M ′ ← toByte(0, 1)||toByte(|ctx|, 1)||ctx||M
555. Al igual que con la elaboración de la rma, la vericación interna con SLH-DSA (ver
Algoritmo 31) calcula un resumen del mensaje (línea 8) y luego extrae md (línea
9), idxtree (líneas 10 y 12) e idxleaf (líneas 11 y 13) del resumen. A continuación
se calcula una clave pública FORS candidata (línea 17) y se verica la rma con la
clave FORS (línea 18). Si esta vericación de rma es correcta, entonces la clave
pública FORS también lo era y la rma SIG del mensaje M es válida.
1. if |SIG| =
̸ (1 + k(1 + a) + h + d · len)n then
2. devuelve falso
3. end if
4. ADRS ← toByte(0, 32)
5. R ← [Link]()
6. SIGF ORS ← SIG.getSIG_FORS()
7. SIGHT ← SIG.getSIG_HT()
15. [Link](FORS_TREE)
556. Al igual que antes, las versiones de vericación de rma pura y prehash utilizan
slh_verify_internal, pero dieren en cómo se crea la entrada de mensaje al mismo.
8. case SHA-512
561. La versión publicada por el NIST solo aprueba el uso de 12 de los 36 conjuntos de
+
parámetros denidos en [HBD 20], dado que solo se aceptan los casos simples en
los que las funciones criptográcas empleadas sean SHA-2 o SHAKE.
+
562. Un conjunto de parámetros para SLH-DSA son los parámetros para WOTS (n y
lgw ), el hiperárbol para XMSS y SLH-DSA (h y d) y FORS (k y a), a la vez que
los valores para las funciones Hmsg , PRF, PRFmsg , F, H, and Tl . SLH-DSA utiliza
un parámetro adicional m, que es la longitud en bytes del resumen del mensaje y
h − h′
′
h ka
m= + +
8 8 8
563. La Tabla B.12 presenta los conjuntos de parámetros cuyo uso está aprobado. Cada
uno de los nombres, se señala la familia de funciones hash (SHA2 o SHAKE) que
se utiliza, la longitud en bits del parámetro de seguridad, n, y si el conjunto de
parámetros fue diseñado para crear rmas relativamente pequeñas (s) o generar
rmas relativamente rápidas (f ). Además, Cat. hace referencia a la categoría de
seguridad establecido, PK es el tamaño, en bytes, de la clave pública y SIG es el
tamaño, también en bytes de la rma.
564. Debe tenerse en cuenta, como ya se ha mencionado con antelación, que los
conjuntos de parámetros incluidos en la Tabla B.12 se diseñaron para cumplir con
las categorías de fortaleza de seguridad denidas por NIST en su convocatoria de
propuestas original con respecto a la imposibilidad de falsicación existencial bajo
ataque de mensaje elegido (EUF-CMA) cuando cada par de claves se usa para
64
rmar, como máximo, 2 mensajes.
n, lgw , h, d, k y a cuyo
566. Como se puede ver, hay seis conjuntos de valores para
uso está aprobado. Para los conjuntos de parámetros con SHAKE o SHA2, se
567. Para los conjuntos de parámetros SHA2, se establecen las instancias de las funciones
siguientes si n = 16 (categoría 1):
F([Link], ADRS, M1 ) =
Truncn (SHA-256([Link]||toByte(0, 64 − n)||ADRSc ||M1 ))
H([Link], ADRS, M2 ) =
Truncn (SHA-256([Link]||toByte(0, 64 − n)||ADRSc ||M2 ))
Tl ([Link], ADRS, Ml )
=
c
Truncn (SHA-256([Link]||toByte(0, 64 − n)||ADRS ||Ml )
F([Link], ADRS, M1 ) =
Truncn (SHA-256([Link]||toByte(0, 64 − n)||ADRSc ||M1 ))
H([Link], ADRS, M2 ) =
Truncn (SHA-512([Link]||toByte(0, 128 − n)||ADRSc ||M2 ))
Tl ([Link], ADRS, Ml ) =
c
Truncn (SHA-512([Link]||toByte(0, 128 − n)||ADRS ||Ml ))
B.3.2. XMSS
569. El algoritmo de rma XMSS fue propuesto, como ya se ha dicho, por Buchmann
et al. [BDH11] y desarrollado posteriormente en [RFC8391] y [SP800-208]
como un algoritmo extendido del esquema de rma de Merkle (MSS) [Mer89].
Ambos esquemas se conocen como esquemas de rmas basadas en hashes o
HBS (Hash-Based Signatures ). Las HBS son unos de los primeros protocolos
criptográcos asimétricos propuestos y se basan en el esquema de rma única de
Lamport [Lam79]. Su fundamento son los conocidos árboles de Merkle, que a su
vez son un tipo particular de árbol binario.
571. Un árbol binario es una estructura en forma de árbol de modo que cada uno del
mismo tiene exactamente tres aristas, dos de las cuales van al nivel más cercano a
las hojas y la otra va a la raíz. Las hojas tienen una única arista y la raíz tiene solo
dos aristas.
h = 0, h1 h2 h3 h4 h5 h6 h7 h8
h = 1, n1,0 n1,1 n1,2 n1,3
! } ! }
h = 2, n2,0 n2,1
( v
h = 3, n3,0
En general, los nodos se denotan como nh,k , donde h es el número del piso y
k es el orden dentro de un piso, de izquierda a derecha, de modo que se tiene
0 ≤ k ≤ 2H−h − 1 para el piso número h.
573. Para implementar una HBS se pueden usar árboles de Merkle junto con un esquema
de rma única u OTS (One Time Signature ), como la de Lamport. Un OTS es un
esquema de rma con una clave privada que se usa para rmar un mensaje y la
clave pública correspondiente se usa para vericar dicha rma. El problema es que
la clave privada solo se puede usar una vez para rmar un mensaje.
575. Un árbol HBS es un árbol Merkle cuyas hojas son las claves públicas del OTS, y
cada nodo interno del árbol consiste en el hash de sus dos hijos. La raíz del árbol
es la clave pública de la construcción de Merkle.
n0,k = h(Pk ), 0 ≤ k ≤ 2H − 1,
nh,k = h (nh−1,2k || nh−1,2k+1 ) ,
577. De forma más precisa, el esquema de Merkle utiliza 2H instancias de OTS, cada
una con un par de claves públicas y privadas, (pi , si ), y construye un árbol de Merkle
cuyas hojas son los hashes de las claves públicas de las instancias de OTS, y cada
nodo es el hash de sus dos nodos secundarios. La clave pública consiste en la raíz del
árbol de Merkle y la clave privada contiene las claves privadas de todas las instancias
H
de OTS de 2 . La rma de un mensaje m consta de un índice i que especica una
instancia OTS (pi , si ), la rma única σOT S en m bajo la clave pi , la clave pi y una
ruta de autenticación Ai que se utiliza para vericar la validez de pi .
578. La ventaja del esquema MSS es que se considera resistente a los algoritmos
cuánticos, de hecho, solo depende de la existencia de funciones hash seguras.
579. Desde que Merkle anunció su propuesta, se ha publicado una gran cantidad
+
de trabajos que intentan mejorar diferentes aspectos de MSS [DSS05, BCD 06,
+
BDK 07, BDS08, BDS09], etc. En particular, es de destacar la propuesta XMSS
de Buchmann [BDH11].
580. El esquema XMSS usa un OTS que solo puede rmar un mensaje con una clave,
pero para superar esta limitación, se usa un árbol HBS que permite reducir la
autenticidad de muchas claves de vericación OTS a una clave XMSS pública.
Además, para minimizar los requisitos de almacenamiento, se utilizan generadores
pseudo-aleatorios.
581. Para reducir el tamaño de la clave privada (que consiste en las claves privadas de las
2H instancias OTS) se utiliza una función pseudo-aleatoria o PRF (Pseudo-Random
Function), con una semilla maestra de n bits con el n de generar una semilla OTS
de n bits para cada instancia OTS, que a su vez se utiliza para generar la clave
privada de esa instancia.
582. El OTS que usa XMSS es una variante de la OTS de Winternitz (W-OTS), llamada
+ +
WOTS en [Mer89], [BDE 11] y [Hül13], que elimina el requisito de una función
hash resistente a colisiones.
583. Además de los árboles binarios ya mencionados, también son de interés los árboles
binarios no balanceados, llamados L-árboles [18]. Estos se utilizan exclusivamente
+
para los hash de claves públicas WOTS . Las ℓ hojas de un L-Tree son los elementos
+
de una clave pública WOTS y el árbol se construye como los ya mencionados, con
la salvedad de que el nodo izquierdo que no tiene un hermano derecho se eleva a
un nivel superior del L-árbol hasta que se convierte en el hermano derecho de otro
nodo. Los L-árboles tienen una altura de ⌈log ℓ⌉ y, por lo tanto, necesitan ⌈log ℓ⌉
máscaras.
584. Además, XMSS usa una estructura de L-árbol para reducir la clave pública OTS
+ +
[BHH 15] y utiliza máscaras de cegamiento para las cadenas WOTS y para cada
nodo en HBS y en el L-árbol. Las claves ciegas se generan de forma pseudo-aleatoria
para cada nodo del árbol mientras se genera o verica una rma.
585. Los parámetros públicamente conocidos para generar las claves de rma OTS son
los siguientes:
Un familia de funciones F (n) = {fK : {0, 1}n → {0, 1}n |K ∈ {0, 1}n }.
587. Tal y como ya se ha señalado, en 1997, Shor publicó en [Sho97] dos algoritmos
cuánticos capaces de vulnerar, en el momento de que se disponga de un ordenador
cuántico con la suciente capacidad de cómputo, los dos criptosistemas asimétricos
más empleados en la actualidad: el RSA y los basados en curvas elípticas.
588. En [CCN22], el CCN presentó una colección de recomendaciones para una transición
postcuántica segura, esto es, se detallaron las acciones que se deben llevar a cabo
para protegerse, en la medida de lo posible, de esta amenaza cuántica.
2. FrodoKEM.
Este KEM es una variante más conservadora que Kyber y su diseño
también es sencillo, dado que se basa en un problema de retículos no
estructurados. Existe un proyecto de ISO para convertirlo en norma
+
[ABD 23].
4. Falcon.
Posiblemente esta rma sea la que tenga el diseño más compacto y
eciente y también se basa en problemas sobre retículos estructurados.
Es de destacar que su implementación necesita instrucciones particulares
(coma otante). El NIST publicará en breve un borrador de su estándar.
+
5. SPHINCS (ahora SLH-DSA).
Este esquema de rma es una variante sin estado de XMSS, por lo
que su rma es más conservadora, esto es, sus hipóteis de seguridad
son menores. Es menos competitivo en términos de rendimiento y
compacidad. El NIST ha publicado un estándar [FIPS205].
6. XMSS.
+
Como precursor de SPHINCS , es un esquema de rma con estado
conservador y potencialmente tiene un número limitado de posibles
rmas para cada de claves. Existe un estándar publicado en [RFC8391].
Las longitudes de las claves, tanto para los algoritmos simétricos como para
las funciones hash:
1. AES-256.
2. SHA2-384 y SHA2-512.
3. SHA3-384 y SHA3-512.
590. Para cada uno de los algoritmos postcuánticos mencionados más arriba, se deben
tener en cuenta las siguientes consideraciones:
3. Utilizar claves efímeras siempre que sea posible, dado que previene
muchos ataques, como los de fallo de descifrado.
FrodoKEM.
+
SPHINCS (ahora SLH-DSA) y XMSS.
592. En esta sección trataremos el tema de cómo combinar dos o más mecanismos
de intercambio de claves en un acuerdo de claves híbrido, suponiendo que todos
los esquemas KEM proporcionen al menos seguridad OW-CPA. En todo caso, es
importante tener en cuenta lo que se menciona en la Nota 120.
Nota 120 [ No es aceptable un XOR con dos claves] Llevar a cabo una
operación de XOR con dos claves aleatorias no es aceptable porque supone una
593. falta de seguridad importante. Si el tipo de ataque es pasivo, esta operación podría
no suponer un problema; pero si el ataque es activo de modo que se pudiera replicar
el contenido de un registro en otro, las consecuencias de este ataque podrían ser
nefastas.
596. El esquema de acuerdo de clave híbrida concatenada con una KDF [ETS20, 8.2],
a veces denotado como CatKDF o CAT then KDF, permite intercambiar múltiples
claves públicas y múltiples valores de respuesta en un solo mensaje. Su construcción
se muestra en la Tabla B.13.
Iniciador A Respondedor B
(sk1 , pk1 ) = KeyGen1 ()
(sk2 , pk2 ) = KeyGen2 ()
MA = (pk1 , pk2 , . . .)
MA
−→
(k1 , R1 ) o ⊥= Response1 (P1 )
(k2 , R2 ) o ⊥= Response2 (P2 )
MB = (R1 , R2 , . . .) o mensaje de error
MB
←−
k1 o ⊥= Receive1 (sk1 , R1 )
k2 o ⊥= Receive2 (sk2 , R2 )
597. Debe tenerse en cuenta que si algún algoritmo Response devuelve un indicador de
error, B responderá con un mensaje de error y nalizará el proceso. Si A recibe un
mensaje de error, A nalizará el proceso. Si algún algoritmo Receive devuelve un
indicador de error, A deberá dar por terminado el proceso.
598. Por otra parte, MA es una cadena de octetos que contiene una codicación de las
claves públicas, pki , intercambiadas desde el iniciador al respondedor. MA puede
incluir información de negociación de la sesión, si es necesario. En el caso de que
se utilicen más de dos sistemas de establecimiento clave, MA contendrá todas las
claves públicas. Por su parte, si MB no es un mensaje de error, será una cadena
de octetos que contendrá una codicación de los valores de respuesta Ri . Además,
MB puede incluir información sobre la negociación de la sesión. En el caso de que
599. El algoritmo CAT then KDF hace uso de una función de derivación de claves, KDF ,
autorizada (ver Tabla 2.11) y una función hash, H, autorizada (ver Tabla 2.2) y se
muestra como Algoritmo 35.
2. h ← H (context, MA , MB )
4. Devuelve key
600. Otro protocolo de acuerdo de clave híbrida se denomina en cascada con KDF ,
CasKDF o simplemente Cascade [ETS20, 8.3], cuya construcción se presenta en
la Tabla B.14.
Iniciador A Respondedor B
(sk1 , pk1 ) = KeyGen1 ()
MA1 = (pk1 , . . .)
MA
−→1
(k1 , R1 ) o ⊥= Response1 (P1 )
MB1 = (R1 , . . .) o mensaje de error
MB
←−1
k1 o ⊥= Receive1 (sk1 , R1 )
(sk2 , pk2 ) = KeyGen2 ()
MA2 = (pk2 , . . .)
MA
−→2
(k2 , R2 ) o ⊥= Response2 (P2 )
MB2 = (R2 , . . .) o mensaje de error
MB
←−2
k2 o ⊥= Receive2 (sk2 , R2 )
······
602. Cada MAi es una cadena de octetos que contiene una codicación de la clave pública
pki intercambiada entre el iniciador y el respondedor. Además, MAi puede incluir
información de negociación de sesión. Por su parte, MBi se una cadena de octetos
que contiene y codica el valor de respuesta Ri . MBi puede incluir negociación de
sesión información. En este modelo en cascada, pueden ocurrir dos o más rondas.
603. Como en el modelo de hibridación CAT then KDF, KDF es una función de
derivación de claves autorizada (ver Tabla 2.11); mientras que P RF es una
1. secret0 ← psk
2. for i = 1, . . . , n do
3. round_secreti ← P RF (secreti−1 , ki , MAi , MBi )
5. end do
6. Devuelve (secret1 , secret2 , . . . , secretn , key1 , key2 , . . . , keyn )
606. Para la elaboración de la rma digital estándar o DSS (Digital Signature Standard )
de un mensaje, m, se sigue el Algoritmo 38.
608. El algoritmo de rma digital basado en curvas elípticas (Elliptic Curve Digital
Signature Algorithm o ECDSA) fue propuesto originalmente en 1992 por Scott
Vanstone en respuesta a la convocatoria del NIST para el establecimiento de un
609. Como todos los esquemas de rma digital, tiene tres fases: 1) generación de claves,
2) elaboración de la rma y 3) vericación de la rma. Los parámetros del ECDSA
son una curva elíptica denida sobre un cuerpo nito primo, Fp , E(Fp ) y un punto
de la curva de orden primo q, G ∈ E , que actúa como generador con q ≈ p.
610. La clave privada del usuario A es un entero aleatorio en el intervalo [1, q − 1], a, y
su clave pública es el punto de la curva dado por A = aG.
611. Para elaborar la rma del documento m, A sigue el Algoritmo 40.
615. Los pasos a seguir para la elaboración de la rma para un mensaje m son los
mostrados en el Algoritmo 42.
617. La versión de la rma de Schnorr para curvas elípticas se conoce como EC-Schnorr
(Elliptic Curve Based Schnorr Signature Algorithm) [TR-03111v2.1].
618. En este algoritmo se considera que la clave privada del rmante, A es dA y su clave
pública es A, siendo (p, a, b, G, n, h) los parámetros de la curva elíptica E , esto es,
p > 2 es un primo que dene el cuerpo base, a, b los parámetros de la curva, G un
punto de la curva elíptica de orden n y h el cofactor correspondiente. El algoritmo
para la elaboración de la rma es el Algoritmo 44.
619. En el algoritmo anterior, OS2I es una primitiva que convierte cadenas de octetos
en cadenas de enteros (Octet String to Integer Conversion ) como sigue: si
ol−1 ol−2 . . . o2 o1 es una cadena de l octetos, cada uno de ellos se puede interpretar
como un entero no negativo en base 256, de modo que el bit más signicativo es
el que está más a la izquierda; en denitiva, se obtiene el entero dado por
623. Las expresiones de curvas elípticas más extendidas son las denominadas curvas de
Weierstrass, cuya forma es la siguiente:
E : y 2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 , donde a1 , a2 , a3 , a4 , a6 ∈ F.
624. En el caso particular de que el cuerpo nito sea un cuerpo primo, Fp , de característica
diferente de 2 y de 3, mediante un adecuado cambio de variables, la expresión
anterior se transforma en lo que se conoce como expresión reducida de Weierstrass:
E : y 2 = x3 + ax + b − 16 4a3 + 27b2 =
donde a, b, c ∈ F, vericando ̸ 0.
625. Además de las curvas de Weierstrass mencionadas, existen otros dos tipos de curvas
especiales denidas sobre cuerpos primos, que son las llamadas curvas de Edwards
y curvas de Montgomery. De los dos tipos de curvas, nos detendremos en las curvas
de Edwards.
626. Estas curvas fueron introducidas por Harold M. Edwards [Edw07] como aquellas
curvas elípticas que responden a la siguiente ecuación, conocida como forma normal:
627. Más tarde, con el n de aumentar el número de curvas elípticas que pudieran
transformarse en curvas de Edwards sin modicar el cuerpo base original, Bernstein
y Lange [BL07], diseñaron una variante de estas curvas, denominada forma
generalizada, cuya ecuación tiene alguna de las dos siguientes expresiones (que
son isomorfas):
+
628. Posteriormente, en [BBJ 08] se propuso otra generalización de las curvas de
Edwards, conocidas como curvas twisted (torcidas) de Edwards, y que corresponden
a la siguiente expresión:
ax2 + y 2 = 1 + dx2 y 2 .
629. Una vez presentadas las curvas twisted de Edwards, abordaremos el algoritmo de
rma digital que emplea estas curvas y que se conoce como EdDSA (ver [FIPS186-5]
y [RFC8032]). Este esquema está basado en el de rma de Schnorr, que emplea
curvas twisted de Edwards. En [SP800-186] se listan las curvas aprobadas para su
uso con EdDSA.
630. El esquema de rma EdDSA consta de dos procesos previos antes de la generación
de claves, elaboración de la rma y vericación de la misma. Estos dos procesos
se conocen como Codicación y Decodicación y pasamos a presentarlos a
continuación.
632. Por otra parte, para el punto de curva (x, y) con 0 ≤ x, y < p, en primer lugar
se codica la coordenada y como una cadena little-endian de 32 octetos para la
curva Ed25519 o de 57 octetos para la curva Ed448. El bit más signicativo del
octeto nal de Ed25519 es cero, mientras que para Ed448, es cero el octeto más
signicativo. Para formar la codicación del punto, se copia el bit menos signicativo
de la coordenada x al bit más signicativo del octeto nal.
633. La decodicación de un punto dado como una cadena de 32 octetos es algo más
complicado. Para ello se sigue el siguiente proceso:
634. Las claves públicas del esquema EdDSA tienen exactamente b bits y las rmas 2b
bits. El valor b es múltiplo de 8, por lo que la longitud de la clave pública y de la
rma son un número entero de octetos.
635. Para la curva Ed25519, se toma b = 256, por lo que la clave privada debe tener 32
octetos. Por su parte, para la curva Ed448, es b = 456 y la clave privada tiene 57
octetos [RFC8032].
636. El algoritmo para generar el par de claves privada (cadena de b bits) y pública (punto
codicado de la curva) se presenta como el Algoritmo 46 [FIPS186-5, Appendix A].
a) Para las curvas Ed25519, los primeros tres bits del primer octeto y
el último bit del último octeto se ponen a cero y el penúltimo bit
del último octeto se pone a uno. Es decir, h0 = h1 = h2 = hb−1 =
0, hb−2 = 1.
b) Para las curvas Ed448, los dos primeros bits del primer octeto y
los ocho bits del último octeto se ponen a cero y el último bit del
penúltimo octeto se pone a uno. Esto es, h0 = h1 = hi = 0, para b−
8 ≤ i ≤ b − 1, hb−9 = 1.
2. Utilizando la segunda mitad de h(k), esto es, hres2 = (hb , hb+1 , . . . , h2b−1 ),
se dene:
638. Los pasos para vericar la rma EdDSA son los del Algoritmo 48.
639. En la Tabla C.1 se muestran los principales parámetros para las curvas twisted de
Edwards aprobadas para su uso en EdDSA.
641. Nota 122 [ Hash con Edwards25519] El esquema de rma EdDSA con la curva
Edwards25519 utilizará la función SHA-512.
642.
Nota 123 [ Hash con Edwards448] El esquema de rma EdDSA con la curva
Edwards448 utilizará la función SHAKE-256 (ver [FIPS202]).
645. El proceso que debe seguirse para elaborar la rma HashEdDSA para un mensaje
M se presenta en el Algoritmo 49.
h(M ) =
1. Calcular SHA-512(M ) para Ed25519ph o h(M ) =
SHAKE-256(M, 512) para Ed448ph.
647. Así pues, EdDSA aplica el hash al mensaje dos veces, mientras que HashEdDSA solo
lo hace una vez. Otra diferencia entre ambos esquemas es que EdDSA almacena en
el buer el mensaje completo (o leerse dos veces desde su almacenamiento). Este
hecho supone que para mensajes largos, HashEdDSA debería tener un rendimiento
mejor.
648. Por otra parte, si fuera factible calcular colisiones en la función hash (o XOF)
utilizada, no parece que esto suponga ningún efecto adverso en la seguridad de
EdDSA. Sin embargo, esta propiedad no es válida para HashEdDSA dado que las
colisiones pueden dar lugar a mensajes falsicados.
652. Los parámetros del dominio del KCDSA, esto es, los parámetros que comparten un
grupo de usuarios son los siguientes:
653. Por su parte, los parámetros del usuario son x, y, z , generados de la siguiente
manera:
654. El algoritmo para que el rmante, A, elabore su rma digital para el mensaje m es
el Algoritmo 51.
656. También es importante señalar que como el paso que lleva más tiempo de
computación es la determinación de w, es posible calcular el valor del par (k, r)
de forma previa e independientemente del mensaje rmar, lo que puede acelerar
los cómputos en línea. En efecto, bastaría entonces con calcular los siguientes dos
valores para elaborar la rma digital del mensaje m:
r = h g k (mod p) , con k ∈r Z∗q ,
657. El algoritmo para que el usuario B verique la rma (r||s) de A para el mensaje m
es el Algoritmo 52.
1. En primer lugar comprueba la validez del certicado del rmante, extrae los
datos de certicación, CD , del certicado y calcula su resumen: z = h(CD ).
658. La variante del KCDSA para curvas elípticas se conoce como EC-KCDSA (Elliptic
Curve Korean Certicate-based Digital Signature Algorithm).
659. Al igual que en el caso del KCDSA, el EC-KCDSA utiliza un certicado del usuario
que va a rmar el mensaje, de modo que los datos de certicado se denotan como
660. Los parámetros del dominio de EC-KCDSA son los necesarios para denir la curva
elíptica sobre el cuerpo que se determine. En este caso, tales parámetros son:
663. Como en el caso del KCDSA, una parte del algoritmo se puede realizar con antelación
(fuera de línea), esto es, es posible calcular los valores de
667. Para determinar la clave privada del usuario A, se genera un entero aleatorio en el
−1
intervalo [1, q − 1], a0 , y se calcula a = a (mod q). Su clave pública es el punto
de la curva dado por A = aG.
668. En la elaboración de la rma del documento m, A sigue los pasos señalados en el
Algoritmo 55.
Glosario
IV Vector de inicialización
Initialization Vector
KA Acuerdo de clave
Key Agreement
KCDSA Algoritmo de rma digital coreana basado en certicados
Korean Certicate-based Digital Signature Algorithm
KDF Función de derivación de claves
Key Derivation Function
KEM Mecanismo de encapsulamiento de claves
Key Encapsulation Mechanism
KMAC Keccak Message Authentication Code
KW Key Wrap
KWP Key Wrap with Padding
LWE Aprendizaje con errores
Learning With Errors
MAC Código de autenticación de mensaje
Message Authentication Code
MitM Hombre en el medio
Man-in-the-Middle
Man-in-the-Middle
ML-DSA Module-Lattice-Based Digital Signature Standard
ML-KEM Module-Lattice-Based Key-Encapsulation Mechanism Standard
MLWE Aprendizaje con errores sobre módulos
Module Learning With Errors
MSS Esquema de rma de Merkle
Merkle Signature Scheme
MODP Exponenciación modular
Modular exponentiation
NIST National Institute for Standards and Technology
NPTRNG Generador no físico de números realmente aleatorios
Non-Physical True Random Number Generator
NTRU N-th degree Truncated polynomial Ring Units
NTT Transformada teórica de números
Number Theoretic Transform
OAEP Relleno de cifrado asimétrico óptimo
Optimal Asymmetric Encryption Padding
OFB Realimentación de la salida
Output Feedback
OID Identicador del objeto
Object Identier
OS2I Octet String to Integer Conversion
OTS Firma única
One Time Signature
OWA Ataque unidireccional
One-Way Attack
PFS Secreto perfecto persistente
Perfect Forward Secrecy
PIN Número de identicación personal
Personal Identication Number
PKE Sistema de clave pública
Public Key Encryption
PKCS Public-Key Cryptography Standard
PPKE Cifrado de clave pública probabilístico
Probabilistic Public Key Encryption
PQ Postcuántico
(Post-Quantum
PQC Criptografía postcuántica
Post-Quantum Cryptography
PRF Función pseudo-aleatoria
Pseudo-Random Function
PSK Claves precompartidas
Pre-Shared Keys
PTRNG Generador físico de números realmente aleatorios
Physical True Random Number Generator
PSK Clave precompartida
Pre-Shared Key
QCSD Quasi-Cyclic Syndrome Decoding
QROM Modelo del oráculo aleatorio cuántico
Quantum Random Oracle Model
RBG Generador de bits aleatorios
Random Bit Generator
RFID Etiquetas de identicación por radio frecuencia
Radio Frequency Identication
RLWE Aprendizaje con errores sobre anillos
Ring Learning With Errors
RNG Generador de números aleatorios
Random Number Generator
ROM Modelo del oráculo aleatorio
Random Oracle Model
RSA Rivest, Shamir y Adleman
SA Asociación de seguridad
Security Association
SEC Standards for Ecient Cryptography
SHAKE Secure Hash Algorithm and Keccak
SIDH Intercambio de clave mediante isogenias tipo Die-Hellman
Supersingular Isogeny Die-Hellman key exchange
SIKE Supersingular Isogeny Key Encapsulation
SIS Problema de la solución entera más corta
Referencias
REFS
+
[ABD 15] D. Adrian, K. Bhargavan, Z. Durumeric, P. Gaudry, M. Green,
J. A. Halderman, N. Heninger, D. Springall, E. Thomé,
L. Valenta, B. VanderSloot, E. Wustrow, S. Zanella-Béguelink,
and P. Zimmermann. Imperfect forward secrecy: How
Die-Hellman fails in practice. In Proc. 22nd ACM
SIGSAC Conference on Computer and Communications Security
(CCS'15), pages 517, 2015. [Link]
2810103.2813707. 63
+
[ABD 23] E. Alkim, J. W. Bos, L. Ducas, P. Longa, I. Mironov,
M. Naehrig, V. Nikolaenko, C. Peikert, A. Raghunathan, and
D. Stebila. FrodoKEM: Learning with errors key encapsulation.
preliminary standardization proposal. Online publication,
2023. [Link]
[Link]. 158
+
[ABP 13] N. AlFardan, D. J. Bernstein, K. G. Paterson, B. Poettering,
and J. C. Schuldt. On the security of RC4 in TLS and
WPA. In Proc. 22nd USENIX Security Symposium, pages
305320, 2013. [Link]
usenixsecurity13/technical-sessions/paper/alFardan.
64
2020. [Link]
anssi-guide-mecanismes_crypto-[Link]. 9, 80
[ANS20b] ANSSI. Recommandations de sécurité relatives à
TLS. Agence Nationale de la Sécurité des Systèmes
d'Information,
2020. [Link]
recommandations-de-securite-relatives-a-tls/. 60
[ANS20c] ANSSI. Recommandations pour les Architectures des
Systèmes d'Information Sensibles ou Diusion Restreinte.
Version 1.1. Agence Nationale de la Sécurité des Systèmes
d'Information, [Link]
2020.
recommandations-pour-les-architectures-des-systemes\
-dinformation-sensibles-ou-diffusion-restreinte/. 9
[ANS21] ANSSI. Guide de Sélection D'Algorithmes Cryptographiques,
v1.0. Agence Nationale de la Sécurité des Systèmes
d'Information,
PA-079, 8/3/2021, 2021. [Link]
[Link]/uploads/2021/03/anssi-guide-selection_
[Link]. 9, 80
[ANSIX9.6] ANSI. Public Key Cryptography for the Financial Services
Industry: The Elliptic Curve Digital Signature Algorithm
(ECDSA). American National Standards Institute, ANSI
X9.62:2005, 2005. [Link]
std/1955141/ANSI20X9.62. 166
[ANSIX9.63] ANSI. Public Key Cryptography for the Financial Services
Industry: Key Agreement and Key Transport Using Elliptic
Curve Cryptography (R2017). American National Standards
Institute, ANSI X9.63:2011, 2017. [Link]
org/standards/ascx9/ansix9632011r2017. 37, 38
[Ant22] S. Antonov. Round 3 ocial comment: SPHINCS+. Online
publication,
2022. [Link]
[Link]/g/pqc-forum/c/FVItvyRea28/m/mGaRi5iZBwAJ.
142
+
[BBJ 08] D. Bernstein, P. Birkner, M. Joye, T. Lange, and C. Peters.
Twisted Edwards curves. Cryptology ePrint Archive, Report
2008/013, 2008. [Link] 169
+
[BCD 06] J. Buchmann, L. C. Coronado García, E. Dahmen, M. Döring, and
E. Klintsevich. CMSS - an improved Merkle signature scheme.
InProgress in Cryptology - INDOCRYPT 2006, Lecture Notes
Comput. Sci., volume 4329, pages 349363, 2006. https://
[Link]/10.1007/11941378_25. 156
+
[BCD 16] J. Bos, C. Costello, L. Ducas, I. Mironov, M. Naehrig,
V. Nikolaenko, A. Raghunathan, and D. Stebila. Frodo: Take
o the ring! Practical, quantum-secure key exchange from
LWE. Proc. 2016 ACM SIGSAC Conference on Computer
In
and Communications Security, CCS'16, pages 10061018, 2016.
[Link] 126
+
[BDE 11] J. Buchmann, E. Dahmen, S. Ereth, A. Hülsing, and M. Rückert.
On the security of the Winternitz one-time signature scheme.
InProc. Annual International Cryptology Conference in Africa,
Progress in Cryptology - AFRICACRYPT 2011, Lecture Notes
Comput. Sci., volume 6737, pages 363378, 2011. https://
[Link]/10.1007/978-3-642-21969-6_23. 156
+
[BDK 07] J. Buchmann, E. Dahmen, E. Klintsevich, K. Okeya, and
C. Vuillaume. Merkle signatures with virtually unlimited
Proc. International Conference on Applied
signature capacity. In
Cryptography and Network Security (ACNS 2007), Lecture Notes
Comput. Sci., volume 4521, pages 3145, 2007. [Link]
org/10.1007/978-3-540-72738-5_3. 156
+
[BHH 15] D. J. Bernstein, D. Hopwood, A. Hülsing, T. Lange,
R. Niederhagen, L. Papachristodoulou, M. Schneider,
P. Schwabe, and Z. Wilcox-O'Hearn. SPHINCS: practical
stateless hash-based signatures. Proc. Annual International
In
Cryptology Conference, Advances in Cryptology - EUROCRYPT
2015, Lecture Notes Comput. Sci., volume 9056, pages 368397,
2015. [Link]
156
+
[CDF 21] C. Cremers, S. Düzlü, R. Fiedler, C. Janson, and M. Fischlin.
BUFFing signature schemes beyond unforgeability and the case of
post-quantum signatures. In Proc. IEEE Symposium on Security
and Privacy, SP'2021, pages 16961714, 2021. [Link]
org/10.1109/SP40001.2021.00093. 127
[DHM05] El
R. Durán Díaz, L. Hernández Encinas, and J. Muñoz Masqué.
criptosistema RSA. https://
RA-MA, Madrid, España, 2005.
[Link]/libro/el-criptosistemarsa_48854/. 100
[DLP93] I. Damgård, P. Landrock, and C. Pomerance. Average case error
estimates for the strong provable prime test. Mathematics of
Computation, 61(203):177194, 1993. [Link]
2307/2152945. 101
2024. [Link]
cryptographic-module-validation-program/documents/
fips140-3/[Link]. 30
[FIPS140-3] NIST. Security Requirements for Cryptographic Modules.
National Institute of Standard and Technology, Federal
Information Processing Standard Publication, FIPS PUB 140-3,
2019. [Link] 138
+
[JZC 17] H. Jiang, Z. Zhang, L. Chen, H. Wang, and Z. Ma.
IND-CCA-secure key encapsulation mechanism in the quantum
random oracle model, revisited. Cryptology ePrint Archive,
Report 2017-1096, 2017. [Link]
1096. 126
+
[LDK 20] V. Lyubashevsky, L. Ducas, E. Kiltz, T. Lepoint, P. Schwabe,
G. Seiler, and D. Stehle. CRYSTALS-DILITHIUM. Online
publication, 2020. [Link]
[Link]. 55
[RFC2246] T. Dierks and C. Allen. The TLS Protocol, Version 1.0. Internet
Engineering Task Force, RFC 2246, 1999. [Link]
[Link]/html/rfc2246. 61
[RFC4494] J. Song and J. Lee. The AES-CMAC-96 Algorithm and Its Use
with IPsec. Internet Engineering Task Force, RFC 4494, 2006.
[Link] 78
[RFC5647] K. Igoe and J. [Link] Galois Counter Mode for the Secure
Shell Transport Layer Protocol. Internet Engineering Task Force,
RFC 5647, 2009. [Link]
74
[RFC7251] AES-CCM
D. McGrew, D. Bailey, M. Campagna, and R. Dugal.
Elliptic Curve Cryptography (ECC) Cipher Suites for TLS.
Internet Engineering Task Force, RFC 7251, 2014. https:
//[Link]/html/rfc7251. 68
[RFC9106] Argon2
A. Biryukov, D. Dinu, D. Khovratovich, and S. Josefsson.
Memory-Hard Function for Password Hashing and Proof-of-Work
Applications. Internet Engineering Task Force, RFC 9106, 2021.
[Link] 39
+
[vNS 16b] P. venda, M. Nemec, P. Sekan, R. Kva²¬ovský,
D. Formánek, D. Komárek, and V. Matyá². The million-key
questionInvestigating the origins of RSA public keys. In
Proc. 25th USENIX Security Symposium (USENIX 16), pages
https:
893910, Austin, TX, 2016. USENIX Association.
//[Link]/conference/usenixsecurity16/
technical-sessions/presentation/svenda. 104
[VP15] M. Vanhoef and F. Piessens. All your biases belong to
us: Breaking RC4 in WPA-TKIP and TLS. In Proc. 24nd
USENIX Security Symposium, https:
pages 97112, 2015.
//[Link]/conference/usenixsecurity15/
technical-sessions/presentation/vanhoef. 64
[Ylö96] T. Ylönen. SSH - secure login connections over the internet.
In Proc. 6th USENIX Security Symposium (USENIX 96),
pages 3742, [Link]
1996.
publications/library/proceedings/sec96/full_
papers/ylonen/[Link]. 72