Re-cifrado por proxy y cifrado homomórfico

El uso y la privacidad de los datos a menudo están en conflicto. Por ejemplo, si todos compartiéramos abiertamente nuestros datos de salud con los investigadores, se aceleraría el trabajo sobre nuevas tecnologías y curas de salud. Pero, con razón, tenemos miedo de lo que podría hacer un actor malintencionado con nuestros datos de salud sin procesar. Ahí es donde el campo de la criptografía puede acudir al rescate. Re-cifrado por proxy y cifrado homomórfico son herramientas que nos permitirán conservar nuestro pastel y comérnoslo también, en lo que respecta al uso y la privacidad de los datos.

El nuevo cifrado por proxy permite al propietario de los datos cifrar sus datos una vez y, posteriormente, compartirlos de forma segura con los compradores, tantas veces como lo deseen, utilizando los servicios de un tercero. El cifrado homomórfico permite a un comprador de datos ejecutar cálculos sobre datos cifrados almacenados y calculados por terceros que no son de confianza, y obtener resultados o conocimientos sobre esos datos, sin revelar los datos de ningún individuo en forma no cifrada.

Estas técnicas sirven como bloques de construcción de sistemas criptográficos más complejos (por ejemplo Unlynx desarrollado por EPFL, la inspiración teórica de nuestro trabajo actual). Por lo tanto, nuestro plan es el siguiente 1) crear bibliotecas prácticas y fáciles de usar para primitivas de criptografía avanzada 2) estas bibliotecas ayudarán a los desarrolladores a crear y combinar primitivas avanzadas para crear complejos sistemas de cifrado que permitirán un intercambio de datos más seguro 3) El intercambio de datos más seguro y útil multiplicará por 10 la velocidad de la investigación sobre problemas importantes como la investigación del cáncer y la diabetes. 4) salvar el mundo :-).

Para empezar, hemos desarrollado una versión alfa de una prueba de concepto. biblioteca . El siguiente código utiliza esa biblioteca para ofrecer un ejemplo de cómo aplicamos esas tecnologías para permitir un flujo de datos seguro y conveniente de los propietarios a los usuarios.

Reencriptación por Proxy

El reencriptado por proxy es un proceso en el que un tercero, llamado proxy, altera un texto cifrado encriptado por una de las partes de tal manera que pueda ser desencriptado por una segunda parte.

En la plataforma de Nebula, el proxy actuará como custodio de los datos genómicos cifrados y administrará el acceso a esos datos por parte de los compradores en nombre del propietario. Si bien el proxy no puede acceder a los datos sin procesar subyacentes, el proxy puede (con el permiso del propietario) modificar los datos cifrados para que el usuario pueda descifrarlos posteriormente. Por lo tanto, el propietario de los datos puede delegar esta tarea al proxy sin compartir nunca información de texto sin formato con el proxy. Otra consecuencia de esta delegación es que ni el propietario ni el destinatario de los datos necesitan estar en línea.

En nuestro ejemplo, suponga que el proxy es un conjunto de servidores que actúa como una autoridad colectiva descentralizada. Ahora, veamos un ejemplo de recifrado por proxy en el que Alice, una propietaria de datos, comparte datos genómicos con Bob, un usuario de datos, a través del proxy.

Primero instalemos la biblioteca mencionada anteriormente.

Ahora podemos importar el paquete nebula.

Ahora, repasemos el proceso de compartir. El primer paso es que Alice cifre sus datos. Generaremos una clave simétrica para que la use ChaCha20 + Poly1305 .

(<umbral.point.Point at 0x10389fe10>, b'\x10\x91Y\xb1*\x8c\xf0\x7f@=\xefx\xe9\xf6\x12\xf3W\xbd\xdel\xc4\x06{\xae\x05%\x1b\x89U\xf9eN\xe5e\x1a\xe71xn\xac@v\xf4')

El proxy de autoridad colectiva tiene su propia clave pública, que es la suma de las claves públicas de sus servidores constituyentes.

Alice ahora toma la clave de cifrado que usó en sus datos y la cifra con la clave pública de la autoridad colectiva. Tenga en cuenta que, dado que estamos usando criptografía de curva elíptica los dos textos cifrados que Cifrado ElGamal produce son puntos en la curva elíptica elegida. Lo que ve en el resultado a continuación son las coordenadas de los dos puntos en forma (x, y).

((35632791306511153190425382918654119432212363349182003014749353343128802126727, 64242079364444117954338938658093117507689717419524224721788857406414950009581), (97847103734799578346073884785318736156070617710068604497289838935308031857554, 100772267217308028038724925681024365362775942293927562577198462564518506731626))

