Seleccionar idioma

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

Este artículo propone un generador de contraseñas seguro 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 - Un Generador de Contraseñas Seguro Basado en Generador de Números Pseudoaleatorios (PRNG)

Tabla de Contenidos

1. Introducción

Los informes persistentes de filtraciones de cuentas y contraseñas de sitios web destacan la importancia crítica de la seguridad de la información y las contraseñas. Si bien las vulnerabilidades de los sitios web son un factor, la seguridad inherente de la contraseña en sí es primordial. Las prácticas comunes de contraseñas inseguras incluyen contraseñas basadas en palabras clave, uso de frases populares, incorporación de información personal y 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.

Esta investigación propone un generador de contraseñas seguro basado en Generadores de Números Pseudoaleatorios (PRNG) criptográficamente seguros. Construye PRNGs utilizando Código de Autenticación de Mensajes con Hash con Clave (HMAC), Código de Autenticación de Mensajes Basado en Cifrado (CMAC) o Código de Autenticación de Mensajes KECCAK (KMAC) para producir números aleatorios seguros, que luego se utilizan para generar contraseñas. La aleatoriedad de los números generados se valida contra el estándar NIST SP 800-90B mediante pruebas de entropía y de Distribución Independiente e Idéntica (IID).

Aportes Clave:

2. Revisión de la Literatura

2.1. PRNG Basado en Generador Lineal Congruencial

Comúnmente utilizado en lenguajes como C y Java, los LCG generan una secuencia de números usando una relación de recurrencia lineal. Dada una semilla $k$, el valor inicial $f_0(k)$ se calcula como $f_0(k) \equiv a \oplus k \ (\text{mod} \ m)$. Los números subsiguientes se generan mediante $f_i(k) \equiv a \times f_{i-1}(k) + c \ (\text{mod} \ m)$. Sin embargo, los LCG son inseguros ya que el estado puede revertirse usando $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

Para abordar las vulnerabilidades de los LCG, los PRNG criptográficamente seguros son esenciales. Este artículo se centra en tres construcciones recomendadas por el NIST.

2.2.1. PRNG 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))$, donde $ipad$ y $opad$ son constantes. Para generar un flujo de bits largo, se utiliza un modo contador: $M_i = i \ || \ KDF \ || \ 0x00 \ || \ M \ || \ L$, produciendo salidas $r_{hmac,i}$.

2.2.2. PRNG Basado en CMAC

La seguridad se basa en el Estándar de Cifrado Avanzado (AES). Usando el modo Cipher Block Chaining (CBC) con la clave $k$, el mensaje $M$ se divide en bloques $M'_1, M'_2, ...$. El texto cifrado se calcula iterativamente: $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.

2.2.3. PRNG Basado en KMAC

Basado en la función hash SHA-3 (KECCAK), KMAC proporciona una salida de longitud variable y se considera un candidato sólido para la criptografía post-cuántica. Su construcción sigue un principio similar de hash autenticado, ofreciendo altas garantías de seguridad.

2.3. Métodos de Validación de Aleatoriedad

El estándar NIST SP 800-90B proporciona metodologías para evaluar la calidad de los generadores de números aleatorios. Se evalúan dos aspectos clave:

3. Generador de Contraseñas Seguro Propuesto

La arquitectura del sistema involucra dos etapas principales:

  1. Generación Segura de Números Aleatorios: Un usuario puede proporcionar opcionalmente un Mensaje a Ser Hasheado (TBHM). Esto, junto con una clave criptográfica, es procesado por el PRNG seguro elegido (basado en HMAC/CMAC/KMAC) para producir una secuencia de bits aleatoria criptográficamente fuerte.
  2. Generación de Contraseña: Los bits aleatorios se mapean a un conjunto de caracteres definido por el usuario o por el sistema (por ejemplo, alfanumérico más símbolos) de una longitud especificada para generar la contraseña final basada en texto. La fuerza de seguridad se analiza en relación con AES-128/256, considerando la entropía proporcionada por el tamaño del conjunto de caracteres y la longitud de la contraseña.

