Anonimizando datos

Cuando queremos compartir información con terceros, en función de la categoría de los datos y la importancia que tengan para nosotros, podríamos decidir anonimizar parte de la información que estamos compartiendo, para evitar que el receptor pueda conocer ciertos datos críticos para nosotros o bien que por razones regulatorias, no podamos compartir con ellos.

Otra de las razones para anonimizar datos está relacionada con la confianza que tengamos en la entidad o persona a la que vamos a ceder los datos. En caso de que no estemos totalmente seguros, que el destinatario de la información, no podrá garantizar la confidencialidad de los datos, sería necesario garantizar que no pueda acceder a estos datos, que podemos considerar importantes.

Una cuestión importante a la hora de plantear un proceso de anonimización de los datos que compartimos, es que el conjunto de datos tenga una utilidad para el destinatario, ya que de nada serviría anonimizar los datos y convertir la información en un conjunto de datos aleatorios, que no tuviera ningún valor. 

Por tanto, el proceso de anonimización, debe garantizar la confidencialidad de los datos que estamos compartiendo y que el proceso de anonimización mantenga información mínima, para que el destinatario pueda trabajar con ella.

Técnicas de anonimización

Existen varias técnicas para conseguir anonimizar parte de los datos que compartimos con un tercero, dependiendo del nivel de confidencialidad y usabilidad de los datos que estamos anonimizando. Estas técnicas van desde la eliminación de los datos que consideramos sensibles, hasta la sustitución por valores arbitrarios a modo de pseudónimos, que permiten revertir el proceso de animación de los datos.

La elección de una técnica u otra, dependerá del ciclo de vida que queramos dar a los datos que estamos anonimizando. Ya que en algunos casos, nos interesará aplicar técnicas como la eliminación de datos o la perturbación de los valores de ciertos datos, en función de la aplicación que vayamos a dar a los mismo. Por ejemplo, si tenemos que aplicar un técnica de animación a datos que vamos a ceder a terceros, y no tenemos seguridad sobre la calidad del tratamiento que se va a realizar sobre los datos, puede que nos interese asegurar que el proceso de animación elimina los datos sensibles. En otros casos, si los datos que estamos anonimizando no son críticos para nosotros, pero no queremos que un tercero pueda inferir información de los datos facilitados, podríamos aplicar técnicas de manipulación, que modificasen los valores anonimizados dentro de una serie acotada de valores.

Por tanto, el proceso de anonimización estará directamente relacionado con la naturaleza de los datos y el nivel de privacidad que queramos mantener, así cómo la utilidad que dará a los datos la entidad a la que los vamos a ceder.  Dependiendo de todos estos factores, existen un conjunto de técnicas que podemos utilizar para anonimizar datos:

  • Eliminación. Borramos los datos que consideremos sensibles, para que no aparezcan en el conjunto de datos. Esta técnica es la más drástica y segura. Drástica ya que al eliminar ciertos datos o atributos podemos eliminar también la relación que pueda existir entre otros datos.  Por ejemplo, al eliminar el nombre de una persona, se perderían todas las relaciones de aquellos otros datos, que utilizan el atributo nombre como referencia, para relacionar ambos conjuntos de datos,
  • Perturbación. Los datos se modifican realizando cambios que no afecten al análisis del conjunto, pero sí modifican información del registro que estamos anonimizando. Estos cambios deben producirse en un rango concreto de los datos con los que estamos trabajando. Un ejemplo, cambiar la fecha de nacimiento de una persona añadiendo una perturbación de ± 3 años.
  • K-Anonimato. Escoger conjuntos de datos, en los que podemos garantizar que un número k-1 de registros comparten los mismos datos en los atributos que pueden considerarse atributos clave. Por ejemplo, construir un conjunto de datos de personas en las que siendo K=10, elijamos un registro y encontremos otros 9 registros con los mismos atributos clave (edad, nombre, ciudad).
  • Generalización. Eliminamos información, sustituyendo ciertos atributos por valores genéricos, que impiden obtener una información detallada del atributo. Por ejemplo, cambiar la fecha de nacimiento por un rango de edad, o la dirección por el código postal.
  • Cifrado. El dato que queremos anonimizar lo ciframos con alguna técnica de encriptación, para garantizar que no es accesible por nadie que no tenga acceso a la clave de desencriptado. Esta técnica nos permite compartir información con terceros garantizando que solo las personas autorizadas, tendrán acceso al dato, pero como desventaja tiene que se destruye toda la información que permita relacionar otros atributos o datos.
  • Pseudonimización. Esta técnica consiste en sustituir los datos que queremos anonimizar por una serie de pseudónimos, los cuales utilizaremos para reemplazar todas las apariciones del dato que estamos anonimizando. Las ventajas que presenta esta técnica es que si mantenemos un registro de la relación entre el dato y el pseudónimo que estamos utilizando, podemos revertir el proceso de anonimización. Otra de las ventajas que tiene utilizar este tipo de técnicas es que permite mantener la relación entre datos que hagan referencia al dato que estamos anonimizando.

Pseudoanimización

De las técnicas de anonimización que hemos visto anteriormente, vamos a desarrollar la técnica de pseudoanonimización, ya que es una de las tiene mayor potencial en aquellos entornos, en los que debemos asegurar la confidencialidad de los datos, pero a su vez garantizar la calidad del conjunto de datos que estamos anonimizando.

Partimos de la premisa, que vamos a realizar un proceso de sustitución de los datos sensibles, por valores que no tengan ninguna información, por ejemplo un identificador numérico que hayamos generado de manera aleatoria.

Supongamos que tenemos la siguiente tabla, la cual queremos anonimizar con pseudónimos.

El primer paso será generar la tabla maestra de pseudónimos, en la que registraremos el dato que queremos anonimizar y el pseudónimo que emplearemos. La siguiente tabla es un ejemplo de cómo podemos generar la tabla maestra. Hemos generado valores aleatorios, que relacionaremos con los identificadores de los usuarios, que para el ejemplo se están utilizando los nombres.

Una vez que tenemos generada la tabla maestra, procedemos a sustituir los datos por sus pseudónimos. El resultado sería algo parecido a lo que muestra la siguiente tabla.

Un usuario que no conozca la tabla maestra, no conoce los usuarios de las operaciones, pero sí puede deducir la relación entre las operaciones que se han realizado:

  • El identificador 127 ha transferido 5 unidades al usuario 798 y 7 unidades al usuario 897.
  • El identificador 692 ha transferido 3 unidades al identificador 384.
  • El identificador 798 ha transferido 4 unidades al identificador 127.
  • El identificador 897 ha transferido 1 unidad al identificador 692.

En este escenario, hemos conseguido anonimizar los datos de la tabla y si mantenemos a buen recaudo la tabla maestra, los usuarios que accedan a los datos, no podrán conocer la identidad real de los usuarios.

Como hemos comentado anteriormente, una de las ventajas de este tipo de anonimización, es que es reversible, siempre y cuando tengamos acceso a la tabla maestra. En el caso que un usuario nos pidiese conocer la identidad de un identificador concreto, podríamos facilitar la relación del seudónimo que hemos utilizado y se revelaría la identidad del usuario. Aunque la reversibilidad de la anonimización puede ser una ventaja en algunos casos, en otros puede verse como una debilidad del proceso de anonimización, sobre todo, si empleamos la tabla maestra de pseudónimos durante un periodo largo de tiempo, ya que un usuario sin acceso a dicha tabla, podría inferir información utilizando el comportamiento de los pseudónimos.

Múltiples pseudónimos

Existe una variación de esta técnica que consiste en utilizar un pseudonimo, no por cada datos que queremos anonimizar, sino por cada aparición del dato que queremos anonimizar. Esta variación de la técnica de pseudónimos permite anonimizar no solo los datos, sino los patrones que los datos que estamos anonimizando están generando sobre el conjunto de datos.

Vamos a generar la siguiente tabla maestra, en la que tendremos tantos pseudónimos por dato, como apariciones del datos tengamos en la tabla de datos.

Centrémonos en el caso del usuario Juan, al cuál le habíamos generado el pseudónimo 127, ahora añadiremos dos nuevos pseudónimos para el usuario Juan, los identificadores 358 y 215. La sustituir la tabla de datos con los pseudónimos de la tabla maestra, obtendremos algo parecido a la siguiente tabla:

Como se puede observar en la tabla, hemos dejado en negrita las sustituciones que hemos realizado del dato Juan con los pseudónimos de la tabla maestra.

Esta técnica puede parecer algo más engorrosa a la hora de implementar el proceso de anonimización, pero garantiza que un usuario que no tiene acceso a la tabla maestra, no solo no tendrá acceso a la identidad de los usuarios, sino que tampoco podrá inferir información, como por ejemplo la operaciones que se realizan sobre un pseudónimo concreto. Este ventaja es importante, para aquellos escenarios, en los que tengamos que compartir datos relacionados con usuarios concretos  a lo largo de un periodo de tiempo grande.

Problema con la reversibilidad 

Una de las principales críticas que recibe la técnica de pseudoanonimación reversible, es que el propietario de la tabla maestra de pseudónimos tiene que mantener la tabla de forma segura, tiene que garantizar que no existan colisiones entre los pseudónimos y que la tabla no pueda ser alterada. Y este es uno de los principales problemas de esta técnica, que la reversibilidad está en manos del propietario de la tabla maestra.Vamos a verlo con un ejemplo. 

Supongamos que Bob gestiona la tabla maestra de pseudónimos, vamos a desarrollar el ejemplo con la tablas que hemos utilizado anteriormente. Por tanto Bob es el responsable de administrar la tabla maestra.

Los usuarios están realizando transacciones en el sistema, tal como vemos en la tabla de datos. Alice que es cliente Bob le pide la tabla de datos y Bob se encarga de implementar el proceso de anonimización, tal como hemos visto antes.

En este punto, Alice le solicita a Bob el pseudónimo del identificador 127 por la razón que sea. Bob en un acto de mala práctica profesional, cambia la tabla maestra para alterar los pseudónimos relacionados con el identificador Juan, moviendo el identificador 127 al listado de pseudónimos de  María. Haciendo creer a Alice que el número 127 corresponde con María y no con Juan.

Con esta información, Alice estaría operando con la tabla de datos, usando identificadores incorrectos. Este ejemplo, que tiene un fin simplemente didáctico, pone de manifiesto, que la confianza de la reversibilidad de los pseudónimos, está en manos de los propietarios de las tablas maestras, lo que puede ser un problema de confiabilidad.

Reversibilidad confiable

Existen varias formas de construir una solución que permita implementar modelos reversibles confiables. Una de las estrategias es utilizar los hash camaleónicos, si no sabes que són este tipo de hash, puedes ampliar información en el post Chameleon Hashes.

Los hash camaleónicos, nos permiten generar un conjunto de datos, los cuales generan colisiones sobre un mismo hash, lo que nos ayuda a construir un modelo de pseudónimos verificables, que impiden al propietario de la tabla maestra, poder alterarla en el futuro.

Con este esquema, el propietario de la tabla maestra generar el conjunto de pseudónimos, que son los hashes derivados de un hash camaleónico, el receptor de los datos anonimizados, en nuestro ejemplo se trate de Alice, no solo recibe los datos anonimizados, sino que tiene la garantía que los pseudónimos utilizados para anonimizar los datos, no pueden ser alterados en el futuro por Bob.

Para construir un proceso de anonimización de datos utilizando pseudónimos basados en hashes camaleónicos, tenemos que seguir los siguientes pasos. Vamos a explicar el proceso dando por sentado que entiendes qué es y cómo funciona los hashes camaleónicos, si no es así, te recomiendo que leas el post Chameleon Hashes.

La estrategia que vamos a seguir se la siguiente:

Construiremos un hash camaleónico utilizando como mensaje el dato que queremos anonimizar, para nuestro ejemplo anonimizaremos “Juan”. El resultado de la creación del hash camaleónico es: 