Cada servidor de la autoridad colectiva descifra parcialmente y luego vuelve a cifrar la clave de Alice para Bob.

  1. Para descifrar parcialmente la clave de Alice, cada servidor usa su clave privada
  2. Para volver a cifrar parcialmente la clave de Alice para Bob, cada servidor usa la clave pública de Bob
((77420738395268270953686214496801457604160876120513979866307802146750959593560, 54288930850798967899941066319180759019666461705141800680259295043110704970240), (43931260115404950504844368880031328989231014591201216806426924428987149667105, 90907867688890000833998990379245369153741769092073562236593684729778667077837))

Bob recibe y luego descifra la clave de Alice usando su clave privada, luego usa la clave de Alice para descifrar los datos originales.

True
b'My genomic data'

¡Imagínese un genoma completo aquí en lugar de solo esta cadena!

Cifrado homomórfico

El cifrado de ElGamal es aditivamente homomórfico , lo que significa que el resultado de la suma de textos cifrados refleja el resultado que se obtendría al sumar los textos sin formato correspondientes. Por ello, si desciframos una suma cifrada, el resultado será la suma de los textos sin formato. El cifrado homomórfico permite a una parte interesada emitir una consulta de información agregada y obtener la respuesta relevante, pero sin ver los puntos de datos subyacentes. (Esto supone que se cumplen algunas otras restricciones, como se especifica aquí .)

A continuación se muestra un ejemplo de tres pasos que muestra cómo nuestra autoridad / poder colectivo podría responder una consulta de Bob sobre la cantidad de personas con una variante genética en particular en nuestro conjunto de datos.

  1. La autoridad realiza el cálculo necesario sobre los datos cifrados en el conjunto de datos.
  2. La autoridad toma este resultado agregado (las personas están marcadas con 1 por tener la variante y 0 por no tenerla) y lo vuelve a encriptar con la clave pública de Bob.
  3. Bob descifra el resultado agregado con su clave privada y ahora tiene la suma correcta, pero sin visibilidad de los puntos de datos individuales.

Suma de datos cifrados

A continuación, “simulamos” a 1000 personas que proporcionan información genómica a la plataforma. En total, hay 448 personas con esta variante genética en particular. Los datos de cada persona están encriptados y almacenados de forma segura.

Number of people with variante genética: 488 ((21226922480075498561329291252368547521899161064631964196023720750821691033728, 22373176000434530074330330136750061845273006440607485558527039957320386973412), (73527396063873421512162165532068395819931745318640280343429662961367630577212, 38439465994848418879243894553165852646308170673055923181635051985961737087067))

CA vuelve a cifrar la suma cifrada para Bob

Bob sigue adelante y solicita información sobre la frecuencia de las variantes genéticas en la población. La CA lo resume y vuelve a cifrar los datos en Bob. Observe que las coordenadas (x, y) del cifrado reencriptado no son iguales a las coordenadas del cifrado original anterior.

((26066336990521229606715532856762274058860058654632118019680516577894483977430, 111016076743629331281471026942315236039952684121365861080441162051376755931177), (74777752915141648361212288792719003318012040162755253888817602184232651456038, 79121323403285772024091404265686004833455157263244527767410139385386809682035))

Bob descifra la suma

(488, 488)

Bob puede obtener información sobre los datos en su conjunto sin obtener información sobre la información de ningún propietario individual. Esto permite a los propietarios de datos que no quieren revelar sus datos seguir contribuyendo a la plataforma.

Tenga en cuenta que la reencriptación por proxy jugó un papel clave para que esto fuera conveniente para Bob. Debido a que cada propietario de datos delegado al proxy, Bob solo necesitaba emitir una consulta. Sin el proxy, necesitaría emitir una consulta para cada punto de datos que quisiera.

El cifrado por proxy y el cifrado homomórfico ayudan a Nebula a proteger los datos del usuario, proporcionan un acceso conveniente a los datos para los compradores de datos y permiten que los compradores de datos generen información sin comprometer la privacidad individual.

Llamada a la acción

En Nebula Genomics creemos que las preocupaciones por la privacidad son un obstáculo importante para el intercambio de datos biomédicos. Esto dificulta la investigación médica y el desarrollo de nuevos tratamientos. No podemos resolver este desafío solos.

Si está interesado en el código, no dude en jugar con la biblioteca, pero tenga cuidado: esta implementación en particular no se ha sometido a una auditoría de seguridad y actualmente es solo para uso educativo 🙂

Si está interesado en explorar más sobre Nebula Genomics en particular, asegúrese de Síganos en Twitter para mantenerse actualizado.