¿Qué sucede si la tienda local de certificados de Windows está comprometida?

1

El diagrama a continuación ilustra el encadenamiento de certificados digitales hasta un Certificado de Raíz de confianza pública:

He estado investigando cómo se utilizan las autoridades raíz de confianza (como GlobalSign o Verisign) para autenticar las claves públicas de alguien para identificar a esa persona como un editor de confianza. Creo que me estoy perdiendo algo, por favor, avíseme si estoy entendiendo mal algo aquí.

Por lo tanto, la firma digital implica el hashing de algunos datos (resumen del mensaje) con una clave privada de un editor de confianza. Los consumidores de esos datos pueden usar la clave pública correspondiente del editor de confianza para verificar los datos de hash. La verificación de la clave pública (certificado) del editor de confianza hasta una autoridad raíz de confianza establece la confianza de que el editor de confianza es quien dice ser, ¿correcto?

Para que funcione esta cadena de confianza, entiendo la importancia de mantener privadas las claves privadas. Pero no veo cómo esto ofrece confianza o seguridad en una máquina comprometida.

Supongamos que soy un atacante malintencionado que intenta falsificar a un usuario en una máquina que ya tengo el control. Como cualquier buen malware, voy a querer que el usuario piense que lo que están haciendo es de confianza. Así que parece que todo lo que necesito hacer es eliminar los certificados válidos relevantes en el Almacén de certificados de Windows de CA raíz de confianza y reemplazarlos con certificados autofirmados falsos que parecen ser válidos. Incluso podría volver a crear una cadena de certificados de confianza, como en la imagen de arriba.

Esto todavía no me parece demasiado descabellado. Entonces, para completar la falsificación, tendría que interceptar los datos válidos y volver a firmarlos con mi certificado de editor falso, "confiable" hasta la "CA raíz". Esto parece mucho más fácil que robar la clave privada de un editor.

EDITAR: ¿Hay alguna manera de protegerse contra un ataque tan dirigido? Para mi aplicación específica, necesito saber con seguridad si un certificado es confiable, pero es posible que no sea posible en una máquina comprometida.

    
pregunta miesch1 16.07.2015 - 18:47
fuente

2 respuestas

3

Eso sí compromete gravemente la seguridad. No hay ifs, ands, o buts al respecto: si tiene CAs en las que su computadora confía pero no son las reales, cualquier cosa que dependa de la tienda del sistema operativo no funcionará (creo que Firefox tiene su propio almacén de certificados, pero luego que tiene que mantenerse seguro). Consulte: la debacle de Superfish, donde el problema era que un fabricante de hardware agregó un certificado en el almacén de certificados de Windows y también incluyó la clave privada en el software publicitario que se envió con la computadora.

La razón por la que esto no es un problema en la práctica no es que sea fácil de mitigar; es que realmente no permite que un atacante haga algo que no podría hacer de todos modos. La modificación del almacén de certificados para un usuario requiere acceso a la cuenta de ese usuario o una cuenta administrativa. La modificación de todo el sistema de certificados requiere acceso a una cuenta administrativa. En una máquina donde un atacante tiene este nivel de privilegio, ya puede acceder a lo que esté haciendo su cuenta de usuario. Un atacante con un nivel de administrador puede instalar un registrador de teclas y un visor de pantalla.

Cualquier sistema de seguridad tiene un modelo de amenaza, que es el escenario de ataque contra el que está diseñado para defenderse. Un cliente comprometido no es parte del modelo de amenaza TLS: el modelo solo postula a un atacante que puede manipular el tráfico de la red (incluso redirigiéndolo a sus propias máquinas para ofrecer contenido inadecuado). TLS no tiene la intención de protegerse contra una máquina comprometida en ninguno de los extremos, ni es capaz de hacerlo.

En general, es extremadamente difícil (o quizás teóricamente imposible) lograr la seguridad en una máquina comprometida. El enfoque correcto es evitar un compromiso o detectarlo y manejarlo, no intentar lograr la seguridad a pesar de ello.

    
respondido por el cpast 16.07.2015 - 22:21
fuente
0

Usar RCC

En Windows, hay una pequeña herramienta de escaneo de certificado raíz llamada RCC que puede usar para detectar si su almacén raíz ha sido comprometido. Esto no evitará la inserción de un certificado malicioso, pero para fines de detección está bien.

respondido por el John Blatz 22.07.2015 - 21:30
fuente

Lea otras preguntas en las etiquetas