stringtranslate.com

Ataque de generador de números aleatorios

La seguridad de los sistemas criptográficos depende de algunos datos secretos que las personas autorizadas conocen pero que otros desconocen e impredecibles. Para lograr esta imprevisibilidad, normalmente se emplea cierta aleatorización . Los protocolos criptográficos modernos suelen requerir 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 .

Casi siempre se requiere un proceso de generación de números aleatorios (RNG) de alta calidad por razones de seguridad, y la falta de calidad generalmente proporciona vulnerabilidades de ataque y, por lo tanto, conduce a una falta de seguridad, incluso a un compromiso total, en los sistemas criptográficos. [1] El proceso RNG es particularmente atractivo para los atacantes porque normalmente es 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 queda totalmente comprometida, pero generalmente es indetectable mediante cualquier prueba ascendente de los bits. Además, dichos ataques requieren un único acceso al sistema que está siendo comprometido. No es necesario devolver datos, 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 seres humanos generalmente no logran generar cantidades aleatorias. Los magos, los jugadores profesionales y los estafadores dependen de la previsibilidad del comportamiento humano. En la Segunda Guerra Mundial, los codificadores alemanes recibieron instrucciones de seleccionar tres letras al azar para ser la configuración inicial del rotor para cada mensaje de la máquina Enigma . En lugar de eso, algunos eligieron valores predecibles como sus propias iniciales o las de una novia, lo que ayudó enormemente a los aliados a romper estos sistemas de cifrado. Otro ejemplo son las formas a menudo predecibles en que los usuarios de computadoras eligen sus contraseñas (ver descifrado de contraseñas ).

Sin embargo, en el caso específico de los 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

RNG de software

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

Ataque criptoanalítico directo
cuando un atacante obtuvo parte del flujo de bits aleatorios y puede usarlo para distinguir la salida RNG de un flujo verdaderamente aleatorio.
Ataques basados ​​en entradas
modifique la entrada al RNG 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 conozca el estado secreto interno del RNG en algún momento, utilícelo para predecir resultados futuros o recuperar resultados anteriores. Esto puede suceder cuando un generador se inicia y tiene poca o ninguna entropía (especialmente si la computadora acaba de iniciarse y siguió una secuencia de operaciones muy estándar), por lo que un atacante puede obtener una suposición inicial del estado.

RNG de hardware

