Desenmascara.me

How to verify whether a website is legitimate or not?: desenmascara.me

viernes, 25 de noviembre de 2011

Entendiendo la seguridad SSL de los sitios web -PKI I-

Los recientes casos de StartComComodo, la ya desaparecida Diginotar y el reciente de los certificados RSA-512, ponen de manifiesto la seguridad de las Autoridades Certificadoras, aquellas que se suponen deben velar por la seguridad de los sitios de la banca y comercio electrónico, redes sociales, etc.

En este artículo, inspirado en el original, voy a intentar exponer de manera sencilla conceptos base sobre la tecnología SSL para qué como usuarios, sepamos algo más que aquella famosa y falsa afirmación: "si la web lleva un candado (https) la conexión es segura". Y podamos también conocer el alcance de una brecha de seguridad en Entidades Certificadoras como las anteriores.

INTRODUCCIÓN
https o lo que es lo mismo, los certificados SSL/TLS, se basan en la tecnología PKI --infraestructura de clave pública-- en inglés, la cual hace uso del cifrado de clave pública. Esta tecnología se diseño para solucionar el problema fundamental de permitir a dos partes (personas, sitios web, dispositivos...) que no tenían una relación previa el confiar entre ellas para intercambiar información sensible. PKI soluciona este problema definiendo una tercera parte, la cual verifica la identidad de las otras dos. Es lo que en la vida real conocemos como "tener buenas referencias".

Para aquellos que estén interesados en la parte técnica y teórica de esta tecnología pueden echar mano de los RFCs, ver los vídeos 3, 9 y 10 de intypedia o apuntarse al curso de cifrado que en Enero impartirá de manera gratuita y online la Universidad de Stanford.

En Internet, la tecnología PKI se usa principalmente con los certificados SSL/TLS para que los dueños de los sitios web puedan asegurar a sus visitantes que:
  • El sitio web es de confianza (es seguro hacer negocio/compras con él)
  • Auténtico (el sitio web es de la compañía que dice poseer dicho sitio)
  • Pueden proporcionar el material necesario a la capa SSL/TLS para permitir qué el tráfico entre el usuario y el sitio web se intercambie en privado (a través del cifrado) y autenticado (a través de la autenticación de datos) 
La tecnología PKI se puede usar para otros propósitos como enviar correos firmados/cifrados pero este artículo se basa únicamente en la funcionalidad de los certificados web SSL/TLS.

Cómo usuarios, cuando visitamos un sitio web por primera vez no tenemos información que podamos usar para validarlo. Por ello, los sitios web lo delegan en los servicios de una Entidad Certificadora (CA). Una CA es una organización que actúa como una tercera parte de confianza para los certificados SSL/TLS emitidos a los operadores de los sitios web. Una CA está sometida a rigurosas auditorías de seguridad, entre otros por las empresas de los navegadores de Internet como; Microsoft, Apple, Mozilla, Opera, etc. Estas empresas añaden el certificado raíz de la CA directamente en su software. Este hecho hace que los navegadores actúen como agentes ante nosotros los usuarios en decidir si confiar o no en una CA particular (aunque por supuesto, también podremos instalar manualmente certificados raíz qué no estén por defecto en los navegadores, pero supondrá un trabajo 'extra'). Cuando un navegador ha decidido confiar en una CA, esta CA es inherentemente confiada por cualquier usuario de dicho navegador. Cómo comprobación final, un navegador puede usar la información del certificado del sitio web y el certificado de la CA para verificar que el certificado del sitio web no ha sido revocado por la CA.

En este punto, cuando un usuario visita un sitio web que tiene un certificado emitido por una CA de confianza en tú navegador, EJEMPLO, el navegador proporcionará una indicación visual de que dicho sitio web es de confianza. A partir de entonces, podriamos --nótese el condicional-- estar seguros de que no es un sitio fraudulento o de phishing.

CONFIANZA EN EL MODELO PKI
Cómo he descrito antes, hay 3 puntos básicos en los que se crean decisiones de confianza en una PKI:
  • Las empresas de navegadores confían en CAs comerciales para incluirlas en su software.
  • Las CAs corroboran la identidad de los sitios web emitiendoles certificados
  • Nosotros los usuarios usamos un navegador en el que confiamos.

Confianza en CAs comerciales
Las empresas de navegadores y las CA comerciales, a través de la organización CABForum, han acordado un conjunto de estándares de auditoría que definen las prácticas de seguridad que las CAs comerciales deben seguir e implementar durante el curso de su emisión de certificados a los operadores de los sitios web. El estandar de facto es WebTrust. Dichas prácticas se enfocan en asegurar que la CA protege apropiadamente todo el equipamiento relacionado con los certificados raíz, implementa las contramedidas necesarias para prevenir la emisión de certificados fraudulentos y actúa con buena diligencia en:
  • Asegurarse que el propietario de un sitio web está autorizado a emitir un certificado para su sitio web.
  • Asegurarse que el propietario del sitio es realmente quién dice ser.
Las dos medidas anteriores evitan principalmente la creación de mirrors de sitios 'válidos' pertenecientes a esquemas de phishing.


Confianza en los operadores de los sitios web
La responsabilidad de validar al propietario de un sitio web y verificar la identidad de la organización que está detras de dicho sitio web recae en la CA. Para validar al propietario de un sitio web las CAs normalmente validan que la persona que solicita un certificado SSL para un determinado sitio web está autorizado para ello consultando el registro DNS del sitio. Las CAs usan la información pública de los registros DNS para validar solicitudes, normalmente contactando con la persona que se muestra en el registro del sitio web. Los certificados SSL que se validan así se conocen como certificados de dominio válidos.

Las CAs también pueden realizar verificaciones adicionales ( esto para otro artículo, y mostrar así el problema de tener varios dominios diferentes e intentar esto ) para conseguir certificados que han pasado unos rigurosos controles de verificacion. Dichos certificados son los Certificados de validación extendida. SSL EV.

Confianza en los navegadores web
La última y quizá más importante decisión de confianza en el modelo PKI es la decisión de nosotros; los usuarios, sobre el navegador que usamos para visitar sitios web seguros. Como los navegadores contienen ya una lista precargada de CAs públicas en las que confía, el usuario final, seleccionando un navegador en concreto implícitamente confía en todas las CAs que su navegador confía. Gracias a los esfuerzos del CABForum para involucrar a la mayoría de navegadores y sistemas operativos en los esfuerzos de estandarización con las CAs comerciales, el conjunto de CAs confiables es casí común en la mayoría de navegadores. Pero desafortunadamente el mecanismo de mostrar que una CA en particular confía en un sitio con SSL/TLS varía notablemente entre los navegadores confundiendo asi más si cabe al usuario.

Por ahora llegamos hasta aquí, en la siguiente parte veremos problemas que puede haber y sus consecuencias.

Un pequeño ejercicio de investigación. A ver quién conoce el nombre de la primera compañía española que tuvo su CA propia incluida en Windows 2000. (se puede consultar en los navegadores actuales)




We monitor all networks in real time, all the time,". "This isn't something you can teach in a few minutes, it's an attitude, a way of life. Eddy Nigg.