¿Administración de claves en proxies de intercepción?

1

Estoy leyendo la presentación de Black Hat de Jarmoc en Proxies de intercepción SSL / TLS y confianza transitiva . Tengo algunas preguntas sobre algunas de las prácticas clave de gestión.

En el documento, Jarmoc afirma:

  

Para actuar como servidor para la sesión SSL del lado del cliente,   El proxy de intercepción debe tener acceso a la clave privada que   Corresponde al certificado que está presentando. Porque el servidor   la clave privada del punto final no está disponible, el proxy de intercepción debe   genere un nuevo certificado y un par de claves para usar en esta sesión.

Jarmoc no explica el razonamiento detrás de su declaración "el proxy de intercepción debe generar un nuevo certificado y un par de claves para usar en la sesión". Y no define una "sesión" per se .

Pregunta : según la descripción de Jarmoc a continuación, ¿es justo leer una "sesión"? Es la conexión punto a punto [encriptada] entre el usuario y el proxy (y, por el contrario, el proxy y el servidor real)?

  

... los proxies de intercepción se insertan en el flujo de tráfico y   terminar la solicitud del cliente. El proxy de intercepción hace un segundo.   Solicitud en nombre del cliente al servidor. Este comportamiento causa   lo que fue una sesión de extremo a extremo, en lugar de ser dos separadas, pero   Relacionado, sesiones punto a punto. El objetivo es permitir el acceso a la   contenidos de la sesión de texto sin formato mientras se transfiere entre los dos   sesiones cifradas.

¿O debería leer la "sesión" para tener el significado de extremo a extremo?

¿Se pueden multiplexar "conexiones múltiples de un solo usuario" (flujo de usuario a proxy) y "conexiones de múltiples usuarios" (flujo de proxy a servidor) en una sola sesión?

Pregunta : ¿Por qué un proxy de intercepción debe generar un par de claves nuevo y un certificado para cada sesión?

Estos son los casos de uso que estaba ejecutando y no veo el beneficio de claves y certificados distintos:

  • dos usuarios distintos visitan example.com.

  • un solo usuario visita example.com , cierra el navegador y luego visita example.com de nuevo.

Proporcionar el mismo certificado y la misma clave pública para example.com es la forma en que funcionan las cosas sin un proxy de intercepción. ¿Cómo un certificado distinto y una clave pública para cada visitante y visita mejoran el paisaje?

He experimentado esto último, y puedo decirte que no hay nada "sigiloso" en la práctica (especialmente cuando la página web tiene muchos enlaces externos). CertPatrol lanzó tantos diálogos de advertencia que el navegador se volvió inutilizable.

Pregunta : ¿qué tiene de malo certificar una clave privada única (por ejemplo, 7 o 30 días) y luego emitir todos los certificados de servidor usando la clave única?

La generación de claves sobre la marcha es costosa y puede llevar a un DoS bajo carga. Dado que la práctica puede destruir la disponibilidad, no veo el beneficio.

No importa si hay 1 clave privada o 10,000 claves privadas. Un compromiso del host / compromiso clave en el proxy significa salida clave. No importa si hay 1 de ellos o 10,000 de ellos. Una vez más, no veo el beneficio.

Si algo más que una relación 1: 1 es mala, ¿por qué se usa la práctica en certificados de firma intermedios y CA subordinadas?

Pregunta : ¿significa Jarmoc que cada conexión de red (dirección IP de origen) debe recibir su propia clave privada utilizada para todos los certificados? (Aquí, "sesión" significa la interacción entre el usuario y el proxy).

Si el proxy va a reutilizar las claves privadas por usuario, ¿por qué no se puede reutilizar una clave privada para todos los usuarios?

¿Cómo maneja el proxy las conexiones NAT'd, donde los usuarios se agrupan en una única dirección IP orientada hacia adelante?

(Si hay algún error con la reutilización, es probable que los certificados de firma intermedios infrinjan la regla citada porque la clave de firma del intermediario certifica una cantidad de certificados de entidad final).

Pregunta : ¿cuáles son los detrimentos de la reutilización de la clave privada en las sesiones?

¿La clave privada reutiliza herramientas de ruptura como herramientas como HTTPS Everywhere y CertPatrol; ¿Y estrategias de diversificación de la seguridad como la fijación de claves públicas y perspectivas?

Mi preocupación aquí es una implementación ingenua de la fijación de claves públicas dentro de una organización, donde la implementación confía solo en la {clave pública}, y no en el par {host, clave pública}. Pero la implementación ingenua puede no romperse en la práctica mientras la clave privada en el proxy permanezca secreta. Es difícil de decir sin una implementación concreta.

    
pregunta jww 14.02.2014 - 05:51
fuente

