stringtranslate.com

Ataque con generador de números aleatorios

La seguridad de los sistemas criptográficos depende de algunos datos secretos que son conocidos por las personas autorizadas, pero desconocidos e impredecibles para otros. 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 para la seguridad, y la falta de calidad generalmente genera vulnerabilidades de ataque y, por lo tanto, conduce a la falta de seguridad, incluso al compromiso total, en los sistemas criptográficos. [1] El proceso RNG es particularmente atractivo para los atacantes porque normalmente se trata de un único componente de hardware o software aislado 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 no sea detectable por ninguna prueba previa de los bits. Además, tales ataques requieren solo un acceso único 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 seres humanos, en general, no son capaces de generar cantidades aleatorias. Los magos, los jugadores profesionales y los estafadores dependen de la previsibilidad del comportamiento humano. En la Segunda Guerra Mundial, los empleados alemanes encargados de codificar recibieron instrucciones de seleccionar tres letras al azar para que fueran la configuración inicial del rotor de cada mensaje de la máquina Enigma . En cambio, algunos eligieron valores predecibles, como las iniciales propias o las de una novia, lo que ayudó en gran medida a los aliados a descifrar estos sistemas de cifrado. Otro ejemplo son las formas, a menudo predecibles, en que los usuarios de ordenadores eligen 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 de software

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

Ataque criptoanalítico directo
cuando un atacante obtiene parte del flujo de bits aleatorios y puede usarlo para distinguir la salida RNG de un flujo verdaderamente aleatorio.
Ataques basados ​​en entrada
modificar la entrada al RNG para atacarlo, por ejemplo, "eliminando" la entropía existente del sistema y poniéndolo en un estado conocido.
Ataques de extensión de compromiso estatal
Cuando se conoce el estado secreto interno del RNG en algún momento, se utiliza para predecir la salida futura o para recuperar salidas 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 estimación inicial del estado.

Generadores de números aleatorios de hardware

Son posibles varios ataques a los generadores de números aleatorios de hardware , incluyendo intentar 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 introducir señales controladas en una fuente supuestamente aleatoria (como apagar las luces de una lámpara de lava o introducir una señal potente y conocida en una tarjeta de sonido).

Subversión del RNG

Se pueden crear números aleatorios alterados 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 para evitar 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 serial, recopilarse en una utilidad del sistema operativo y recuperarse mediante una llamada al sistema. Los bits alterados pueden sustituirse en cualquier punto de este proceso con pocas probabilidades 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 un chip de este tipo en cualquier lugar antes 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 al ordenador. El chip de subversión 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 ejecuten las pruebas de aceptación, o puede contener un receptor de radio para el control de encendido y apagado. Puede ser instalado por el fabricante a instancias de su servicio nacional de inteligencia de señales, o añadido más tarde por cualquier persona con acceso físico. Los chips de CPU con generadores de números aleatorios de hardware integrados se pueden reemplazar por chips compatibles con un RNG subvertido en el firmware de los chips.

Defensas

El diseño de un generador de números aleatorios seguro requiere al menos un nivel de cuidado tan alto como 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 PRNG con tres valores variables: la hora del día, el identificador del proceso y el identificador del proceso padre. Estas cantidades suelen ser 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 del lanzamiento. El problema en el código en ejecución fue descubierto en 1995 por Ian Goldberg y David Wagner , [4] que 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 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 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 artículo presentó graves debilidades en el enfoque de Microsoft en ese momento. Las conclusiones del artículo se basaron en el desensamblaje del código en Windows 2000, pero según Microsoft también se aplicaron a Windows XP. [6] Microsoft ha declarado que los problemas descritos en el artículo se han abordado 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 Estados Unidos 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 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 podrí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 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 fuera el algoritmo predeterminado en su software de cifrado, y planteó más preocupaciones 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 realicen la transición a uno de los tres algoritmos aprobados restantes lo más rápidamente posible". [12]

Criptografía MIFARE-1

Crypto-1 es un criptosistema desarrollado por NXP para su uso en chips MIFARE . El sistema es propietario y, en un principio, el algoritmo no se publicó. Tras aplicar ingeniería inversa al chip, investigadores de la Universidad de Virginia y del Chaos Computer Club descubrieron 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 al 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 hicieron que una variedad de claves de seguridad fueran vulnerables a ataques. [14] [15] La debilidad de seguridad fue causada por cambios realizados al código openssl por un desarrollador de Debian en respuesta a las advertencias del compilador de código aparentemente redundante. [16] Esto causó una regeneración masiva mundial de claves y, a pesar de toda la atención que recibió el problema, se podría asumir 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 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 usaron métodos diferentes 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 fue rápidamente corregida después de que se informó de ella, pero todos los servicios que todavía utilizan claves generadas por el código antiguo siguen siendo vulnerables. Varios paquetes de software contienen ahora comprobaciones con una lista negra de claves débiles para intentar impedir 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 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

En 2012, Lenstra, Hughes, Augier, Bos, Kleinjung y Wachter anunciaron un análisis que comparaba millones de claves públicas RSA obtenidas de Internet. Fueron capaces de 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 ′, comprometiendo totalmente ambas claves. Nadia Heninger , parte de un grupo que realizó un experimento similar, dijo que las claves incorrectas ocurrieron casi en su totalidad en aplicaciones integradas , y explica que el problema del primo compartido descubierto por los dos grupos es resultado de situaciones en las que el generador de números pseudoaleatorios está mal inicializado y luego resembrado entre la generación del primer y el segundo primo. [21]

Colisión de nonce en Java

En agosto de 2013, se reveló que errores en la clase Java SecureRandom podían generar colisiones en los valores nonce k utilizados para ECDSA en las 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 la suite de algoritmos de seguridad nacional comercial (CNSA) de gestión de certificados sobre CMS". Borrador de la 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, 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". 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) . ACM Transactions on Information and System Security . 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". Computerworld .
  7. ^ Barker, Elaine; Kelsey, John (enero de 2012). "Recomendación para la generación de números aleatorios utilizando generadores de bits aleatorios deterministas" (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?". Wired . 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". The New York Times .
  11. ^ Menn, Joseph (20 de diciembre de 2013). "Exclusiva: contrato secreto vincula a la NSA y a un pionero de la industria de seguridad". Reuters . San Francisco . Consultado el 20 de diciembre de 2013 .
  12. ^ "NIST elimina algoritmo de criptografía de recomendaciones de 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". SS'08 Actas de la 17.ª Conferencia sobre Simposio de 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 para adivinar 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 a los repositorios de GitHub del gobierno del Reino Unido". The Register .
  18. ^ Bendel, Mike (29 de diciembre de 2010). "Los piratas informáticos describen la seguridad de PS3 como un fracaso épico y obtienen acceso sin restricciones". Exophase.com . Consultado el 5 de enero de 2011 . {{cite news}}: Enlace externo en |publisher=( ayuda )
  19. ^ Markoff, John (14 de febrero de 2012). "Se encuentra un fallo 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}}: Requiere citar revista |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 las P y las Q". Libertad para experimentar . 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). "Un error de Android afecta a las billeteras de Bitcoin". The Register .

Lectura adicional