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.
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]
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] ):
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).
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.
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.
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).
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]
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]
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]
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]
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]
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 ′ = p ′ q ′ 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]
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]
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.
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.
{{cite news}}
: Enlace externo en |publisher=
( ayuda ){{cite journal}}
: Citar diario requiere |journal=
( ayuda )