¿Cuáles son las posibles medidas de defensa que se pueden aplicar a una simple PKI (sin CA intermedias, etc.) utilizadas para autenticar clientes y servidores a través de TLS solo en una red interna?
Los certificados emitidos a los clientes / servidores deberán ajustarse al conjunto de uso de la clave extendida de autenticación TLS.
Dado que la CA será de confianza en todos los dispositivos, quiero asegurarme de que, aunque la clave privada de nuestra CA esté comprometida, el atacante no podría crear certificados para Sitios web de Internet, o para crear binarios firmados de confianza. En otras palabras, trato de minimizar las vulnerabilidades que abre el esquema de autenticación.
¿Es esto posible usando restricciones X.509?
Hasta ahora he pensado en establecer pathLenConstraint
en 0, y usar nameConstraints
para que solo se acepten los certificados emitidos a direcciones IP privadas.
Parece que estas medidas evitan el uso indebido, pero aún permiten que el atacante emita un certificado para, por ejemplo. google.com , luego, usando MITM, se hace pasar por el servidor DNS y responde con una dirección IP interna ( pathLenConstraint
✓, nameConstraints
✓, uso previsto ✘). Este escenario incluso funcionaría con nameConstraints
establecido en el sufijo DNS local, ya que la mayoría de los clientes simplemente envían otra consulta con el sufijo incluido, si la respuesta "no se encuentra".
Por no mencionar que no he encontrado ninguna forma de evitar que una CA (que usa restricciones X.509) emita los certificados utilizados para la firma de código o la marca de tiempo.
¿Hay alguna opción que haya perdido?