Con SSL / TLS, ¿el intercambio previo de un certificado es fundamental para evitar un MITM activo inicial?

1

Primero, tengo algunas preguntas conceptuales, y luego algunas preguntas más específicas con respecto a la implementación de HTTPS.

  1. En un sistema extremadamente simple con solo 2 hosts (A y B) que hablan en una LAN pero un MITM activo en la LAN (Z), que está activo desde el principio y es capaz de interceptar y modificar completamente las primeras conexiones entre los 2 hosts A y B, es cierto que fundamentalmente, algunos datos deben compartirse fuera de banda para evitar este escenario de ataque, ¿correcto?

    En otras palabras: no existe un algoritmo, protocolo o truco matemático que permita que el host A se conecte a B por primera vez, teniendo absolutamente no conocimiento previo de B, y de alguna manera afirmar que B no es un MITM, ¿correcto? Sé que esta pregunta puede sonar obvia, porque la verdad es que si A no tiene ningún conocimiento de B, entonces no hay nada que distinga a B de Z a A, pero necesito escucharlo de los expertos.

  2. Así es exactamente cómo funciona la PKI en Internet, ¿verdad? Debido a que el certificado de un servidor está firmado por una clave privada de la CA, pero el certificado público de la CA se compartió efectivamente de antemano y fuera de banda (cuando compró la computadora o el disco del sistema operativo, ya estaba en el navegador software).

  3. ¿También es cierto que un certificado emitido por CA en comparación con un certificado autofirmado solo proporciona un beneficio logístico en forma de escalabilidad? (en comparación con un mundo hipotético donde todas las partes compartieron certificados de forma segura, fuera de banda) En otras palabras, cada sitio en Internet intentó utilizar certificados autofirmados, luego técnicamente todavía podría ser seguro si para Por ejemplo, amazon.com y yo nos comunicamos fuera de banda y amazon compartió su certificado (de manera que pudiera establecer la confianza de que el certificado proporcionado era en realidad de Amazon), así que podría validar las conexiones futuras, ¿verdad? Pero el problema sería la necesidad de realizar este paso fuera de banda para cada sitio web.

Ahora en un problema de implementación relacionado.

Imagine un sistema informático hipotético autónomo con aproximadamente 100 hosts en una LAN privada. 1 host es el "maestro" e inicialmente se instala manualmente (desde un disco, unidad o algún otro medio físico de confianza). Pero los 99 hosts restantes se instalan a través de la LAN (https). Si los 99 hosts restantes tienen no almacenamiento persistente y se instalan directamente en la RAM y comienzan a ejecutarse, entonces debe ser imposible diseñar un sistema de este tipo para evitar la posibilidad de MITM inicial descrita anteriormente, ¿verdad? Especialmente teniendo en cuenta que cada uno de los 99 hosts realiza una reinstalación completa, y esencialmente se conecta por primera vez en cada reinicio. Porque no hay lugar ni medios para almacenar ningún tipo de certificado o datos de validación precompartidos para que los 99 clientes puedan verificar digitalmente un certificado SSL presentado por el servidor "maestro". Y si no hay un método de comunicación fuera de banda, deben recurrir únicamente a la aceptación inicial del certificado a través de la misma conexión (creando la posibilidad de MITM). Además, los 99 hosts están automatizados, por lo que no hay posibilidad de que un usuario intervenga y valide una huella digital, como con lo que hace SSH. Pero esto realmente sería otra forma de comunicación fuera de banda que parece.

    
pregunta krb686 24.11.2016 - 05:56
fuente

1 respuesta

1

Para los puntos 1..3:
Sí, así es como funciona. Se necesita cierta confianza inicial, ya sea en forma de una CA de confianza que se puede utilizar para derivar la confianza en los certificados de hoja o como certificados de hoja compartida de confianza directamente.

En cuanto a su problema de implementación:
asumo que sus clientes con menos discos tienen el mismo tipo de medio de solo lectura del que inician, porque de lo contrario su problema de confianza comienza antes, es decir, cómo se aseguran de que arranquen el sistema operativo correcto cuando arrancar desde una red. Por lo tanto, asumiendo que el sistema operativo que inician es en realidad el correcto, pero que no tienen conocimiento de en quién pueden confiar, tienen que confiar en "TOFU", es decir, en la confianza en el primer uso.

Por supuesto, uno podría intentar poner al menos cierta información de confianza inicial en los sistemas porque incluso una confianza débil podría ser mejor que ninguna confianza. Por ejemplo, cada uno de estos sistemas podría venir con un certificado diferente instalado por el fabricante, todos firmados por el fabricante CA. De esta manera uno podría asegurar en la primera conexión que el dispositivo par es al menos de fabricación y, por lo tanto, hacer los ataques más difíciles. Por supuesto, esto no es infalible, ya que el atacante podría extraer el certificado y la clave del dispositivo de un dispositivo existente o modificar dicho dispositivo para que funcione como MITM, pero de esta manera los costos iniciales del ataque serían mayores.

Por cierto, este no es un problema restringido a TLS o incluso a computadoras, pero es una pregunta simple sobre qué información se necesita para confiar en alguien. Y si no tiene información en absoluto, no tiene forma de decidir si un interlocutor de la comunicación es confiable o no. Esa es la razón por la que tiene varias formas de identificación emitidas centralmente en la vida real, es decir, pasaportes, licencia de conducir o similar que le proporcionan una forma de generar confianza porque de alguna manera confía en los emisores de estas tarjetas de identificación.

    
respondido por el Steffen Ullrich 24.11.2016 - 06:57
fuente

Lea otras preguntas en las etiquetas