Seleccionar idioma

Un Generador de Contraseñas Seguro Basado en un Generador de Números Pseudoaleatorios (PRNG)

Este artículo propone un generador de contraseñas seguro que utiliza PRNGs basados en HMAC, CMAC o KMAC, validado mediante pruebas de entropía e IID de NIST SP 800-90B.
computationalcoin.com | PDF Size: 0.5 MB
Calificación: 4.5/5
Tu calificación
Ya has calificado este documento
Portada del documento PDF - Un Generador de Contraseñas Seguro Basado en un Generador de Números Pseudoaleatorios (PRNG)

Tabla de Contenidos

1. Introducción

En los últimos años se han reportado continuamente filtraciones de cuentas de sitios web y contraseñas basadas en texto, lo que subraya la importancia crítica de la seguridad de la información y las contraseñas. Más allá de las vulnerabilidades de los sitios web, la seguridad de la contraseña en sí es primordial. Las prácticas comunes de contraseñas inseguras incluyen contraseñas basadas en palabras clave, contraseñas basadas en frases populares, contraseñas basadas en información del usuario y la reutilización de contraseñas. El rápido desarrollo de la IA y los Modelos de Lenguaje Grande (LLM) empodera aún más a los atacantes para adivinar contraseñas de manera más efectiva.

Aunque las plataformas emplean defensas como Contraseñas de Un Solo Uso (OTP), autenticación multifactor (MFA) y almacenamiento cifrado de contraseñas, mejorar la seguridad inherente de las contraseñas sigue siendo crucial. Esta investigación propone un generador de contraseñas seguro basado en un Generador de Números Pseudoaleatorios (PRNG) seguro. El PRNG se construye utilizando Código de Autenticación de Mensajes con Función Hash (HMAC), Código de Autenticación de Mensajes con Cifrado por Bloques (CMAC) o Código de Autenticación de Mensajes KECCAK (KMAC) para generar números aleatorios criptográficamente seguros, que luego se utilizan para producir contraseñas.

Las principales contribuciones son:

2. Revisión de la Literatura

2.1. Generador de Números Pseudoaleatorios Basado en Generador Lineal Congruencial

Muchos lenguajes de programación (por ejemplo, C, Java) implementan PRNGs basados en Generadores Lineales Congruenciales (LCG). Dada una semilla $k$, la secuencia se genera como:

$f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$

$f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$ para $i \ge 1$

Sin embargo, los LCGs son inseguros porque el siguiente estado se deriva linealmente del anterior ($f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$), lo que permite a un atacante retroceder hasta la semilla.

2.2. Generador de Números Pseudoaleatorios Seguro

2.2.1. Basado en Código de Autenticación de Mensajes con Función Hash (HMAC)

La seguridad de HMAC se basa en la propiedad unidireccional de las funciones hash criptográficas (por ejemplo, SHA-2, SHA-3). Para una clave $k$ y un mensaje $M$, el HMAC se calcula como:

$r_{hmac}(k, M) = h((k \oplus opad) \ || \ h((k \oplus ipad) \ || \ M))$

donde $ipad$ y $opad$ son constantes de relleno fijas, y $h$ es la función hash. Para generar un flujo de bits aleatorio de longitud $L$, se utiliza un modo contador, modificando el mensaje para cada bloque de salida: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, produciendo $r_{hmac,i}(k, M_i)$.

2.2.2. Basado en Código de Autenticación de Mensajes con Cifrado por Bloques (CMAC)

La seguridad de CMAC se basa en el Estándar de Cifrado Avanzado (AES). Para una clave $k$ y un mensaje $M$ dividido en bloques $M'_i$ de longitud $l_a$, opera en modo Encadenamiento de Bloques de Cifrado (CBC):

