spinner

Privacidad en machine learning: con estas herramientas open source podrás lograrlo

Como continuación al artículo anterior, sobre las técnicas criptográficas que nos permiten procesar los datos conservando la privacidad, analizaremos diferentes herramientas open source que combinan dichas técnicas destacando sus puntos fuertes y débiles.

Los datos son el bien más preciado de las compañías ya que permiten generar su modelo de negocio. Muy frecuentemente se recurre a compañías especializadas para procesar dicha información. Sin embargo, este procesamiento de datos acarrea numerosos problemas, la mayoría de ellos en la fase de tratamiento. Por lo tanto, las empresas se enfrentan a una tarea clave, la protección de los datos.

Como explicamos en el post anterior, existen tres técnicas criptográficas que permitirían externalizar el procesado de los datos sin perder la confidencialidad y privacidad:

  • La criptografía homomórfica (HE) permite realizar operaciones sobre los datos cifrados que se hayan decidido almacenar de forma externalizada, sin el riesgo de que sean filtrados.
  • La computación multiparte segura (MPC) trata de computar una función conjunta entre varias partes de manera distribuida, manteniendo cada una de ellas sus datos privados.
  • La privacidad diferencial (DP) permite que al realizar un análisis de datos no se filtre información de un individuo en particular.

A día de hoy existen y continúan surgiendo diferentes herramientas y trabajos sobre cada una de estas áreas. Las herramientas más potentes son las que combinan estas técnicas para lograr mayor grado de privacidad y eficiencia. Por lo tanto, en el presente artículo nos centraremos en este tipo de herramientas.

Herramientas

Desde el Lab hemos estado analizando herramientas open source relacionadas con alguna de las características que hemos listado anteriormente y a continuación exponemos las herramientas que nos han parecido más relevantes a nivel tecnológico.

Crypten

Crypten es una librería open source desarrollada por Facebook Research para proporcionar privacidad a modelos de machine learning, disponible en GitHub. Está implementada sobre PyTorch, manteniendo las funciones originales del framework, y pudiendo emplear su misma sintaxis sobre los tensores.

Esta librería usa computación multiparte segura y criptografía homomórfica para garantizar la seguridad. Se basa en el protocolo SPDZ de computación multiparte segura como base teórica. Todos los protocolos implementados son seguros en el modelo del adversario semi honesto, es decir, sólo es seguro frente a adversarios pasivos. Además, se presupone que se cumplen las siguientes hipótesis sobre las partes:

  • El canal de comunicación es seguro y ninguna parte puede ver los mensajes que les llegan al resto de partes.
  • Cada parte tiene acceso a una fuente de aleatoriedad.

Funcionamiento de Crypten. Fuente: Crypten.

El protocolo SPDZ permite operar con tensores de forma cifrada, realizando operaciones de suma, resta, multiplicación, división, así como operaciones booleanas. Además, también implementa operaciones como raíces cuadradas, tangente hiperbólica, inversos, etc., aunque estas últimas pueden resultar en un error de precisión. En el momento de escribir este post, sólo se recomienda el uso de Crypten como librería de investigación y evitar su uso en producción.

Ejemplo de cifrado y descifrado de tensores con Crypten. Fuente: Crypten.

Los autores de Crypten destacan cuatro casos de uso:

  • Agregación de características: varias partes tienen distintas características y quieren realizar cálculos sobre las características conjuntas sin compartir los datos.
  • Etiquetado de datos: una parte maneja datos y otra parte tiene las correspondientes etiquetas. Las partes quieren aprender una relación entre ambos datos sin compartir sus respectivos datos.
  • Aumento del conjunto de datos: varias partes tienen un pequeño número de muestras, pero quieren usar todos los datos para mejorar un modelo, sin compartir sus datos.
  • Ocultación de un modelo: una parte tiene acceso a un modelo entrenado, mientras otra parte quiere aplicar ese ese modelo a sus propios datos. Sin embargo, el modelo y los datos tienen que mantenerse privados.

 

FATE

FATE (Federated IA Technology Enabler) es un proyecto open source para proveer un framework seguro de aprendizaje federado. Se basa en protocolos de criptografía homomórfica y computación multiparte segura como SPDZ. Soporta aprendizaje federado tanto en algoritmos de machine learning (regresión logística, árboles, etc.) como en algoritmos de deep learning. Soporta Tensorflow, Keras, PyTorch, Theano y, scikit-learn para los algoritmos de machine learning.

FATE cuenta con los siguientes módulos:

  • FederatedML: librería de machine learning federado. Esta librería implementa algoritmos de cálculo de estadísticas (Private Set Intersection, unión de conjuntos, correlación de Pearson, etc.), extracción de características, algoritmos de entrenamiento y evaluación de modelos federados. Los detalles se pueden encontrar en la página de algoritmos del proyecto.

Algoritmos soportados por FATE. Fuente: FATE.

  • FATE Serving: sistema de serviciado escalable y de alto rendimiento para modelos de aprendizaje federado.
  • FATEFlow: plataforma end-to-end para aprendizaje federado.

Componentes de FATEFlow. Fuente: FATE

  • FATEBoard: herramienta visual de modelos de aprendizaje federado para usuarios finales.
  • Federated Network: red de comunicación multiparte de aprendizaje federado.
  • KubeFATE: gestión de workloads federadas utilizando tecnologías nativas de cloud.

 

PySyft