1 respuesta

1
  

Pregunta: ¿Por qué un proxy de intercepción debe generar un nuevo par de claves y un certificado para cada sesión?

Espero que no signifiquen que se debe crear un nuevo certificado (y diferente) para cada usuario y sesión. A mi entender, solo dice que no puede usar el certificado original porque no tiene acceso a su clave privada. En mi opinión, es suficiente crear un nuevo certificado proxy cada vez que encuentre un nuevo certificado de servidor, por ejemplo. mismo certificado proxy para todos los usuarios y sesiones que acceden al mismo host. Este comportamiento también se describe en el artículo, aunque criticado. Si genera un nuevo certificado cada vez que necesita asegurarse, es lo suficientemente similar al anterior, porque el navegador se quejará si obtiene un certificado diferente para el mismo host dentro de la misma sesión del navegador (y mantiene el navegador abierto durante semanas ya no es infrecuente). Y, por supuesto, debe emitir un nuevo certificado de proxy si el certificado del servidor cambia.

  

Pregunta: según la descripción de Jarmoc a continuación, ¿es justo leer?   una "sesión" es la conexión punto a punto [encriptada] entre la   usuario y el proxy (y, a la inversa, el proxy y el servidor real)?   .... ¿O debería leer que "sesión" tiene el significado de extremo a extremo?

Creo que debería interpretarse como una relación de extremo a extremo, por ejemplo, la conexión inicial del cliente al servidor a través de un proxy inicia una nueva sesión, pero las conexiones adicionales entre estas partes son solo la continuación de la misma sesión. Si cada conexión se considera una sesión separada con certificados recién creados (diferente a la última para la misma conexión cliente-servidor-proxy) solo obtenemos los problemas mencionados con la verificación en el cliente.

  

Pregunta: ¿qué hay de malo en certificar una única clave privada (por ejemplo, 7 o 30 días) y luego emitir todos los certificados de servidor usando la clave única?

El hecho de tener un solo par de claves para todos los certificados proxy funcionará, pero su idea de generar un nuevo par de claves puede necesitar refinamiento para asegurarse de que el certificado no cambie demasiado dentro de una sesión del navegador. Y, no estoy de acuerdo con el papel. En mi opinión, el par de claves para el certificado proxy se puede reutilizar tanto como el par de claves para la CA proxy se reutilizará. Y la última debe ser, porque de lo contrario, tendría que emitir una nueva CA de proxy todo el tiempo y colocarla en el navegador para que puedan verificarse sus certificados de proxy. Además, incluso es común reutilizar el mismo par de claves al extender certificados "reales".

No creo que el enfoque del documento de generar un nuevo par de claves para cada certificado e incluso para cada sesión funcione. Porque, esto daría lugar a que el navegador obtenga certificados diferentes para el mismo host dentro de una sola sesión del navegador. El navegador no le gusta esto y se quejará de ello. Y, como el proxy no puede detectar el final y el inicio de las sesiones del navegador, no sabe cuándo usar un nuevo par de claves.

  

Pregunta: ¿significa Jarmoc que cada conexión de red (dirección IP de origen) debe recibir su propia clave privada utilizada para todos los certificados? (Aquí, "sesión" significa la interacción entre el usuario y el proxy).

No, no lo creo. Creo que el punto principal es que no le gusta que se reutilice demasiado el mismo par de claves. Como dije, no estoy de acuerdo con el documento en este punto.

  

Pregunta: ¿cuáles son los detrimentos de la reutilización de la clave privada en las sesiones?

La Patrulla de Certificados, las Perspectivas y otras formas de fijación de certificados pueden quejarse de todos modos, porque usted hace un hombre en el ataque central y el certificado generado difiere del original. Pero desde mi experiencia, al menos el certificado que fija en Chrome no se queja, si ha agregado la CA proxy como confiable. Pero se quejará si la CA proxy no se agrega explícitamente, sino que está firmada por una CA integrada confiable.

La fijación de certificados al menos en Chrome se realiza mediante la toma de huellas dactilares de la clave pública. Entonces, tales técnicas podrían fallar si obtienen la misma clave pública para certificados diferentes, pero lo dudo. Solo deben quejarse si obtienen una clave pública diferente a la esperada. Por lo tanto, desde mi experiencia (usamos tales técnicas y reutiliza las claves), reutilizar las claves no muestra problemas en los navegadores.

    
respondido por el Steffen Ullrich 14.02.2014 - 07:44
fuente

Lea otras preguntas en las etiquetas