09 enero 2012

¿En manos de quién está la seguridad de Internet?

Por todos es sabido que la seguridad en las transacciones por Internet descansa en el protocolo SSL. Este protocolo basa su seguridad en un esquema PKI, en el que unas cuantas organizaciones están acreditadas para emitir certificados digitales que son la base del protocolo SSL.

En el año 2011, este esquema ha sido golpeado en varias ocasiones a raíz de los escándalos 'Comodo' y 'Diginotar', sendas CAs que fueron comprometidas y que emitieron certificados SSL fraudulentos que pusieron en entredicho la credibilidad de SSL.

Dado que, tal y como está diseñado el protocolo SSL, cualquier entidad reconocida que haya sido aprobada por Microsoft (Para Internet Explorer y Chrome en Windows) y Mozilla (Firefox) puede emitir un certificado digital que acredite la validez de un sitio web, es un ejercicio interesante saber quienes son esas entidades que actúan como garantes de la seguridad en Internet

Después de lidiar con la 'peculiar forma' en la que Windows gestiona los certificados digitales, he extraído un listado categorizado por País de las entidades que están reconocidas para emitir certificados SSL por Microsoft



En total he localizado 130 entidades de 45 países diferentes. Muchas de estas organizaciones tienen a su vez múltiples CAs reconocidas, pero el objeto de este estudio es conocer los nombres de las organizaciones y su procedencia.

Algunos datos curiosos:
  • Estados Unidos lidera claramente el número de organizaciones acreditadas (26)
  • España es el segundo país con más CAs acreditadas por Microsoft (11)
  • Tunez es el único país del magreb que tiene presencia acreditada (Turquía es el otro país musulmán acreditado)
  • China tiene 2 organizaciones capaces de emitir certificados SSL y dos más adscritas a Hong Kong y Macao (provincias con régimen especial)
  • Hay dos entidades acreditadas con sede en los paraísos fiscales de Bermudas y Singapur 
  • Existen múltiples CAs acreditadas que están ligadas a entidades gubernamentales  
Conclusiónes
  • Estas 130 organizaciones son las que tienen potestad para certificar que www.google.com (o cualquier otro dominio bajo SSL) es quien dice ser. 
  • Un compromiso en cualquiera de estas organizaciones podría derivar en otro 'caso Comodo / Diginotar' 
  • Si alguna de estas organizaciones operase de forma fraudulenta, podría actuar de forma impune colaborando en el seguimiento y monitorización gubernamental de ciudadanos
    Metodología seguida para el estudio

    Este estudio está basado en la información extraída del campo 'issuer' de los certificados digitales. En algunos casos esta información no era del todo precisa (ausencia del campo C=(código país)) y se ha tenido que averiguar por otros medios. Así mismo se ha intentado agrupar las CAs de una misma organización, pero en algunos casos la información del campo issuer puede no ser 100% fiable ya que algunas organizaciones definen este campo de una forma poco legible. Por ello cabe asignar cierto margen de error a este estudio.

    El primer paso realizar el estudio es 'parsear' el fichero authroot.stl donde se encuentra la información de las CAs acreditadas por microsoft, y descargar los certificados de dichas CAs.

    Para ello ejecutamos este comando (plataforma Linux):

    for i in `openssl asn1parse -inform der < authroot.stl | perl -ne '$a[0]=$a[1];$a[1]=$a[2];$a[2]=$a[3];$a[3]=$_;if (/1.3.6.1.4.1.311.10.11.29/) {$a[0]=~/.+:([0-9A-F]+)/; print $1 . "\n"}'`;
    do wget http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/$i.crt; done

    Lo que descargará todos los certificados digitales.

    Posteriormente ejecutamos este script en Perl:

    my @certs ;
    @certs = `ls -1 *.crt` ;
    
    foreach(@certs) {
    
        my $issuer =`openssl x509 -noout -issuer -inform DER -in $_` ;
        print "$issuer\n";
    }    

    Que extrae el campo 'issuer' de los certificados digitales.

    5 comments :

    Román Ramírez dijo...

    El siguiente paso de este artículo podría ser la verificación de quién está tras cada una de esas CA. Seguro que, buscando simplemente los informes anuales de esas "compañías", salta información muy interesante.

    aortega dijo...

    Curioso, la web oficial de Corea del Norte utiliza un certificado firmado por RapidSSL CA (GeoTrust, Inc.), de USA. Buen artículo!

    Migue dijo...

    Aparte de lo entretenido que es romper mano con OpenSSL ¿alguna razón para no utilizar, directamente, la lista que publica Microsoft?

    http://social.technet.microsoft.com/wiki/contents/articles/windows-root-certificate-program-members.aspx

    Yago Jesus dijo...

    Creo que es otra forma de obtener los datos, dado que desde Windows Vista el sistema es bastante oscuro (no se puede acceder a la información desde las herramientas del sistema), es un ejercicio interesante el tener una forma real de comprobar esos datos ¿no crees?

    Migue dijo...

    Me refería a que, para obtener un listado de entidades raíz y países de procedencia, se puede utilizar simplemente el listado que mantiene Microsoft con estos datos (y más si no te puedes ‘fiar’ de los datos que aparecen en los campos de los certificados, como comentas).

    No sé si habrás encontrado alguna discrepancia significativa entre el listado oficial y los datos que has obtenido…

    Por otra parte, ¿qué problema ves en utilizar en Windows Vista las mismas herramientas que en Windows 7, tanto gráficas como por consola?. Por ejemplo, podemos obtener datos de los certificados raíz ‘instalados’ en un equipo con órdenes del estilo:

    certutil -store AuthRoot | find "Asunto"