Somente para fins educacionais; não constitui recomendação nem aconselhamento de investimento. Investir pode causar perdas.
Resposta direta
Uma assinatura Boneh-Lynn-Shacham é uma assinatura digital baseada em emparelhamentos bilineares. Em uma orientação comum, a chave secreta sk produz a chave pública PK = sk * G1; a mensagem m é mapeada para H(m) em G2; e a assinatura sig = sk * H(m) é verificada por e(PK, H(m)) = e(G1, sig). Os grupos exatos, codificações, suíte hash-to-curve e separação de domínio são escolhas da suíte criptográfica, não notações intercambiáveis.
BLS tem uma vantagem operacional incomum: assinaturas válidas podem ser somadas em um único elemento de grupo de tamanho constante. Isso comprime as assinaturas, mas não a lista de signatários, nem prova quorum, identifica validadores autorizados, impede equivocação ou torna o consenso final. Essas propriedades vêm do protocolo que a envolve.
Como funciona
- Fixe protocolo, suíte criptográfica e versão: curva, grupos de chave pública e assinatura, serialização, função hash-to-curve, tag de separação de domínio e construção da raiz da mensagem. Nunca deduza compatibilidade apenas do rótulo BLS.
- Gere
skpelo procedimento de geração de chaves especificado e derivePK. Rejeite codificações zero, infinito, malformadas, não canônicas ou no subgrupo errado aplicando exatamenteKeyValidatee as regras de desserialização. - Construa os bytes exatos da mensagem e o domínio de assinatura. No consenso do Ethereum, a raiz de assinatura vincula a raiz SSZ do objeto a um domínio derivado do tipo de operação e dos dados do fork; o texto exibido não é o objeto assinado.
- Assine e verifique individualmente com o esquema selecionado. As variantes Basic, de aumento de mensagem e proof of possession têm defesas diferentes contra chaves maliciosas e não devem ser misturadas casualmente.
- Escolha o verificador agregado conforme o padrão das mensagens. Use
FastAggregateVerifyapenas para várias chaves públicas validadas que assinam a mesma mensagem sob as premissas exigidas de proof of possession; useAggregateVerifypara a lista de chaves públicas e mensagens permitida pelo esquema. - Reconstrua independentemente o conjunto de signatários a partir dos dados do comitê ou de um bitlist de participantes, rejeite índices duplicados ou não autorizados, aplique pesos de stake ou limiar e então verifique a assinatura agregada. Um agregado válido autentica o conjunto fornecido; não decide se ele satisfaz a política.
- Reconcilie o resultado com fork choice, condições de slashing, quorum, disponibilidade, temporização e finalidade. Preserve bytes de entrada, domínios, índices dos signatários, versão da implementação e vetores de teste, e compare bibliotecas independentes antes da implantação.
Exemplos resolvidos
- A compressão não elimina os dados de participação. O consenso do Ethereum codifica cada chave pública BLS em
48 bytese cada assinatura em96 bytes. Para512assinaturas da mesma mensagem, assinaturas separadas ocupam512 * 96 = 49,152 bytes. Uma assinatura agregada mais um bitlist de participantes de512-bit = 64-byteocupa96 + 64 = 160 bytes, redução de49,152 - 160 = 48,992 bytes, ou99.6744791667%. As chaves públicas dos validadores e o mapeamento do comitê ainda precisam estar disponíveis em outro lugar. - Agregação da mesma mensagem. Suponha que os validadores registrados
17,24e91assinem a mesma raiz de assinaturaR. Suas assinaturas são agregadas comosigAgg = sig17 + sig24 + sig91. A verificação usa o conjunto ordenado de chaves públicas validadas[PK17, PK24, PK91], o mesmoReFastAggregateVerify. Um resultado válido prova que essas chaves assinaramRsob o esquema; uma regra separada determina seus pesos e se três signatários formam quorum. - Mensagens distintas exigem a API correta. As chaves
PK1,PK2ePK3assinam as mensagens distintasm1,m2em3. O verificador precisa preservar os pares[PK1, m1],[PK2, m2],[PK3, m3]e chamar oAggregateVerifyaplicável; substituir essas entradas por uma única mensagem eFastAggregateVerifyverifica uma afirmação diferente. No esquema Basic, as mensagens também precisam ser distintas. - Agregação não é assinatura limiar. Em um grupo de
8membros, a agregação comum das assinaturas dos membros[1, 2, 4, 6, 8]produz uma assinatura e uma lista de cinco signatários. Ela não se transforma em uma assinatura limiar5-of-8sob uma única chave pública de grupo. Um projeto BLS limiar verdadeiro precisa de geração distribuída de chaves ou modelo com dealer confiável, índices de participações e regras de interpolação; suas premissas de confiança e falha devem ser auditadas separadamente.
Riscos
- Usar curva, orientação de grupos ou suíte criptográfica diferente da definida pelo protocolo.
- Assinar bytes serializados diferentes apesar de exibir a mesma mensagem legível.
- Omitir o domínio de fork, operação ou aplicação e permitir replay entre contextos.
- Tratar um Internet-Draft expirado como padrão final e imutável.
- Aceitar codificações de pontos malformadas, não canônicas ou no infinito.
- Ignorar verificações de subgrupo e admitir entradas de curva inválida ou subgrupo pequeno.
- Usar código hash-to-curve improvisado em vez da suíte e dos vetores de teste especificados.
- Gerar chaves secretas enviesadas, zero, duplicadas, vazadas ou derivadas de forma previsível.
- Reutilizar uma chave entre protocolos cujas premissas de proof of possession e domínio sejam diferentes.
- Agregar chaves públicas não registradas sem a defesa contra chaves maliciosas exigida pelo esquema.
- Chamar a verificação rápida de mesma mensagem para mensagens distintas ou raízes inconsistentes.
- Permutar, duplicar ou omitir a associação entre chave pública e mensagem.
- Confiar em bitlist de participantes sem verificar participação no comitê e unicidade dos índices.
- Contar assinaturas em vez do stake, peso ou limiar definido pelo protocolo.
- Presumir que um agregado revela qual assinatura individual era inválida.
- Confundir agregação comum, multisignatures e assinaturas limiares.
- Tratar a validade da assinatura como prova de disponibilidade de dados, correção da execução ou finalidade.
- Ignorar equivocação, mensagens sujeitas a slashing, janelas temporais ou contexto de fork choice.
- Depender de uma biblioteca, recurso de CPU ou otimização de verificação em lote não verificada.
- Subestimar custo de emparelhamento, entradas de negação de serviço, canais laterais, custódia de chaves, atualizações e ausência de segurança pós-quântica.
Equívocos comuns
- Uma assinatura agregada prova que todos os validadores participaram.
- Quaisquer chaves públicas e assinaturas BLS podem ser combinadas com segurança sem regras de proof of possession.
- A agregação de tamanho constante elimina a necessidade de transmitir ou reconstruir a participação dos signatários.
- Agregação BLS e BLS limiar são a mesma construção.
- Uma assinatura BLS válida torna o bloco, a mensagem de bridge ou o protocolo assinado economicamente seguro e final.
Tópicos relacionados
Fontes
- BLS Signatures - Internet Research Task Force (acessado em: 2026-08-12)
- RFC 9380: Hashing to Elliptic Curves - RFC Editor (acessado em: 2026-08-12)
- Short Signatures from the Weil Pairing - Springer (acessado em: 2026-08-12)
- Ethereum Proof-of-Stake Consensus Specifications - Ethereum Foundation (acessado em: 2026-08-12)
- Phase 0 Beacon Chain Specification - Ethereum Foundation (acessado em: 2026-08-12)
- Ethereum Annotated Specification: BLS Signatures - Ethereum Foundation (acessado em: 2026-08-12)
- EIP-2537: Precompile for BLS12-381 curve operations - Ethereum Improvement Proposals (acessado em: 2026-08-12)
- Consensus mechanisms - Ethereum.org (acessado em: 2026-08-12)