Seleccionar idioma

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

Artículo de investigación que propone un generador seguro de contraseñas utilizando 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 - Generador Seguro de Contraseñas Basado en Generador de Números Pseudoaleatorios (PRNG)

Tabla de Contenidos

1. Introducción

Esta investigación aborda el problema persistente de las filtraciones de contraseñas y el consiguiente riesgo de exposición de datos personales. Si bien la seguridad del sitio web es un factor, la fortaleza inherente de la contraseña en sí es primordial. Las vulnerabilidades comunes incluyen contraseñas basadas en palabras clave, frases populares, información del usuario y la reutilización de contraseñas. El auge de la IA y los modelos de lenguaje grandes empodera aún más a los atacantes para adivinar contraseñas de manera más efectiva.

En respuesta, este artículo propone un generador seguro de contraseñas construido sobre un Generador de Números Pseudoaleatorios (PRNG) seguro. El núcleo del PRNG se construye utilizando primitivas criptográficas como HMAC, CMAC o KMAC para generar números aleatorios de alta calidad, que luego se utilizan para crear contraseñas. El sistema permite una entrada opcional del usuario (Mensaje a Ser Hasheado, TBHM por sus siglas en inglés) para iniciar el proceso. Las principales contribuciones son:

2. Revisión de la Literatura

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

Los lenguajes de programación comunes (C, Java) utilizan Generadores Congruenciales Lineales (LCG). Dada una semilla $k$, la secuencia se genera como: $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$ y $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. Este método es inseguro ya que el estado puede revertirse: $f_{i-1}(k) \equiv (f_i(k) - c) \times a^{-1} \ (\text{mod} \ m)$, exponiendo la semilla y toda la secuencia.

2.2. Generador de Números Pseudoaleatorios Seguro

Los PRNGs seguros se basan en primitivas criptográficas según se describe en NIST SP 800-108 Rev. 1.

2.2.1. Basado en HMAC

La seguridad se basa en la propiedad unidireccional de las funciones hash (por ejemplo, SHA2, SHA3). 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))$. Para generar un flujo de bits aleatorio de longitud $L$, se utiliza un modo contador: $M_i = i \ || \ \text{KDF} \ || \ 0x00 \ || \ M \ || \ L$, produciendo salidas $r_{hmac,i}$.

2.2.2. Basado en CMAC

La seguridad se basa en el cifrado por bloques AES en modo CBC. El mensaje $M$ se divide en bloques $M'_1, M'_2, ...$. El proceso itera: $c_{i+1} = AES(k, c_i \oplus M'_{i+1})$ con $c_0 = Pad0(0)$. La salida final $r_{cmac}$ se deriva del último bloque cifrado después de un relleno específico (Pad1).

2.2.3. Basado en KMAC

Utiliza la función esponja KECCAK (la base de SHA-3), ofreciendo una función MAC flexible y robusta adecuada para generar bits aleatorios deterministas.

2.3. Métodos para Validar la Aleatoriedad

El artículo adopta el marco NIST SP 800-90B, que es el estándar de facto para validar fuentes de entropía. Incluye dos conjuntos de validación críticos:

3. Generador Seguro de Contraseñas Propuesto

La arquitectura del sistema propuesto es sencilla pero potente:

  1. Entrada/Semilla: Acepta un TBHM proporcionado opcionalmente por el usuario. Si se proporciona, se procesa; de lo contrario, se utiliza una semilla segura generada por el sistema.
  2. Núcleo de PRNG Seguro: El TBHM/semilla se introduce en una de las tres construcciones criptográficas de PRNG (basada en HMAC, basada en CMAC, basada en KMAC) para generar una secuencia de bits pseudoaleatoria criptográficamente fuerte.
  3. Construcción de la Contraseña: Los bits aleatorios se mapean a un conjunto de caracteres definido por el usuario o por el sistema (por ejemplo, alfanuméricos + símbolos) para producir una contraseña de la longitud deseada.

Análisis de Seguridad: El artículo argumenta que la seguridad de la contraseña generada depende directamente de la entropía de la salida del PRNG y del tamaño del conjunto de caracteres. Realiza un análisis comparativo, mostrando que una contraseña de 16 caracteres de un conjunto de 94 caracteres generada por este método puede ofrecer una resistencia a la fuerza bruta comparable o superior a la de las claves AES-128 o AES-256, asumiendo que la salida del PRNG es verdaderamente aleatoria.

4. Resultados Experimentales y Análisis

La validación experimental es un punto fuerte clave del artículo.

Descripción del Gráfico (Implícita): Un gráfico de barras compararía efectivamente las estimaciones de min-entropía (en bits por bit) para los tres métodos de PRNG contra el valor ideal de 1.0. Todas las barras estarían muy cerca de 1.0. Un segundo gráfico podría mostrar los valores p de las pruebas IID clave (por ejemplo, Chi-Cuadrado, Kolmogorov-Smirnov), con todos los valores muy por encima del umbral de significancia típico (por ejemplo, 0.01), indicando un aprobado.

5. Conclusión y Trabajo Futuro

La investigación demuestra con éxito un marco de generación segura de contraseñas basado en PRNGs criptográficos. Los métodos propuestos generan contraseñas con suficiente aleatoriedad, como lo valida rigurosamente los estándares NIST. Las direcciones de trabajo futuro incluyen:

6. Análisis Original y Perspectiva Experta

Perspectiva Central: Este artículo no se trata de inventar una nueva primitiva criptográfica; se trata de la aplicación y validación disciplinada de las existentes y verificadas (HMAC, CMAC, KMAC) para resolver el problema mundano pero crítico de la generación de contraseñas. Su verdadero valor radica en cerrar la brecha entre la criptografía teórica y la higiene de seguridad práctica, demostrando rigurosamente que su salida es apta para el propósito utilizando el conjunto de pruebas de referencia de oro de NIST.

Flujo Lógico: El argumento es sólido: 1) Los LCG estándar están criptográficamente rotos. 2) Los PRNGs seguros construidos a partir de MACs criptográficos son demostrablemente robustos. 3) Por lo tanto, las contraseñas derivadas de tales PRNGs heredan esa robustez. 4) Esta afirmación se valida no solo por la teoría, sino al aprobar pruebas empíricas rigurosas (NIST SP 800-90B). Esta validación de extremo a extremo es lo que les falta a muchas herramientas de "generador seguro de contraseñas".

