13 marzo 2012

SSLCop 1.0

En la pasada Rootedcon tuve el placer de dar una charla llamada 'Applied Cryptography FAILs' en la que estuve hablando sobre diferentes 'FAILs' en el mundo de la criptografía aplicada.

En uno de los puntos de la charla hablaba sobre el enorme descontrol que hay hoy día a la hora de aprobar CAs por parte de Microsoft (y también Mozilla), e hilaba con el post '¿En manos de quién está la seguridad de Internet?' donde habíamos publicado un estudio sobre el origen geográfico de las organizaciones que Microsoft ha aceptado como CAs de confianza.

El problema es muy fácil de entender, hoy día cualquier CA de confianza está capacitada para emitir un certificado SSL válido sobre cualquier dominio de Internet. Esto aplica tanto a CAs como Verisign como a cualquier otra oscura CA que haya sido aprobada.

Evidentemente esto genera cierta indefensión hacia el usuario final, ¿es necesario que yo, nacido y residente en España, confíe en la CA del gobierno de Japón? más aún ¿En la CA del gobierno Chino o la de Túnez? Mi opinión es que no.

No por varios motivos, el primero y mas obvio es porque muchos de esos gobiernos que tienen CAs aprobadas por Microsoft son todo menos transparentes (caso de Islas Bermudas o Macao) algunos incluso ejercen prácticas coercitivas sobre su población (caso de China o Tunez) e incluso desde un punto de vista meramente de seguridad, a más CAs en las que confíe, más riesgo de que alguna de ellas pueda ser comprometida (y sí, definitivamente eso sí pasa) y pueda ser utilizada para emitir certificados piratas.

Ante ese panorama presenté la herramienta 'SSLCop', herramienta que permite de forma fácil bloquear y eliminar aquellas CAs que simplemente no son de interés debido a su procedencia geográfica. Hay muchas CAs aprobadas por Microsoft que se usan para la 'E-Administración' local de cada país que pueden ser interesantes para sus habitantes, pero no globalmente.

Lo que hice fue clasificar geográficamente todos los certificados de las organizaciones y crear una herramienta capaz de bloquearlos a golpe de ratón. 

El resultado es SSLCop 




Como se puede ver, la herramienta es muy sencilla, simplemente seleccionas los países que deseas bloquear y pulsas 'Block!'.

Mención especial para el gran Raúl Siles que me dio la idea de añadir un botón 'seleccionar todas', lo que hace mas fácil, por ejemplo, bloquear todos los países menos España, que es el único que me puede interesar a mi.

Acepto todo tipo de sugerencias e igualmente si alguien reporta bugs, serán muy bienvenidos. La herramienta funciona tanto en Windows XP como en Windows 7 (requiere elevación por motivos obvios, la propia herramienta debería disparar el UAC). De momento soporta Explorer y Chrome, en un futuro me gustaría soportar Firefox y Linux.

La herramienta se puede descargar desde aquí

20 comments :

svoboda dijo...

La verdad es que la idea es muy curiosa y bastante útil, probablemente la masa de usuarios en general no le vean mucho sentido, pero estoy seguro de que a muchos usuarios más preocupados le encantará.
Como sugerencia, y dejando claro que aún no he tenido tiempo de probarla (solo descargarla y ejecutarla), quizás sería una mejor idea, más que tenerlo como una aplicación independiente, que fuera un plugin para el navegador.
Me explico, en primer lugar lidiarías de forma más fácil con la portabilidad a otros SO, y luego, el tenerlo siempre a mano cuando navegas hace que sea más cómodo su uso (esto va un poco vinculado a la siguiente propuesta).
También quizás sería una buena idea, poner algún tipo de forma de añadir excepciones o bloqueos de forma manual. Es decir, poder bloquear las CA de un país, pero poder definir quizás algunas excepciones para ese país o incluso para unas página específicas. Por si tenemos la obligación o necesidad de conectar. O a la inversa, poder no bloquear un país pero si algunos de los CA de un país. No se, quizás, no sea el objeto de la aplicación algo tan específico, pero queda ahí como idea.
De todas formas, un gran trabajo. Un saludo.

luiseg dijo...