PySyft que provee de mecanismos para conseguir procesos de deep learning seguros que garanticen la privacidad de los datos. Para ello hace uso de las tres técnicas para externalizar datos privados que se listaron anteriormente.

Es una tecnología creada por OpenMined. Se definen como una comunidad open source cuyo objetivo es disminuir la curva de aprendizaje en tecnologías relacionadas con la privacidad y la inteligencia artificial.

Algunas de las características más interesantes y que sustentan los objetivos de PySyft son que:

  • Los datos no pueden salir de las ubicaciones donde se almacenan.
  • Los datos son recolectados y disponibilizados por terceros de forma segura.
  • Se busca paralelizar el aprendizaje de los modelos.

La solución que concibe PySyft a estos problemas es la de trabajar con datos en remoto y operar con ellos sin que el científico de datos acceda directamente a los datos.

El objetivo principal de la librería es el de realizar el entrenamiento de modelos de deep learning de forma segura. Es por ello que nos encontraremos con funcionalidades en el ámbito de la inteligencia artificial y funcionalidades relacionadas con la privacidad y seguridad de los datos.

En cuanto al entrenamiento de modelos, PySyft hace uso de PyTorch. Esta librería, programada en Python, modela los datos como tensores, estructuras de datos que generalizan los conceptos de escalar, vector y matriz. PyTorch está soportado por PySyft en sus versiones de 1.4 a 1.7 según su documentación oficial.

PyTorch combinado con PySyft permite mover tensores entre máquinas de forma transparente, operar con ellos en remoto y recuperar los resultados. Del mismo modo, se pueden mover modelos y planes de ejecución entre máquinas, lo que permite entrenar modelos sin estar en posesión de los datos usados.

Además de la computación homomórfica y la privacidad diferencial, ya comentadas anteriormente, PySyft permite el entrenamiento distribuido de modelos. Esta es una técnica que permite entrenar un algoritmo de inteligencia artificial con datos repartidos en diferentes ubicaciones y el entrenamiento en paralelo con multitud de datos a la vez o, en una ubicación remota, de forma que no se acceda a los datos directamente.

El entrenamiento federado puede configurarse de diferentes maneras. La más básica es en la que el modelo se envía entre los diferentes participantes para ser entrenado con los datos de cada participante. Existe una variante en la que se introduce un agregador seguro, en este caso el modelo se envía a todos los participantes, pero la agregación de los modelos parciales la hará una máquina segura en la que confiamos. Por último, otra variante en la que esto se hace es entrenando un modelo cifrado con los datos también cifrados.

En la siguiente imagen puede verse un ejemplo de cómo es el código del entrenamiento federado con PySyft.

Entrenamiento federado con PySyft.

Esta aproximación al problema rompe la necesidad de que el propietario de los datos y el científico de datos tengan que estar dentro del mismo dominio organizativo o legal y proporciona un contexto muy interesante en cuanto a cómo establecer las medidas de seguridad necesarias, ya que debe tenerse en cuenta a qué datos puede acceder cada participante en el entrenamiento y que roles y políticas de seguridad les afectan.

Conclusiones

La siguiente tabla recoge las principales características de las herramientas open source existentes respecto al área de privacidad y machine learning. Con ella, se pretende dar de una manera rápida y detallada el estado del arte actual y sus potenciales aplicaciones en el futuro.

Nombre Tipo Frameworks soportados Doc ¿Proyecto activo? Estrellas Github Desarrollador Código
TF-SEAL HE Tensorflow 55 TF Encrypted Python
TenSEAL HE 196 OpenMined Python
SecureNN MPC 70 Sameer Wagh,Microsoft C++
Rosetta MPC Tensorflow 246 LatticeX Foundation Python
CryptTFlow MPC Tensorflow 122 MPC-MSRI C++
Diffprivlib DP Scikit-learn 428 IBM Python
Differential Privacy by Google DP Postgres* 2100 Google C++/Java
TensorFlow Privacy DP Tensorflow
Keras
1400 Tensorflow Python
PyTorch-DP DP PyTorch 763 Facebook Research Python
Crypten HE
MPC
PyTorch 735 Facebook Research Python
PySyft HE
MPC
DP
Tensorflow
Keras
PyTorch
7000 OpenMined Python
TensorFlow Encrypted HE
MPC
Keras

PyTorch

829 TF Encrypted Python
FATE HE MPC Scikit-learn
Tensorflow
PyTorch
Keras
Theano
2900 FedAI Python
Minionn HE
DP
36 SSGAalto Python
* Postgres es soportado mediante una extensión que proporciona funciones para realizar análisis mediante privacidad diferencial.

 

En el último año la popularidad de herramientas mostradas en la tabla anterior ha crecido sustancialmente, llegando en algunos casos a duplicarse, midiendo la popularidad con el número de estrellas de los repositorios de GitHub.

A fecha de publicación de este post, la herramienta más potente y que permite realizar más casos de uso de manera satisfactoria es PySyft. Esta librería permite realizar computación multiparte, criptografía homomórfica y privacidad diferencial sobre modelos de deep learning, por lo que cubre las 3 técnicas que se han analizado y, es la librería que podría ser empleada en casos de uso en un periodo de tiempo más bien cercano, aunque todavía no se recomienda su uso en producción por no ser considerada suficientemente segura.

Fuente Imagen destacada: Unsplash

Las opiniones vertidas por el autor son enteramente suyas y no siempre representan la opinión de BBVA Next Technologies.

¿Quieres saber que más cosas hacemos en BBVA Next Technologies?