Assinaturas BLS e Esquemas de Agregação de Assinaturas
Explore os emparelhamentos BLS12-381, a agregação de assinaturas e como o Ethereum 2.0 usa BLS para reduzir a sobrecarga dos validadores.
Assinaturas BLS e Esquemas de Agregação de Assinaturas é uma aula grátis de Cryptology Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cryptology Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cryptology Academy inclui 4 aulas no total.
Emparelhamentos bilineares: a base matemática
As assinaturas BLS dependem de emparelhamentos bilineares — uma operação matemática sobre curvas elípticas. Um emparelhamento e: G1 x G2 -> GT mapeia pares de pontos de dois grupos (G1, G2) para um grupo de destino GT. A propriedade essencial é a bilinearidade: e(aP, bQ) = e(P, Q)^(ab) para escalares a, b e pontos P, Q. Isso permite verificar relações entre elementos dos grupos sem conhecer os logaritmos discretos. A curva de emparelhamento mais usada em criptografia é BLS12-381, escolhida por seu nível de segurança de 128 bits, pelo tamanho reduzido dos elementos dos grupos (48 bytes em G1, 96 bytes em G2) e pelo cálculo eficiente de emparelhamentos.
Construção de assinatura BLS
Uma assinatura BLS (Boneh-Lynn-Shacham) funciona da seguinte forma. Geração de chaves: a chave privada x é um escalar aleatório; a chave pública PK = x * G, em que G é o gerador de G2. Assinatura: dada uma mensagem m, calcula-se H = hash-to-curve(m) em G1 e, em seguida, sigma = x * H. A assinatura sigma é um único ponto de G1 (48 bytes em BLS12-381). Verificação: verificar e(sigma, G) == e(H, PK). Pela bilinearidade, e(x*H, G) = e(H, G)^x = e(H, x*G) = e(H, PK). A segurança depende da hipótese co-CDH: calcular x*H a partir de H e x*G é difícil sem conhecer x.
Agregação de assinaturas: a principal inovação
As assinaturas BLS permitem agregação não interativa: dadas assinaturas sigma_1, ..., sigma_n sobre mensagens m_1, ..., m_n, provenientes de chaves públicas PK_1, ..., PK_n, um agregador calcula sigma_agg = sigma_1 + sigma_2 + ... + sigma_n, usando a adição de pontos da curva elíptica. A assinatura agregada é um único valor de 48 bytes, independentemente de n. A verificação exige n+1 operações de emparelhamento: verificar e(sigma_agg, G) == product(e(H_i, PK_i)). No caso comum em que todos os signatários assinam a mesma mensagem, a verificação se reduz a 2 emparelhamentos: e(sigma_agg, G) == e(H, sum(PK_i)).
Ataque da chave impostora e defesa
A agregação BLS ingênua é vulnerável ao ataque da chave impostora. O adversário registra PK_adv = x_adv*G - PK_honest. A chave agregada PK_agg = PK_honest + PK_adv = x_adv*G, que fica inteiramente sob o controle do adversário. Opções de defesa: (1) prova de posse: cada signatário comprova que conhece sua chave privada assinando a própria chave pública durante o registro. (2) Extensão da mensagem: incluir a chave pública de cada signatário na mensagem. (3) Delinearização (BGLS): multiplicar cada chave pública por hash(PK_i, all_PKs) antes da agregação, quebrando a linearidade que possibilita o ataque. Ethereum usa provas de posse no registro de validadores.
Uso de BLS no Ethereum 2.0
A camada de consenso de Ethereum (Beacon Chain) usa amplamente a agregação BLS12-381. A cada intervalo, mais de 400.000 validadores ativos fazem atestações do topo da cadeia. Sem agregação, armazenar todas as assinaturas exigiria ~400,000 * 96 bytes = 38 MB por intervalo. Com a agregação BLS por comitê (normalmente 512 validadores), cada comitê produz uma assinatura agregada de 96 bytes, reduzindo o total de dados de assinatura a alguns quilobytes por intervalo. O corpo do bloco da Beacon Chain contém atestações agregadas: um campo de bits que indica quais validadores participaram, além de uma assinatura BLS agregada para cada comitê.
Desempenho de BLS versus ECDSA
As operações de assinatura BLS têm características de desempenho diferentes das operações ECDSA. A assinatura BLS exige uma operação de hash para curva e uma multiplicação escalar (~1 ms em hardware moderno). A verificação BLS exige duas operações de emparelhamento (~3–5 ms cada = ~6–10 ms no total). A assinatura ECDSA exige uma multiplicação de ponto (~0,2 ms); a verificação exige duas multiplicações de ponto (~0,4 ms). A verificação BLS é mais lenta por assinatura, mas muito mais rápida quando agregada: verificar 1.000 assinaturas BLS agregadas exige ~10 ms no total, em comparação com ~400 ms para 1.000 verificações individuais de ECDSA. O ponto de equilíbrio ocorre em torno de 2–3 assinaturas.
Assinaturas BLS de limiar
BLS de limiar estende a agregação ao compartilhamento de segredos. Em um esquema de limiar (t, n), a chave privada é dividida em n partes usando o compartilhamento de segredo de Shamir sobre o corpo escalar de BLS. Cada participante i produz uma assinatura parcial sigma_i = sk_i * H(m). Quaisquer t assinaturas parciais podem ser combinadas usando coeficientes de interpolação de Lagrange: sigma = sum(lambda_i * sigma_i). O resultado é idêntico à assinatura produzida pela chave original, mas nenhuma entidade individual jamais possui a chave completa. BLS de limiar é usado em tecnologia de validadores distribuídos (DVT), carteiras MPC e serviços de assinatura de limiar, como Fireblocks e Web3Auth.
BLS na rede Filecoin
Filecoin usa assinaturas BLS em seu sistema de provas de armazenamento e para assinatura de transações. Os mineradores de armazenamento agregam várias provas usando a agregação BLS, reduzindo os custos de verificação na cadeia. A fila de mensagens da Filecoin também agrega várias assinaturas de transações em uma única assinatura agregada, reduzindo o tamanho dos blocos. A implementação da Filecoin usa o rascunho do padrão BLS da IETF (hash para curva conforme a RFC 9380, na curva BLS12-381), com a variante de tamanho mínimo de chave pública, na qual as chaves públicas ficam em G1 (48 bytes) e as assinaturas em G2 (96 bytes) — o oposto da convenção de Ethereum.
BLS no Zcash e em protocolos de privacidade
Embora Zcash use principalmente provas zk-SNARK Groth16, os emparelhamentos BLS são a base de muitas construções de conhecimento zero baseadas em emparelhamentos. A equação de verificação do Groth16 é uma verificação de emparelhamento: e(A, B) = e(alpha, beta) * e(vk, C), em que A, B e C são elementos da prova. Os compromissos polinomiais KZG, usados nas transações de dados binários do EIP-4844 de Ethereum e em vários sistemas de rollup ZK, também dependem dos emparelhamentos BLS12-381: um compromisso com o polinômio f(x) é C = f(tau)*G, e as provas de avaliação são verificadas por emparelhamento. BLS12-381 foi escolhida especificamente por suas operações eficientes de emparelhamento e sua segurança de 128 bits.
Assinaturas agregáveis além de BLS
BLS não é o único esquema de assinatura agregável. As assinaturas Schnorr permitem a agregação de chaves (MuSig2, usada no Taproot do Bitcoin), na qual vários signatários produzem uma única assinatura Schnorr indistinguível de uma assinatura de um único signatário. FROST (limiar Schnorr flexível e otimizado para rodadas) fornece assinaturas Schnorr de limiar em duas rodadas. No entanto, a agregação Schnorr exige interação entre os signatários, ao contrário da agregação não interativa de BLS, o que a torna menos adequada para grandes conjuntos de validadores. BLS continua sendo a opção preferida para o consenso de cadeias de blocos devido à sua agregação não interativa e à verificação em lote eficiente.
Perspectivas pós-quânticas para BLS
As assinaturas BLS baseiam-se em emparelhamentos de curvas elípticas, que são vulneráveis a computadores quânticos que executem o algoritmo de Shor. Um computador quântico suficientemente poderoso poderia calcular logaritmos discretos em BLS12-381, comprometendo todas as assinaturas BLS existentes e eliminando a segurança do consenso do Ethereum. O cronograma é incerto, mas a NIST estima de 15 a 20 anos para o surgimento de computadores quânticos relevantes para a criptografia. O Ethereum e outras cadeias dependentes de BLS precisarão migrar para esquemas de assinatura pós-quânticos (CRYSTALS-Dilithium/ML-DSA ou SPHINCS+/SLH-DSA) antes que essa ameaça se concretize. A migração exige mudanças no nível do protocolo para o registro de validadores, os formatos de atestação e a verificação agregada.
Questionário sobre agregação BLS
Qual é a principal vantagem da agregação de assinaturas BLS na camada de consenso do Ethereum?
Recapitulação das assinaturas BLS
As assinaturas BLS usam emparelhamentos bilineares em curvas BLS12-381. As assinaturas são pontos G1 de 48 bytes; as chaves públicas são pontos G2 de 96 bytes, de acordo com a convenção do Ethereum. A agregação não interativa combina n assinaturas em um único valor de 48 bytes, verificado com n+1 emparelhamentos. O ataque de chave maliciosa é mitigado pela Prova de Posse durante o registro de validadores. O Ethereum usa BLS para compactar mais de 400.000 atestações de validadores por intervalo em alguns quilobytes. O BLS com limiar permite validadores distribuídos sem um único detentor da chave. O BLS é baseado em emparelhamentos e não oferece segurança pós-quântica, exigindo uma migração futura.
Perguntas Frequentes
A aula “Assinaturas BLS e Esquemas de Agregação de Assinaturas” é grátis?
Sim — o texto completo de “Assinaturas BLS e Esquemas de Agregação de Assinaturas” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cryptology Academy, atualize para CoddyKit PRO. O curso de Cryptology Academy inclui 4 aulas no total.
O que vou aprender em “Assinaturas BLS e Esquemas de Agregação de Assinaturas”?
Explore os emparelhamentos BLS12-381, a agregação de assinaturas e como o Ethereum 2.0 usa BLS para reduzir a sobrecarga dos validadores. Você pratica Cryptology Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Cryptology Academy?
Nenhuma experiência prévia é necessária. Cryptology Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Assinaturas BLS e Esquemas de Agregação de Assinaturas”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Cryptology Academy?
Sim. Cada aula de Cryptology Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Mecanismos Criptográficos de Prova de Participação
- Protocolos BFT: PBFT e Tendermint
- Funções Aleatórias Verificáveis em Consenso
- Assinaturas BLS e Esquemas de Agregação de Assinaturas