Este artigo foi traduzido por Bernardo Perelló. O original feito por pela Coinbase pode ser acessado aqui.
26 de Janeiro de 2022
Mensagens digitais podem ser autenticadas usando criptografia. Mas os sistemas por trás das assinaturas digitais estão sempre em evolução.
Assinaturas por escrito têm sido usadas para a verificação de documentos desde o século 17. Elas são usadas em diversos tipos de acordos, desde contratos trabalhistas e recibos de cartão de crédito até tratados internacionais. Mas a era digital inaugurou novas maneiras de nos comunicarmos, não mais nos limitando a papéis e caixas de correio. Mas então como podemos averiguar as mensagens digitais? A solução são as assinaturas digitais.
Aqui nós vamos desmistificar o conceito de sistemas de assinaturas digitais no intuito de ajudar você a compreender o por que elas são utilizadas, e também para desenvolver uma melhor compreensão do papel delas na tecnologia blockchain.
COMO FUNCIONAM AS ASSINATURAS DIGITAIS
Assim como as assinaturas por escrito vinculam uma pessoa a um documento específico, as assinaturas digitais conectam criptograficamente um perfil a uma mensagem.
Assinaturas digitais são praticamente impossíveis de serem forjadas porque elas são baseadas na teoria dos números. No que é conhecido como “criptografia de chave pública”, o usuário possui uma chave pública e uma chave privada, que formam um par. Criptografia de chave pública usa codificação para garantir segurança e proteger informações sigilosas.
A chave pública representa a identidade do seu usuário e a chave privada seu segredo, permitindo assim que essa pessoas comprove que tal chave pública pertence a ela. Digamos que Alice deseja enviar uma mensagem criptografada para Bob. Todos podem ver a chave pública do Bob, então assim Alice pode usá-la no algoritmo que criptografa sua mensagem.
Até pessoas de fora podem ver ou interceptar essa mensagem criptografada, mas elas não conseguem abrir essa mensagem para ver seu conteúdo sem a chave privada do Bob, que apenas ele sabe qual é. Assim a Alice tem a certeza de que ninguém além de Bob pode acessar o conteúdo da mensagem a menos que tenham a chave privada dele.
Para assinaturas digitais, a operação funciona de maneira reversa. Ao invés de fazer o processo computacional inicial colocando a chave pública do Bob, Alice colocaria a sua chave privada no algoritmo de assinatura para vincular a assinatura para mensagem e chave pública. Ninguém pode obter a chave privada da Alice ou forjar uma assinatura válida sem que seja ela usando apenas a chave pública e assinatura. No entanto, qualquer um que saiba a chave pública dela pode facilmente averiguar que a mensagem foi assinada pela chave privada dela.
Visualização da criptografia chave pública. Fonte
O PAPEL DAS ASSINATURAS DIGITAIS NA BLOCKCHAIN
Assinaturas digitais são um bloco de construção fundamental nas blockchains, usados normalmente na autenticação de transações. Quando um usuário envia uma transação, ele precisa comprovar a todos os nodes do sistemas que ele é autorizado a gastar o fundo utilizado, enquanto previne outros usuários de gastarem os fundos deles. Os nodes da rede irão verificar a transação enviada e também checar que todos os outros nodes também trabalhem para confirmar essa transação.
Se a Alice quiser enviar ao Bob 1 bitcoin, ela precisa realizar a transação gastando 1 bitcoin com dados de sua chave privada e enviar a todos os nodes da rede. Os mineradores, que sabem a sua chave pública, vão então checar as condições da transação e validar sua assinatura. Uma vez que essa validação é confirmada, o bloco contendo essa transação está pronto para ser finalizado por um minerador.
ESQUEMAS DE ASSINATURAS USADOS COM FREQUÊNCIA NA BLOCKCHAIN
A criptografia depende de alguns problemas matemáticos serem difíceis de resolver. Por exemplo, o algoritmo RSA, um dos primeiros sistemas criptográficos de chave pública, admite que é difícil fatorar dois números primos grandes.
ECDSA
O atual método de assinatura do Bitcoin é conhecido como Algoritmo de Assinatura Digital de Curva Elíptica (tradução de ECDSA). Este utiliza chaves menores e requer uma menor capacidade computacional em comparação com o sistema RSA, enquanto mantém um forte esquema de segurança. O ECDSA utiliza “curvas elípticas” ao invés de um campo finito. Uma curva elíptica é um grupo finito de pontos em uma curva onde algumas operações são fáceis de executar em uma direção mas difíceis de fazerem o mesmo em outra direção.
O ECSDA se baseia em um problema simplificado de logaritmo ao invés da dificuldade em fatorar números primos para segurança. O problema é o seguinte::
Deixe a, b e c inteiros tais como a^b = c. Se você tiver os valores de c e a, é difícil saber o valor de b se b for um número extenso. Agora aplique esta mesma equação a um grupo de curva elíptica e calcule Q = nP, onde n é um número inteiro, P é um ponto na curva, e Q é o resultado da operação (“multiplicando” pontos). Nas curvas elípticas, é fácil calcular o valor de Q tendo os valores de n e P, mas é difícil saber o valor de n tendo os valores de P e Q. Isso é conhecido como o “problema do logaritmo discreto de curva elíptica”.
Uma curva elíptica. Fonte
O algoritmo ECDSA se baseia nisso para gerar assinaturas difíceis de serem forjadas mas facilmente verificáveis. Bitcoin utiliza uma curva específica chamada “secp256k1”, que é padronizada pela agência do governo dos Estados Unidos, o Instituto Nacional de Padronização e Tecnologia (NIST).
Ainda que o tamanho de suas chaves sejam relativamente pequenas e possuam maior eficiência computacional comparada a RSA, é fácil implementar mal o ECDSA. Mais notavelmente, o Bitcoin sofreu com uma implementação do ECDSA na qual o identificador de uma transação poderia ser modificado alterando sua assinatura. Isso acabou sendo corrigido por um processo chamado SegWit (Segregated Witness). O ECDSA também pode ser propenso a aleatoriedade fraca e uma variedade de outros problemas.
SCHNORR SIGNATURES (BITCOIN)
O ECDSA em geral serviu bem ao Bitcoin ao longo dos anos.. Mas lhe falta uma característica essencial: não existe uma maneira eficiente de compactar e verificar assinaturas juntamente. Em função disso, existe um movimento recente para migrar para uma nova forma de melhorar a escalabilidade, eficiência e privacidade da criptomoeda: a Assinatura Schnorr. Este é um sistema de assinaturas mais elaborado, idealizado em 1988 por Claus-Peter Schnorr, que foi protegido sob patente até 2008. Como Schnorr não era amplamente aceito ou padronizado até recentemente, o fundador do Bitcoin Satoshi Nakamoto acabou optando pelo ECDSA.
Assinatura Schnorr é comprovadamente segura com suposições criptográficas padrão (discrete log), não maleável (terceiros não podem alterar uma assinatura válida no intuito de gerar uma nova assinatura para a mesma mensagem e chave), e fornece linearidade (várias partes podem colaborar para produzir uma única assinatura válida para todas as chaves públicas).
A linearidade permite que os signatários em uma transação com várias assinaturas combinem suas chaves públicas em uma única chave agregada (key aggregation). A funcionalidade multi-sig (múltiplas assinaturas) não é nativa do Bitcoin e tradicionalmente tem sido limitada a scripts Pay-to-Script-Hash (P2SH), em que todas as partes devem enviar suas chaves públicas e assinaturas em uma transação. Nessas transações, os observadores podem ver quando uma transação multi-sig está acontecendo e também identificar os envolvidos.
Em contrapartida, as assinaturas Schnorr permitem que a lista e o número de participantes sejam ocultados ao reunir todas as chaves públicas em uma única assinatura agregada indistinguível de uma normal. Isso reduziria a carga do bloco e aumentaria a privacidade, permitindo a “construção de contrato inteligente Taproot”, uma técnica que torna scripts complexos indistinguíveis de transações normais.
Visualização simplificada de um sistema de assinatura tradicional comparado ao agregado. Fonte
Assinaturas Schnorr também habilitam a agregação de assinaturas de entrada cruzada (CISA - Cross-Input Signature Aggregation). Transações de Bitcoin frequentemente possuem muitas entradas, com cada uma delas exigindo uma assinatura individual. Isso tende a ocupar muito espaço em um bloco. Assinaturas Schnorr permitem que assinaturas individuais em uma transação sejam agregadas, assim todos os inputs podem ser aplicados com uma única assinatura. Isso libera mais espaço para dados de transações em blocos e estima-se que aumenta a capacidade em 20-40%. Em protocolos privados como Coinjoin, a agregação de assinaturas de entrada cruzada auxilia na privacidade ao tornar mais difícil o rastreamento dos inputs.
ASSINATURAS BLS (ETH2)
A atual blockchain Ethereum também faz uso do ECDSA. Contudo, quando a Ethereum migrar para o Proof of Stake com a eth2, o ECDSA não irá mais preencher os requisitos de validação da rede.
A cadeia eth2 irá envolver milhares de comitês validadores, cada um incumbido de produzir milhares de assinaturas num curto período de tempo. Para isto se tornar escalável, cada node não poderá verificar todas as assinaturas. Por exemplo, consideramos que existam 64 comitês para cada bloco, com cada comitê tendo um total de 2.048 validadores, 131.072 (64x2048) assinaturas devem ser processadas e averiguadas por cada bloco (12 segundos). Um esquema de assinatura que permita a verificação eficiente de assinaturas em consenso é claramente necessário: a eth2 planeja usar assinaturas BLS (Boneh-Lynn-Shacham).
Proposto no início deste século, essas assinaturas dependem de criptografia “baseada em pares”. Isso usa suposições de dureza diferentes daquelas usadas pelo ECDSA, operando em diferentes tipos de curvas (curvas amigáveis ao pareamento). Assim como Schnorr, as assinaturas BLS permitem a combinação de chave e assinatura, mas são determinísticas (não aleatórias), permitem combinação de assinaturas em um bloco inteiro, e, não só isso, são aproximadamente 50% menores.
As Multi-assinaturas Schnorr também necessitam de muitas etapas de comunicação e podem depender de uma estrutura crescente de dados (Árvore de Merkle) para combinação, enquanto assinaturas BLS são fáceis de serem gerados, com menos requisitos de comunicação. O lado mais negativo do BLS é que a verificação é extremamente ineficiente e bem mais custosa do que Schnorr.
Muitas das novas blockchains (a maioria delas usam o Proof of Stake) também pretendem utilizar as assinaturas BLS. A Polkadot pretende usá-las para a validação do protocolo GRANDPA (GHOST-based Recursive Ancestor Deriving Prefix Agreement) numa maneira parecida com a eth2. Even Grin, uma blockchain Proof of Work que preserva a privacidade, está pesquisando sobre assinaturas BLS como uma forma de reduzir a carga transacional (kernel aggregation) e facilitar a funcionalidade multi-assinaturas.
CONSIDERAÇÕES FUTURAS
Em um mundo onde todo minerador ou validador necessita verificar cada assinatura, a tecnologia blockchain não poderia funcionar globalmente sem os esquemas de assinatura corretos.
Qualquer esquema de assinatura terá consequências em cascata para o funcionamento da blockchain. Logo, escolher o melhor é fundamental para o desenvolvimento do protocolo. Existem trade-offs e nenhuma solução escolhida permanecerá como padrão intocável.
Melhorias no tamanho da assinatura, tempo de verificação, ou segurança acontecerão constantemente. Um esquema pode ser mais viável do que outro se seus benefícios forem atraentes. Por exemplo, assinaturas BLS quase não eram utilizadas até recentemente, quando foram lançados artigos dedicados a melhorar sua eficiência, principalmente para protocolos blockchain. Equipes de protocolo precisam permanecer flexíveis e abertas à mudança sempre que surgirem motivos interessantes.
Os esquemas de assinatura abordados aqui já existem há décadas e provavelmente continuarão existindo no futuro próximo. Ainda que seja inevitável que esses esquemas sejam eventualmente substituídos por outros oriundos de pesquisas que estão em andamento neste momento. Novos sistemas criptográficos raramente são implementados em larga escala assim que são lançados – um período de teste informal é necessário para verificar a segurança e comprovar suas suposições.
As pesquisas em criptografia têm crescido nesse cenário de blockchains, e continuarão nessa crescente. Muitas pesquisas relevantes hoje estão dedicadas às provas de conhecimento zero (zero-knowledge proofs), e a outras áreas da criptografia que atualmente não possuem relevância para as blockchains mas que futuramente podem se tornar importantes.
A criptografia lida com algumas das informações mais sensíveis, e é essencial que esses esquemas sejam examinados ao máximo. É por isso que os esquemas podem levar décadas para ganhar destaque. Mas a indústria não ficará menos animada quando eles chegarem.
Latest comments (0)