Articulo de referencia

Ataque al generador de números aleatorios

La seguridad de los sistemas criptográficos depende de ciertos datos secretos conocidos por las personas autorizadas, pero desconocidos e impredecibles para los demás. Para logr...

La seguridad de los sistemas criptográficos depende de ciertos datos secretos conocidos por las personas autorizadas, pero desconocidos e impredecibles para los demás. Para lograr esta imprevisibilidad, se suele emplear algún tipo de aleatorización . Los protocolos criptográficos modernos a menudo requieren la generación frecuente de cantidades aleatorias. Los ataques criptográficos que subvierten o explotan las debilidades de este proceso se conocen como ataques de generador de números aleatorios .

Un proceso de generación de números aleatorios (RNG) de alta calidad es casi siempre necesario para la seguridad, y la falta de calidad generalmente proporciona vulnerabilidades de ataque y, por lo tanto, conduce a la falta de seguridad, incluso a la vulneración total, en los sistemas criptográficos. [ 1 ] El proceso RNG es particularmente atractivo para los atacantes porque suele ser un único componente de hardware o software aislado y fácil de localizar. Si el atacante puede sustituir bits pseudoaleatorios generados de una manera que pueda predecir, la seguridad se ve totalmente comprometida, aunque generalmente indetectable por cualquier prueba previa de los bits. Además, tales ataques solo requieren un único acceso al sistema que se está comprometiendo. No es necesario enviar datos de vuelta, a diferencia de, por ejemplo, un virus informático que roba claves y luego las envía por correo electrónico a algún punto de entrega.

Generación humana de cantidades aleatorias

Los humanos generalmente no son buenos generando cantidades aleatorias. Los magos, los jugadores profesionales y los estafadores dependen de la previsibilidad del comportamiento humano. Durante la Segunda Guerra Mundial, los codificadores alemanes recibieron instrucciones de seleccionar tres letras al azar para la configuración inicial del rotor de cada mensaje de la máquina Enigma . Sin embargo, algunos eligieron valores predecibles, como sus propias iniciales o las de su novia, lo que facilitó enormemente a los Aliados el descifrado de estos sistemas de encriptación. Otro ejemplo son las formas, a menudo predecibles, en que los usuarios de computadoras eligen sus contraseñas (véase descifrado de contraseñas ).

Sin embargo, en el caso específico de jugar juegos de estrategia mixta , Ran Halprin y Moni Naor estudiaron el uso de la entropía del juego humano para la generación de aleatoriedad . [ 2 ]

Ataques

Generadores de números aleatorios por software

Al igual que otros componentes de un criptosistema, un generador de números aleatorios de software debe diseñarse para resistir ciertos ataques. Algunos ataques posibles a un generador de números aleatorios incluyen (de [ 3 ] ):

Ataque criptoanalítico directo
cuando un atacante obtiene parte del flujo de bits aleatorios y puede usar esto para distinguir la salida del generador de números aleatorios de un flujo verdaderamente aleatorio.
Ataques basados ​​en la entrada
modificar la entrada al generador de números aleatorios para atacarlo, por ejemplo, "eliminando" la entropía existente del sistema y colocándola en un estado conocido.
Ataques de extensión de compromiso estatal
Cuando se conoce el estado secreto interno del generador de números aleatorios, se puede utilizar para predecir resultados futuros o recuperar resultados anteriores. Esto puede ocurrir cuando un generador se inicia y tiene poca o ninguna entropía (especialmente si el ordenador acaba de arrancar y ha seguido una secuencia de operaciones muy estándar), por lo que un atacante podría obtener una estimación inicial de su estado.

Generadores de números aleatorios de hardware

Existen varios tipos de ataques posibles contra los generadores de números aleatorios de hardware , como intentar capturar las emisiones de radiofrecuencia del ordenador (obtener, por ejemplo, los tiempos de interrupción del disco duro a partir del ruido del motor) o intentar introducir señales controladas en una fuente supuestamente aleatoria (como apagar las luces de una lámpara de lava o introducir una señal fuerte y conocida en una tarjeta de sonido).

Subversión del generador de números aleatorios