4. Experimentos y Resultados

4.1. Configuración Experimental

Se realizaron experimentos para validar la aleatoriedad de las salidas del PRNG. La suite de pruebas implementó los procedimientos de evaluación de NIST SP 800-90B para la estimación de entropía y las pruebas IID en grandes muestras de números aleatorios generados de los tres tipos de PRNG.

4.2. Resultados de Validación de Aleatoriedad

Resumen de Resultados: Los PRNG propuestos basados en HMAC, CMAC y KMAC superaron exitosamente las pruebas de validación de entropía e IID de NIST SP 800-90B. Las secuencias generadas no mostraron desviaciones estadísticamente significativas de la verdadera aleatoriedad, confirmando su idoneidad para la generación criptográfica de contraseñas.

Descripción del Gráfico (Imaginado): Un gráfico de barras que compara las estimaciones de min-entropía (en bits por bit) para los tres tipos de PRNG contra el umbral de aprobación del NIST. Las tres barras se mostrarían significativamente por encima de la línea del umbral, con KMAC mostrando potencialmente el valor más alto, seguido de cerca por HMAC-SHA3 y CMAC-AES256.

4.3. Análisis de Rendimiento

Se realizó un análisis comparativo de la eficiencia computacional (por ejemplo, generaciones por segundo). Los generadores basados en CMAC (usando aceleración por hardware AES-NI) típicamente mostraron el mayor rendimiento, seguidos por los basados en HMAC (SHA2/SHA3), siendo KMAC computacionalmente más pesado pero ofreciendo propiedades robustas de seguridad post-cuántica.

5. Conclusión y Trabajo Futuro

Esta investigación diseñó y validó exitosamente un generador de contraseñas seguro construido sobre PRNGs criptográficamente seguros (HMAC, CMAC, KMAC). La seguridad de las contraseñas generadas deriva de la robustez probada de estas primitivas criptográficas subyacentes y de la alta aleatoriedad verificada de la salida del PRNG. El trabajo futuro incluye integrar el generador en extensiones de navegador o gestores de contraseñas, explorar su uso en la generación de claves criptográficas más allá de las contraseñas, y realizar un análisis de resistencia a ataques de canal lateral en el sistema completo.

6. Análisis Original y Comentario Experto

Perspectiva Central: Este artículo es una respuesta pragmática y centrada en la ingeniería al eslabón débil perenne en la ciberseguridad: las contraseñas elegidas por humanos. Su valor central no está en una criptografía novedosa, sino en la aplicación correcta y la validación rigurosa de construcciones existentes y probadas en batalla (HMAC, CMAC, KMAC) para un caso de uso específico y de alto impacto. Identifica correctamente que mover la generación de contraseñas del cerebro del usuario a un proceso criptográfico validado es una mejora fundamental de seguridad, similar al cambio de criptografía simétrica a asimétrica para el intercambio de claves.

Flujo Lógico: La lógica es sólida y sigue un patrón clásico de investigación aplicada: definición del problema (contraseñas débiles) → crítica de soluciones comunes (LCGs inseguros) → propuesta de una solución robusta (generador basado en CSPRNG) → validación empírica (pruebas NIST). La elección de NIST SP 800-90B como punto de referencia de validación es excelente, ya que es el estándar de facto para evaluar la aleatoriedad en contextos criptográficos, otorgando credibilidad inmediata a los resultados.

Fortalezas y Debilidades:
Fortalezas: La mayor fortaleza del artículo es su validación práctica. Muchas propuestas se detienen en la fase de diseño. Al someter la salida a las estrictas pruebas del NIST, los autores proporcionan evidencia concreta de seguridad, lo cual es crucial para su adopción. La inclusión de KMAC, basado en SHA-3, muestra previsión respecto a consideraciones post-cuánticas, como se señala en el proceso de estandarización de criptografía post-cuántica en curso del NIST.
Debilidades/Omisiones: El análisis está algo aislado. Una falla significativa es la falta de discusión sobre la gestión de la semilla. La seguridad de cualquier PRNG colapsa si su semilla es predecible o se filtra. ¿Cómo genera, almacena y protege el sistema la clave criptográfica inicial para HMAC/CMAC/KMAC? Esto es tan crítico como el algoritmo en sí. Además, si bien comparar la fuerza de la contraseña con AES es útil, una comparación más directa con generadores de contraseñas existentes (como los de KeePass o 1Password) y sus PRNG subyacentes (por ejemplo, usando ChaCha20) proporcionaría un mejor contexto para su ventaja competitiva.

