HotStuff: de cero a estado del arte

Artículo 35 de 77

45%

completado

Sistemas distribuidosResearch note14 min de lectura

Firmas en BFT: threshold, aggregate y por qué AggQC no es un QC normal

Puente entre QC/highQC y Fast-HotStuff: firmas de réplicas, threshold signatures, aggregate signatures y la evidencia que transporta AggQC.

🎯 En 1 Minuto

Diferencia firmas individuales, threshold, multisignatures y aggregate signatures antes de interpretar AggQC como prueba protocolar.

📋 Prerrequisitos
  • QC y highQC
  • View-change de HotStuff
🛑 Cuándo Detenerte

Continúa cuando puedas decir qué mensaje firma cada réplica, qué se compacta y qué verifica un AggQC.

HotStuff se suele explicar con una frase compacta: un líder junta 2f + 1 votos y produce un QC. La frase está bien para empezar, pero deja una bomba debajo de la alfombra: ¿qué tipo de firma estamos juntando y qué significa exactamente compactar evidencia?

Esa pregunta importa muchísimo cuando llegamos a Fast-HotStuff. En el camino feliz, una certificación compacta se parece a lo que ya venimos usando: muchas réplicas firman una misma propuesta, el líder agrega votos y el resto verifica que existe quórum. En el camino infeliz, después de timeout, la historia cambia. Las réplicas ya no necesariamente firman el mismo mensaje: cada una puede reportar su highQC_i, y esos highQC_i pueden ser distintos.

Ahí aparece AggQC. No es “un QC más grande” ni una decoración cripto. Es una prueba agregada de vista alta: el nuevo líder demuestra que recibió evidencia de un quórum y que seleccionó el highQC correcto según esa evidencia. Sin este puente, Fast-HotStuff se lee como latencia gratis. Con este puente, se ve la factura: menos espera en el camino feliz, más estructura en el cambio de vista.

Matriz de Decisión

Qué tipo de evidencia estás compactando

Votos individuales

simple

Cada firma se transporta por separado.

Ideal para: debug, comités pequeños, pedagogía inicial, auditorías donde quieres ver firmante por firmante
Ojo con: crece ancho de banda y verificación si el comité aumenta

Threshold QC

★ Recomendado

Firmas parciales sobre el mismo mensaje se combinan en una prueba compacta.

Ideal para: HotStuff clásico, propuestas donde todas las réplicas firman el mismo bloque/vista
Ojo con: no modela igual de limpio mensajes distintos por réplica

Aggregate proof

Precaución

Firmas sobre mensajes potencialmente distintos se agrupan preservando qué se firmó.

Ideal para: AggQC, new-view con highQC_i distintos, pruebas de vista alta
Ojo con: verificación y accountability requieren más cuidado
El nombre de la firma no debe tapar la pregunta de ingeniería: ¿todos firmaron el mismo mensaje o cada réplica reportó evidencia distinta?
Criptografía Aplicada

De BLS a AggQC: qué se compacta de verdad

01. Mensaje

qué se afirma

02. Firmante

qué identidad responde

03. Compactación

qué se reduce de tamaño

04. Verificación

qué contrato se valida

05. Semántica

qué significa en el protocolo

Firmas Individuales (f * Secp256k1)

¿Por qué no escalar firmas individuales en redes de miles de nodos?

Firma:
Mensaje individual m_i por réplica i
Compacta:
Arreglo de f firmas independientes
Verifica:
f verificaciones ecdsa_verify()

Baja escala (f pequeños), debugging transparente o prototipado.

Firmas Agregadas (BLS12-381)

¿Cómo reducir 2f+1 firmas a 48 bytes constantes?

Firma:
Mismo mensaje m o m_i por réplica i
Compacta:
1 sola firma compacta de 48 bytes
Verifica:
1 producto de emparejamiento bilinear e(g1, sigma)

Consensos modernos (HotStuff, Fast-HotStuff, Ethereum PoS) para mantener O(n) lineal.

Firmas Umbral (Threshold Signatures)

¿Cómo ocultar qué réplicas específicas votaron en el quórum?

Firma:
Único valor acordado del quórum
Compacta:
1 firma indistinguible de firma individual
Verifica:
1 sola verificación estándar

Privacidad de votantes y máxima compresión en cadena.

Úsalo como regla de lectura: si cambia el mensaje firmado, cambia también la semántica de la prueba. No metas threshold, multisig, aggregate y AggQC en el mismo cajón.

Primero: un voto BFT no es un like

Una réplica correcta no firma “porque sí”. Firma porque una propuesta satisface reglas locales: extiende la evidencia segura, no contradice su lock, usa una vista válida y respeta el mensaje que el protocolo espera. Si una réplica firma dos historias incompatibles bajo condiciones prohibidas, el sistema debe poder detectarlo o al menos apoyarse en el supuesto de que esa réplica ya no es correcta.