Se pueden crear números aleatorios manipulados utilizando un generador de números pseudoaleatorios criptográficamente seguro con un valor semilla conocido por el atacante, pero oculto en el software. Una porción relativamente corta de la semilla, de entre 24 y 40 bits, puede ser verdaderamente aleatoria para evitar repeticiones evidentes, pero no lo suficientemente larga como para impedir que el atacante recupere, por ejemplo, una clave generada "aleatoriamente".

Los números aleatorios suelen pasar por varias capas de hardware y software antes de ser utilizados. Los bits pueden generarse en un dispositivo periférico, enviarse a través de un cable serie, recopilarse en una utilidad del sistema operativo y recuperarse mediante una llamada al sistema . Los bits manipulados pueden sustituirse en cualquier punto de este proceso con escasa probabilidad de detección.

Se puede construir un circuito de hardware para producir bits manipulados en un circuito integrado de pocos milímetros cuadrados. Incluso el generador de números aleatorios de hardware más sofisticado puede manipularse colocando un chip de este tipo en cualquier punto anterior a la digitalización de la fuente de aleatoriedad, por ejemplo, en un chip controlador de salida o incluso en el cable que conecta el generador de números aleatorios al ordenador. El chip manipulado puede incluir un reloj para limitar el inicio de la operación a un tiempo después de que la unidad se encienda por primera vez y se hayan realizado las pruebas de aceptación, o puede contener un receptor de radio para el control de encendido/apagado. Podría ser instalado por el fabricante a petición de su servicio nacional de inteligencia de señales, o añadido posteriormente por cualquier persona con acceso físico. Los chips de CPU con generadores de números aleatorios de hardware integrados pueden sustituirse por chips compatibles con un generador de números aleatorios manipulado en su firmware.

Defensas

  • Mezcla (por ejemplo, mediante la operación XOR ) números aleatorios generados por hardware con la salida de un cifrado de flujo de alta calidad , lo más cerca posible del punto de uso. La clave o semilla del cifrado de flujo debe ser modificable de forma que pueda ser auditada y obtenida de una fuente fiable, como por ejemplo, mediante tiradas de dados. El generador de números aleatorios Fortuna es un ejemplo de algoritmo que utiliza este mecanismo.
  • Genera contraseñas y frases de contraseña utilizando una fuente verdaderamente aleatoria. Algunos sistemas seleccionan contraseñas aleatorias para el usuario en lugar de permitirle proponer las suyas propias.
  • Utilice sistemas de cifrado que documenten cómo generan números aleatorios y que proporcionen un método para auditar el proceso de generación.
  • Construya sistemas de seguridad con hardware comercial, preferiblemente adquirido de forma que no se revele su uso previsto, por ejemplo, en una tienda de un gran establecimiento comercial. Desde esta perspectiva, las tarjetas de sonido y las cámaras web pueden ser una mejor fuente de aleatoriedad que el hardware diseñado específicamente para ese fin .
  • Tras su compra, mantenga un control físico total sobre el hardware. Este debe permanecer en un único lugar y no requerir ninguna otra conexión con otros dispositivos. Los ataques se producen en la red, no en el hardware en sí.

El diseño de un generador de números aleatorios seguro requiere al menos el mismo nivel de cuidado que el diseño de otros elementos de un sistema criptográfico.

Ejemplos destacados

Semilla predecible de Netscape

Las primeras versiones del protocolo de cifrado Secure Sockets Layer (SSL) de Netscape utilizaban cantidades pseudoaleatorias derivadas de un generador de números pseudoaleatorios (PRNG) inicializado con tres valores variables: la hora del día, el ID del proceso y el ID del proceso padre. Estas cantidades suelen ser relativamente predecibles, por lo que tienen poca entropía y son menos que aleatorias, y como resultado, esa versión de SSL se consideró insegura. El problema fue reportado a Netscape en 1994 por Phillip Hallam-Baker , entonces investigador del equipo web del CERN , pero no se solucionó antes del lanzamiento. El problema en el código en ejecución fue descubierto en 1995 por Ian Goldberg y David Wagner , [ 4 ] quienes tuvieron que realizar ingeniería inversa del código objeto porque Netscape se negó a revelar los detalles de su generación de números aleatorios ( seguridad por ocultación ). Ese generador de números aleatorios se corrigió en versiones posteriores (versión 2 y superiores) mediante una inicialización más robusta (es decir, más aleatoria y, por lo tanto, con mayor entropía desde la perspectiva de un atacante).

