1 mar 2009

La seguridad de Skype

Todas nuestras comunicaciones telefónicas han sido siempre susceptibles de interceptación. La mayoría son en "texto llano", es decir, sin cifrar. En los años 90, la telefonía GSM se popularizó, pero su cifrado es incompleto (solamente desde el teléfono hasta la antena más cercana) y débil. Los teléfonos de tercera generación tienen un cifrado mucho más resistente, pero dispone de sistemas especiales para permitir la "interceptación legal", un eufemismo para recordarnos que el Estado puede poner la oreja siempre que quiera.

En los últimos años se ha desarollado una pequeña gran revolución en la telefonía: la VoIP (Voz por IP). Básicamente, se trata de usar los protocolos de Internet para "trocear" las conversación y enrutar los paquetes. Entre dichos sistemas, el más popular es el conocido como Skype. Se trata de un programa que convierte cualquier ordenador en un teléfono por Internet. Ambas partes establecen contacto directo sin necesidad de estaciones conmutadoras. Sus paquetes viajan como los de las redes peer to peer (p2p), lo que los hace mucho más seguros en términos de anonimato y privacidad (de hecho, sus creadores ya habían desarrollado el programa de intercambio de archivos Kazaa) y mucho más difícil de interceptar. Y, por si fuera poco, tiene cifrado fuerte de un extremo a otro. Es, de hecho, tan popular, que algunos teléfonos móviles lo están incorporando.

Se supone que Skype es tan seguro que incluso las fuerzas policiales y de espionaje encuentran poco menos que imposible interceptarlo. Según The Register, a mediados de febrero una fuente anónima desveló que la Agencia de Seguridad Nacional norteamericana (NSA) está dispuesta a pagar miles de millones de dólares a cualquier empresa capaz de desarrollar métodos para interceptar y descifrar el tráfico de Skype. Pocos días después, la misma publicación informa de que la policía italiana está buscando formas de penetrar la seguridad de Skype para interceptar las comunicaciones de la mafia, e incluso que han hecho peticiones al respecto a Eurojust (encargada de la cooperación judicial entre los Estados Miembros de la UE), cosa que este grupo
desmintió poco después.