Por eso una firma es una pieza de control, no un adorno de seguridad. El líder no solo busca cantidad de firmas; busca firmas que prueben una condición concreta. En HotStuff básico, esa condición suele ser: “este bloque fue votado por un quórum en esta vista”. En Fast-HotStuff, durante cambio de vista, la condición se vuelve más rica: “un quórum reportó sus highQC locales, y la propuesta extiende el máximo relevante”.

La diferencia entre esas dos frases es la diferencia entre QC y AggQC.

BLS sin humo: por qué agrega tan bien

BLS suele aparecer como “la firma que se puede agregar”, pero eso es solo la mitad útil de la historia. La primitiva parte de una idea compacta: la clave privada es un escalar, la clave pública es ese escalar aplicado a un generador, y la firma aplica el mismo escalar al hash del mensaje mapeado a una curva. La verificación usa un emparejamiento bilineal para comprobar que la clave pública y la firma nacen del mismo secreto sin revelar el secreto.

Cargando fórmula...

La razón por la que eso agrega bien es la bilinealidad: si varias firmas BLS están bien formadas, puedes sumar puntos y luego verificar una relación agregada. El diablo, como siempre, vive en el contrato exacto: ¿todas las firmas son sobre el mismo mensaje?, ¿son sobre mensajes distintos?, ¿todas las claves fueron registradas honestamente?, ¿necesitas prueba de posesión para evitar rogue-key attacks? El draft CFRG de BLS aterriza estas variantes en perfiles prácticos de firma básica, message augmentation y proof-of-possession.

Threshold signatures no son simplemente “aggregate signatures con otro nombre”. En un threshold BLS, el secreto del comité se reparte en shares; cada réplica firma el mismo mensaje con su share y el combinador interpola suficientes firmas parciales para producir una firma que verifica contra la clave pública del comité. Esa intuición viene de secret sharing: con suficientes puntos reconstruyes la evaluación necesaria; con menos, no.

Multisignature vive en otra esquina: varias claves independientes firman el mismo mensaje y se compactan en una firma conjunta. Es atractiva para blockchains porque baja tamaño, pero obliga a cuidar el registro de claves y ataques rogue-key; si un atacante puede elegir su clave en función de las claves honestas, puede intentar que la agregación diga más de lo que realmente se firmó.

Aggregate signatures, en cambio, son la herramienta natural cuando los mensajes pueden ser distintos. Ahí no estás diciendo “un comité firmó una misma afirmación”, sino “esta colección de firmantes firmó esta colección de mensajes”. Para AggQC, esa diferencia no es cosmética: cada réplica reporta su highQC_i, y el protocolo necesita preservar qué reportó cada una para justificar el highQC* elegido.

QC con threshold signatures: todos empujan el mismo objeto

Imagina que el líder propone el bloque B en vista v. Las réplicas correctas verifican la propuesta y, si todo cuadra, firman algo equivalente a Vote(B, v). Si el líder junta 2f + 1 votos sobre ese mismo mensaje lógico, puede formar un QC.

Con firmas individuales, el QC podría ser literalmente una lista de firmas. Funciona, pero es pesado. Con threshold signatures, cada réplica produce una firma parcial; el líder combina suficientes parciales en una firma compacta que verifica contra una clave pública agregada del comité. Para el consumidor del QC, la prueba se siente como una sola firma: compacta, elegante, muy de paper con café caro.

La gracia es que todos firmaron el mismo mensaje. Ese detalle permite que el esquema threshold sea natural. El QC no necesita explicar una colección de opiniones distintas; solo prueba que un quórum firmó una misma afirmación.

Figura 1

QC normal: muchas firmas, una afirmación

Fuentes:[3][1][6]
QC normal: muchas firmas, una afirmación
📖 Cómo leer esta figura (Detalle explicativo)

A la izquierda hay una única afirmación Vote(B,v). Las réplicas producen firmas parciales sobre exactamente esos bytes; las flechas convergen en un QC compacto que representa 2f + 1 autorizaciones y se verifica como una prueba. La figura no describe AggQC: allí los reportes pueden contener highQCs diferentes y el contrato de verificación cambia.

Visual original de TrautsLab. La compactación es limpia cuando el mensaje firmado es el mismo: Vote(B, v). Por eso QC y threshold signatures encajan tan bien en la explicación base de HotStuff.

Aggregate signatures: cuando no todos firman lo mismo

Ahora cambia la escena. La red se trabó, hubo timeout y entramos a new-view. Cada réplica envía al nuevo líder el highQC_i más alto que conoce. Una réplica puede reportar QC3; otra, QC4; otra quizá está rezagada; otra podría intentar mentir si es bizantina.