Generador de números aleatorios para Microsoft Windows 2000/XP

Microsoft utilizó un algoritmo no publicado para generar valores aleatorios en versiones anteriores de su sistema operativo Windows . Estas cantidades aleatorias se ponen a disposición de los usuarios mediante la utilidad CryptGenRandom . En noviembre de 2007, Leo Dorrendorf y otros investigadores de la Universidad Hebrea de Jerusalén y la Universidad de Haifa publicaron un artículo titulado « Criptoanálisis del generador de números aleatorios del sistema operativo Windows» . [ 5 ] El artículo reveló graves deficiencias en el enfoque de Microsoft en aquel momento. Las conclusiones del artículo se basaron en el desensamblaje del código de Windows 2000 , pero, según Microsoft, también se aplicaban a Windows XP. [ 6 ] Microsoft ha declarado que los problemas descritos en el artículo se han solucionado en versiones posteriores de Windows, que utilizan una implementación diferente del generador de números aleatorios. [ 6 ]

Posible puerta trasera en DRBG de curva elíptica

El Instituto Nacional de Estándares y Tecnología de EE. UU. ha publicado una colección de "generadores de bits aleatorios deterministas" que recomienda como Publicación Especial NIST 800-90. [ 7 ] Uno de los generadores, Dual_EC_DRBG , fue el preferido por la Agencia de Seguridad Nacional . [ 8 ] Dual_EC_DRBG utiliza tecnología de curva elíptica e incluye un conjunto de constantes recomendadas. En agosto de 2007, Dan Shumow y Niels Ferguson de Microsoft demostraron que las constantes podían construirse de tal manera que crearan una puerta trasera cleptográfica en el algoritmo. [ 9 ] En septiembre de 2013, The New York Times escribió que "la NSA había insertado una puerta trasera en un estándar de 2006 adoptado por el NIST... llamado estándar Dual EC DRBG", [ 10 ] revelando así que la NSA llevó a cabo un ataque de malware contra el pueblo estadounidense. En diciembre de 2013, Reuters informó que documentos publicados por Edward Snowden indicaban que la NSA había pagado a RSA Security 10 millones de dólares para que Dual_EC_DRBG se convirtiera en el algoritmo predeterminado de su software de cifrado, y generó más preocupación de que el algoritmo pudiera contener una puerta trasera para la NSA. [ 11 ] Debido a estas preocupaciones, en 2014, el NIST retiró Dual EC DRBG de su borrador de guía sobre generadores de números aleatorios, recomendando que "los usuarios actuales de Dual_EC_DRBG migren a uno de los tres algoritmos aprobados restantes lo antes posible". [ 12 ]

MIFARE Cripto-1

Crypto-1 es un criptosistema desarrollado por NXP para su uso en chips MIFARE . El sistema es propietario y, originalmente, el algoritmo no se había publicado. Tras realizar ingeniería inversa del chip, investigadores de la Universidad de Virginia y del Chaos Computer Club descubrieron un ataque contra Crypto-1 que explotaba un generador de números aleatorios mal inicializado. [ 13 ]

Debian OpenSSL

