ElevenPaths crea un addon para que Firefox sea compatible con Certificate Transparency (porque Firefox sigue sin hacerlo)

lunes, 18 de febrero de 2019

Certificate Transparency es ya obligatorio en Chrome para los nuevos certificados creados desde finales de 2017. Esto significa que se mostrará una alerta en las páginas protegidas por certificados que no estén presentes en los logs que Chrome comprueba para esa fecha. Ningún otro navegador soporta Certificate Transparency todavía. Firefox lleva años intentándolo, pero no ha podido conseguirlo por problemas de rendimiento que no ha solucionado. Veamos qué hemos hecho y por qué.

Connection not private alert imagen



Hemos realizado nuestro propio comprobador a través de una extensión
Visto que en Mozilla no tiene fecha aún para activar esta funcionalidad, hemos vuelto a crear una extensión propia para el navegador para saber si el sitio cumple con Certificate Transparency, o al menos saber si tiene los SCT correctos.

Un certificado se considera dado de alta en los logs si cuenta con un SCT (Signed Certificate Timestamp). Este SCT se le otorga al dueño del certificado original cuando se introduce en el log y el navegador debe verificar si es real y está al día, esto es lo que Chrome viene realizando durante ya hace un tiempo.

El SCT puede ofrecerse al usuario de tres maneras diferentes:
  • Incrustado en el certificado.
  • A través de una extensión TLS.
  • Aprovechando OCSP.

No es sencillo desde la perspectiva técnica de un plugin en Firefox llegar a la capa de TLS o OCSP y comprobar el SCT. Por eso nuestro plugin por ahora solo comprueba el SCT incrustado en los propios certificados. Aunque no es la solución ideal, es el escenario mayoritario y la vía por la que se distribuyen la mayoría de los SCT.

Aquí puedes descargarte la extensión directamente desde el repositorio oficial de Firefox, programada por nuestro compañero en Buenos Aires, Tomás Coiro.

Certificate Transparency imagen

¿Por qué no usar la fórmula que se supone ya existe en Mozilla?
Mozilla incluyó hace un tiempo una API para extensiones que permitía calcular el valor de Certificate Transparency, básicamente, si el lugar había hecho sus deberes con el certificado.

Certificate Transparency status imagen


Pero no hemos podido usarla porque, por defecto, no funciona. Encontraron problemas de rendimiento en la API, y decidieron hace dos años, desactivarlo por defecto.

Problemas rendimiento API imagen


 Aun así, es muy sencillo volverlo a activar desde la configuración del navegador.

Activación API imagen

Aunque no servirá de mucho. No serás capaz de ver nada, a no ser que muestres por consola un log. Sin la opción activa aparecía un "not applicable". Con ella un "compliant" o "not_enough_scts" según el caso.

Not enough scts imagen



Podríamos haber activado la opción por defecto en la extensión y monitorizar su salida, pero no lo hemos considerado lo más adecuado dado el impacto en el rendimiento y, además, por otras razones que detallamos a continuación.

Ahondando un poco más en el funcionamiento (por ahora, "en pausa") de Certificate Transparency en Firefox... ¿Cuántos SCT son suficientes para Firefox? Pues no lo tenemos claro, porque realizan unas cuentas algo extrañas.

SCT Policy Enforcer imagen

En cualquier caso (además del problema de rendimiento que reconocen), hemos comprobado que la mayoría de las veces, no son suficientes los SCT para satisfacer la política. Nos aparece constantemente "not_enough_sct, cuando Chrome sí que lo da por válido. 

Not enough SCT imagen

En resumen, Firefox está trabajando para aportar la tecnología Certificate Transparency a su navegador, pero parece que existen otras prioridades y tras un primer intento, el trabajo ha quedado algo atascado. En todo caso, mientras lo solucionan, podéis utilizar nuestra extensión Certificate Transparency como ayuda.

Innovación y laboratorio
www.elevenpaths.com

No hay comentarios:

Publicar un comentario