Re-criptografia por proxy e criptografia homomórfica

O uso e a privacidade de dados costumam estar em conflito. Por exemplo, se todos nós compartilhássemos abertamente nossos dados de saúde com os pesquisadores, isso aceleraria o trabalho em novas tecnologias e curas de saúde. Mas, com razão, temos medo do que um agente malicioso poderia fazer com nossos dados brutos de saúde. É aí que o campo da criptografia pode vir em seu socorro. Re-criptografia por proxy e criptografia homomórfica são ferramentas que nos permitem guardar o nosso bolo e comê-lo também, no que diz respeito à utilização e privacidade de dados.

A nova criptografia por proxy permite que o proprietário dos dados criptografe seus dados uma vez e, posteriormente, compartilhe-os com segurança com os compradores, com a frequência que desejarem, usando os serviços de terceiros. A criptografia homomórfica permite que um comprador de dados execute cálculos em dados criptografados armazenados e computados por terceiros não confiáveis e obtenha resultados ou insights sobre esses dados, sem revelar dados de nenhum indivíduo de forma não criptografada.

Essas técnicas servem como blocos de construção de sistemas criptográficos mais complexos (por exemplo Unlynx desenvolvido pela EPFL, inspiração teórica para o nosso trabalho atual). Portanto, nosso plano é o seguinte 1) construir bibliotecas práticas e simples de usar para primitivas de criptografia avançada 2) essas bibliotecas ajudarão os desenvolvedores a criar e combinar primitivas avançadas para criar sistemas criptográficos complexos que permitirão o compartilhamento de dados mais seguro 3) O compartilhamento de dados mais seguro e útil aumentará em 10 vezes a velocidade da pesquisa sobre problemas importantes como a pesquisa do câncer e diabetes 4) salve o mundo :-).

Para começar, desenvolvemos uma versão alfa de uma prova de conceito biblioteca . O código a seguir usa essa biblioteca para oferecer um exemplo de como aplicamos essas tecnologias para permitir um fluxo de dados seguro e conveniente dos proprietários aos usuários.

Re-criptografia por proxy

A recriptografia por proxy é um processo no qual um terceiro, denominado proxy, altera um texto cifrado criptografado por uma parte de forma que ele possa ser descriptografado por outra.

Na plataforma da Nebula, o proxy atuará como um guardião dos dados genômicos criptografados e gerenciará o acesso a esses dados pelos compradores em nome do proprietário. Embora o proxy não possa acessar os dados brutos subjacentes, ele pode (com a permissão do proprietário) modificar os dados criptografados para que o usuário possa descriptografá-los posteriormente. O proprietário dos dados pode, portanto, delegar essa tarefa ao proxy, embora nunca compartilhe nenhuma informação de texto simples com o proxy. Outra consequência dessa delegação é que nem o proprietário dos dados nem o destinatário precisam estar online.

Em nosso exemplo, suponha que o proxy seja um conjunto de servidores que atua como uma autoridade coletiva descentralizada. Agora, vamos examinar um exemplo de recriptografia por proxy em que Alice, uma proprietária de dados, compartilha dados genômicos com Bob, um usuário de dados, por meio do proxy.

Primeiro, vamos instalar a biblioteca mencionada acima.

Agora podemos importar o pacote da nebulosa.

Agora, vamos percorrer o processo de compartilhamento. A primeira etapa é para Alice criptografar seus dados. Iremos gerar uma chave simétrica para ela ser usada por 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')

O proxy de autoridade coletiva tem sua própria chave pública, que é a soma das chaves públicas de seus servidores constituintes.

Alice agora pega a chave de criptografia que ela usou em seus dados e a criptografa com a chave pública da autoridade coletiva. Observe que, como estamos usando criptografia de curva elíptica os dois textos cifrados que Criptografia ElGamal produz são pontos na curva elíptica escolhida. O que você vê na saída abaixo são as coordenadas dos dois pontos na forma (x, y).

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

Cada servidor na autoridade coletiva descriptografa parcialmente e, em seguida, criptografa novamente a chave de Alice para Bob.

  1. Para descriptografar parcialmente a chave de Alice, cada servidor usa sua chave privada
  2. Para recriptografar parcialmente a chave de Alice para Bob, cada servidor usa a chave pública de Bob