En mayo de 2008, el investigador de seguridad Luciano Bello reveló su descubrimiento de que los cambios realizados en 2006 al generador de números aleatorios en la versión del paquete OpenSSL distribuida con Debian Linux y otras distribuciones basadas en Debian, como Ubuntu , redujeron la entropía total del ID del proceso y hicieron vulnerables a ataques a diversas claves de seguridad. [ 14 ] [ 15 ] La vulnerabilidad de seguridad fue causada por cambios realizados en el código openssl por un desarrollador de Debian en respuesta a advertencias del compilador sobre el acceso a memoria no inicializada . [ 16 ] Esto provocó una regeneración masiva de claves a nivel mundial y, a pesar de toda la atención que recibió el problema, se podría suponer que muchas de estas claves antiguas todavía están en uso. Los tipos de claves afectadas incluyen claves SSH , claves OpenVPN , claves DNSSEC , material de clave para usar en certificados X.509 y claves de sesión utilizadas en conexiones SSL/TLS . Las claves generadas con GnuPG o GNUTLS no se ven afectadas, ya que estos programas utilizan métodos diferentes para generar números aleatorios. Las claves generadas por distribuciones de Linux que no se basan en Debian tampoco se ven afectadas. La vulnerabilidad de generación de claves débiles se corrigió rápidamente tras su notificación, pero cualquier servicio que aún utilice claves generadas con el código antiguo sigue siendo vulnerable. Varios paquetes de software ahora incluyen comprobaciones contra una lista negra de claves débiles para intentar evitar el uso de cualquiera de estas claves débiles restantes, pero los investigadores siguen encontrando implementaciones de claves débiles. [ 17 ]

PlayStation 3

En diciembre de 2010, un grupo autodenominado fail0verflow anunció la recuperación de la clave privada del algoritmo de firma digital de curva elíptica (ECDSA) utilizado por Sony para firmar el software de la consola de videojuegos PlayStation 3. El ataque fue posible porque Sony no generó un nuevo nonce aleatorio para cada firma. [ 18 ]

Factorización de clave pública RSA

Un análisis que compara millones de claves públicas RSA recopiladas de Internet fue anunciado en 2012 por Lenstra, Hughes, Augier, Bos, Kleinjung y Wachter. Lograron factorizar el 0,2% de las claves usando solo el algoritmo de Euclides . [ 19 ] [ 20 ] Explotaron una debilidad única de los criptosistemas basados ​​en la factorización de enteros . Si n = pq es una clave pública y n ′ = pq es otra, entonces si por casualidad p = p , entonces un cálculo simple de mcd( n , n ′) = p factoriza tanto n como n ′, comprometiendo totalmente ambas claves. Nadia Heninger , parte de un grupo que realizó un experimento similar, dijo que las claves defectuosas ocurrieron casi exclusivamente en aplicaciones embebidas , y explica que el problema del primo compartido descubierto por los dos grupos resulta de situaciones en las que el generador de números pseudoaleatorios está mal inicializado y luego se vuelve a inicializar entre la generación del primer y segundo primo. [ 21 ]

Colisión de nonce de Java

En agosto de 2013, se reveló que errores en la clase Java SecureRandom podían generar colisiones en los valores k nonce utilizados para ECDSA en implementaciones de Bitcoin en Android . Cuando esto ocurría, se podía recuperar la clave privada, lo que a su vez permitía robar Bitcoins de la billetera que la contenía . [ 22 ]

Véase también