El líder necesita probar dos cosas: que recibió suficientes reportes y que eligió el highQC correcto según esos reportes. Si intentas meter esto en el molde de threshold signatures “todos firmaron el mismo mensaje”, algo chirría. Los mensajes no son idénticos. No estás agregando Vote(B, v) repetido; estás agregando declaraciones del tipo Timeout_i(v, highQC_i) o evidencia equivalente.

Aggregate signatures resuelven otro problema: permiten agrupar firmas de diferentes firmantes sobre mensajes potencialmente distintos. No convierten la prueba en magia. Todavía debes saber qué firmó cada quien, verificar que hay 2f + 1, revisar que las claves corresponden al comité y validar que la selección de máximo highQC tiene sentido. Pero te dan una manera de transportar esa colección de declaraciones sin enviarla como un saco desordenado.

AggQC: la prueba de vista alta

AggQC es el nombre práctico de esa prueba agregada en Fast-HotStuff. Su propósito no es “hacer bonito” el cambio de vista. Su propósito es impedir que el nuevo líder elija una punta conveniente y vieja cuando el quórum reportó evidencia más avanzada.

Piensa en un líder malicioso. Si solo le pedimos “propón sobre algún QC”, puede escoger un QC legal pero flojo. Tal vez no rompa safety de inmediato, pero degrada progreso, desperdicia trabajo y puede sostener ataques de rendimiento. Si le pedimos “propón sobre el highQC máximo probado por un quórum”, ya no basta con escoger a gusto. Debe enseñar el paquete de evidencia.

AggQC hace eso: agrega firmas sobre los highQC_i, permite seleccionar highQC* = maxView(highQC_i) y vincula la nueva propuesta con ese máximo. La propuesta ya no llega desnuda; llega con recibos.

Cargando mecánica de consenso...

Qué gana Fast-HotStuff y qué paga

Fast-HotStuff intenta acortar el camino feliz. Si todo va bien, quiere confirmar con menor latencia que HotStuff básico. Eso suena excelente, porque en sistemas distribuidos una ronda menos puede sentirse como quitarle una piedra al zapato.

Pero la latencia no desaparece; se redistribuye. El camino infeliz debe cargar una prueba más expresiva. Las implementaciones deben manejar firmas agregadas, selección de highQC, timeouts, validación de mensajes distintos, potenciales costos de verificación y reglas de accountability. En comités grandes, la pregunta de costo no es decorativa: ¿cuántos pares clave-mensaje verificas?, ¿cuánto pesa la prueba?, ¿cómo cacheas?, ¿qué haces si un líder omite reportes útiles?

La lectura madura no es “threshold signatures buenas, aggregate signatures malas”. La lectura madura es: cada herramienta compacta una forma distinta de evidencia. Threshold signatures brillan cuando el mensaje común es claro. Aggregate signatures brillan cuando necesitas transportar muchas declaraciones relacionadas pero no idénticas.

Comparación

Cómo se rompe una explicación floja

Si en un post futuro aparece AggQC, estas señales deben revisarse antes de publicar. Sirven como regla editorial y como checklist técnico.

Mala explicación

AggQC se define como 'un QC con más firmas'.

  • confunde mensaje común con mensajes distintos
  • oculta selección de highQC*
  • no explica el costo de verificación

Explicación aceptable

AggQC se describe como evidencia de new-view.

  • menciona 2f + 1 reportes
  • explica highQC_i
  • conecta propuesta segura con máximo de vista

Explicación fuerte

AggQC se presenta como contrato operativo.

  • distingue threshold y aggregate
  • dice qué falla si el líder escoge QC viejo
  • declara trade-offs de latencia, tamaño y verificación

Profundización conceptual

Modelo mental: QC es consenso sobre un mensaje; AggQC es consenso sobre evidencia reportada

Un QC normal responde: “¿un quórum votó este bloque en esta vista?”. AggQC responde una pregunta diferente: “¿un quórum reportó suficiente evidencia para que el nuevo líder deba extender este highQC?”.

La diferencia parece pequeña, pero cambia la forma de razonar. En QC, el objeto central es la propuesta. En AggQC, el objeto central es el conjunto de evidencias que el nuevo líder recibió. Por eso AggQC no debe aparecer en la serie como un acrónimo suelto. Debe aparecer donde el lector ya sabe qué es highQC, qué significa view-change y por qué elegir una punta vieja puede ser legalmente incómodo.

Invariante: el líder no puede degradar la punta certificada sin dejar rastro

El invariante operativo es claro: si un quórum reporta un highQC alto, el nuevo líder no debería poder proponer sobre un highQC más bajo sin que el protocolo lo detecte o rechace. AggQC convierte ese invariante en una prueba transportable.

