Este artigo descreve como e quando usar a criptografia homomórfica e como implementá-la com SEAL (Microsoft Simple Encrypted Arithmetic Library) de código aberto.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Workflow
Os esquemas de criptografia tradicionais consistem em três funcionalidades: geração de chave, criptografia e descriptografia. Os esquemas de criptografia de chave simétrica usam a mesma chave secreta para criptografia e descriptografia. Isso permite uma criptografia eficiente de grandes quantidades de dados para armazenamento em nuvem seguro e terceirizado. Os esquemas de criptografia de chave pública usam uma chave pública para criptografia e uma chave secreta separada para descriptografia. Qualquer pessoa que conheça a chave pública pode criptografar dados, mas apenas alguém que conhece a chave secreta pode descriptografar e ler os dados. A criptografia de chave pública permite a comunicação online 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 de nuvem que fornecem computação de terceiros devem implementar políticas para impedir o acesso não autorizado aos dados e chaves. A privacidade dos dados depende das políticas de controle de acesso impostas pelo provedor de nuvem e de confiança do cliente.
Com a criptografia homomórfica de Microsoft SEAL, os provedores de nuvem nunca têm acesso não criptografado aos dados que armazenam e computam. As computações podem ser executadas diretamente em dados criptografados. Os resultados dessas computações criptografadas permanecem criptografados e podem ser descriptografados somente pelo proprietário dos dados usando a chave secreta. Grande parte 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 de nuvem em formato criptografado. Mas, para aproveitar a computação em nuvem, as empresas devem fornecer dados não criptografados ou as chaves para descriptografá-los. Essa 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 para privacidade.
Possíveis casos de uso
- Computações leves, como adição e multiplicação em dados críticos para privacidade e partes de programas.
- Computação em nuvem terceirizada, em que um único proprietário possui todos os dados e tem acesso exclusivo às chaves de descriptografia.
Considerações
Somente algumas computações são possíveis em dados criptografados. A biblioteca de criptografia homomórfica de Microsoft SEAL permite fazer adições e multiplicações em números reais ou inteiros criptografados. A comparação criptografada, a classificação ou as expressões regulares geralmente não são viáveis para serem avaliadas em dados criptografados usando essa tecnologia. Portanto, somente computações em nuvem críticas para privacidade em partes de programas podem ser implementadas usando Microsoft SEAL.
Microsoft SEAL vem com dois esquemas de criptografia homomórfica com propriedades diferentes. O esquema BFV permite que a aritmética modular seja feita em inteiros criptografados. O esquema CKKS permite fazer adições e multiplicações em números reais ou complexos criptografados, mas produz apenas resultados aproximados. CKKS é a melhor opção ao resumir números reais criptografados, avaliar modelos de machine learning em dados criptografados ou computar distâncias de locais criptografados. Para aplicativos em que valores exatos são necessários, 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, as computações que já são caras para fazer em dados não criptografados provavelmente não são viáveis em dados criptografados.
Os dados criptografados com criptografia homomórfica são muitas vezes maiores do que dados não criptografados, portanto, pode não fazer sentido criptografar bancos de dados inteiros, por exemplo, com essa tecnologia. Em vez disso, cenários em que requisitos de privacidade rigorosos proíbem a computação em nuvem não criptografada, mas as computações em si são bastante leves, são casos de uso significativos.
Normalmente, esquemas de criptografia homomórfica 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 desejam se envolver em computação colaborativa.
Nem sempre é fácil ou simples traduzir uma computação não criptografada em uma computação em dados criptografados. Mesmo que novos usuários possam programar e executar uma computação usando Microsoft SEAL, pode haver uma grande diferença entre a implementação eficiente e ineficiente. Pode ser difícil saber como melhorar o desempenho.
Embora o primitivo de criptografia homomórfica em si seja seguro, ele não garante que os aplicativos e protocolos que o usam sejam seguros.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Autor principal:
- Jose Contreras | Gerente de Engenharia de Software Principal
Próximas etapas
Para saber mais sobre a criptografia homomórfica e a biblioteca de Microsoft SEAL, consulte Microsoft SEAL no Microsoft Research e o projeto de código de SEAL no GitHub.
Confira os seguintes recursos sobre segurança no Azure:
- Introdução à segurança do Azure
- Melhores práticas de segurança do Azure
- Microsoft Cloud Security Benchmark
- Visão geral do pilar de segurança
- Segurança no Microsoft Cloud Adoption Framework