Fonte: Noemi Glaeser, a16z crypto
Na Chave públicaCriptografia, sempre houve um desafio, que é como associar corretamente encriptaçãoChave Secreta (como Chave pública) a uma identidade específica (como uma pessoa ou organização). A chave para este problema é ter uma maneira pública e consistente de exibir a relação entre a identidade e a Chave pública, para que todos possam usar essas Chave pública para encriptação de informações com confiança.
Se não houver uma relação clara como essa, pode ser difícil para os outros determinarem a quem pertence uma Chave pública específica, o que pode resultar no envio de informações de encriptação para a pessoa errada, resultando em vazamento de informações ou outras consequências graves. Esse problema ainda existe no Web3.
Para os problemas acima mencionados, existem atualmente três soluções: Diretório de Chave Pública, encriptação baseada em identidade (IBE) e encriptação baseada em registro (RBE). Esses três métodos têm suas próprias vantagens em termos de Anonimato, interatividade e eficiência. Por exemplo, o IBE requer uma base de confiança forte, mas em algumas situações, o IBE tem um desempenho melhor em termos de Anonimato e eficiência. Este artigo tem como objetivo explorar a aplicação desses três métodos na cadeia de Bloco e comparar suas vantagens e desvantagens.
Três métodos
Em geral, um método comum de associar a encriptação de chave secreta com informações de identidade é usar a infraestrutura de chave pública (PKI), que tem como núcleo um diretório de chaves públicas. Nesse método, a pessoa que envia a informação precisa interagir com um terceiro confiável (ou seja, uma organização que mantém o diretório, geralmente uma autoridade de certificação) para enviar informações encriptadas.
No entanto, no ambiente Web2, manter este diretório de Chave pública requer custos elevados e operações complicadas. Além disso, os usuários enfrentam o risco de abuso de poder pelas autoridades de certificação.
Alguns esquemas alternativos propostos por criptógrafos para resolver os problemas da infraestrutura de chave pública (PKI). Em 1984, Adi Shamir propôs a encriptação baseada em identidade (IBE), onde a identidade de uma das partes (como número de telefone, e-mail ou domínio ENS) pode ser usada diretamente como chave pública. Este método elimina a necessidade de manter um diretório de chaves públicas, mas introduz um novo problema: é necessário depender de um terceiro de confiança (gerador de chave secreta) para gerar a chave privada.
Em 2001, Dan Boneh e Matthew Franklin propuseram a primeira construção prática de IBE, mas essa tecnologia não foi amplamente adotada, sendo principalmente utilizada em alguns ecossistemas fechados, como implantações empresariais ou governamentais. Uma das razões pelas quais a IBE não é amplamente utilizada pode ser a sua dependência de uma forte suposição de confiança, ou seja, a confiança na Chave Secreta gerada por terceiros.
No entanto, como será discutido posteriormente neste artigo, esse problema de confiança pode ser resolvido dependendo de um mais longo confiável (ou seja, um grupo de participantes que constituem um número legal) e a tecnologia blockchain pode facilmente realizar isso.
Vantagens e desvantagens
Ao comparar esses vários esquemas de encriptação, é necessário considerar muitos fatores diferentes. Eu faço duas suposições sobre isso:
Os usuários não atualizam nem revogam suas Chave Secreta: o que significa que, na discussão, é assumido que a Chave Secreta de cada usuário é fixa e não muda.
Contrato inteligente não utiliza nenhum serviço de disponibilidade de dados fora da cadeia (DAS) ou dados de blob: ou seja, supõe-se que o Contrato inteligente dependa totalmente de dados na cadeia, sem envolvimento de serviços de dados externos ou armazenamento de dados adicionais.
Diretório de Chave Pública
Qualquer pessoa pode adicionar uma entrada (id, pk) não ocupada por outros à lista na cadeia, chamando Contrato inteligente.
A PKI da Descentralização refere-se a um diretório mantido por contratos inteligentes que mantêm o mapeamento entre uma identidade (ID) e sua chave pública correspondente. Este diretório é público e não depende de terceiros centralizados. Por exemplo, com o ENS, ele mantém um mapeamento entre um nome de domínio (ou identidade) e metadados relacionados, incluindo o endereço (que pode ser deduzido a partir das transações nesses endereços) em que o domínio é resolvido. O ENS é um sistema mais complexo, que armazena não apenas chaves públicas, mas também outros metadados. A PKI da Descentralização tem uma funcionalidade relativamente mais simples: o contrato inteligente apenas precisa manter uma lista que registra a chave pública correspondente a cada identidade.
Quando um usuário deseja registrar uma identidade, primeiro precisa gerar um par de Chave Secreta (Chave pública e Chave privada), ou usar um par existente de Chave Secreta, e enviar o ID de sua identidade e a Chave pública para o Contrato inteligente (possivelmente pagando uma certa taxa). O Contrato inteligente verifica se esse ID já foi registrado por outra pessoa. Se não estiver ocupado, o Contrato inteligente adicionará esse ID e a Chave pública ao diretório. Uma vez registrado, qualquer pessoa pode consultar o Contrato inteligente para obter a Chave pública correspondente a um determinado ID, a fim de encriptação mensagens para esse usuário. Se o remetente já tiver encriptação mensagens para esse usuário e já tiver a Chave pública correspondente, não precisa solicitar novamente ao Contrato inteligente. Com a Chave pública, o remetente pode encriptação mensagens como de costume e enviar a mensagem encriptada para o destinatário, que usará a Chave privada correspondente para descriptografar a mensagem e recuperar o texto original.
Vamos ver as vantagens e desvantagens deste método:
Vantagens Desvantagens Desencriptação não interativa: o processo de desencriptação não requer interação com outras partes, permitindo que o desencriptador o faça de forma independente. Não conciso (Not succinct): o sistema pode não ser suficientemente conciso em certos aspectos, o que pode implicar uma complexidade elevada, um grande volume de dados ou a necessidade de mais recursos. Transparência: o sistema pode ser transparente em certos aspectos, o que significa que as operações são públicas e podem ser auditadas. Encriptação interativa: o processo de encriptação pode requerer interação com outras partes, aumentando a complexidade. ID arbitrário: os utilizadores podem escolher ou utilizar livremente qualquer ID de identidade, sem restrições a formatos ou regras específicas. Remetente não anónimo: a identidade do remetente pode não ser mantida completamente anónima no sistema.
encriptação baseada em identidade (IBE)
A identidade do utilizador é representada pela sua Chave pública, o que significa que a Chave pública não só é usada para encriptação, mas também pode servir como identificador exclusivo do utilizador. No entanto, este método requer a dependência de uma ou mais entidades de confiança, responsáveis pela geração e distribuição da Chave Secreta. Além disso, estas entidades também precisam de manter uma Chave Secreta mestra ao longo do ciclo de vida do sistema, que em certas situações pode ser usada para desencriptar ou realizar outras operações importantes.
No sistema IBE, os usuários não geram um par de Chave pública e Chave privada como nos sistemas de encriptação tradicionais. Em vez disso, os usuários precisam se registrar usando um gerador de Chave Secreta confiável. O gerador de Chave Secreta possui um par de Chave Secreta principal (incluindo a Chave privada principal msk e a Chave pública principal mpk). Quando um usuário fornece seu ID, o gerador de Chave Secreta usa a Chave privada principal msk e o ID do usuário para calcular uma Chave privada exclusiva para esse usuário. A Chave privada gerada precisa ser transmitida ao usuário por um canal seguro, geralmente usando um protocolo de troca de Chave Secreta para estabelecer esse canal seguro.
Para o remetente, o sistema IBE simplifica o processo de encriptação. O remetente só precisa baixar a Chave Pública Mestra (mpk) do gerador de Chave Secreta uma vez e, em seguida, pode usar o ID para encriptar mensagens. Para o destinatário, a desencriptação também é simples. Os usuários registrados podem usar a Chave Privada enviada a eles pelo gerador de Chave Secreta para desencriptar o Texto Cifrado recebido.
A Chave privada principal (msk) do gerador de chaves deve ser mantida por um longo período de tempo, pois ela precisa gerar continuamente novas Chave privadas de usuário durante o funcionamento do sistema. Isso é diferente de alguns sistemas SNARK, que são gerados durante o processo de configuração confiável, mas podem ser destruídos após a conclusão da configuração. Na IBE, a Chave privada principal não pode ser removida após a inicialização, como é o caso do SNARK.
Mesmo que a chave privada principal (msk) seja mantida de forma segura, cada usuário registrado ainda precisa confiar que o gerador de chaves não irá ler suas mensagens. Isso ocorre porque o gerador de chaves pode salvar uma cópia da chave privada do usuário a qualquer momento, ou usar a chave privada principal para recalcular a chave privada do usuário.
O gerador de Chave Secreta pode fornecer aos usuários uma Chave privada com problemas ou restrita, que pode descriptografar a maioria das mensagens, mas não pode descriptografar mensagens específicas definidas pelo gerador de Chave Secreta. Isso significa que o gerador de Chave Secreta tem a capacidade de manipular a capacidade de descriptografia do usuário, podendo, portanto, exercer algum controle ou restrição sobre a comunicação do usuário.
Vantagens e desvantagens de armazenamento na cadeia de blocos: Armazenamento mínimo/constante: o sistema requer uma quantidade mínima ou constante de armazenamento na cadeia de blocos, que não aumenta com o tempo. Forte suposição de confiança: o sistema depende de uma ou mais partes confiáveis, o que significa que é necessário ter uma forte confiança nessas partes. Se essas partes forem comprometidas ou não forem confiáveis, a segurança do sistema será ameaçada. Encriptação não interativa: o processo de encriptação não requer interação com outras partes, o remetente pode realizar a encriptação independentemente. Remetente anônimo: o sistema pode manter o anonimato do remetente, protegendo a privacidade. IDs arbitrárias: os usuários podem escolher ou usar livremente IDs de identidade arbitrários, sem restrições de formato ou regras específicas.
Com base no encriptação registado (RBE)
Como o IBE, neste sistema, a identidade do usuário (como o endereço de e-mail ou número de telefone) atua diretamente como sua chave pública. No entanto, ao contrário do IBE, este sistema não depende mais de um terceiro confiável ou de um conjunto de quorum para gerenciar a chave secreta. Em vez disso, esse terceiro confiável é substituído por um curador de chaves.
Vou discutir nesta seção uma forma eficiente de construção de RBE, porque, ao meu conhecimento, ela tem uma vantagem significativa em relação a outras construções de RBE práticas, pode ser implantada em um bloco na cadeia, porque é baseada em emparelhamento, em vez de ser baseada em retículo.
No sistema RBE, cada usuário gera seu próprio par de Chaves Secretas (incluindo Chave pública e Chave privada). Os usuários também precisam calcular alguns valores de atualização (marcados como ‘a’ na figura) com base em sua Chave privada e uma sequência de referência pública (CRS). Esses valores de atualização são usados para operações adicionais no sistema. A existência da sequência de referência pública (CRS) significa que a configuração do sistema não é totalmente confiável. No entanto, o processo de geração do CRS utiliza um método de construção usando potências chamado tau. Esse método de construção pode ser calculado através da colaboração de vários participantes na cadeia. Desde que pelo menos um participante seja honesto, o CRS é seguro.
O contrato inteligente é configurado para um número esperado de usuários N, que são agrupados em diferentes buckets. Quando um usuário se registra no sistema, ele precisa enviar seu ID de identidade, chave pública e valor de atualização para o contrato inteligente. O contrato inteligente mantém um conjunto de parâmetros públicos pp, que são diferentes da string de referência pública comum (CRS) mencionada anteriormente. Pode-se entender pp como um resumo conciso das chaves públicas de todos os usuários registrados no sistema. Depois de receber a solicitação de registro do usuário, o contrato inteligente verifica o valor de atualização para verificar sua correção. Uma vez verificado, o contrato inteligente multiplica a chave pública do usuário pelos buckets correspondentes em pp. Essa etapa é equivalente a incluir a chave pública do novo usuário no conjunto de parâmetros públicos do sistema para uso em operações futuras.
No sistema baseado em registro de encriptação (RBE), os usuários precisam manter localmente algumas informações que os ajudarão a descriptografar mensagens. Quando novos usuários se registam no mesmo grupo, essas informações precisam ser atualizadas. Os usuários podem monitorizar a cadeia de blocos manualmente para atualizar essas informações, ou os contratos inteligentes podem fornecer informações sobre os usuários que se registraram recentemente, permitindo que os usuários obtenham essas atualizações regularmente para manter suas informações de descriptografia atualizadas.
Neste sistema, o remetente só precisa fazer duas coisas:
Baixe a sequência de referência pública (CRS): isso só precisa ser baixado uma vez e não precisa ser atualizado novamente.
Baixar parâmetros públicos: Os remetentes precisam baixar ocasionalmente os parâmetros públicos mais recentes. Para os remetentes, é importante que esses parâmetros públicos contenham a Chave pública do destinatário, para que não seja necessário baixar a versão mais recente toda vez, desde que a Chave pública do destinatário possa ser encontrada.
Então, o remetente pode encriptar a mensagem e enviá-la ao destinatário usando o CRS baixado, os parâmetros públicos e a identificação do destinatário. Isso significa que o remetente não precisa atualizar os dados com frequência, desde que a chave pública do destinatário esteja presente nos parâmetros públicos.
Quando um usuário recebe uma mensagem de encriptação, primeiro verifica as informações auxiliares armazenadas localmente para ver se existe um valor que atenda a alguma condição (por exemplo, um valor verificado por alguma verificação). Se o usuário não encontrar um valor que atenda à condição localmente, isso significa que eles precisam obter as informações mais recentes do contrato inteligente. Uma vez que o usuário encontre um valor de informação auxiliar adequado, eles podem usar esse valor e sua chave privada para descriptografar o texto cifrado recebido e, assim, recuperar a mensagem original.
Obviamente, este plano é mais complexo do que os outros dois planos. Mas requer menos armazenamento na cadeia do que o diretório de Chave pública e evita a suposição de confiança forte do IBE.
Parâmetros concisos:
有一定交互性的encriptação:
Descriptografia interativa:
Remetente anónimo:
Transparência:
Conjunto de IDs restritos:
Destinatário Anônimo: