Puerta trasera

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 1 de octubre de 2022; la verificación requiere 1 edición .

Puerta trasera , entrada secreta (del inglés  puerta trasera  - "puerta trasera", literalmente "puerta trasera") - un defecto en el algoritmo que el desarrollador incorpora deliberadamente y permite el acceso no autorizado a los datos o el control remoto del sistema operativo y la computadora como un todo [1 ] .

El objetivo principal de una puerta trasera es obtener acceso rápido y encubierto a los datos, en la mayoría de los casos encriptados y protegidos. Por ejemplo, se puede incorporar una puerta trasera en el algoritmo de encriptación para que un atacante realice escuchas telefónicas posteriores del canal seguro [1] [2] .

Principales propiedades del backdoor

La puerta trasera perfecta
  • difícil de detectar;
  • se puede utilizar repetidamente;
  • es fácil de negar: parece un error y, en caso de detección, el desarrollador puede decir que cometió este error por accidente y no tuvo malas intenciones;
  • explotamos solo si conocemos el secreto: solo quien sabe cómo se activa la puerta trasera puede usarlo;
  • protegido contra compromiso por usos anteriores: incluso si se descubrió una puerta trasera, es imposible establecer quién la explotó previamente y de qué información se apoderó el atacante;
  • difícil de repetir: incluso si alguien encontró la puerta trasera, no será posible usarla en otro código o en otro dispositivo.
Principios comunes para crear puertas traseras en algoritmos
  • débil resistencia del algoritmo al criptoanálisis ;
  • constantes especialmente seleccionadas: el algoritmo puede volverse inestable para el criptoanálisis al elegir ciertos valores de las constantes utilizadas en su trabajo;
  • complejidad en una implementación segura: esto significa que la implementación segura del algoritmo es demasiado lenta y todos usarán la opción insegura, lo que es beneficioso para el atacante.

Ejemplos hipotéticos de puertas traseras en algoritmos modernos

Vulnerabilidad del generador de secuencias pseudoaleatorias DUAL_EC_DRBG

Este generador fue desarrollado por la NSA y estandarizado como un generador de números pseudoaleatorios criptográficamente fuerte por el Instituto Nacional de Estándares y Tecnología de EE. UU . NIST en 2006. Sin embargo, ya en 2007, investigadores independientes sugirieron que se podría incorporar una puerta trasera en este algoritmo. [3] [4] [5]

Una ilustración del funcionamiento del algoritmo según la especificación NSA [6] :

Este algoritmo utiliza curvas elípticas.  - el generador de un grupo de puntos en una curva elíptica,  - un punto en una curva elíptica - una constante definida por el estándar, se desconoce cómo fue elegida. Los parámetros de la propia curva también los establece el estándar.

Principio de funcionamiento:

Ecuación de la curva

se puede reescribir en la forma y escribir las siguientes expresiones para el funcionamiento del algoritmo:

. .  — el estado interno del generador en el paso actual  - el estado interno del generador en el siguiente paso  — salida del generador en el paso actual Supuesta puerta trasera:

Como  es un número primo , entonces existe un número tal que . Encontrar  es un problema computacionalmente difícil de logaritmo discreto en una curva elíptica, para el cual actualmente no existen algoritmos eficientes. Pero si asumimos que el atacante sabe , entonces se obtiene el siguiente ataque: Si  es la siguiente salida del generador, y si existe tal que , entonces el punto se encuentra en la curva y se cumple la siguiente igualdad: . Conociendo el número , puedes calcular: . Por lo tanto, un atacante que conoce el número no solo puede calcular la siguiente salida del generador, sino también enumerar rápidamente todos los estados internos posibles del generador y restaurar su estado interno inicial. Según estudios independientes [2] [7] , con conocimiento , solo 30 bytes de la secuencia de salida del generador son suficientes para restaurar su estado interno inicial mediante una simple enumeración de valores. Según los investigadores, dicha vulnerabilidad puede considerarse como una puerta trasera.

Error en la implementación de Apple del protocolo de verificación de certificados TLS

Los investigadores de Yandex han descubierto una vulnerabilidad en la implementación del protocolo TLS en uno de los productos de software de Apple [2] . En su opinión, este error bien puede resultar ser una puerta trasera integrada deliberadamente en el algoritmo por uno de los desarrolladores.

