Esqueça a criptografia homomórfica: agora temos a criptografia funcional



Você já ouviu falar em criptografia funcional (FS)? Talvez você tenha ouvido falar sobre isso e, por si mesmo, o coloque em pé de igualdade com a criptografia homomórfica , que não é totalmente errada, mas não completamente correta.

Vamos dar uma olhada no que o FS está com você hoje, analisar alguns exemplos e como ele difere da criptografia totalmente homomórfica (PGS).

Vamos primeiro decidir o que queremos dizer quando falamos sobre FS. Mais recentemente, em 2010, Dan Bonnet, Amit Sahai e Brent Waters formalizaram o conceito de FS. Aproximadamente FS pode ser descrito da seguinte maneira: este é um esquema de criptografia com uma chave pública, onde diferentes chaves para descriptografia permitem ao usuário aprender sobre determinadas funções dos dados criptografados.

Portanto, no esquema FS da função F (·, ·), o criptografador com a chave mestre gera a chave s k , o que permite calcular a função F (k, ·) a partir dos dados criptografados, de modo que o decodificador, conhecendo o texto criptografado c dos dados xe a chave s k , é capaz de calcular F (k, x) sem ser capaz de descobrir nada além do resultado do cálculo de uma função de x.

FS vs PGS


Se você estiver familiarizado com o conceito de PGS, será interessante traçar o seguinte paralelo:

Usando o PGS, você pode calcular quaisquer funções dos dados criptografados sem descriptografar esses dados. Esta é uma oportunidade interessante para delegar a computação a terceiros que não têm confiança. O ponto negativo da abordagem é que o resultado também é criptografado e, para descriptografá-lo, você deve enviá-lo ao proprietário da chave privada. O processo PGS pode ser representado da seguinte maneira, onde E é o esquema de criptografia e F é a função que queremos calcular a partir dos dados criptografados:

E (x_1), E (x_2), ..., E (x_n) → E (F (x_1, x_2, · ·, x_n))

Por outro lado, com o FS, o resultado está diretamente disponível para nós imediatamente após os cálculos, ou seja, o seguinte está disponível para nós:

E (x_1), E (x_2), · ·, E (x_n) → F (x_1, x_2, · ·, x_n)

Em certo sentido, FS é um esquema que calcula e descriptografa simultaneamente o resultado, sem vazamentos da chave privada e qualquer informação sobre x 1 , x 2 , x, exceto o próprio resultado do cálculo.

Obviamente, não precisamos que todos possam calcular qualquer função que desejam, pois, caso contrário, seria fácil obter informações sobre parâmetros individuais em texto não criptografado (por exemplo, para calcular uma função idêntica). Portanto, somente o proprietário da chave privada pode descriptografar E (x_i) e gerar chaves de liquidação para determinadas funções de sua escolha. Isso significa que o FS exige a presença de uma "autoridade central" que emite "chaves de liquidação" para as pessoas responsáveis ​​pelos cálculos funcionais.

Ou seja, FS é uma generalização da idéia de criptografia com uma chave pública, permitindo que os usuários delegem a terceiros cálculos de determinadas classes de funções a partir de dados criptografados, gerando certas chaves secretas para essas funções. Ao contrário dos esquemas de criptografia padrão, ele permite controlar com mais precisão os recursos de descriptografia disponíveis para terceiros.

O FS é extremamente útil porque nos permite transferir intencionalmente certas informações sobre dados criptografados para determinados usuários. Por exemplo, podemos obter o valor médio de um conjunto de dados criptografados sem revelar os dados em si ou obter mais estatísticas sobre esse conjunto. Com os problemas de segurança atuais e os requisitos apresentados por novas leis, como o GDPR, a necessidade de esquemas efetivos de FS fica mais clara, pois permite que terceiros processem dados criptografados sem fornecer esses dados a ninguém em sua forma pura. Isso significa que podemos ir além do permitido pela pseudo-anonimização de dados pessoais, garantindo uma confidencialidade mais rigorosa!

Voltar para FS


Devido à sua natureza geral, o FS adota e combina muitos outros esquemas avançados de criptografia estudados anteriormente de forma independente, a saber: criptografia baseada em autenticação, criptografia pesquisável , criptografia de vetor oculto, criptografia baseada em identificação com padrões curinga, criptografia baseada em atributos , criptografia funcional com produto escalar.

Embora os esquemas de FS ainda sejam muito jovens, muita coisa aconteceu desde 2010, e já existem muitos esquemas interessantes que permitem fazer coisas que pareciam muito complicadas há 8 anos. Já chegou ao ponto de os relatórios sobre FS serem organizados em certas conferências criptográficas!

