Un generador de números pseudoaleatorios criptográficamente seguro ( CSPRNG ) o generador de números pseudoaleatorios criptográfico ( CPRNG ) es un generador de números pseudoaleatorios (PRNG) con propiedades que lo hacen adecuado para su uso en criptografía . También se le conoce como generador de números aleatorios criptográfico ( CRNG ).
Fondo
La mayoría de las aplicaciones criptográficas requieren números aleatorios , por ejemplo:
- generación de claves
- vectores de inicialización
- pederastas
- sales en ciertos esquemas de firma, incluidos ECDSA y RSASSA-PSS
- generación de tokens
La "calidad" de la aleatoriedad requerida para estas aplicaciones varía. Por ejemplo, en algunos protocolos, la creación de un nonce solo requiere unicidad. En cambio, la generación de una clave maestra exige una calidad superior, como una mayor entropía . Y en el caso de las libretas de un solo uso , la garantía teórica de confidencialidad perfecta solo se cumple si el material de la clave proviene de una fuente verdaderamente aleatoria con alta entropía; por lo tanto, cualquier generador de números pseudoaleatorios resulta insuficiente.
Idealmente, la generación de números aleatorios en los generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG) utiliza la entropía obtenida de una fuente de alta calidad, generalmente la API de aleatoriedad del sistema operativo . Sin embargo, se han encontrado correlaciones inesperadas en varios procesos aparentemente independientes. Desde un punto de vista de la teoría de la información, la cantidad de aleatoriedad, la entropía que se puede generar, es igual a la entropía proporcionada por el sistema. Pero a veces, en situaciones prácticas, se necesitan números con mayor aleatoriedad de la que la entropía disponible puede proporcionar. Además, los procesos para extraer aleatoriedad de un sistema en funcionamiento son lentos en la práctica. En tales casos, a veces se puede utilizar un CSPRNG. Un CSPRNG puede "extender" la entropía disponible a través de más bits.
Requisitos
Los requisitos de un generador de números pseudoaleatorios (PRNG) ordinario también los cumple un PRNG criptográficamente seguro, pero lo contrario no es cierto. Los requisitos de un CSPRNG se dividen en dos grupos:
- Superan las pruebas de aleatoriedad estadística :
- Todo CSPRNG debe satisfacer la prueba del siguiente bit . Es decir, dados los primeros k bits de una secuencia aleatoria, no existe ningún algoritmo de tiempo polinomial que pueda predecir el bit ( k +1) con una probabilidad de éxito no despreciablemente mejor que el 50%. [ 1 ]
- Andrew Yao demostró en 1982 que un generador que supera la prueba del siguiente bit superará todas las demás pruebas estadísticas de tiempo polinomial para la aleatoriedad. En otras palabras, ningún algoritmo de tiempo polinomial sería capaz de distinguir la salida del generador de números aleatorios de la verdadera aleatoriedad. [ 2 ]
- En lugar de la complejidad temporal polinómica, otra métrica considerada en la práctica es el número absoluto de operaciones necesarias para que un discriminador distinga la salida de la verdadera aleatoriedad. A partir del número de operaciones, también se puede definir un nivel de seguridad (bits de seguridad) para un CSPRNG particular frente a ataques de discriminación. [ 3 ] [ 4 ]
- Se mantienen bien bajo un ataque serio, incluso cuando parte de su estado inicial o en ejecución queda disponible para un atacante: [ 5 ]
- Todo CSPRNG debe resistir los "ataques de extensión de compromiso de estado". [ 5 ] : 4 En caso de que se haya revelado (o adivinado correctamente) parte o la totalidad de su estado, debería ser imposible reconstruir la secuencia de números aleatorios anterior a la revelación. Además, si hay una entrada de entropía durante la ejecución, debería ser inviable utilizar el conocimiento del estado de la entrada para predecir las condiciones futuras del estado del CSPRNG.
- Por ejemplo, si el generador de números pseudoaleatorios en cuestión produce una salida calculando los bits de pi en secuencia, comenzando desde algún punto desconocido en la expansión binaria, es muy probable que cumpla con la prueba del siguiente bit y, por lo tanto, sea estadísticamente aleatorio, ya que se supone que pi es un número normal . Sin embargo, este algoritmo no es criptográficamente seguro; un atacante que determine qué bit de pi se está utilizando actualmente (es decir, el estado del algoritmo) también podrá calcular todos los bits anteriores.
La mayoría de los generadores de números pseudoaleatorios no son adecuados para su uso como generadores de números pseudoaleatorios criptográficamente seguros y fallarán en ambos aspectos:
- Si bien la mayoría de los generadores de números pseudoaleatorios (PRNG) parecen aleatorios según diversas pruebas estadísticas, no resisten la ingeniería inversa rigurosa. Se pueden encontrar pruebas estadísticas especializadas, ajustadas específicamente a este tipo de PRNG, que demuestran que los números aleatorios no son verdaderamente aleatorios. Al mismo tiempo, dado que los generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG) están diseñados para resistir todas las pruebas estadísticas (y se consideran seguros en este aspecto hasta que se encuentre una prueba que lo demuestre), un CSPRNG puede reemplazar a cualquier generador de números aleatorios verdadero en cualquier aplicación no criptográfica.
- En la mayoría de los generadores de números pseudoaleatorios (PRNG), una vez revelado su estado, se pueden predecir todos los números aleatorios anteriores, lo que permite a un atacante leer todos los mensajes pasados, así como los futuros. Los generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG) están diseñados específicamente para resistir este tipo de criptoanálisis .
Definiciones
En el contexto asintótico , una familia de funciones computables deterministas en tiempo polinomialpara algún polinomio p , es un generador de números pseudoaleatorios (PRNG, o PRG en algunas referencias), si extiende la longitud de su entrada (para cualquier k ), y si su salida es computacionalmente indistinguible de la verdadera aleatoriedad, es decir, para cualquier algoritmo probabilístico de tiempo polinomial A , que produce 1 o 0 como un elemento distinguible,
para alguna función insignificante. [ 6 ] (La notaciónsignifica que x se elige uniformemente al azar del conjunto X.
Existe una caracterización equivalente: Para cualquier familia de funciones, G es un PRNG si y solo si el siguiente bit de salida de G no puede ser predicho por un algoritmo de tiempo polinomial. [ 7 ]
Un PRNG seguro hacia adelante con longitud de bloquees un PRNG, donde la cadena de entradacon longitud k es el estado actual en el período i , y la salida (,) consiste en el siguiente estadoy el bloque de salida pseudoaleatoriodel período i , que resiste extensiones de compromiso de estado en el siguiente sentido. Si el estado inicialse elige uniformemente al azar de, entonces para cualquier i , la secuenciadebe ser computacionalmente indistinguible de, en el cual else eligen uniformemente al azar de. [ 8 ]
Cualquier generador de números pseudoaleatoriospuede convertirse en un PRNG seguro hacia adelante con longitud de bloquedividiendo su salida en el siguiente estado y la salida real. Esto se hace configurando, en el cualy; entonces G es un generador de números pseudoaleatorios seguro hacia adelante concomo el próximo estado ycomo el bloque de salida pseudoaleatorio del período actual.
Extracción de entropía
Santha y Vazirani demostraron que varias secuencias de bits con aleatoriedad débil pueden combinarse para producir una secuencia de bits cuasialeatoria de mayor calidad. [ 9 ] Incluso antes, John von Neumann sugirió un algoritmo simple que puede eliminar una cantidad considerable del sesgo en cualquier secuencia de bits. [ 10 ]
Diseños
Los diseños de CSPRNG se dividen en dos clases:
- Diseños basados en primitivas criptográficas como cifrados y funciones hash criptográficas.
- Diseños basados en problemas matemáticos considerados difíciles
Diseños basados en primitivas criptográficas
- Un cifrado de bloques seguro se puede convertir en un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG) ejecutándolo en modo contador , utilizando, por ejemplo, una construcción especial que el NIST denomina CTR_DBRG en la norma SP 800-90A . CTR_DBRG suele utilizar el Estándar de Cifrado Avanzado (AES).
- AES- CTR_DRBG se usa frecuentemente como generador de números aleatorios en sistemas que utilizan cifrado AES. [ 11 ] [ 12 ]
- El esquema NIST CTR_DRBG borra la clave después de generar la aleatoriedad solicitada mediante ciclos adicionales. Esto resulta ineficiente desde el punto de vista del rendimiento, pero no causa problemas inmediatos con la confidencialidad directa. Sin embargo, consciente de las implicaciones en el rendimiento, el NIST recomienda una "interfaz AES-CTR-DRBG extendida" para las propuestas de su Proyecto de Criptografía Postcuántica . Esta interfaz permite generar múltiples conjuntos de aleatoriedad sin borrado intermedio, borrándolos únicamente cuando el usuario indica explícitamente el final de las solicitudes. Como resultado, la clave podría permanecer en memoria durante un tiempo prolongado si se utiliza incorrectamente la "interfaz extendida". Los generadores de números aleatorios (RNG) más recientes con "borrado rápido de clave" borran la clave junto con la aleatoriedad tan pronto como se solicita. [ 13 ]
- Un cifrado de flujo se puede convertir en un generador de números pseudoaleatorios criptográficamente seguro (CSPRNG). Esto se ha hecho con RC4, ISAAC y ChaCha20 , entre otros.
- Un hash criptográficamente seguro también podría ser la base de un buen generador de números pseudoaleatorios criptográficamente seguro (CSPRNG), utilizando, por ejemplo, una construcción que el NIST denomina Hash DRBG .
- Una primitiva HMAC puede utilizarse como base de un CSPRNG, por ejemplo, como parte de la construcción que NIST denomina HMAC DRBG .
Diseños basados en la teoría de números
- El algoritmo Blum Blum Shub cuenta con una prueba de seguridad basada en la dificultad del problema de la resiliencia cuadrática . Dado que la única forma conocida de resolver dicho problema es factorizar el módulo, se considera generalmente que la dificultad de la factorización de enteros proporciona una prueba de seguridad condicional para el algoritmo Blum Blum Shub. Sin embargo, el algoritmo es muy ineficiente y, por lo tanto, poco práctico a menos que se requiera una seguridad extrema.
- El algoritmo de Blum-Micali tiene una prueba de seguridad basada en la dificultad del problema del logaritmo discreto , pero también es muy ineficiente.
- Daniel Brown de Certicom escribió una prueba de seguridad de 2006 para Dual EC DRBG , basada en la dificultad asumida de la suposición Decisional Diffie-Hellman , el problema del x-logaritmo y el problema del punto truncado . La prueba de 2006 asume explícitamente una outlen (cantidad de bits proporcionados por iteración) menor que en el estándar Dual_EC_DRBG, y que P y Q en el estándar Dual_EC_DRBG (que se reveló en 2013 que probablemente contenían una puerta trasera de la NSA) se reemplazan con valores sin puerta trasera.
Planes prácticos
Los esquemas prácticos de generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG) no solo incluyen un algoritmo CSPRNG, sino también una forma de inicializarlo (" sembrarlo ") manteniendo la semilla en secreto. Se han definido varios esquemas de este tipo, entre ellos:
- Implementaciones de /dev/random en sistemas tipo Unix.
- Yarrow , que intenta evaluar la calidad entrópica de sus datos de entrada, utiliza internamente SHA-1 y 3DES. Yarrow se utilizó en macOS y otros sistemas operativos de Apple hasta aproximadamente diciembre de 2019, fecha en la que se sustituyó por Fortuna.
- Fortuna , sucesor de Yarrow, no intenta evaluar la calidad entrópica de sus entradas; utiliza SHA-256 y cualquier cifrado de bloques fiable. Fortuna se usa en FreeBSD. Apple adoptó Fortuna para la mayoría de sus sistemas operativos a partir de diciembre de 2019.
- El kernel de Linux CSPRNG, que utiliza ChaCha20 para generar datos, [ 14 ] y BLAKE2s para ingerir entropía. [ 15 ]
- arc4random , un CSPRNG en sistemas tipo Unix que se inicializa desde /dev/random . Originalmente se basa en RC4 , pero todas las implementaciones principales ahora usan ChaCha20 . [ 16 ] [ 17 ] [ 18 ]
- CryptGenRandom , que forma parte de la API criptográfica de Microsoft , está disponible en Windows. Las diferentes versiones de Windows utilizan implementaciones distintas.
- Estándar ANSI X9.17 ( Administración de claves de instituciones financieras (mayorista) ), que también ha sido adoptado como estándar FIPS . Toma como entrada un paquete de claves TDEA ( opción de clave 2 ) k y (el valor inicial de) una semilla aleatoria de 64 bits s . [ 19 ] Cada vez que se requiere un número aleatorio, ejecuta los siguientes pasos:
- Obtenga la fecha y hora actuales D con la máxima resolución posible.
- Calcula un valor temporal t = TDEA k ( D ) .
- Calcula el valor aleatorio x = TDEA k ( s ⊕ t ) , donde ⊕ denota la operación OR exclusiva a nivel de bits .
- Actualizar la semilla s = TDEA k ( x ⊕ t ) .
Obviamente, la técnica se generaliza fácilmente a cualquier cifrado de bloques; se ha sugerido AES . [ 20 ] Si se filtra la clave k , se puede predecir toda la secuencia X9.17; esta vulnerabilidad se cita como una razón para crear Yarrow. [ 21 ]
Todos los esquemas mencionados anteriormente, excepto X9.17, también combinan el estado de un CSPRNG con una fuente adicional de entropía. Por lo tanto, no son generadores de números pseudoaleatorios "puros", en el sentido de que la salida no está completamente determinada por su estado inicial. Esta adición tiene como objetivo prevenir ataques incluso si el estado inicial se ve comprometido. [ a ]
Estándares
Se han estandarizado varios generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG). Por ejemplo:
- FIPS 186-4 [ 23 ]
- NIST SP 800-90A
El tercer generador de números pseudoaleatorios (PRNG) de este estándar, CTR DRBG , se basa en un cifrado de bloques que funciona en modo contador . Su diseño no genera controversia, pero se ha demostrado que es más débil en términos de ataques de distinción que el nivel de seguridad del cifrado de bloques subyacente cuando el número de bits generados por este PRNG es mayor que dos elevado a la potencia del tamaño de bloque en bits del cifrado de bloques subyacente. [ 26 ]
Cuando el número máximo de bits de salida de este PRNG es igual al tamaño de bloque 2 , la salida resultante proporciona el nivel de seguridad matemáticamente esperado que se esperaría que generara el tamaño de clave, pero se demuestra que la salida no es indistinguible de un verdadero generador de números aleatorios. [ 26 ] Cuando el número máximo de bits de salida de este PRNG es menor que este, se proporciona el nivel de seguridad esperado y la salida parece ser indistinguible de un verdadero generador de números aleatorios. [ 26 ]
En la siguiente revisión se señala que la supuesta solidez de seguridad de CTR_DRBG depende de limitar el número total de solicitudes de generación y los bits proporcionados por cada solicitud de generación.
El cuarto y último generador de números pseudoaleatorios (PRNG) de este estándar se denomina Dual EC DRBG . Se ha demostrado que no es criptográficamente seguro y se cree que tiene una puerta trasera cleptográfica de la NSA. [ 27 ]
- NIST SP 800-90A Rev.1
- ANSI X9.17-1985 Apéndice C
- ANSI X9.31-1998 Apéndice A.2.4
- ANSI X9.62-1998 Anexo A.4, obsoleto por ANSI X9.62-2005, Anexo D (HMAC_DRBG)
El NIST mantiene una buena referencia . [ 28 ]
También existen estándares para las pruebas estadísticas de los nuevos diseños de generadores de números pseudoaleatorios criptográficamente seguros (CSPRNG):
- Un conjunto de pruebas estadísticas para generadores de números aleatorios y pseudoaleatorios , publicación especial NIST 800-22. [ 29 ]
fallos de seguridad
Puerta trasera cleptográfica de la NSA en el generador de números pseudoaleatorios Dual_EC_DRBG
The Guardian y The New York Times informaron en 2013 que la Agencia de Seguridad Nacional (NSA) insertó una puerta trasera en un generador de números pseudoaleatorios (PRNG) del NIST SP 800-90A , lo que le permite descifrar fácilmente material que fue cifrado con la ayuda de Dual EC DRBG . Ambos artículos informaron [ 30 ] [ 31 ] que, como sospechaban desde hace tiempo expertos independientes en seguridad, [ 32 ] la NSA había estado introduciendo vulnerabilidades en el estándar CSPRNG 800-90; esto fue confirmado por primera vez por uno de los documentos ultrasecretos filtrados a The Guardian por Edward Snowden . La NSA trabajó en secreto para lograr que su propia versión del borrador del estándar de seguridad del NIST fuera aprobada para su uso mundial en 2006. El documento filtrado afirma que "finalmente, la NSA se convirtió en el único editor". A pesar del potencial conocido de una puerta trasera cleptográfica y otras deficiencias significativas conocidas con Dual_EC_DRBG, varias empresas como RSA Security continuaron usando Dual_EC_DRBG hasta que se confirmó la puerta trasera en 2013. [ 33 ] RSA Security recibió un pago de $10 millones de la NSA para hacerlo. [ 34 ]
Ataque de DUHK
El 23 de octubre de 2017, Shaanan Cohney , Matthew Green y Nadia Heninger , criptógrafos de la Universidad de Pensilvania y la Universidad Johns Hopkins , publicaron detalles del ataque DUHK (Don't Use Hard-coded Keys) contra WPA2, donde los proveedores de hardware utilizan una clave semilla codificada para el algoritmo RNG ANSI X9.31, afirmando que "un atacante puede realizar un ataque de fuerza bruta a los datos cifrados para descubrir el resto de los parámetros de cifrado y deducir la clave maestra de cifrado utilizada para cifrar sesiones web o conexiones de red privada virtual (VPN)". [ 35 ] [ 36 ]
Máquina de cifrado japonesa PURPLE
Durante la Segunda Guerra Mundial , Japón utilizó una máquina de cifrado para comunicaciones diplomáticas; Estados Unidos logró descifrarla y leer sus mensajes , principalmente porque los "valores clave" utilizados no eran suficientemente aleatorios. [ 37 ]
Referencias
- ↑ El uso de la mezcla de entropía después de la inicialización del CSPRNG ha sido cuestionado por Daniel J. Bernstein . [ 22 ]
- ↑ Katz, Jonathan; Lindell, Yehuda (2008). Introducción a la criptografía moderna . CRC Press. pág . 70. ISBN 978-1584885511.
- ↑ Andrew Chi-Chih Yao . Teoría y aplicaciones de las funciones de puerta trasera. Archivado el 15 de septiembre de 2019 en Wayback Machine . En Actas del 23.er Simposio IEEE sobre Fundamentos de la Informática, 1982.
- ↑ Stankovski, Paul (2010). «Distinguidores codiciosos y detectores de no aleatoriedad». Progress in Cryptology - INDOCRYPT 2010. Lecture Notes in Computer Science. Vol. 6498. pp. 210–226 . doi : 10.1007/978-3-642-17401-8_16 . ISBN 978-3-642-17400-1.
- ↑ Aumasson, Jean-Philippe (veorq) (12 de noviembre de 2015). "Comentario sobre: cambiar Siphash para usar una de las variantes más rápidas del algoritmo (Siphash13, Highwayhash) · Problema n.° 29754 · rust-lang/rust" . GitHub . Archivado del original el 28 de febrero de 2024. Recuperado el 28 de febrero de 2024.
Diseñador de SipHash aquí, no he cambiado mi opinión sobre SipHash-1-3
:-) [...] Hay un "distinguidor" en 4 rondas[...], o en términos más simples un sesgo estadístico que aparece dado un patrón de diferencia específico en la entrada de la secuencia de 4 rondas. Pero no puedes inyectar ese patrón en SipHash-1-3 porque no controlas todo el estado. E incluso si pudieras inyectar ese patrón, el sesgo no sería explotable de todos modos.
- 1 2 Kelsey, John; Schneier, Bruce; Wagner, David; Hall, Chris (1998). "Ataques criptoanalíticos a generadores de números pseudoaleatorios". Cifrado rápido de software (PDF) . Berlín, Heidelberg: Springer Berlin Heidelberg. doi : 10.1007/3-540-69710-1_12 . ISBN 978-3-540-64265-7. ISSN 0302-9743 . Archivado (PDF) del original el 27-08-2023 . Consultado el 11-09-2023 .
- ↑ Goldreich, Oded (2001), Fundamentos de criptografía I: Herramientas básicas , Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1, definición 3.3.1.
- ↑ Goldreich, Oded (2001), Fundamentos de criptografía I: Herramientas básicas , Cambridge: Cambridge University Press, ISBN 978-0-511-54689-1, Teorema 3.3.7.
- ↑ Dodis, Yevgeniy, Apuntes de la Lección 5 de Introducción a la Criptografía (PDF) , archivado (PDF) del original el 5 de marzo de 2016 , consultado el 3 de enero de 2016., def 4.
- ↑ Miklos Santha, Umesh V. Vazirani (24 de octubre de 1984). «Generación de secuencias cuasialeatorias a partir de fuentes ligeramente aleatorias» (PDF) . Actas del 25.º Simposio IEEE sobre Fundamentos de la Informática . Universidad de California . págs. 434-440 . ISBN 0-8186-0591-X. Archivado (PDF) del original el 10-09-2006 . Recuperado el 29-11-2006 .
- ↑ John von Neumann (1 de marzo de 1963). «Varias técnicas para su uso con dígitos aleatorios». Obras completas de John von Neumann . Pergamon Press . págs. 768-770 . ISBN 0-08-009566-6.
{{cite book}}: Incompatibilidad de ISBN/Fecha ( ayuda ) - ^ Kleidermacher, David; Kleidermacher, Mike (2012). Seguridad de sistemas integrados: métodos prácticos para el desarrollo de sistemas y software seguros . Elsevier. pag. 256.ISBN 9780123868862.
- ↑ Cox, George; Dike, Charles; Johnston, DJ (2011). "Generador de números aleatorios digitales (DRNG) de Intel" (PDF) .
- ↑ Bernstein, Daniel J. "23/07/2017: Generadores de números aleatorios con borrado rápido de claves: Un esfuerzo por solucionar varios problemas simultáneamente. #rng #forwardsecrecy #urandom #cascade #hmac #rekeying #proofs" . Archivado del original el 24/03/2024 . Consultado el 27/03/2024 .
- ↑ "Commit de random.c en Github" . Github. 2 de julio de 2016. Archivado del original el 19 de septiembre de 2023. Recuperado el 28 de marzo de 2017 .
- ↑ "Generador de números aleatorios de Linux 5.17 experimenta mejoras de velocidad al cambiar de SHA1 a BLAKE2s - Phoronix" . www.phoronix.com . Archivado del original el 3 de diciembre de 2024. Consultado el 4 de marzo de 2024 .
- ↑ "Registro CVS de arc4random.c" . CVS. 1 de octubre de 2013. Archivado del original el 19 de septiembre de 2023. Recuperado el 28 de marzo de 2017 .
- ↑ "Registro CVS de arc4random.c" . CVS. 16 de noviembre de 2014. Archivado del original el 29 de marzo de 2017. Recuperado el 28 de marzo de 2017 .
- ↑ "Notas de la versión FreeBSD 12.0-RELEASE: Bibliotecas de tiempo de ejecución y API" . FreeBSD.org . 5 de marzo de 2019. Archivado del original el 21 de diciembre de 2019. Consultado el 24 de agosto de 2019 .
- ↑ Menezes, Alfred ; van Oorschot, Paul ; Vanstone, Scott (1996). "Capítulo 5: Bits y secuencias pseudoaleatorias" (PDF) . Manual de criptografía aplicada . CRC Press. Archivado del original el 16 de febrero de 2012. Consultado el 5 de junio de 2009 .
- ↑ Young, Adam; Yung, Moti (1 de febrero de 2004). Criptografía maliciosa: Desenmascarando la criptovirología . John Wiley & Sons . Sección 3.5.1. ISBN 978-0-7645-4975-5Archivado del original el 27 de mayo de 2009. Consultado el 16 de junio de 2010 .
- ↑ Kelsey, John; Schneier, Bruce; Ferguson, Niels (agosto de 1999). «Yarrow-160: Notas sobre el diseño y análisis del generador de números pseudoaleatorios criptográficos Yarrow» (PDF) . Sexto taller anual sobre áreas selectas de criptografía . Lecture Notes in Computer Science. Vol. 1758. págs. 13–33 . doi : 10.1007/3-540-46513-8_2 . ISBN 978-3-540-67185-5. Archivado (PDF) del original el 2024-03-20 . Recuperado el 2024-03-20 .
- ↑ Daniel J. Bernstein (05/02/2014). "cr.yp.to: 05/02/2014: ¡Ataques de entropía!" . Archivado del original el 05/02/2014 . Recuperado el 04/03/2024 .
¿Existe algún argumento serio a favor de que añadir nueva entropía constantemente sea algo bueno? La página del manual de Linux /dev/urandom afirma que sin nueva entropía el usuario es "teóricamente vulnerable a un ataque criptográfico", pero (como he mencionado en varias ocasiones) este es un argumento ridículo.
- ↑ "FIPS 186-4" (PDF) . Archivado (PDF) del original el 27-12-2016 . Recuperado el 30-07-2016 .
- ↑ Kan, Wilson (4 de septiembre de 2007). "Análisis de supuestos subyacentes en los DRBG del NIST" (PDF) . Archivado (PDF) del original el 2 de febrero de 2017. Recuperado el 19 de noviembre de 2016 .
- ↑ Ye, Katherine Qinru (abril de 2016). "El notorio PRG: verificación formal del generador de números pseudoaleatorios HMAC-DRBG" (PDF) . Archivado (PDF) del original el 20 de noviembre de 2016. Recuperado el 19 de noviembre de 2016 .
- 1 2 3 Campagna, Matthew J. (1 de noviembre de 2006). "Límites de seguridad para el generador de bits aleatorios determinista basado en el libro de códigos del NIST" (PDF) . Archivado (PDF) del original el 2 de febrero de 2017. Recuperado el 19 de noviembre de 2016 .
- ↑ Perlroth, Nicole (10 de septiembre de 2013). "El gobierno anuncia medidas para restablecer la confianza en los estándares de cifrado" . The New York Times . Archivado del original el 12 de julio de 2014. Consultado el 19 de noviembre de 2016 .
- ↑ División de Seguridad Informática, Laboratorio de Tecnologías de la Información (24 de mayo de 2016). "Número aleatorio" . CSRC | NIST . Archivado del original el 2 de febrero de 2015. Recuperado el 26 de noviembre de 2014 .
- ↑ Rukhin, Andrew; Soto, Juan; Nechvatal, James; Smid, Miles; Barker, Elaine; Leigh, Stefan; Levenson, Mark; Vangel, Mark; Banks, David; Heckert, N.; Dray, James; Vo, San; Bassham, Lawrence (30 de abril de 2010). "Un conjunto de pruebas estadísticas para generadores de números aleatorios y pseudoaleatorios para aplicaciones criptográficas" . NIST . doi : 10.6028/NIST.SP.800-22r1a . Archivado del original el 26 de mayo de 2023. Recuperado el 23 de mayo de 2023 a través de csrc.nist.gov.
- ↑ Borger, James; Greenwald, Glenn (6 de septiembre de 2013). «Revelado: cómo las agencias de espionaje de EE. UU. y el Reino Unido vulneran la privacidad y la seguridad en internet» . The Guardian . Archivado del original el 18 de septiembre de 2013. Consultado el 7 de septiembre de 2013 .
- ↑ Perlroth, Nicole (5 de septiembre de 2013). "La NSA logra burlar las medidas básicas de protección de la privacidad en la web" . The New York Times . Archivado del original el 8 de septiembre de 2013. Consultado el 7 de septiembre de 2013 .
- ↑ Schneier, Bruce (15 de noviembre de 2007). "¿Incluyó la NSA una puerta trasera secreta en el nuevo estándar de cifrado?" . Wired . Archivado del original el 24 de octubre de 2012. Consultado el 7 de septiembre de 2013 .
- ↑ Green, Matthew (20 de septiembre de 2013). "RSA advierte a los desarrolladores que no utilicen productos RSA" . Algunas reflexiones sobre ingeniería criptográfica . Archivado del original el 10 de octubre de 2013. Consultado el 23 de septiembre de 2013 .
- ↑ Menn, Joseph (20 de diciembre de 2013). "Exclusiva: Contrato secreto vincula a la NSA con un pionero de la industria de la seguridad" . Reuters . Archivado del original el 24 de septiembre de 2015. Consultado el 10 de julio de 2021 .
- ↑ Shaanan Cohney ; Matthew D. Green ; Nadia Heninger . "Ataques prácticos de recuperación de estado contra implementaciones RNG heredadas" (PDF) . duhkattack.com . Archivado (PDF) del original el 5 de noviembre de 2017. Recuperado el 27 de octubre de 2017 .
- ↑ "Ataque criptográfico DUHK recupera claves de cifrado y expone conexiones VPN" . slashdot.org . 25 de octubre de 2017. Archivado del original el 4 de octubre de 2018. Consultado el 25 de octubre de 2017 .
- ↑ Balciunas, Marijus (18 de marzo de 2004). "La máquina púrpura de Japón" (PDF) . Universidad DePaul . Archivado del original (PDF) el 30 de marzo de 2025. Recuperado el 7 de octubre de 2025 .
Enlaces externos
- RFC 4086 , Requisitos de aleatoriedad para la seguridad
- "Grupo de entropía" de Java para números aleatorios impredecibles y criptográficamente seguros. Archivado el 2 de diciembre de 2008 en Wayback Machine.
- Clase estándar de Java que proporciona un generador de números pseudoaleatorios (PRNG) criptográficamente seguro.
- Generación de números aleatorios criptográficamente seguros en Windows sin usar CryptoAPI.
- Seguridad conjeturada del generador de números aleatorios de curva elíptica ANSI-NIST , Daniel RL Brown, IACR ePrint 2006/117.
- Análisis de seguridad del generador de números aleatorios de curva elíptica NIST SP 800-90 , Daniel RL Brown y Kristian Gjosteen, IACR ePrint 2007/048. Próxima publicación en CRYPTO 2007.
- Criptoanálisis del generador pseudoaleatorio de curva elíptica dual , Berry Schoenmakers y Andrey Sidorenko, IACR ePrint 2006/190.
- Generadores pseudoaleatorios eficientes basados en la suposición DDH , Reza Rezaeian Farashahi, Berry Schoenmakers y Andrey Sidorenko, IACR ePrint 2006/321.
- Análisis del generador de números aleatorios de Linux , por Zvi Gutterman, Benny Pinkas y Tzachy Reinman.
- Documentación y descarga del software del paquete de pruebas estadísticas del NIST.
- Algoritmos criptográficos
- Generadores de números pseudoaleatorios criptográficamente seguros
- Primitivas criptográficas