Referencias

  1. Michael Jenkins; Lydia Zieglar (28 de septiembre de 2018). "Perfil de gestión de certificados sobre CMS del conjunto de algoritmos comerciales de seguridad nacional (CNSA)" . Borrador del IETF draft-jenkins-cnsa-cmc-profile-00 . Agencia de Seguridad Nacional de EE. UU. El uso de generadores de números pseudoaleatorios (PRNG) inadecuados puede resultar en poca o ninguna seguridad. La generación de números aleatorios de calidad es difícil.
  2. Halprin, Ran; Naor, Moni. "Juegos para extraer aleatoriedad" (PDF) .
  3. Kelsey, J.; B. Schneier; D. Wagner; C. Hall (1998). "Ataques criptoanalíticos a generadores de números pseudoaleatorios" . Cifrado rápido de software, Actas del Quinto Taller Internacional . Springer-Verlag. págs. 168–188 . Recuperado el 15 de agosto de 2013 . 
  4. Goldberg, Ian; Wagner, David (enero de 1996). "Aleatoriedad y el navegador Netscape" . Dr. Dobb's Journal .
  5. Dorrendorf, Leo; Gutterman, Zvi; Pinkas, Benny (1 de octubre de 2009). "Criptoanálisis del generador de números aleatorios del sistema operativo Windows" (PDF) . ACM Transactions on Information and System Security . 13 (1): 1– 32. doi : 10.1145/1609956.1609966 . S2CID 14108026 . 
  6. 1 2 Keizer, Gregg (21 de noviembre de 2007). "Microsoft confirma que XP contiene un error en el generador de números aleatorios" . Computerworld . Archivado del original el 14 de agosto de 2014. Recuperado el 15 de agosto de 2013 .
  7. Barker, Elaine; Kelsey, John (enero de 2012). "Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas" (PDF) . NIST . doi : 10.6028/NIST.SP.800-90A . Archivado del original (PDF) el 9 de octubre de 2013. Consultado el 15 de agosto de 2013 .
  8. 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 11 de mayo de 2008.URL alternativa
  9. Shumow, Dan; Ferguson, Niels (21 de agosto de 2007). "Sobre la posibilidad de una puerta trasera en el NIST SP800-90 Dual Ec Prng" (PDF) . cr.yp.to/ .
  10. Perlroth, Nicole (10 de septiembre de 2013). "El gobierno anuncia medidas para restaurar la confianza en los estándares de cifrado" . The New York Times .
  11. Menn, Joseph (20 de diciembre de 2013). "Exclusiva: Contrato secreto vincula a la NSA con un pionero de la industria de la seguridad" . Reuters . San Francisco . Consultado el 20 de diciembre de 2013 .
  12. "El NIST elimina el algoritmo de criptografía de las recomendaciones para generadores de números aleatorios" . Instituto Nacional de Estándares y Tecnología . 21 de abril de 2014.
  13. Nohl, Karsten; David Evans; Starbug Starbug; Henryk Plötz (31 de julio de 2008). "Ingeniería inversa de una etiqueta RFID criptográfica" . Actas del 17.º Simposio de la Conferencia sobre Seguridad SS'08. USENIX : 185–193 .
  14. "DSA-1571-1 openssl -- generador de números aleatorios predecibles" . Aviso de seguridad de Debian . 13 de mayo de 2008.
  15. "CVE-2008-0166" . CVE . 9 de enero de 2008. OpenSSL 0.9.8c-1 hasta versiones anteriores a 0.9.8g-9 en sistemas operativos basados ​​en Debian utiliza un generador de números aleatorios que genera números predecibles, lo que facilita a los atacantes remotos realizar ataques de fuerza bruta contra claves criptográficas.
  16. Schneier, Bruce (19 de mayo de 2008). "Error de números aleatorios en Debian Linux" .
  17. "Claves SSH comprometidas utilizadas para acceder a Spotify y repositorios de GitHub del gobierno del Reino Unido" . The Register .
  18. Bendel, Mike (29/12/2010). "Los hackers describen la seguridad de la PS3 como un fracaso épico y obtienen acceso sin restricciones" . www.exophase.com . Consultado el 05/01/2011 .
  19. Markoff, John (14 de febrero de 2012). "Se encuentra una falla en un método de cifrado en línea" . The New York Times .
  20. Lenstra, Arjen; Hughes, James P.; Augier, Maxime; Bos, Joppe Willem; Kleinjung, Thorsten; Wachter, Christophe (2012). "Ron estaba equivocado, Whit tiene razón" (PDF) . Santa Bárbara: IACR: 17.{{cite journal}}: Para citar una revista se requiere |journal=( ayuda )
  21. Heninger, Nadia (15 de febrero de 2012). "Nueva investigación: No hay necesidad de entrar en pánico por las claves factorizables; solo hay que tener cuidado con los detalles" . Freedom to Tinker . Archivado del original el 24 de diciembre de 2016. Recuperado el 27 de noviembre de 2020 .
  22. Chirgwin, Richard (12 de agosto de 2013). "Un error de Android perjudica a las carteras de Bitcoin" . The Register .

Lecturas adicionales

  • Gutterman, Zvi; Benny Pinkas; Tzachy Reinman (2006). «Análisis del generador de números aleatorios de Linux» (PDF) . Simposio IEEE de 2006 sobre seguridad y privacidad (S&P'06) . pág.  385. doi : 10.1109/SP.2006.5 . ISBN 978-0-7695-2574-7. S2CID 6385808 . 
  • Eastlake, D.; J. Schiller; S. Crocker (junio de 2005). "Requisitos de aleatoriedad para la seguridad" . RFC . IETF .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Random_number_generator_attack&oldid=1328340597 "