Editar

Share via


Encriptação homomórfica com SEAL

.NET

Este artigo descreve como e quando usar a criptografia homomórfica e como implementar a criptografia homomórfica com a biblioteca aritmética criptografada (SEAL) de código aberto da Microsoft.

Arquitetura

Diagram showing traditional and SEAL encryption.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de trabalho

Os esquemas de encriptação tradicionais consistem em três funcionalidades: geração de chaves, encriptação e desencriptação. Os esquemas de encriptação de chave simétrica usam a mesma chave secreta para encriptação e desencriptação. Ele permite a criptografia eficiente de grandes quantidades de dados para armazenamento em nuvem seguro e terceirizado. Os esquemas de encriptação de chave pública usam uma chave pública para encriptação e uma chave separada e secreta para desencriptação. Qualquer pessoa que conheça a chave pública pode encriptar dados, mas apenas alguém que conheça a chave secreta pode desencriptar e ler os dados. A criptografia de chave pública permite uma comunicação on-line segura, mas normalmente é menos eficiente do que a criptografia de chave simétrica.

Você pode usar a criptografia tradicional para armazenamento e comunicação seguros, mas a computação terceirizada exigiu a remoção das camadas de criptografia. Os serviços em nuvem que fornecem computação terceirizada devem implementar políticas de acesso para impedir o acesso não autorizado aos dados e chaves. A privacidade de dados depende das políticas de controle de acesso impostas pelo provedor de nuvem e confiáveis pelo cliente.

Com a criptografia homomórfica do Microsoft SEAL , os provedores de nuvem nunca têm acesso não criptografado aos dados que armazenam e computam. Os cálculos podem ser realizados diretamente em dados criptografados. Os resultados de tais cálculos criptografados permanecem criptografados e podem ser descriptografados apenas pelo proprietário dos dados usando a chave secreta. A maioria da criptografia homomórfica usa esquemas de criptografia de chave pública, embora a funcionalidade de chave pública nem sempre seja necessária.

Detalhes do cenário

As empresas geralmente enviam, recebem e armazenam seus dados na nuvem de forma criptografada. Mas para tirar proveito da computação em nuvem, as empresas devem fornecer dados não criptografados ou as chaves para descriptografá-los. Esta prática coloca os dados da empresa em maior risco. A criptografia homomórfica permite a computação diretamente em dados criptografados, facilitando a aplicação do potencial da nuvem para dados críticos à privacidade.

Potenciais casos de utilização

  • Cálculos leves, como adição e multiplicação em dados críticos de privacidade e partes de programas.
  • Computação em nuvem terceirizada, onde um único proprietário possui todos os dados e tem acesso exclusivo às chaves de descriptografia.

Considerações

  • Apenas alguns cálculos são possíveis em dados encriptados. A biblioteca de criptografia homomórfica do Microsoft SEAL permite adições e multiplicações em inteiros criptografados ou números reais. Comparação, classificação ou expressões regulares criptografadas geralmente não são viáveis de avaliar em dados criptografados usando essa tecnologia. Portanto, apenas computações em nuvem específicas e críticas para a privacidade em partes de programas podem ser implementadas usando o Microsoft SEAL.

  • O Microsoft SEAL vem com dois esquemas de criptografia homomórficos com propriedades diferentes. O esquema BFV permite que a aritmética modular seja feita em inteiros criptografados. O esquema CKKS permite adições e multiplicações em números reais ou complexos criptografados, mas produz apenas resultados aproximados. CKKS é a melhor escolha ao resumir números reais criptografados, avaliar modelos de aprendizado de máquina em dados criptografados ou calcular distâncias de locais criptografados. Para aplicações em que são necessários valores exatos, o esquema BFV é a única opção.

  • A criptografia homomórfica não é eficiente. Como a criptografia homomórfica vem com uma grande sobrecarga de desempenho, cálculos que já são caros para fazer em dados não criptografados provavelmente não são viáveis em dados criptografados.

  • Os dados encriptados com encriptação homomórfica são muitas vezes maiores do que os dados não encriptados, pelo que pode não fazer sentido encriptar grandes bases de dados inteiras, por exemplo, com esta tecnologia. Em vez disso, cenários em que requisitos de privacidade rigorosos proíbem a computação em nuvem não criptografada, mas os cálculos em si são bastante leves, são casos de uso significativos.

  • Normalmente, os esquemas de encriptação homomórficos têm uma única chave secreta, que é mantida pelo proprietário dos dados. A criptografia homomórfica não é razoável para cenários em que vários proprietários de dados privados diferentes desejam se envolver em computação colaborativa.

  • Nem sempre é fácil ou simples traduzir um cálculo não criptografado em um cálculo em dados criptografados. Mesmo que novos usuários possam programar e executar uma computação usando o Microsoft SEAL, pode haver uma grande diferença entre implementação eficiente e ineficiente. Pode ser difícil saber como melhorar o desempenho.

  • Embora a primitiva de criptografia homomórfica em si seja segura, ela não garante que os aplicativos e protocolos que a usam sejam seguros.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • Jose Contreras - Brasil | Gerente Principal de Engenharia de Software

Próximos passos

Para saber mais sobre criptografia homomórfica e a biblioteca do Microsoft SEAL, consulte Microsoft SEAL da Microsoft Research e o projeto de código SEAL no GitHub.

Consulte os seguintes recursos sobre segurança no Azure: