Protección de datos no estructurados

Introducción

En los artículos previos, nos hemos centrado en las tipologías de información sensible y en como proteger nuestros datos cuando estos están estructurados, como una extracción de CSV, Los campos de una tabla de Base de datos, etc. pero qué ocurre cuando lo que queremos anonimizar es una información que no está estructurada, como, por ejemplo:

  • Texto Libre: En este caso podemos estar hablando de texto libre, como por ejemplo un tweet o una frase recuperada de cualquier sistema.
  • Imágenes: en este caso podemos hablar de imágenes que tienen texto dentro de ellas, o de fotos de personas u objetos.
  • Videos: En este caso se trata como una secuencia de imágenes, y que además suele tener un audio asociado.
  • Audio: Audio recuperado de algún tipo de conversación privada.

Para esto existen diversas aplicaciones de pago, en nuestros casos mostraremos algunos ejemplos con servicios cognitivos de Azure, pero también existen varios proyectos de tipo OpenSource que nos pueden ayudar para gestionar los datos tanto estructurados y/o no estructurados, tales como:

Opciones

Tratamiento de Texto plano

Texto a través de código

Para poner un ejemplo, trabajaremos en este caso con el proyecto “presidio”, que está desarrollado bajo el paraguas de Microsoft, este framework por defecto viene en Ingles, pero tenemos la opción de customizarlo o adaptarlo al español o a cualquier otro idioma que necesitemos, y tiene la capacidad de analizar textos e imágenes.

Si empezamos con texto, el sistema nos detectará por un lado cuáles son los elementos de tipo PII sobre los que se deben trabajar, y luego le aplicamos las transformaciones que sean necesarias para ocultarlos.

Para que os hagáis una idea de lo que ofrece, Presidio proporciona un entorno de Demo, en donde podéis poner vuestro texto y aplicar las diferentes transformaciones que proporciona:

En este caso, mostraré un ejemplo basado en el siguiente texto, que como podemos ver tiene un montón de información personal

Hi. My name is Roberto. I was Born in Madrid, Spain in 1974, My random phone number: 913-581-0505, if you need some help don’t hesitate contact me in my email roberto.navarromatesanz@nttdata.com, my credit card is 1111-2222-3333-4444

Lo primero que debemos hacer, es detectar toda aquella información que sea de carácter personal.

Una vez que tenemos identificados cuales son los elementos sensibles, procedemos a sustituir estos datos por otros valores que nos permitan anonimizar los datos como vemos en la siguiente imagen.

Presidio tiene varias opciones de trabajo para enmascarar los datos, y que se las indicamos a través de la opción “operators” , por defecto tenemos la de sustituir por un valor por defecto como el caso de “”, pero podemos, y siguiendo el orden del ejemplo, poner una etiqueta customizada “MASK_NAME”, aplicar una función HASH, encriptar los datos, aplicar una máscara, pero también podríamos borrarlo, o aplicar una función propia que nos permita algo customizado o recuperar el dato de una tokenización, etc.

En la siguiente imagen tenemos el detalle de las opciones proporcionadas.

De cara a trabajar con Presidio en español, debéis seguir lo que se indica en esta página.

Aquí os pongo un ejemplo en donde trabajaremos con el siguiente texto:

Hola, mi nombre es Roberto. Nací en Madrid, España en 1974, mi número de teléfono aleatorio es el 9135810505, si necesita alguna ayuda, no dude en contactarme en mi correo electrónico Roberto.navarromatesanz@nttdata.com, mi tarjeta de crédito es 374245455400126

En primer lugar, debemos descargarnos el modelo pre-entrenado para el español de spaCy/Stanza, antiguamente conocida como StanfordNLP, y que proporciona modelos de procesamiento de lenguaje natural (+60 modelos), para ello ejecutar en una ventana de comandos la siguiente instrucción:

python -m spacy download es_core_news_md

Y con ello, ya podremos ejecutar nuestro código.

Texto a través de Servicio Cognitivo

Para trabajar con servicios cognitivos en Azure, debemos hacerlo con el servicio de Text Analytics, el cual nos permite entre otras cosas trabajar con el reconocimiento de PII (Personally Identifiable Information).

Digital Lover

Categorias: Person, PersonType, PhoneNumber, Address, Email, URL, IP, DateTime, Quantity

Azure information: DocumentDB, Database Connection, IoT Connection, Storage Account Key

Financial account identification: Credit Card, IBAN, ABA, SWIFT Code

Identificaciones Especificas por País (ES): DNI, SegSocial, Identificador Fiscal

Aquí podemos trabajar en Ingles:

U otro idioma como el español:

Pero aquí no tenemos opción de indicar cómo queremos enmascarar, lo sustituye siempre por una cadena de *********

Existen los siguientes idiomas para documentos, el de conversación, aunque lo veías en la imagen, aún está en preview y solo para el inglés.

Tratamiento de Imágenes

Objetos

En este caso, lo que se debe hacer en detectar lo que queremos ocultar, y aplicar algún tipo de ocultación o difuminado sobre los objetos, en este ejemplo trabajaremos bajo el supuesto de que queremos anonimizar caras de una imagen.

En este caso usaremos de base el servicio cognitivo de Face, pero si quisierais hacerlo con una ejecución en local, podríais usar OpenCV, y os daría unos resultados similares.
En un caso muy simple, simplemente podríamos identificar las caras, y difuminarlas como en el siguiente ejemplo:

Pero podemos meterle algo más de lógica usando lo que nos proporciona el servicio cognitivo, para enmascarar las caras de los niños:

Obviamente, podemos usar cualquier otro servicio como Custom Vision o un modelo entrenado por nosotros para ocultar por ejemplo matrículas, marcas, etc.

Texto

Texto a través de código

En este caso tenemos texto dentro de imágenes, y para resolver este problema usaremos Presidio, que utiliza por debajo la librería Tesserator, la herramienta de OCR de Google para extraer los textos. En este caso vamos a trabajar sobre el mismo texto de todo el artículo, pero en formato imagen.

Con esta imagen podríamos hacer diferentes cosas según nuestras necesidades, como, por ejemplo:

  • Como primera opción, podemos ocultar la información sensible que es la funcionalidad por defecto de presidio.
  • Una segunda opción, en la que, en lugar de ocultar los datos de la imagen, se extraería el texto usando directamente Tesserator y luego lo procesaríamos para anonimizarlo como en los ejemplos anteriores y almacenarlo, o aplicar cualquier otra lógica que fuera necesaria.

Texto a través de Servicio Cognitivo

Y caso de querer hacerlo con Servicio Cognitivo y partiendo de esta imagen:

Tendríamos:

Vídeos

Un video no deja de ser un conjunto de fotogramas que podemos procesar de la forma que hemos visto anteriormente extrayendo los fotogramas con OpenCV, ocultar la información con alguna de las opciones mostradas, y por último volver a recomponer el video (incluido el audio). Esto puede ser pelín complicado, así que si no tenemos grandes restricciones, la opción más rápida es usar el servicio “Azure Media Service”(que actualmente va por su versión 3 y nos hace todo el trabajo). Si no, habría que ponerse a investigar y aplicar la lógica necesaria para ofuscara cada fotograma.

Audio

En este caso el objetivo sería el de convertir el audio a texto y luego anonimizarlo, ya sea con Presidio o con la opción del servicio cognitivo que vimos anteriormente.

Conclusión

Como hemos visto a lo largo de estos artículos, existen diversas formas de poder asegurar la anonimización de los datos, según las necesidades reales de negocio. Pero debemos tener claro que todas ellas tienen sus ventajas e inconvenientes, y no son infalibles, ya que por ejemplo los sistemas actualmente de cifrado RSA se espera que sean rotos en un medio plazo con la llegada de la computación Cuántica (Algoritmo de Shor).

De la misma forma, los sistemas de tokenización también tienen mucho riesgo, ya que los datos sensibles, no han desaparecido, simplemente se han movido, o el riesgo está en otro sitio. Una ventaja es que están en un único punto y podemos poner mucho esfuerzo en securizar ese único sistema, pero, por otro lado, hay tanta información sensible almacenada que puede llegar a ser muy goloso para los hackers…

Por ello lo mejor es sentarse todas las partes y, de una forma constructiva, identificar las necesidades de todas las partes y ver cuál de estas técnicas es la que más se adapta al problema que tenemos entre manos.

 

 

 

He leído y acepto la política de privacidad
Acepto recibir emails sobre actividades de recruiting NTT DATA