Esto no reemplaza todos los checks locales. Las réplicas todavía deben verificar vista, firma, quórum, pertenencia al comité y relación de extensión. AggQC no apaga el cerebro de los validadores; les entrega una evidencia mejor empaquetada para tomar la decisión.

Escenario adversarial: el líder hace cherry-picking de reportes

Supón que cuatro réplicas reportan sus highQC locales. Tres tienen una vista alta y una está atrasada. Un líder malicioso podría querer mostrar solo el reporte atrasado para construir una propuesta más cómoda. Si el protocolo acepta “algún QC”, el ataque puede avanzar como degradación de rendimiento. Si exige AggQC con 2f + 1 reportes y selección de máximo, el líder necesita exponer la evidencia que contradice su cherry-picking.

La gracia no es que el líder se vuelva honesto. La gracia es que el protocolo le reduce el espacio para mentir sin pruebas verificables.

Cómo leer Fast-HotStuff después de esto

Cuando pases a Fast-HotStuff, lee el happy path y el unhappy path como dos presupuestos distintos. En happy path, la optimización busca latencia. En unhappy path, AggQC compra seguridad y progreso razonable frente a timeouts y líderes flojos. Si un diagrama no muestra esa separación, falta una pieza.

También conviene mantener un ojo en el tamaño del comité. Un paper puede decir “agregamos firmas” con mucha elegancia; una implementación tiene que decidir bibliotecas, formatos de mensaje, validación incremental, caches, perfiles de CPU y cómo reportar evidencia para debug. Ahí la teoría baja al taller y se ensucia las manos, como debe ser.

Referencias

Bibliografía académica

Formato IEEENumerado para ingeniería, sistemas y protocolos.
  1. [1]

    D. Boneh, B. Lynn, and H. Shacham, "Short Signatures from the Weil Pairing," ASIACRYPT, 2001.

    PaperID: BLS-SHORT-SIG-2001🔗 Abrir fuente

    Base criptográfica para firmas BLS compactas usadas a menudo al explicar QCs eficientes.

  2. [2]

    D. Boneh, C. Gentry, B. Lynn, and H. Shacham, "Aggregate and Verifiably Encrypted Signatures from Bilinear Maps," EUROCRYPT, 2003.

    PaperID: AGG-SIG-2003🔗 Abrir fuente

    Fuente primaria para firmas agregadas sobre mensajes distintos, útil para razonar sobre AggQC.

  3. [3]

    M. Yin, D. Malkhi, M. K. Reiter, G. G. Gueta, and I. Abraham, "HotStuff: BFT Consensus in the Lens of Blockchain," PODC, 2019.

    PaperID: HOTSTUFF-2019🔗 Abrir fuente

    Referencia base para QC, highQC y view-change lineal.

  4. [4]

    M. M. Jalalzai, J. Niu, C. Feng, and F. Gai, "Fast-HotStuff: A Fast and Resilient HotStuff Protocol," arXiv:2010.11454, 2020.

    PaperID: FAST-HOTSTUFF-2020🔗 Abrir fuente

    Fuente primaria para AggQC y la lectura de dos cadenas en Fast-HotStuff.

  5. [5]

    A. Shamir, "How to Share a Secret," Communications of the ACM, vol. 22, no. 11, pp. 612-613, 1979.

    PaperID: SHAMIR-SECRET-SHARING-1979🔗 Abrir fuente

    Base matemática para explicar shares, umbrales e interpolación en firmas threshold.

  6. [6]

    A. Boldyreva, "Threshold Signatures, Multisignatures and Blind Signatures Based on the Gap-Diffie-Hellman-Group Signature Scheme," PKC, 2003.

    PaperID: BOLDYREVA-THRESHOLD-2003🔗 Abrir fuente

    Referencia para distinguir threshold signatures y multisignatures en esquemas BLS-like.

  7. [7]

    D. Boneh, M. Drijvers, and G. Neven, "Compact Multi-Signatures for Smaller Blockchains," ASIACRYPT, 2018.

    PaperID: BLS-MULTISIG-2018🔗 Abrir fuente

    Referencia moderna para multisignatures compactas y defensa contra rogue-key attacks.

  8. [8]

    D. Boneh et al., "BLS Signatures," IETF CFRG Internet-Draft.

    IETF draftID: BLS-CFRG-DRAFT🔗 Abrir fuente

    Especificación práctica para perfiles BLS, agregación, proof-of-possession y mensajes.

Fuentes primarias, papers seminales y especificaciones técnicas citadas en esta investigación.

Rutas vecinas

Si este tema te abrió hambre, sigue por aquí.

Series y labs que comparten área o dependen de esta ruta. Pocas opciones, para no convertir la curiosidad en menú infinito.

Sigue leyendo

Ideas conectadas con este artículo

Una ruta corta para continuar sin abrir veinte pestañas y perder el hilo.