Sección de código con un error: estático DSStatus SSLVerifySignedServerKeyExchnge (....) { DSStatus err ; .... si (( err = SSLHashSHA1 . actualización ( & hashCtx , & SignedParams )) != 0 ) ir a fallar ; ir a fallar ; si (( SSHashSHA1 . final ( & hashCtx , & hashOut )) != 0 ) ir a fallar ; .... fallar : .... devolver error ; }

Como puede ver, hay dos líneas de goto fail después de la primera instrucción if , y la segunda línea siempre se ejecuta, independientemente del resultado de if . Por lo tanto, el procedimiento de verificación del certificado está incompleto. Un atacante con conocimiento de esta vulnerabilidad podría falsificar el certificado y ser autenticado. Esto le permitirá organizar un ataque man-in-the-middle , interfiriendo así con la conexión segura entre el cliente y el servidor. Los investigadores que descubrieron este error en la implementación no pueden decir con certeza si fue intencional o accidental. Es muy posible que se trate de una puerta trasera integrada en el algoritmo por uno de los desarrolladores.

Ejemplos de métodos para crear puertas traseras

Constantes especialmente elegidas

Muchos algoritmos criptográficos modernos utilizan un cierto conjunto de constantes internas en su trabajo. Por regla general, estas constantes están especificadas por el estándar y se eligen por razones de resistencia criptográfica a los tipos de criptoanálisis actualmente conocidos . Pero, en teoría, los desarrolladores pueden utilizar la elección de constantes al estandarizar un algoritmo con intenciones maliciosas: por ejemplo, para crear ciertas vulnerabilidades y puertas traseras en el algoritmo.

Como ejemplo del uso de constantes, podemos citar trabajos de investigación recientes sobre el tema del llamado "hashing malicioso" [8] [9] , donde los autores lograron construir colisiones para la función hash criptográfica SHA1 modificando sus constantes redondas. Tenga en cuenta que el ataque propuesto por los autores del estudio no es un ataque a la función hash SHA1 en sí , solo permite encontrar colisiones si las constantes de ronda se pueden cambiar y solo para ciertos tipos de archivos.

Breve descripción de SHA1 :

SHA1  es una función hash redonda moderna. El algoritmo hash es el siguiente:

  • Se inicializan los valores de 32 bits
  • El mensaje de entrada se divide en bloques de 512 bits
  • Cada bloque de mensajes se procesa y complementa de forma especial, según el algoritmo definido en el estándar.
  • El bloque de mensaje recibido se procesa en 4 etapas de 20 rondas cada una, y cada etapa usa su propia constante o
  • La salida de la función para cada bloque serán nuevos valores que se suman al resultado:
  • El resultado final del hash será un valor de 160 bits obtenido al concatenar cinco valores de 32 bits después de procesar el último bloque del mensaje.
Colisiones de edificios:

El propósito del ataque considerado es encontrar tales constantes y tales mensajes y , eso . Este ataque modifica solo los primeros 512 bits (bloque 1) de los mensajes para los que se requiere construir una colisión. El algoritmo se basa en el conocido ataque de diferencia en SHA1 propuesto en 2005 [10] [11] y tiene complejidad en el orden de las operaciones, lo que dificulta su implementación en la práctica. Por lo tanto, hasta ahora no se han encontrado colisiones reales para SHA1 .

Pero en el caso de crear una versión maliciosa de SHA1 , un atacante puede variar no sólo los bloques de mensajes y , sino también las constantes redondas . Según la investigación [9] , esto reduce en gran medida la complejidad del ataque al orden de las operaciones y convierte la construcción de este tipo de colisiones en una tarea real que se puede realizar en varios ordenadores. Por lo tanto, los autores del estudio lograron construir colisiones de un solo bloque para muchos tipos de archivos conocidos.

Colisión de un solo bloque:

y  - los primeros bloques de mensajes (512 bits) que difieren entre sí, pero dan la misma suma hash  - el resto del contenido, que es el mismo para ambos archivos Un ejemplo del uso de hashing malicioso para crear puertas traseras

Usando el ataque descrito, se crearon dos sh-scripts que, cuando se seleccionan , dan la misma suma de hash SHA1, pero funcionan de manera diferente.

Como puede ver, la diferencia entre estos dos scripts está solo en los primeros bloques de 512 bits, que son basura comentada. Pero el contenido de estos bloques luego se usa en la condición if , por lo tanto, los scripts se comportan de manera diferente cuando se ejecutan. Dichos archivos pueden ser utilizados por el creador con intenciones maliciosas.