Una solución sencilla, práctica y funcional, como lo son las grandes ideas de este mundo. Creo que este tipo de utilidad debería ser parte obligada en las opciones de configuración  de sistemas opertivos, navegadores y cualquier otro tipo de cliente de cara a internet que pueda usar certificados, con la integración y opciones que comenta svoboda. Muchas felicidades por este trabajo y muchas gracias por el resultado.

TuRo dijo...

Una pregunta, ¿Qué ocurre cuando Windows actualiza su almacén de certificados?

Yago Jesus dijo...

Gracias por las sugerencias, muy instructivas. Respecto al tema de los plugins, es algo que en su momento estudié pero me convenció menos y me explico. Por una parta está el tener que desarrollar mínimo para tres navegadores (explorer, chrome, Firefox) eso ya de por sí le mete complejidad. De hecho desarrollar plugins para IE no es algo excesivamente sencillo. Luego, está el tema de como se actualizan los navegadores, Firefox y Chrome llevan un ritmo imposible de seguir. Por contra la cryptoapi de Windows (que es sobre lo que yo me apoyo vía CAPICOM) es algo estable que no muta. Respecto a la granularidad tienes mucha razón, debería haber un modo 'expert' para poder editar a mano. Tomo nota. Muchas gracias !

Yago Jesus dijo...

¡¡ Muchas gracias !! Es genial que la gente encuentre útil las herramientas, motiva muchísimo :)

Yago Jesus dijo...

Buena pregunta. Lo que hace SSLCop es meter los certificados bloqueados en el contenedor de CAs bloqueadas que, documentación en mano, tiene precedencia sobre el resto, así que aunque Microsoft las meta como CAs de confianza, en tu equipo están bloqueadas

p0is0n-123 dijo...

Pues me ha gustado bastante la herramienta. De hecho creo que no va a faltar en mi pc... ¡imagínate cuando soporte Firefox! }:))

Gracias Yago, como siempre formal, funcional e impecable :p

Juju666 dijo...

Una aplicación muy útil.
Una duda, si bloqueamos todas menos las Españolas no tendremos problemas en las actualizaciones de Windows -o drivers firmados-, por ejemplo, que suelen venir ejecutables firmados con certificados emitidos por CA's extrangeras (Verisign, Thawte,..), etc

Angel Alvarez Nuñez dijo...

Hay que probarla XD, gracias Yago !!

Manumonti dijo...

¿Qué es una CA?

Siento mi ignorancia, pero la seguridad informática es un tema que me gusta, por lo que intento seguir este blog pese a que mi nivel no es demasiado bueno.

Saludos!

Jaime Cernuda dijo...

Icreible, una aplicación a l que veo un gran potencial. Totalmente de acuerdo con svoboda cuando propone la posibilidad de bloquear CA particulares.
Solo dos preguntas Lenguaje de programación?? y te has planteado liberar el codigo fuente??
otra vez, muy buena

Perico dijo...

Por favor, podrías poner la lista de emails mediante los cuales comprobaban que realmene eras de la entidad que decias ser??? Pusiste la lista en la rooted pero no los recuerdo ahora.
Gracias

Yago Jesus dijo...

 ¡¡ Muchas gracias compañero !!

Yago Jesus dijo...

Excelente pregunta. En la selección previa de CAs he excluido aquellas que son responsables de la mayoría de certificados que circulan en internet. Esto aplica igualmente para las CAs relacionadas con Microsoft

Yago Jesus dijo...

 A ti por el interés !

Yago Jesus dijo...

A ver si te ayuda la entrada de la Wiki  http://es.wikipedia.org/wiki/Autoridad_de_certificaci%C3%B3n si tienes más dudas, plantelas con toda naturalidad

Yago Jesus dijo...

 ¡¡ Muchas gracias !! Ciertamente si el tema coge impulso no tengo problema en liberar el código y buscar colaboradores. ¿Tu te animarías? :)

Yago Jesus dijo...

 Aquí tienes el post donde hablábamos del tema http://www.securitybydefault.com/2010/04/yo-soy-vodafonees-y-orangemailes-y.html

Sergio M dijo...

Gracias, me parece muy interesante. Yo también creo que sería muy útil poder eliminar CA particulares, sobre todo con los antecedentes recientes de CAs comprometidas.

taufpate dijo...

teneis algun paper de como revocarlos en MAC OS? puedo dar fe de que esto esta sucediendo ahora mismo en venezuela!