Son posibles varios ataques a los generadores de números aleatorios de hardware , incluido el intento de capturar emisiones de radiofrecuencia de la computadora (obteniendo tiempos de interrupción del disco duro a partir del ruido del motor, por ejemplo), o intentar alimentar señales controladas a una fuente supuestamente aleatoria (como (como apagar las luces de una lámpara de lava o enviar una señal fuerte y conocida a una tarjeta de sonido).

subversión RNG

Se pueden crear números aleatorios subvertidos utilizando un generador de números pseudoaleatorios criptográficamente seguro con un valor inicial conocido por el atacante pero oculto en el software. Una porción relativamente corta, digamos de 24 a 40 bits, de la semilla puede ser verdaderamente aleatoria para evitar repeticiones reveladoras, pero no lo suficientemente larga como para evitar que el atacante recupere, digamos, una clave producida "al azar".

Los números aleatorios suelen pasar por varias capas de hardware y software antes de utilizarse. 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 subvertidos pueden sustituirse en cualquier punto de este proceso con poca probabilidad de detección.

Se puede construir un circuito de hardware para producir bits subvertidos en un circuito integrado de unos pocos milímetros cuadrados. El generador de números aleatorios de hardware más sofisticado se puede subvertir colocando dicho chip en cualquier lugar aguas arriba de donde se digitaliza la fuente de aleatoriedad, por ejemplo en un chip controlador de salida o incluso en el cable que conecta el RNG a la computadora. El chip de subversión puede incluir un reloj para limitar el inicio de la operación a algún tiempo después de que la unidad se enciende por primera vez y pasa por las pruebas de aceptación, o puede contener un receptor de radio para control de encendido/apagado. Podría ser instalado por el fabricante a instancias de su servicio nacional de inteligencia de señales, o cualquier persona con acceso físico podría agregarlo más tarde. Los chips de CPU con generadores de números aleatorios de hardware incorporados pueden ser reemplazados por chips compatibles con un RNG subvertido en el firmware de los chips.

Defensas

Diseñar un generador de números aleatorios seguro requiere al menos un nivel de cuidado tan alto como diseñar otros elementos de un sistema criptográfico.

Ejemplos destacados

Semilla de Netscape predecible

Las primeras versiones del protocolo de cifrado Secure Sockets Layer (SSL) de Netscape utilizaban cantidades pseudoaleatorias derivadas de un PRNG sembrado con tres valores variables: la hora del día, el ID del proceso y el ID del proceso principal. Estas cantidades son a menudo relativamente predecibles, por lo que tienen poca entropía y son menos que aleatorias, por lo que se descubrió que esa versión de SSL era insegura. El problema fue informado a Netscape en 1994 por Phillip Hallam-Baker , entonces investigador del equipo web del CERN, pero no se solucionó antes de su lanzamiento. El problema en el código en ejecución fue descubierto en 1995 por Ian Goldberg y David Wagner , [4] quienes tuvieron que aplicar ingeniería inversa al código objeto porque Netscape se negó a revelar los detalles de su generación de números aleatorios ( seguridad por oscuridad ). Ese RNG se solucionó en versiones posteriores (versión 2 y superiores) mediante una siembra 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 de Microsoft Windows 2000/XP

Microsoft utiliza un algoritmo inédito para generar valores aleatorios para su sistema operativo Windows . Estas cantidades aleatorias se ponen a disposición de los usuarios a través de la utilidad CryptGenRandom . En noviembre de 2007, Leo Dorrendorf et al. 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 documento presentaba serias debilidades en el enfoque de Microsoft en ese momento. Las conclusiones del documento se basaron en el desensamblaje del código en Windows 2000, pero según Microsoft también se aplica a Windows XP. [6] Microsoft ha declarado que los problemas descritos en el documento se han solucionado en versiones posteriores de Windows, que utilizan una implementación de RNG diferente. [6]

Posible puerta trasera en Elliptic Curve DRBG

El Instituto Nacional de Estándares y Tecnología de EE. UU. ha publicado una colección de "generadores deterministas de bits aleatorios" que recomienda como Publicación especial NIST 800-90. [7] Uno de los generadores, Dual_EC_DRBG , fue favorecido 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 americano. En diciembre de 2013, Reuters informó que los 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 fuera el predeterminado en su software de cifrado, y plantearon más preocupaciones de que el algoritmo pudiera contener una puerta trasera para la NSA. [11] Debido a estas preocupaciones, en 2014, 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 hagan la transición a uno de los tres algoritmos aprobados restantes lo más rápido 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 ha sido publicado. Tras realizar ingeniería inversa al chip, investigadores de la Universidad de Virginia y el Chaos Computer Club encontraron un ataque a Crypto-1 que explotaba un generador de números aleatorios mal inicializado. [13]

OpenSSL de Debian

En mayo de 2008, el investigador de seguridad Luciano Bello reveló su descubrimiento de que los cambios realizados en 2006 en el generador de números aleatorios en la versión del paquete OpenSSL distribuido con Debian Linux y otras distribuciones basadas en Debian, como Ubuntu , redujeron drásticamente la entropía de los valores generados. e hizo que una variedad de claves de seguridad fueran vulnerables a ataques. [14] [15] La debilidad de la seguridad fue causada por cambios realizados en el código openssl por un desarrollador de Debian en respuesta a advertencias del compilador de código aparentemente redundante. [16] Esto provocó una regeneración masiva de claves en todo el mundo 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 afectados incluyen claves SSH , claves OpenVPN , claves DNSSEC , material de claves para uso 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 utilizaron diferentes métodos para generar números aleatorios. Las claves generadas por distribuciones de Linux no basadas en Debian tampoco se ven afectadas. La vulnerabilidad de generación de claves débiles se corrigió rápidamente después de que se informó, pero cualquier servicio que aún use claves generadas por el código anterior sigue siendo vulnerable. Varios paquetes de software contienen ahora comprobaciones de una lista negra de claves débiles para intentar evitar el uso de cualquiera de estas claves débiles restantes, pero los investigadores continúan encontrando implementaciones de claves débiles. [17]

Playstation 3

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

Factorización de clave pública RSA

Lenstra, Hughes, Augier, Bos, Kleinjung y Wachter anunciaron en 2012 un análisis que compara millones de claves públicas RSA recopiladas de Internet. Pudieron factorizar el 0,2% de las claves utilizando únicamente el algoritmo de Euclides . [19] [20] Explotaron una debilidad exclusiva de los criptosistemas basados ​​en la factorización de números enteros . Si n = pq es una clave pública y n ′ = pq es otra, entonces, si por casualidad p = p , entonces un simple cálculo de mcd( n , n ′) = p factoriza tanto n como n ′, totalmente comprometiendo ambas claves. Nadia Heninger , parte de un grupo que hizo un experimento similar, dijo que las claves defectuosas ocurrían casi exclusivamente en aplicaciones integradas , y explica que el problema de un número primo compartido descubierto por los dos grupos resulta de situaciones en las que el generador de números pseudoaleatorios no funciona correctamente. sembrado inicialmente y luego resembrado entre la generación del primer y segundo primo. [21]

Colisión nonce de Java

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

Ver también

Referencias

  1. ^ Michael Jenkins; Lydia Zieglar (28 de septiembre de 2018). "Perfil de la suite de gestión de certificados sobre CMS del algoritmo de seguridad nacional comercial (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 generar poca o ninguna seguridad. La generación de números aleatorios de calidad es difícil.
  2. ^ Halprin, corrió; Naor, Moni. "Juegos para extraer aleatoriedad" (PDF) .
  3. ^ Kelsey, J.; B. Schneier; D. Wagner; C. Salón (1998). "Ataques criptoanalíticos a generadores de números pseudoaleatorios". Fast Software Encryption, actas del quinto taller internacional . Springer-Verlag. págs. 168–188 . Consultado el 15 de agosto de 2013 .
  4. ^ Goldberg, Ian; Wagner, David (enero de 1996). "Aleatoriedad y navegador Netscape". Diario del Dr. Dobb .
  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) . Transacciones ACM sobre Seguridad de la Información y Sistemas . 13 (1): 1–32. doi :10.1145/1609956.1609966. S2CID  14108026.
  6. ^ ab Keizer, Gregg (21 de noviembre de 2007). "Microsoft confirma que XP contiene un error en el generador de números aleatorios". Mundo de la informática .
  7. ^ Ladrador, Elaine; Kelsey, John (enero de 2012). "Recomendación para la generación de números aleatorios mediante generadores deterministas de bits aleatorios" (PDF) . NIST . doi :10.6028/NIST.SP.800-90A.
  8. ^ Schneier, Bruce (15 de noviembre de 2007). "¿La NSA puso una puerta trasera secreta en el nuevo estándar de cifrado?". Cableado . Archivado desde el 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 restablecer la confianza en los estándares de cifrado". Los New York Times .
  11. ^ Menn, Joseph (20 de diciembre de 2013). "Exclusivo: contrato secreto vinculado a la NSA y al pionero de la industria de la seguridad". Reuters . San Francisco . Consultado el 20 de diciembre de 2013 .
  12. ^ "NIST elimina el algoritmo de criptografía de las recomendaciones del generador 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). "Realización de ingeniería inversa en una etiqueta RFID criptográfica". SS'08 Actas del 17º Simposio de la Conferencia sobre Seguridad . SS'08. USÉNIX : 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 atacantes remotos realizar ataques de adivinación 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, repositorios de GitHub del gobierno del Reino Unido". El registro .
  18. ^ Bendel, Mike (29 de diciembre de 2010). "Los piratas informáticos describen la seguridad de PS3 como un error épico y obtienen acceso sin restricciones". Exofase.com . Consultado el 5 de enero de 2011 . {{cite news}}: Enlace externo en |publisher=( ayuda )
  19. ^ Markoff, John (14 de febrero de 2012). "Defecto encontrado en un método de cifrado en línea". Los 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}}: Citar diario 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 tenga en cuenta sus P y Q". Libertad para jugar . Archivado desde el original el 24 de diciembre de 2016 . Consultado el 27 de noviembre de 2020 .
  22. ^ Chirgwin, Richard (12 de agosto de 2013). "El error de Android afecta las billeteras de Bitcoin". El registro .

Otras lecturas