$c_{i+1} = AES(k, c_i \oplus M'_{i+1})$, con $c_0 = Pad0(0)$.

La salida final $r_{cmac}(k, Split(M))$ se deriva del último bloque de texto cifrado después de un relleno específico (Pad1).

2.2.3. Basado en Código de Autenticación de Mensajes KECCAK (KMAC)

KMAC se basa en la construcción esponja de SHA-3 (KECCAK), ofreciendo flexibilidad y seguridad. Se puede usar de manera similar a HMAC en un modo contador para generar un flujo de bits determinista e impredecible adecuado para fines de PRNG, como se describe en NIST SP 800-108 Rev. 1.

2.3. Métodos para Validar la Aleatoriedad

El artículo adopta el marco NIST SP 800-90B para validar la aleatoriedad, centrándose en dos aspectos clave:

3. Generador de Contraseñas Seguro Propuesto Basado en PRNG Seguro

La arquitectura del sistema propuesto implica:

  1. Entrada: Un "Mensaje a Ser Hasheado" (TBHM) opcional proporcionado por el usuario y parámetros (longitud de contraseña deseada, conjunto de caracteres).
  2. Núcleo PRNG Seguro: Un PRNG construido utilizando una de las tres funciones MAC (HMAC, CMAC o KMAC) en modo contador, según NIST SP 800-108. Este núcleo toma el TBHM (y una clave/semilla interna) para generar una secuencia de bits pseudoaleatoria criptográficamente segura.
  3. Generación de Contraseña: Los bits aleatorios se mapean al conjunto de caracteres especificado por el usuario (por ejemplo, alfanumérico + símbolos) para crear una contraseña de la longitud deseada.

El análisis de seguridad compara el espacio de claves efectivo de las contraseñas generadas (basado en el tamaño del conjunto de caracteres $C$ y la longitud $L$, dando $C^L$ posibilidades) con la resistencia a fuerza bruta de AES-128 ($2^{128}$) y AES-256 ($2^{256}$). Por ejemplo, una contraseña de 16 caracteres de un conjunto de 94 caracteres ofrece ~$94^{16} \approx 2^{105}$ posibilidades, que es más débil que AES-128 pero aún robusta para muchos propósitos.

4. Entorno Experimental y Resultados

4.1. Configuración Experimental

Se realizaron experimentos para generar grandes secuencias de números aleatorios utilizando los PRNGs propuestos basados en HMAC, CMAC y KMAC. Luego, estas secuencias se sometieron al conjunto de pruebas NIST SP 800-90B.

4.2. Resultados de Validación de Aleatoriedad

Hallazgo Clave: Los resultados experimentales demostraron que los números aleatorios generados por los tres métodos PRNG propuestos (HMAC/SHA-256, CMAC/AES-256, KMAC) pasaron exitosamente tanto la validación de entropía como las pruebas de validación IID especificadas en NIST SP 800-90B.

Implicación: Esto confirma que las secuencias de salida poseen alta entropía y no muestran dependencias estadísticas o sesgos detectables, cumpliendo con el requisito central para una fuente segura de aleatoriedad en la generación de contraseñas.

4.3. Análisis de Eficiencia Computacional

Aunque no es el foco principal, el artículo implica una compensación. HMAC/SHA-256 y KMAC son generalmente muy eficientes en software. CMAC/AES puede tener ventajas de aceleración por hardware en plataformas específicas. La elección puede adaptarse según las restricciones de rendimiento del entorno de implementación.

5. Conclusión y Trabajo Futuro

Esta investigación diseñó y validó exitosamente un marco de generador de contraseñas seguro basado en PRNGs criptográficamente fuertes (HMAC, CMAC, KMAC). La seguridad de las contraseñas generadas se deriva de las propiedades probadas de estas funciones MAC y la alta aleatoriedad validada del flujo de bits subyacente.

Las direcciones futuras incluyen:

6. Análisis Original y Perspectiva Experta

Perspectiva Central: El trabajo de Chen es una solución de ingeniería pragmática y conforme a los estándares para un problema de seguridad fundamental: la baja entropía de las contraseñas. Identifica correctamente que la causa raíz de muchas filtraciones de contraseñas no son solo fallos de almacenamiento, sino la generación predecible. Al anclar la solución en constructos aprobados por NIST (HMAC, CMAC, KMAC) y marcos de validación (SP 800-90B), la investigación evita la novedad criptográfica por sí misma y en su lugar ofrece un método verificablemente sólido. Este enfoque refleja la filosofía detrás de sistemas bien establecidos como la interfaz /dev/urandom en Linux, que agrega entropía de eventos del sistema, pero aquí el foco está en un proceso determinista, sembrable e influenciable por el usuario, adecuado para la generación reproducible de contraseñas.

Flujo Lógico: El argumento es metódico: 1) Establecer el problema (contraseñas débiles y adivinables). 2) Descartar soluciones comunes pero defectuosas (RNGs basados en LCG). 3) Proponer bloques de construcción con seguridad probada (MACs criptográficos). 4) Ensamblarlos según estándares existentes (modo contador NIST SP 800-108). 5) Validar la salida contra puntos de referencia rigurosos (NIST SP 800-90B). Este flujo es robusto y refleja las mejores prácticas en investigación de criptografía aplicada, similar a la evaluación estructurada vista en trabajos seminales como el artículo de CycleGAN que validó sistemáticamente la calidad de la traducción de imágenes en múltiples dominios y métricas.

Fortalezas y Debilidades: La fortaleza principal es su fiabilidad. El uso de primitivas criptográficas probadas en batalla y la guía de NIST minimiza el riesgo. La entrada opcional del usuario (TBHM) es una característica inteligente, que permite semillas personalizadas pero seguras. Sin embargo, una debilidad significativa es la falta de un análisis de seguridad comparativo directo contra generadores de contraseñas de última generación, como aquellos que usan Argon2 o bcrypt para el estiramiento de claves en un contexto similar. La comparación con la fuerza de fuerza bruta de AES es útil pero simplista. El vector de ataque del mundo real suele ser el descifrado offline de contraseñas hasheadas; el artículo podría fortalecer su caso modelando la resistencia contra herramientas como Hashcat con conjuntos de reglas optimizados. Además, aunque las pruebas de NIST son autoritativas, no son exhaustivas para todas las propiedades criptográficas; una discusión sobre la resistencia a ataques de canal lateral en la implementación del PRNG sería valiosa.

