bigdata

Es la pregunta del millón, ¿verdad? La quimera que todas las compañías del sector de la información andan buscando.

Básicamente hablamos de encontrar una manera de, manteniendo la integridad de los datos cifrados (datos por tanto privados), permitir que se trabajase con ellos para sacar valor relacional. En entornos prácticos, significaría que podríamos hacer estudios de mercado (que % de la sociedad está interesada en este tipo de producto), matener conversaciones privadas expuestas a escrutinio externo o realizar comprobaciones críticas (si este ciudadano ha emitido por ejemplo un voto) sin que por ello los datos de estas personas quedaran expuestos.

No ya únicamente metiendo capas de intermediación (a fin de cuentas, herramientas como Keyword Planner (ES) nos permiten conocer el número de búsquedas a una keyword específica en Google; datos que la compañía consulta porque tiene acceso a esa base de datos, y que nosotros como organismo externo podemos consultar gracias a una herramienta intermediadora que evita tener que cedernos los datos en bruto para realizar el análisis), sino dentro del mismo organismo (que Google, por seguir con el supuesto, pudiera realizar esa búsqueda sin tener que exponer dentro de su sistema los datos de todos esos usuarios).

Hay entornos claros donde una arquitectura de este tipo se hace necesaria: Véase la publicidad online, basada precisamente en la explotación de datos que sin duda son privados mediante plataformas a las que terceros pueden acceder, y ya ni hablemos de sistemas de gestión de la ciudadanía, como el del voto electrónico anteriormente citado, o cualquier otra herramienta relacionada directamente con nuestra identidad física (seguridad social, DNI electrónico,…).

Para abordar esta problemática tendremos que indagar en dos elementos críticos (cifrado y descentralización), ampliamente tratados en esta humilde morada, y que trabajando juntos podrían ser una posible solución, ejemplificados a su vez en un proyecto que sin duda apunta maneras.

¡Comencemos!

Asegurar la integridad de los datos mediante el cifrado homomórfico

Es la primera parada en nuestro camino.

Si queremos que un dato siga siendo privado debe estar cifrado. El principal problema que encontramos en esto es que habitualmente no es posible trabajar directamente con datos cifrados, puesto que su algoritmo se corrompe tan pronto realizamos cualquier tipo de operación.

Para solucionar esto, se recurriría a un cifrado homomórfico, que no es más que una tipología de cifrado de datos que permite realizar algunas operaciones (cifrado parcial homomórfico) o cualquiera (cifrado completo homomórfico) de las dos disponibles (suma y multiplicación).

El cifrado RSA (ES) es un ejemplo de cifrado homomórfico parcial, ya que permite operar con la multiplicación sin que los datos pierdan su integridad.

Básicamente, y sin intentar entrar mucho en detalle, la clave pública de un cifrado RSA está compuesta por un mensaje «m» (el dato), un valor «e» (encryption) y el módulo de «N«, que es el producto de dos números primos (ES) gigantes.

El cifrado resultante «x» se obtiene mediante la siguiente operación:

x = m^e mod N

Presuponiendo que queramos obtener el producto de dos mensajes cifrados mediante RSA, la multiplicación resultante tendría el siguiente formato:

x1*x2 = (m1*m2)^e mod N

Y esto a su vez permite a un tercero obtener la multiplicación en claro de los dos mensajes. Mensajes que recordemos, han sido multiplicados de forma cifrada:

m1*m2 = (x1*x2)^d mod N

Donde «d» es la clave privada (decryption).

¿Existen cifrados homomórficos completos? Existen, pero no suelen utilizarse por la sencilla razón de que son muy pesados de utilizar (en cuanto a recursos necesarios para trabajar con ellos).

Mientras un cifrado RSA de clave asíncrona apenas supone una latencia a considerar en el sistema, cifrados completamente homomórficos como el presentado en este documento de la Universidad de Stanford (EN) aumentan drásticamente el tiempo de cálculo del sistema, haciéndolos históricamente inoperativos en entornos de producción.

Precisamente para minimizar este problema se propone la segunda pata de este artículo.

Descentralizando el manejo de datos cifrados homomórficamente mediante arquitecturas blockchain

Blockchain es la tecnología descentralizada que opera bajo algunas de las criptomonedas más conocidas, como el bitcoin.

Aunque su ámbito parece estar supeditado a entornos de transferencias económicas, ya hemos hablado en alguna ocasión de que en esencia blockchain únicamente gestiona comunicaciones (transferencias de información) descentralizadas, indistintamente del carácter o finalidad de esta comunicación.

Así, vimos en su momento que podía utilizarse como arquitectura de comunicación en entornos de IoT, dando solución al principal problema que presenta la gestión de billones de nuevos dispositivos conectados, o incluso, como compartía recientemente en la Comunidad de Nuevas Tecnologías y Seguridad de la Información de este blog, en la abogacía (EN).

En este caso, la idea es que los recursos necesarios para computerizar las operaciones en entornos de cifrado homomórfico sean compartidos entre cientos o miles de nodos, distribuyendo y descentralizando estas operaciones, reduciendo el gasto unitario de energía, y bajando por tanto drásticamente el tiempo de espera.

Para ello, esas claves se dividen en muchos elementos, que son enviados a cada usuario del sistema blockchain para operar. La cadena de bloques de cada trozito es la encargada de asegurar su posición y procedencia, además de guardar la información de la transacción, que le permitirá una vez en el nodo padre, recomponer el dato.

Con ello además se gana en mayor privacidad, ya que ni tan siquiera se trabaja con datos cifrados enteros, sino que estos se dividen anónimamente entre los nodos de esta red. Y teniendo acceso a uno, únicamente se podría saber su origen, siendo imposible su tratamiento por separado.

Enigma, un PoC de cifrado homomórfico en arquitectura blockchain

Precisamente este mismo diseño han presentado recientemente Guy Zyskind y Oz Nathan, dos investigadores del MIT Media Lab, bajo el nombre de Enigma (EN).

Enigma no deja de ser la red de blockchain encargada de transmitir y operar con datos cifrados homomórficamente. Como definía en la web uno de ellos:

Enigma es como una caja negra. Envías los datos que quieras, los utiliza y solo devuelve el resultado. Los datos como tales nunca se revelan, ni al exterior ni a los ordenadores que ejecutan esas computaciones con los datos.

Puesto que el primer hándicap al que tienen que enfrentarse es el hecho de que cualquier red descentralizada requiere de un número crítico de usuarios para funcionar, se está planteando crear un sistema de recompensas, de manera que todo aquel usuario que cede su dispositivo para formar parte de Enigma recibiría a cambio bitcoins.

Un sistema de recompensas que ya vemos en acción en arquitecturas semejantes, como la propia de las carteras virtuales de bitcoin, o incluso en entornos P2P, donde obtienes más ancho de banda en el sistema conforme más tiempo de computación entregues.

Sobra decir que como buen proyecto académico, será liberado bajo licencia abierta tan pronto esté «terminado», con la finalidad de que sea la comunidad quien siga evolucionando y optimizando su arquitectura.

Queda por ver cómo evoluciona el proyecto, y qué posibilidades hay de implantarlo en escenarios más cercanos. En todo caso, un alivio para los que como a un servidor nos interesaría que la tecnología permita dirigirnos hacia entornos menos controlables por un solo organismo. Entornos donde la privacidad estuviera asegurada a bajo nivel, sin sistemas de confianza, y no únicamente por intereses empresariales o por incapacidad a la hora de sacarle rédito económico.