Puertas traseras de hardware

Las puertas traseras se pueden integrar no solo en el software, sino también en el hardware. Los fabricantes de hardware pueden utilizar estas puertas traseras para incorporar funciones maliciosas en la etapa de producción.

Las puertas traseras de hardware tienen una serie de ventajas sobre las de software:

  • No puede ser detectado por antivirus , escáneres de código y otro software de seguridad.
  • No se puede solucionar actualizando o reemplazando el software.

Un ejemplo de una puerta trasera de hardware sería un firmware de BIOS malicioso . Según los estudios [12] , dicho firmware se puede construir sobre la base del firmware gratuito Coreboot [13] y SeaBIOS . Coreboot no es un BIOS completo: solo es responsable de detectar el hardware disponible en la máquina y transferir el control al propio "relleno del BIOS", que puede ser utilizado como SeaBIOS modificado por un atacante para adaptarse a sus necesidades .

El principio de funcionamiento del firmware malicioso se puede describir brevemente de la siguiente manera: inmediatamente después de que se enciende la computadora infectada, incluso antes de que se cargue el sistema operativo, intenta establecer una conexión con el servidor del atacante a través de Internet. Si tal intento tiene éxito, entonces se descarga algún bootkit de forma remota , lo que a su vez brinda al atacante la oportunidad de realizar acciones maliciosas con la computadora infectada: robo de datos o control remoto . Si falla el intento de conectarse a Internet, el sistema operativo se carga normalmente. Una ventaja indudable para un atacante es que el firmware modificado en sí no contiene ningún código malicioso y los bootkits son difíciles de detectar.

Notas

  1. 1 2 J. P. Aumasson Cryptographic bacdooring Archivado el 21 de diciembre de 2019 en Wayback Machine .
  2. 1 2 3 Evgeny Sidorov, Errores criptográficos y puertas traseras Archivado el 8 de diciembre de 2015 en Wayback Machine , reunión de seguridad de Yandex, 24/07/2015
  3. Dan Shumow, Niels Ferguson, On the Possibility of a Back Door in the NIST SP800-90 Dual Ec Prng Archivado desde el original el 26 de febrero de 2014. , CRIPTO 2007, agosto de 2007
  4. Bruce Schneier . ¿La NSA puso una puerta trasera secreta en el nuevo estándar de cifrado? , Wired News  (15 de noviembre de 2007). Archivado desde el original el 19 de septiembre de 2012.
  5. Kiwi Bird, Accidentes no aleatorios Archivado el 13 de marzo de 2016 en Wayback Machine // Computerra, 7 de diciembre de 2007
  6. John Bryson, Patrick Gallagher, Recomendación para la generación de números aleatorios mediante generadores de bits aleatorios deterministas Archivado el 20 de febrero de 2016 en Wayback Machine , p. 60, 2012
  7. Dan Shumow, Niels Ferguson, On the Possibility of a Back Door in the NIST SP800-90 Dual Ec Prng Archivado desde el original el 26 de febrero de 2014. , páginas 6-7, CRYPTO 2007, agosto de 2007
  8. Ange Albertini, Jean-Philippe Aumasson, Maria Eichlseder, Florian Mendel, Martin Schlaeffer, Malicious SHA-1 Archivado el 10 de enero de 2016 en Wayback Machine , 14/8/2014
  9. 1 2 Ange Albertini, Jean-Philippe Aumasson, Maria Eichlseder, Florian Mendel, Martin Schlaffer, Malicious Hashing: Eve's Variant of SHA-1 Archivado el 22 de octubre de 2015 en Wayback Machine , 2014
  10. Wang, X., Yao, AC, Yao, Criptoanálisis en SHA-1. NIST: primer taller de hash criptográfico. Archivado el 7 de noviembre de 2016 en Wayback Machine , el 31 de octubre de 2005.
  11. Wang, X., Yin, YL, Yu, H., Encontrar colisiones en el SHA1 completo Archivado el 30 de abril de 2015 en Wayback Machine , CRYPTO 2005
  12. Jonathan Brossard, Hardware Backdoors Are Practical Archivado el 8 de diciembre de 2015 en Wayback Machine , 12 de marzo de 2012
  13. Free BIOS Project Overview - Coreboot Archivado el 8 de diciembre de 2015 en Wayback Machine , el 9 de octubre de 2014

Enlaces

Véase también