Aunque hay mucha confusión y las fuentes son poco claras, el hecho es que Skype está en el candelero. Y basta recitar la palabra "cifrado" para conjurar a este vuestro Boletín ENIGMA. De modo que fuera palabrería. ¿Qué tipo de cifrado usa Skype? Una búsqueda en el servidor de la empresa remite a un análisis escrito en 2005 por Tom Berson, consultor en seguridad de la información (y cuyo curriculum está disponible en http://www.anagram.com/berson/index.html). Dicho análisis nos permite arrojar algo de luz sobre cómo Skype utiliza el cifrado. El motivo por el que digo "algo" se aclarará más adelante.

Muy bien, a trabajar. Para establecer una comunicación segura entre dos puntos, con garantía de que nuestro interlocutor es quien afirma ser, necesitamos lo siguiente:
  • Un algoritmo de cifrado simétrico para proteger la información.
  • Un algoritmo asimétrico para intercambiar la clave de sesión del algoritmo de cifra.
  • Una autoridad de certificación (AC) que garantice la identidad de los dos interlocutores.
Comencemos por lo que siempre nos preocupa: el cifrado simétrico puro y duro. Según Berson, Skype utiliza AES-256, con claves de 256 bits y bloques de 128 bits. De momento, vamos bien. A continuación, el sistema de clave pública: RSA. Aquí podemos poner un par de pegas. RSA es un sistema algo viejo, y la tendencia es a ser descartado en favor del Diffie-Hellman, a pesar de que sigue siendo el sistema usado en las comunicaciones seguras por navegador (https). Finalmente, la Autoridad de Certificación dispone de claves RSA de dos tamaños: 1536 y 2048 bits.

El procedimiento para "negociar" una conversación es algo elaborado, así que vamos a seguirlo paco a paso. Cuando uno se descarga el programa Skype, recibe entre otras cosas la clave pública del "Servidor Central", llamémosla Vs, cuya correspondiente clave privada Ss está protegida por la empresa bajo siete llaves. Cada usuario escoge un nombre de usuario A y una contraseña Pa, genera un par de claves RSA (Sa será la clave privada, Va la pública). El ordenador del usuario usará como datos privados dicha clave privada Sa y el hash de la contraseña H(Pa). El no guardar directamente la contraseña Pa es una elemental medida de seguridad: no queremos que un troyano, o el vecino, se pase por nuestro ordenador y nos robe el secreto, ¿verdad?

Siguiente paso: validar la clave. Para ello, el usuario escoge un número aleatorio y lo usa como clave para el algoritmo AES. Con dicho número aleatorio (que hace de clave de sesión), el usuario cifra un paquete conteniendo su contraseña A, el hash de la contraseña H(Pa) y su clave pública Va, y lo envía todo al servidor central de Skype. También ha de enviar la clave de sesión, protegida con RSA, para lo cual usa la clave pública Vs. La función hash usada es la SHA-1.

En el servidor central, se descifra el paquete RSA con la clave privada Ss, se recupera la clave de sesión y se usa para "abrir" el paquete cifrado con AES. En primer lugar, se comprueba que el nombre de usuario A no ha sido usado antes por otro usuario. En caso de que nadie lo haya usado, lo acepta, y procede a guardarlo junto con el hash del hash de la contraseña H(H(Pa)). De esa forma, tampoco Skype guarda una copia de la contraseña en texto llano. Lo siguiente que hace el servidor central es "firmar" la clave del usuario. Lo que hace, en realidad, es firmar algo llamado "Certificado de Identidad" (IC). Dicho IC contiene, entre otras cosas, la firma RSA que liga al usuario A con su clave pública Va.

¿Para qué todo este jaleo? En primer lugar, como he dicho, para asegurarse de que el nombre de usuario no está ya siendo usado. En segundo lugar, para devolver al usuario un paquete de datos que dice "esta firma es la suya, lo digo yo".

El resto, conectar al usuario A con el usuario B, es sencillo y lo hemos visto muchas veces. Cada usuario envía su IC al otro, el cual puede verificar (ya que tiene la clave privada del Servidor Central, Vs) que realmente el otro es quien dice ser. A continuación, A envía a B un paquete de 128 bits cifrado con la clave pública de B; B, a su vez, hace otro tanto. Los dos paquetes de 128 bits forman la clave simétrica (clave de sesión) que van a usar durante la comunicación. Una vez termine la llamada, la clave de sesión se borra. Como vemos, es un esquema conocido. Dos partes se ponen de acuerdo para que una tercera les "avale" por medio de un certificado digital, el cual asegura que las claves asimétricas intercambiadas son las correctas.

Esto es, en forma resumida, el proceso de uso de Skype. Hay algunos detalles que no he introducido para no liarla más, pero básicamente creo haberlo expresado bien (con mis humildes disculpas si he metido la pata en algún punto).

Como vemos, Skype parece hacer las cosas bien. Claves simétricas AES, claves públicas RSA, función hash SHA-1. Pero tiene un gran problema, algo que ha sido criticado y que hace que la seguridad de Skype tenga un signo de interrogación. El motivo es que el código informático Skype es cerrado. Nadie tiene acceso al código fuente. Más aún, algunos pasos son "propietarios", lo que atrae al espíritu de la seguridad mediante la oscuridad.

Aunque Skype ha evitado tirar de algoritmos propietarios en la mayor parte del proceso del cifrado (bien por ellos), el análisis de Berson afirma que el protocolo de acuerdo de claves es propietario. El generador de números aleatorios, clave para el buen funcionamiento de cualquier sistema de cifrado que use claves de sesión, usa SHA-1, pero no se dan más detalles, y el autor solamente evaluó el de la versión de Windows. Eso significa que cualquier fallo queda oculto por el secreto.

Otro problemas deriva del hecho de que no hay más análisis fiables, y el de Berson data de 2005 para la versión 1.3. También hay que tener en cuenta que los sistemas criptográficos suelen fallar por una mala implementación. Puede haber mil y un fallos, desde desbordamientos de búfer a canales laterales, que se hayan colado en el código fuente y que permanezcan indetectados.

Incluso algunos de los detalles que se conocen dan pie a dudas.
En primer lugar, el tamaño de la clave RSA. ¿Por qué 1024 bits? Sabemos que de un tiempo a esta parte se están descartando las claves asimétricas de 1024 bits en favor de tamaños mayores ("El tamaño de mi clave", Boletín ENIGMA 62). Un análisis de seguridad de Skype ("Skype uncoved", por Desclaux Fabrice de EADS) indica que el Servidor Central utiliza al menos dos claves distintas para certificar las claves RSA de los usuarios. Estas parejas de claves (que antes llamé Vs, Ss) son de 1536 y de 2048 bits. ¿Por qué esa diferencia? Lo ignoro, pero si lo que dice la Wikipedia es cierto, las versiones de pago usan la de 2048 bits para correo de voz y la de 1536 para negociar la conexión. ¿Los usuarios de pago? ¿Y qué pasan los del servicio gratuito, qué tipo de clave usan? De nuevo los detalles son como poco nebulosos.

La ausencia de código fuente impide, entre otras cosas, disipar las dudas sobre si Skype tiene una puerta trasera. En julio de 2008 un alto funcionario del ministerio de Interior austríaco dijo públicamente que escuchar una conversación de Skype no representaba un problema. De ser cierto, resultaría tan extraño como oír a Alan Turing decir en 1940 que no tenían problema con los mensajes de Enigma. Si fue un desliz o una táctica de presión para que los proveedores de Internet austríacos aceptasen medidas de interceptación adicionales queda por ver. De momento, alemanes y norteamericanos afirma que no pueden con Skype.

¿Pero es realmente cierto? Si la NSA hubiese colocado una puerta trasera en Skype, su formato propietario la ocultaría. Pero si la NSA se acuesta con Skype, tal y como hace con las demás telecos desde hace décadas, lo raro sería que no tuviesen dicho acceso. Algunos recuerdan que, si bien Skype fue desarrollada por los inventores del programa p2p Kazaa, ahora está en otras manos. Skype fue adquirida en 2005 por eBay, a un coste de 2.600 millones de dólares (a los que hay que añadir otros 1.400 inyectados recientemente por eBay).

Dada la sangría económica que Skype representa para las arcas de eBay, y el hecho de que dependa del beneplácito gubernamental para seguir operando, ¿quién dice que no han hecho un acuerdo bajo cuerda? Ya en 2008 se desveló que el operador de Skype en China usaba un filtro para bloquear términos sensibles, es decir, para ejercer la censura.
¿Cómo puede hacerse eso sin descifrar los mensajes? La novedad no era esa (la propia Skype ya lo había reconocido dos años antes), sino que el filtro había sido alterado para almacenar conversaciones de texto.

Hay quienes opinan que la NSA y sus primas ya pueden descifrar los mensajes NSA, y están jugando al despiste para hacer creer a todos que no pueden hacerlo. Igual que cuando los aliados hacían creer a los alemanes que Enigma era indescifrable. O puede suceder todo lo contrario. Justo antes de la Segunda Guerra Mundial, los franceses tuvieron la desesperada idea de hacer saber a los alemanes que Francia podía descifrar los mensajes Enigma. En realidad no podían, pero confiaban en que los alemanes se lo tragaran y lo cambiaran por otro sistema de cifra contra el que los criptoanalistas franceses tuvieran más suerte. Cuando los polacos se enteraron casi les da un ataque, porque ellos sí que podían descifrar Enigma, !pero no se lo podían decir a los franceses!

¿Estan los norteamericanos intentando convencernos de que dejemos de utilizar Skype mediante un tortuoso razonamiento? "Vaya, la NSA dice que no puede leer Skype, seguro que sí pueden y nos están engañando, así que dejemos de usarlo" ¿Estarán los austríacos, o los alemanes, tirándose de los pelos porque ellos sí pueden? Y considerando lo fácil que es instalar un troyano subrepticiamente, sea ilegalmente o mediante una orden judicial, ¿acaso les importa? Y espero me disculpen por dejar aquí el tema, pero mi paranoiómetro está marcando ya el nivel de manicomio. ¿Quieren seguir ustedes el debate?

Fuente: Boletín ENIGMA

Suscríbete a nuestro Boletín

3 comentarios:

  1. Lo más sencillo sería migrar a un sistema de VozIP con criptografía fuerte complétamente abiertos y claves de longitud muy superiores a lo que se supone "indescifrable".
    Es de lo que uno se puede sentir más seguro.
    Aunque quien sabe. A lo mejor ya disponen de criptografía cuántica.

    ResponderBorrar
  2. No me cabe la menor duda que NSA y otros servicios nacionales de seguridad de distintos países pueden leer todo lo que pasa en Internet, así también las comunicaciones por Skype. Comprendo que es una necesidad de los países prevenir accciones terroristas como el terrible ataque a las torres gemelas por un lado, más por otro lado perdemos lo que era esfera íntima todos nosotros...un precio alto porque la dignidad del ser humano está siendo afectada.
    Una solución es seguro, como dice el comentarista arriba,es usar criptografía mas fuerte y una clave muchísimo mas larga.

    Astronos

    ResponderBorrar
  3. Es lo que nos toca. Ya que nos gusta la seguridad, nos gusta la paranoia...
    jajaja
    Pienso que no hay nada que no se pueda ver en internet... en cuanto haces una conexión hacia el exterior, es susceptible de un modo u otro de ser interceptada...
    en la informática todo es posible y eso es a veces malo y a veces bueno...
    creo yo... :)

    ResponderBorrar

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!