Fortalezas y Debilidades:
Fortalezas: El rigor metodológico es encomiable. Usar NIST SP 800-90B para la validación eleva inmediatamente su credibilidad, similar a cómo los algoritmos criptográficos se validan a través del CAVP (Programa de Validación de Algoritmos Criptográficos). La comparación con la fortaleza de la clave AES es una métrica práctica y relacionable para los equipos de seguridad.
Debilidades: El artículo opera en un entorno controlado e idealizado. Asume que la semilla/TBHM inicial tiene suficiente entropía, un eslabón crítico y a menudo débil en los sistemas reales. La entrada "opcional" del usuario es un arma de doble filo; una frase de usuario débil y predecible (por ejemplo, "micontraseña") podría socavar toda la construcción criptográfica, un riesgo no cuantificado completamente. Además, como se señala en la revisión de 2023 "Criptografía Post-Cuántica: Un Viaje de Diez Años" de NIST, el campo se está moviendo hacia algoritmos resistentes a la computación cuántica. Las construcciones del artículo, aunque seguras contra computadoras clásicas, dependen de SHA2/AES, cuya resistencia cuántica a largo plazo es incierta.

Perspectivas Accionables: Para los arquitectos de seguridad, este artículo proporciona un modelo. No implemente su propio PRNG. Utilice construcciones criptográficas establecidas como bloques de construcción. Más importante aún, valide, valide, valide. Integre la validación continua de entropía (como las pruebas NIST) en sus sistemas críticos de generación de números aleatorios, una práctica enfatizada por organizaciones como los esfuerzos de CCC (Certificación de Criterios Comunes) de la Linux Foundation. Para el desarrollo de productos, la conclusión inmediata es reemplazar cualquier generación de contraseñas basada en LCG en sus sistemas con un generador basado en KMAC o HMAC-SHA256, utilizando una semilla obtenida de manera segura. El paso de preparación para el futuro es comenzar a prototipar con diseños basados en SHA-3/KECCAK (como KMAC) y monitorear la evolución de los estándares de criptografía post-cuántica de NIST para una eventual integración.

7. Detalles Técnicos y Formulación Matemática

Las operaciones matemáticas centrales se definen en la Revisión de la Literatura (Sección 2). Las fórmulas clave incluyen:

La generación de contraseñas mapea un entero aleatorio $R$ (de la salida del PRNG) a un índice de carácter: $\text{índice} = R \ \text{mod} \ |S|$, donde $|S|$ es el tamaño del conjunto de caracteres.

8. Marco de Análisis y Ejemplo de Caso

Ejemplo de Caso: Evaluación del Generador de Contraseñas de un Sistema Heredado
Escenario: Una aplicación web heredada utiliza un LCG modificado para generar contraseñas temporales de usuario. Se requiere una auditoría de seguridad.
Aplicación del Marco:

  1. Identificar el Tipo de PRNG: Inspeccionar el código fuente. Encontrar: seed = (a * seed + c) % m; Confirmar que es una variante de LCG.
  2. Evaluar la Seguridad Criptográfica: LCG es determinista y reversible. Un atacante que obtenga algunas contraseñas consecutivas podría resolver la semilla y predecir todas las contraseñas futuras, violando las pautas de NIST SP 800-63B sobre aleatoriedad del autenticador.
  3. Proponer Remedio usando el Método del Artículo:
    • Fuente de Semilla: Reemplazar la semilla de tiempo del sistema con un CSPRNG (por ejemplo, /dev/urandom en Linux, CryptGenRandom en Windows).
    • Generador Central: Implementar un PRNG basado en HMAC-SHA256 según el diseño del artículo.
    • Validación: Generar una muestra grande (1,000,000 bits) del nuevo generador y ejecutar el NIST STS (Conjunto de Pruebas Estadísticas) o los estimadores de entropía de SP 800-90B para verificar la aleatoriedad antes del despliegue.
Este marco cambia la evaluación de "¿parece aleatorio?" a "¿aprueba la validación criptográfica estandarizada?".

9. Aplicaciones Futuras y Direcciones de Desarrollo

Los principios se extienden más allá de las contraseñas de usuario:

10. Referencias

  1. M. Bishop, “Computer Security: Art and Science”, Addison-Wesley, 2019.
  2. NIST, “Special Publication 800-63B: Digital Identity Guidelines”, 2020.
  3. NIST, “Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation”, 2018.
  4. NIST, “Special Publication 800-108 Rev. 1: Recommendation for Key Derivation Using Pseudorandom Functions”, 2022.
  5. NIST, “FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions”, 2015.
  6. J. Kelsey, B. Schneier, D. Wagner, “Secure Applications of Low-Entropy Keys”, Information Security Workshop, 1997.
  7. M. Dworkin, “Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication”, NIST SP 800-38B, 2005.
  8. NIST, “Status Report on the Third Round of the NIST Post-Quantum Cryptography Standardization Process”, 2022. [Online]. Disponible: https://csrc.nist.gov/projects/post-quantum-cryptography
  9. Linux Foundation, “Common Criteria Certification and Open Source”, 2023. [Online]. Disponible: https://www.linuxfoundation.org/