((77420738395268270953686214496801457604160876120513979866307802146750959593560, 54288930850798967899941066319180759019666461705141800680259295043110704970240), (43931260115404950504844368880031328989231014591201216806426924428987149667105, 90907867688890000833998990379245369153741769092073562236593684729778667077837))

Bob recebe e então descriptografa a chave de Alice usando sua chave privada e, em seguida, usa a chave de Alice para descriptografar os dados originais.

True
b'My genomic data'

Imagine um genoma completo aqui, em vez de apenas esta string!

Criptografia Homomórfica

A criptografia ElGamal é aditivamente homomórfico , o que significa que o resultado da soma dos textos cifrados reflete o resultado que seria obtido da soma dos textos simples correspondentes. Por isso, se descriptografarmos uma soma criptografada, o resultado será a soma dos textos simples. A criptografia homomórfica permite que uma parte interessada emita uma consulta para informações agregadas e obtenha a resposta relevante, mas sem ver os pontos de dados subjacentes. (Isso assume que algumas outras restrições são atendidas, conforme especificado Aqui .)

Abaixo está um exemplo de três etapas que mostra como nossa autoridade / proxy coletiva poderia responder a uma consulta de Bob sobre o número de pessoas com uma variante de gene específica em nosso conjunto de dados.

  1. A autoridade executa o cálculo necessário nos dados criptografados no conjunto de dados.
  2. A autoridade pega esse resultado agregado (as pessoas são marcadas com 1 por ter a variante e 0 por não tê-la) e criptografa-o novamente com a chave pública de Bob.
  3. Bob descriptografa o resultado agregado com sua chave privada e agora tem a soma correta, mas sem visibilidade dos pontos de dados individuais.

Somando dados criptografados

Abaixo, “simulamos” 1000 pessoas fornecendo informações genômicas para a plataforma. No total, existem 448 pessoas com essa variante genética específica. Os dados de cada pessoa são criptografados e armazenados com segurança.

Number of people with variante do gene: 488 ((21226922480075498561329291252368547521899161064631964196023720750821691033728, 22373176000434530074330330136750061845273006440607485558527039957320386973412), (73527396063873421512162165532068395819931745318640280343429662961367630577212, 38439465994848418879243894553165852646308170673055923181635051985961737087067))

CA criptografa novamente a soma criptografada para Bob

Bob segue em frente e solicita informações sobre a frequência da variante do gene na população. O CA resume tudo e criptografa novamente os dados para Bob. Observe que as coordenadas (x, y) da cifra recriptografada não são iguais às coordenadas da cifra original acima.

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

Bob decifra a soma

(488, 488)

Bob é capaz de obter informações sobre os dados como um todo, sem obter informações sobre as informações de nenhum proprietário individual. Isso permite que os proprietários de dados que não desejam revelar seus dados ainda contribuam com a plataforma.

Observe que a nova criptografia por proxy desempenhou um papel fundamental em tornar isso conveniente para Bob. Como cada proprietário de dados delegava ao proxy, Bob só precisava emitir uma consulta. Sem o proxy, ele precisaria emitir uma consulta para cada ponto de dados que desejasse.

A criptografia por proxy e criptografia homomórfica ajuda o Nebula a proteger os dados do usuário, fornece acesso conveniente aos dados para os compradores de dados e permite que os compradores de dados gerem percepções sem comprometer a privacidade individual.

Call to Action

Na Nebula Genomics, acreditamos que as preocupações com a privacidade são um obstáculo significativo para o compartilhamento de dados biomédicos. Isso dificulta a pesquisa médica e o desenvolvimento de novos tratamentos. Não podemos resolver esse desafio sozinhos.

Se você estiver interessado no código, sinta-se à vontade para brincar com a biblioteca, mas esteja seguro: esta implementação em particular não passou por uma auditoria de segurança e é atualmente apenas para uso educacional 🙂

Se você estiver interessado em explorar mais sobre Nebula Genomics em particular, certifique-se de Siga-nos no Twitter para se manter atualizado.