Perspectivas Accionables: Para los profesionales de la seguridad, este artículo sirve como un modelo. Acción 1: Depreciar inmediatamente cualquier uso de LCGs o RNGs no criptográficos similares (como `rand()`) para tareas sensibles de seguridad. Acción 2: Al construir o auditar un generador de contraseñas, los elementos principales de la lista de verificación deben ser: 1) Usar un CSPRNG (HMAC_DRBG, CTR_DRBG de NIST SP 800-90A, o las construcciones aquí), 2) Validar su salida con una suite como NIST SP 800-90B o Dieharder, y 3) Implementar una generación robusta de semilla desde una fuente de alta entropía (por ejemplo, `getrandom()` en Linux). El artículo se centra exitosamente en el punto 2, pero los puntos 1 y 3 son partes igualmente vitales del panorama completo.

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

La seguridad del generador propuesto depende de las funciones criptográficas subyacentes. Las operaciones matemáticas clave son:

8. Marco de Análisis y Ejemplo de Caso

Ejemplo de Caso: Auditoría de la Función de Restablecimiento de Contraseña de una Aplicación Web
Escenario: Una aplicación web genera una contraseña temporal para usuarios que hacen clic en "Olvidé mi contraseña".
Aplicación del Marco:

  1. Identificar el RNG: Inspeccionar el código del lado del servidor. Encontrar `Math.random()` (JavaScript) o un LCG simple en PHP sería un fallo crítico.
  2. Evaluar la Fuente de Entropía: ¿Cómo se siembra el PRNG? ¿Está usando entropía del sistema (`/dev/urandom`, `CryptGenRandom`)?
  3. Mapear a la Solución Propuesta: Recomendar reemplazar el RNG defectuoso con un módulo que implemente el diseño de este artículo, por ejemplo, una función en Python usando `hmac.new` con SHA256 y una semilla de `os.urandom(32)`.
  4. Validar la Salida (Post-Implementación): Generar una muestra de 1,000,000 de contraseñas temporales, convertir a flujo de bits y ejecutar la suite NIST STS (una suite de pruebas relacionada) para asegurar la aleatoriedad.
Este marco convierte la teoría del artículo en una lista de verificación concreta de auditoría y remediación.

9. Aplicaciones y Direcciones Futuras

La tecnología central tiene aplicaciones más allá de la generación de contraseñas de usuario:

10. Referencias

  1. M. Bishop, "Computer Security: Art and Science," Addison-Wesley, 2003.
  2. NIST, "Special Publication 800-63B: Digital Identity Guidelines," 2017.
  3. NIST, "Special Publication 800-90A: Recommendation for Random Number Generation Using Deterministic Random Bit Generators," 2015.
  4. NIST, "Special Publication 800-90B: Recommendation for the Entropy Sources Used for Random Bit Generation," 2018.
  5. J. Kelsey, B. Schneier, D. Wagner, "Secure Applications of Low-Entropy Keys," ISW '97.
  6. D. D. Hwang, B. B. Gupta, "A Study of Password Security and Its Implications," JIS, 2019.
  7. NIST, "FIPS 202: SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions," 2015.
  8. NIST, "SP 800-185: SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash and ParallelHash," 2016.
  9. M. S. Turan, E. Barker, J. Kelsey, "Recommendation for Random Bit Generator (RBG) Constructions," NIST SP 800-90C, 2016.
  10. P. G. Neumann, "Illustrative Risks to the Public in the Use of Computer Systems and Related Technology," ACM SIGSOFT, 1995.