La polémica generada por el reférendum independentista en Cataluña va más allá de la política: los bloqueos que las autoridades españolas realizaron a los sitios web provocaron que los organizadores de ese proceso hicieran uso del protocolo IPFS. Eso ha acabado siendo un grave error.

Lo es porque al usar este protocolo para replicar el sitio web original la base de datos de los votantes quedó expuesta. Hemos hablado con Sergio López (@slp1605), un profesional de la tecnología que sin trabajar específicamente en temas de seguridad informática se dio cuenta del peligro: cualquiera con un PC normal puede averiguar el nombre, NIF, año de nacimiento y el resto de datos personales de los votantes. Esa información ya está probablemente en manos de muchos otros usuarios, que podrían usarlos con todo tipo de fines, incluida la suplantación de identidad.

La base de datos de los votantes, expuesta

Sergio López abría la caja de Pandora hace unas horas en Twitter, explicando el proceso por el que llegó a esa conclusión. Todo empezó con una noticia publicada en Hacker News en la que se hablaba precisamente de cómo los responsables del referéndum habían decidido usar IPFS (InterPlanetary File System).

Asimismo, si hay alguna web que emplee estos datos como verificación, debe buscar una alternativa URGENTEMENTE. — Sergio Lopez (@slp1605) 4 de octubre de 2017

Este protocolo "hace la web más rápida, segura y abierta" según sus creadores, y básicamente replica sitios web (contenidos, código, base de datos) entre los usuarios que la visitan y acceden a convertirse en nodos de ese sitio web. Como nos explicaba López, esa solución es interesante para evitar el bloqueo, pero muy pobre a la hora de proteger la seguridad de esos datos, porque la base de datos queda expuesta.

Dar acceso a la base de datos ya es un problema serio —al final es cuestión de tiempo y de potencia de computación lograr descifrar esos datos—, pero es que además el propio diseño de la base de datos utilizada hacía que un potencial ataque fuese aún más sencillo.

Cada una de las entradas definidas por el NIF, la fecha de nacimiento y el código postal tenía un código correspondiente, un 'hash' generado mediante 1714 iteraciones del algoritmo SHA256 sobre esos datos de cada ciudadano. ¿Por qué ese número y no otro? Pues porque se trata de un número simbólico: Barcelona cayó el 11 de septiembre de 1714 en la guerra de Sucesión Española, y ya existe una curiosa tradición en los partidos de fútbol del Barça en el Camp Nou en los aficionados gritan "independencia" en el minuto 17:14.

La aplicación de ese hash no es suficiente: por ese diseño de la base de datos esas entradas no estaban cifradas ni se les aplicaba el tradicional 'salt' que cifran cada una de esas entradas para proteger los datos a los que hacen referencia.

La diferencia a la hora de facilitar los ataques, como destacaba López, es enorme: si esas entradas tienen su propio 'salt' solo se pueden atacar de una en una, pero al no tener esos salt, las comparaciones son de todas las entradas a la vez, algo que acorta el proceso de descifrado de forma brutal.

Un ataque trivial

López explicaba en Twitter cómo el ataque por fuerza bruta que algunos estimaban que era muy difícil se convierte en algo trivial. Dado que los hashes no tienen SALT, revelaba, "se puede comparar cada hash generado con todas las entradas indexadas en memoria" (la base de datos ocupa unos 2,2 GB). Ese proceso era aún más sencillo teniendo en cuenta que hay una parte predecible (fecha de nacimiento y código postal) que "se repite y es semánticamente completa, lo que facilita ataques por lotes y Divide&Conquer".

¿Qué significa esto? Pues que cualquier usuario puede hacer ataques dirigidos. Un ataque exhaustivo necesitaría unos 66 años en un PC convencional para obtener todos los valores, pero es que "para obtener todos los datos para un código postal y año concretos tan solo necesito un máximo de dos días y medio", y ese tiempo se aplica si el cálculo lo realiza una CPU modesta (Phenom II X4 955).

Con una tarjeta gráfica igualmente modesta (en su caso, una R7 250) el tiempo se reduce a apenas 90 minutos. El ataque sería aún más eficaz con GPUs más potentes en paralelo o incluso con ASICs, y se convertiría en una tarea casi trivial.

Sergio López publicaba además una prueba de concepto incompleta (para no ponerlo demasiado fácil) en la que demostraba lo sencillo que es desmontar la seguridad del sistema utilizado en el referéndum. Con la capacidad de cómputo actual ese potencial ciberataque resultaba muy sencillo: la entropía se reducía al seleccionar por ejemplo "todos los DNIs de los nacidos en 1974 del código 08080", sobre todo porque hablamos de 100.000 números y 23 letras, porque el código postal y el año de nacimiento ya lo sabes.

De hecho en ese proceso había más errores: "aunque al hash le faltan los 3 primeros dígitos del DNI", apuntaba López en el hilo de Twitter, "se incluye la letra del NIF, que actúa como carácter de control. Por lo tanto, con los 5 dígitos y la letra NIF, se pueden calcular unos 45 posibles números correspondientes a ese DNI. Si descartamos los números excesivamente bajos o altos, se quedan en 10-15 posiblidades. Menos, si afinamos por localidad y/o nacimiento". El problema, como demostraba Alejandro Rivero en su blog, tiene fácil solución.

Los datos probablemente ya están en malas manos

La investigación de Sergio López es notable y a la vez preocupante, sobre todo porque como él decía "Si yo, que NO me dedico a la seguridad TI y sólo tengo conocimientos básicos de criptografía, me he dado cuenta, los "malos" lo saben seguro. Por lo tanto, es FUNDAMENTAL que todos los que tengan una copia de la web, PAREN INMEDIATAMENTE su distribución".

Puede que ya sea demasiado tarde: los datos han estado accesibles durante días para cualquiera que replicase el sitio web a través de IPFS, y es por tanto probable que esa base de datos ya está en manos de personas que podrían descifrar todos los datos o al menos una gran cantidad de ellos.

Los DNIs, fechas de nacimiento y códigos postales se pueden asociar por tanto a nombres y direcciones (aparte de otros datos) de ciudadanos incluidos en ese censo, y quienes dispongan de esos datos pueden usarlos para todo tipo de ataques, incluidos los dedicados a suplantar la identidad para cambiar contraseñas o acceder a todo tipo de servicios de forma no autorizada.

En Xataka | Cómo el de Equifax se ha convertido en el mayor robo de datos personales de la historia