(“Juan”,R,s, r,ClavePública)

  • R que es un punto de la curva, cuyo valor k debemos mantener en secreto.
  • s y r permiten a los usuarios poder verificar que las colisiones se produzcan sobre el mismo hash camaleónico.
  • ClavePública de usuario que está generando el hash camaleónico.

Con estos datos construimos la tabla maestras de pseudónimos 

Como pseudónimos para las distintas apariciones del identificador Juan vamos a utilizar número aleatorios. Generamos los pseudónimos aleatorios con los números 3984, 2781 y 9823.

Como vemos en la tabla anterior, estamos calculando el valor del parámetro c para los distintos mensajes con el propósito que todos generen una colisión sobre el hash camaleónico que hemos generado para el identificador Juan.

Ahora solo tenemos que sustituir en la tabla de datos las apariciones del dato “Juan” por uno de los valores de la tabla de colisiones.

Bob entrega la tabla de datos a Alice con el seudónimo y el valor de c para ese pseudónimo. 

Si Alice le pidiera a Bob una prueba para verificar que 3984 y 2781 son pseudónimos del mismo identificador, Bob solo tendría que facilitarle a Alice el valor de s y r, para que  ella pudiera comprobar con el mensaje que genera la colisión “3984”, el valor de s “283” y el valor de c “. Recordemos que Bob generó el siguiente hash de colisión para el identificador “Juan”

(“Juan”,s, r,ClavePública)

Si Alice tiene los valores de s, r y la clave pública de Bob, puede fácilmente validar que el mensaje “3984” genera una colisión sobre s,r.

(“3984”,s,r, c=926,ClavePública)

Si hace lo mismo con el mensaje “2781” puede verificar que este mensaje también es una colisión sobre s,r.

De esta forma, Alice aún no conoce la identidad de los pseudónimos 3984 y 2781, pero tiene la certeza que ambos generan una colisión sobre el mismo hash camaleónico. Si en algún momento Alice le pide a Bob que le facilite la identidad de ambos pseudónimos. Bob no podrá modificar el hash camaleónico, ya que si modifica el mensaje que ha utilizado para generarlo, para nuestro ejemplo la palabra “Juan”, las colisiones que tiene Alice no podrán validarse, lo que permite a Alice comprobar que Bob ha manipulado los datos de la tabla maestra.

Conclusión

Los procesos de anomimación de datos se están convirtiendo en un elemento esencial para las empresas, ya que la necesidad de compartir datos con terceros, está obligando a establecer nuevos paradigmas como los espacios compartidos de datos. Estos nuevos paradigmas permiten  a las organizaciones explotar sus datos más allá de las fronteras de su propia organización, compartiendo datos e información de manera abierta, pero controlada. Esta es la cuestión y el reto al que se enfrentan actualmente las organizaciones, cómo poder compartir datos, pero asegurando que se mantiene cierto control sobre los datos, desde el uso que se pueda llegar a hacer de ellos, como asegurar políticas de cumplimiento. Técnicas como la animación de datos utilizando pseudónimos basados en hashes camaleónicos, pueden permitir a las empresas tener cierto control sobre la información que están compartiendo. 

En sectores como la salud, donde los datos están directamente relacionados con personas y tienen un carácter lo suficientemente críticos, es necesario implementar este tipo de procesos, que garanticen la privacidad de los datos y por otro lado, también es importante garantizar que los datos que se están anonimizando puedan ser usados.

José Mora

José Juan Mora Pérez
CTO & Founder

Últimas Noticias

Categorias

Trabaja con Nosotros

En Kolokium estamos siempre buscando talento, gente inquieta que no le tenga miedo a los retos, si quieres trabajar con tecnologías Blockchain.

INNOVACIÓN

COLABORAMOS EN INICIATIVAS PÚBLICO/PRIVADAS ORIENTADAS A EXPLORAR LAS POSIBILIDADES DE LA TECNOLOGÍA BLOCKCHAIN EN DISTINTOS HÁBITO INDUSTRIALES Y CORPORATIVOS
neotec

PRIOPS

El proyecto PRIOPS ha recibido el apoyo del CDTI por medio de su programa Neotec 2018, en el que se le ha concedido una subvención de 247.618 €