Perspectivas Accionables: Para arquitectos de seguridad, este artículo proporciona un plano listo. Recomendación 1: Implementar la variante basada en KMAC. Como derivado de SHA-3, está diseñado para ser resistente a ataques de extensión de longitud que afectan teóricamente a HMAC basado en SHA-2 en ciertos escenarios, y representa una opción más preparada para el futuro. Recomendación 2: Integrar este generador como motor central para bóvedas de contraseñas empresariales o sistemas SSO donde se requiere creación de contraseñas basada en políticas. Su naturaleza determinista (mismo TBHM + parámetros = misma contraseña) puede ser una característica para escenarios de recuperación. Recomendación 3: Complementar esta solución técnica con educación del usuario. El generador puede producir una cadena aleatoria de 20 caracteres, pero si el usuario opta por un TBHM corto y memorable y una longitud de 8 caracteres, la seguridad se desploma. La interfaz debe hacer cumplir valores predeterminados sensatos (por ejemplo, mínimo 12 caracteres, conjunto completo de caracteres) y transmitir visualmente la fortaleza de la entropía, similar a los medidores de fortaleza de contraseñas informados por investigaciones de organizaciones como el NCC Group.

7. Detalles Técnicos y Formulaciones Matemáticas

La seguridad central se basa en la propiedad de función pseudoaleatoria (PRF) de los MACs. El PRNG en modo contador se puede abstraer como:

$R_i = PRF(K, \text{Contador} \ || \ \text{Etiqueta} \ || \ 0x00 \ || \ \text{Entrada} \ || \ L)$

donde $PRF$ es $HMAC$, $CMAC$ o $KMAC$, $K$ es una clave secreta, y $R_i$ son los bloques de salida concatenados para formar el flujo de bits final.

Mapeo de Contraseña: Dado un valor entero aleatorio $v$ derivado del flujo de bits y un conjunto de caracteres de tamaño $C$, el índice del carácter se selecciona como: $index = v \mod C$. Esto se repite $L$ veces.

8. Marco de Análisis y Ejemplo Conceptual

Escenario: Un servicio web necesita generar una contraseña inicial aleatoria de alta fortaleza para nuevos usuarios.

Aplicación del Marco:

  1. Selección de Parámetros: El servicio elige KMAC256 como la PRF, una clave criptográfica derivada del sistema $K_{sys}$ almacenada de forma segura, y un TBHM compuesto por el UserID único e inmutable del usuario y una marca de tiempo.
  2. Proceso:
    • Entrada: TBHM = "USER12345@2023-10-27T10:30:00Z", Longitud $L$ = 16, Conjunto de Caracteres = 94 ASCII imprimibles.
    • El núcleo PRNG procesa esto con $K_{sys}$ en modo contador para generar 128 bits aleatorios (16 caracteres * log2(94) ≈ 105 bits, por lo que 128 bits proporcionan entropía amplia).
    • Los bits se convierten en una cadena como: s9*!Lq9@Pz%2m#X&
  3. Propiedades de Seguridad:
    • Impredecibilidad: Sin $K_{sys}$, la salida es impredecible incluso si se conoce el TBHM.
    • Determinismo: El mismo usuario en ese momento exacto obtendría la misma contraseña, ayudando en la depuración.
    • Alta Entropía: La contraseña tiene ~105 bits de entropía, haciendo inviable el ataque por fuerza bruta.

9. Aplicaciones Futuras y Direcciones de Desarrollo

10. Referencias

  1. M. Bellare, R. Canetti, y H. Krawczyk, "Keying Hash Functions for Message Authentication," CRYPTO 1996.
  2. NIST, "Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication," SP 800-38B.
  3. NIST, "SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," FIPS PUB 202.
  4. NIST, "Recommendation for the Entropy Sources Used for Random Bit Generation," SP 800-90B.
  5. NIST, "Recommendation for Key Derivation Using Pseudorandom Functions," SP 800-108 Rev. 1.
  6. J. Kelsey, B. Schneier, y N. Ferguson, "Yarrow-160: Notes on the Design and Analysis of the Yarrow Cryptographic Pseudorandom Number Generator," SAC 1999.
  7. J. Zhu, T. Park, P. Isola, A.A. Efros, "Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks," ICCV 2017. (Citado como ejemplo de evaluación metodológica rigurosa).
  8. NCC Group, "Password Storage Cheat Sheet," OWASP Foundation. (Citado como fuente para orientación práctica sobre políticas de contraseñas).