Vejamos vários tipos diferentes de esquemas de FS. Por exemplo:

  • Criptografia funcional com um produto escalar (FSFS), em que texto simples é um vetor, e os dados criptografados junto com a chave podem ser usados ​​para calcular o produto escalar desse vetor com outro. O FSSP tem várias opções: para muitos clientes, para muitas entradas, descentralizadas, com funções ocultas, etc.
  • Criptografia baseada em atributo (SHO), onde os dados criptografados estão associados a um conjunto de atributos e chaves secretas, juntamente com certas regras que controlam qual texto criptografado pode ser criptografado, dependendo dos atributos que temos.
  • FS "uso geral", que permite calcular a função f de qualquer tipo a partir dos dados criptografados Enc (x).

No entanto, é importante notar aqui que, embora já tenha sido feito muito trabalho, concentrando-se nos aspectos teóricos da EF, a fim de desenvolver essa área o máximo possível, todas as EFs de uso geral são muito ineficazes para uso prático hoje em dia. Este é um dos tópicos de pesquisa do projeto FENTEC (programa de pesquisa europeu da Functional Encryption Technologies ): levar a FS à aplicabilidade prática, projetando e implementando esquemas práticos que poderiam ser usados ​​em escala industrial. Neste projeto, não apenas novos esquemas com funcionalidades mais avançadas são desenvolvidos, mas também coprocessadores especiais que podem acelerar ainda mais os cálculos necessários - tudo para aproximar a teoria da prática. Mais informações sobre este equipamento podem ser encontradas na postagem do blog do projeto FENTEC.

Deseja usar o FS hoje? Por favor use


Mas e se você quiser usar o FS hoje? Não deve haver problema com isso! Como parte do projeto FENTEC, uma equipe do XLAB está envolvida na implementação de muitos esquemas desenvolvidos por universidades parceiras na forma da biblioteca C CiFEr e da biblioteca GoFE Go.

Você pode ler mais sobre as bibliotecas no blog da FENTEC em mais detalhes , ou vá diretamente para o Github e comece a jogar com as bibliotecas do CiFEr e GoFE . A propósito, verificamos se eles funcionam mesmo no navegador através do WASM!

Existem até alguns exemplos no repositório do Github do projeto:


Todos os detalhes terríveis: o que há dentro do esquema FS


Entre os esquemas já implementados, você pode encontrar muitos esquemas chamados "criptografia funcional com um produto escalar". Mas o que esse nome significa? Deve ser tomado literalmente: esses esquemas permitem que terceiros calculem o resultado do produto escalar de dois vetores usando FS.

Suponha que você queira criptografar um vetor ae obtenha o resultado de seu produto escalar com o vetor y. Para começar, precisamos de uma autoridade central para implementar o FS.

Nesse caso, a autoridade central emite uma mpk de “chave mestra pública”, bem como uma chave de liquidação z y para um determinado vetor y. Então, quem conhece a chave pública pode criptografar o vetor a, permitindo que terceiros com a chave z y calculem <a, y>, possuindo E mpk (a) e sem saber nada sobre o vetor em si.

Observe que, neste esquema de FS, o vetor y correspondente à chave computacional z y deve ser conhecido por terceiros para calcular o produto escalar. Ou seja, apenas o vetor a permanece em segredo.

E se você quiser que os dois vetores, a e y permaneçam em segredo, mas ao mesmo tempo, para que terceiros possam calcular seu produto escalar?

Felizmente, essa área de pesquisa também fez grandes avanços nos últimos anos. É conhecido como "FS com funções ocultas". De fato, o esquema de criptografia do produto escalar “oculta as funções” se as chaves e o texto cifrado não fornecerem informações adicionais sobre os vetores a e y, exceto o produto escalar <a, y>. Em novos esquemas com FS, ocultar funções é cada vez mais comum ( 1 , 2 , 3 ).

Resumir


Embora a criptografia funcional tenha aparecido recentemente, já podemos imaginar muitas opções para seu uso no futuro. Particularmente interessante é a capacidade de transferir o processo de tomada de decisão, com base na criptografia de dados de ponta a ponta, de sistemas de back-end para certos sistemas de gateway em redes complexas. Chamamos isso de "tomada de decisão local", e essa oportunidade é um grande passo para a criação de redes seguras para a "Internet das Coisas" e outras redes altamente descentralizadas que desejam implementar a criptografia de ponta a ponta sem perder muita capacidade de tomada de decisão no nível do gateway.

Agora, estamos trabalhando em um protótipo de um produto que, usando FS com um produto escalar, é capaz de detectar movimento no fluxo de vídeo que vai da câmera para o sistema de back-end, no nível do gateway, usando o chamado “Vetores de movimento” incluídos no padrão H.264 / MPEG-4 AVC.


Visualização de vetores de movimento no quadro ao codificar H.264 desenho animado curto Big Buck Bunny

Observe como bons vetores de movimento são candidatos a serem usados ​​em esquemas com FS com um produto escalar - porque um produto escalar é definido em espaços vetoriais! Ainda estamos procurando as melhores opções para os métodos de detecção de movimento e esperamos obter um protótipo totalmente funcional usando o FS para reconhecimento de movimento até o final de 2020.

Source: https://habr.com/ru/post/pt482790/


All Articles