apia

APIA

Plataforma integral para la auditoría inteligente de obra civil basado en la captura y parametrización automática de identidades de obra en el modelo de información BIM y la certificación mediante Blockchain de su producción, financiado por el CDTI y cofinanciado por el FEDER

Consorcio: AZVI, EMERGYA, GRANT THORNTON Y KOLOKIUM
Plazo de ejecución: septiembre de 2018 a diciembre 2020
Presupuesto Total: 2.218.874,00€

k1

K 1

Framework para la generación y despliegue automatizado de smart contracts en arquitecturas distribuidas Ethereum e Hyperledger Fabric. Proyecto financiado con el apoyo

K1_FRAMEWORK PARA LA GENERACIÓN Y DESPLIEGUE AUTOMATIZADO DE SMART CONTRACTS EN LOS BLOCKCHAINS DE ETHEREUM E HYPERLEDGER del CDTI con fondos propios a través de la convocatoria INNOGLOBAL 2017 y apoyado por el Ministerio de Economía, Industria y Competitividad.

Consorcio: KOLOKIUM BLOCKCHAIN TECHNOLOGIES y GRUPO CADENA (Colombia)
Plazo de ejecución: octubre de 2017 a septiembre de 2019
Presupuesto KOLOKIUM: 381.440€

Logos Paravasis

PARAVASIS

PARAVASIS es un proyecto Subvencionado por el CDTI que ha sido apoyado por el Ministerio de Ciencia e Innovación, y que investiga en nuevas tecnologías para que haya una mejora sustancial en la flexibilidad y productividad del proceso de diseño y desarrollo de sistemas industriales complejos favoreciendo la personalización de nuevos productos intensivos en software y considerando además el mejor balance de tiempo, capacidad y coste, así como la seguridad.

Consorcio: Ghenova Digital, DHG, Integrasys, Cotesa, Capgemini Engineering, Optiva Media, Kolokium y Komorebi.

Plazo de ejecución: 01/10/2022 – 30/06/2025

Presupuesto Global: 5.364.425,00 €
Presupuesto Kolokium: 437.163,00 

Logos Valrec

VALREC

El objetivo principal del Proyecto VALREC es la investigación industrial y la demostrar nuevas soluciones avanzadas y de coste efectivo que garanticen un cierre de ciclos más eficiente y trazable (incremento de la confianza de materiales secundarios en el mercado) de grandes volúmenes de recursos materiales de construcción mayoritarios (principalmente hormigón, cerámico y yeso) a lo largo de toda la cadena de suministro de los mismos.
El proyecto VALREC “Soluciones innovadoras para fomentar la VALorización de RCD y la utilización de materiales Recuperados bajo criterios de Economía Circular en la CAM” ha sido subvencionado a través de la Convocatoria 2020 de las ayudas cofinanciadas por el Fondo Europeo de Desarrollo Regional para contribuir a la mejora de la Cooperación Público - Privada en materia de I+D+i mediante el apoyo a Proyectos de Innovación Tecnológica de efecto tractor elaborados por núcleos de innovación abierta en la Comunidad de Madrid, en el marco de la Estrategia Regional de Investigación e Innovación para una Especialización Inteligente (RIS3), dentro del Programa Operativo FEDER de la Comunidad de Madrid para el periodo 2014-2020.
Consorcio: SURGE AMBIENTAL (SURGE), VALORIZA SERVICIOS MEDIOAMBIENTALES (VSM), ADCORE, KOLOKIUM BLOCKCHAIN TECHNOLOGIES, ALLGAIER MOGENSEN, SODIRA IBERIA, SIKA, HORMICRUZ, GREEN BUILDING COUNCIL ESPAÑA (GBCe).
Plazo de ejecución: 17/11/2021 - 17/11/2023
Presupuesto Global: 4.063.243,14 €
Presupuesto Kolokium: 256.700,00 €

KOLBLM

Completa el formulario para descargar​

KOLBI

Completa el formulario para descargar​

KOLFSB

Completa el formulario para descargar