FROST es un protocolo de firmas Schnorr de umbral: firmas digitales creadas conjuntamente. El umbral exige que colaboren al menos cierto número de titulares de participaciones distintas de una clave secreta común. Una clave secreta es un número necesario para crear una firma; aquí, los participantes utilizan sus participaciones durante la firma en lugar de la clave completa. El resultado se verifica con una única clave pública de grupo, que puede compartirse y no permite firmar por sí sola. Su nombre significa Flexible Round-Optimized Schnorr Threshold; no es una cartera ni un nuevo tipo de bitcoin.
Imaginemos una asociación cuyos ahorros administran Anna, Jan y Eva. Eligen la regla 2 de 3: pueden aprobar un pago Anna y Jan, Anna y Eva, o Jan y Eva. Cada uno conserva una participación secreta distinta, una parte del material de clave común construida criptográficamente. Una sola no basta, pero tampoco son tres copias de la misma contraseña. Si Eva no está disponible, los otros dos pueden colaborar. El mismo límite se aplica a un atacante: si consigue suficientes participaciones, también podrá firmar. Por eso, distribuirlas solo ayuda si comprometer un dispositivo o una cuenta no permite acceder a todos los demás. [1] [2]
Anna no debería confirmar una operación solo porque una aplicación anuncia una firma pendiente. Necesita conocer el destinatario, el importe y la comisión, y comprobar que el importe sobrante vuelve a la asociación como cambio. Cada firmante necesita una forma fiable de verificar la transacción real. Un hash, una huella criptográfica breve de los datos, no explica su contenido a una persona. FROST permite colaborar sobre el mismo mensaje; no determina si una factura es auténtica o si alguien entendió lo que aprobaba. Incluso una firma terminada no confirma el pago en un bloque. Un bloque es un conjunto de transacciones registrado en el historial compartido de la red Bitcoin. RFC 9591 es una especificación informativa del protocolo, no un certificado de seguridad de toda una aplicación. [1] [2]
Taproot es una mejora de Bitcoin que permite gastar fondos con una firma de la clave correspondiente o cumpliendo condiciones previamente fijadas. Una firma de umbral construida adecuadamente puede parecer una firma normal con una sola clave al gastar mediante la vía de clave de Taproot. La firma por sí sola no revela el número interno de participaciones ni el umbral. Esto favorece la privacidad y reduce los datos de firma, pero no garantiza el anonimato de toda la transacción ni de las comunicaciones entre participantes. Bitcoin exige las reglas exactas de BIP 340; no basta con FROST genérico sobre la curva secp256k1, la base matemática de los cálculos con claves de Bitcoin. Por eso Zcash Foundation (ZF) ofrece frost-secp256k1-tr específicamente para Taproot. También deben aplicarse correctamente los ajustes de clave de Taproot. Compartir el nombre de una curva no demuestra compatibilidad, y disponer de una biblioteca no significa que todas las carteras la admitan. [3] [4]
Antes de firmar, la asociación debe crear las participaciones de forma segura. Un distribuidor de confianza puede generar la clave completa y dividirla. Esto introduce un momento delicado: conoce toda la clave y una copia conservada permitiría eludir la aprobación conjunta prevista. La alternativa es DKG, la generación distribuida de claves, en la que la clave secreta completa no tiene que aparecer en manos de un solo participante. Requiere comunicaciones autenticadas y protegidas, además de una ejecución correcta del protocolo. No basta con enviar unos archivos por correo electrónico. RFC 9591 se centra en la firma; no promete automáticamente DKG en todos los productos. Además, una participación de la clave a largo plazo es distinta de una participación de firma para un pago concreto. [1] [2]
La firma propiamente dicha tiene dos rondas, sin contar la generación previa de la clave. Primero, cada participante seleccionado genera dos valores secretos de un solo uso, llamados nonce, y envía sus compromisos públicos: valores que lo vinculan criptográficamente a esos nonce. Después recibe el mensaje común y la lista de compromisos, verifica los datos y calcula su participación de firma. El coordinador las combina. Los factores de vinculación enlazan los cálculos con el mensaje concreto, la clave pública del grupo y los compromisos. Con una regla 2 de 3, se puede iniciar una sesión con dos participantes. Si se seleccionan los tres, todos deben contribuir; no se puede omitir sin más al que deje de responder. [1] [3]
Aquí, un nonce es un valor secreto para un único intento de firma, no una contraseña reutilizable. Repetirlo puede revelar material secreto de la clave. Si el ordenador de Jan falla después de enviar una participación de firma, restaurar un estado antiguo no debe marcar como nuevos los nonce ya utilizados. Que el pago no haya terminado tampoco permite reutilizarlos. Una implementación segura requiere buena aleatoriedad, separar los intentos simultáneos y descartar de forma fiable los valores consumidos. Por eso no conviene montar FROST por cuenta propia con scripts encontrados al azar. Las matemáticas correctas no bastan si los datos secretos se gestionan mal. [1]
El coordinador organiza los mensajes, pero ese papel por sí solo no le permite firmar por la asociación. Necesita las contribuciones de los titulares seleccionados. Sin embargo, puede retener comunicaciones o interrumpir una sesión, del mismo modo que una contribución inválida puede hacerla fracasar. Las comprobaciones permiten detectar una participación de firma inválida; atribuirla a una persona exige conocer de forma fiable el origen de los mensajes. Detectar el problema no garantiza terminar. Un nuevo intento requiere un grupo autorizado disponible y nonce nuevos. La asociación necesita, por tanto, un plan para fallos y desacuerdos, no solo un umbral mostrado en la pantalla inicial. [1] [2]
Si Eva pierde su dispositivo, la etiqueta FROST no recuperará los fondos por sí sola. La copia debe conservar su participación, su identificador, los datos necesarios del grupo y la posibilidad de cargarlos en software compatible. No equivale automáticamente a una Seed Phrase corriente, la copia de una cartera expresada en palabras. Recuperar una participación con ayuda de otros y renovar participaciones son procedimientos adicionales que el sistema concreto debe admitir. Copiar la participación de Eva no crea una nueva: no añade un voto independiente. Renovarlas manteniendo la misma clave de grupo tampoco neutraliza un conjunto suficiente de participaciones robadas anteriormente. Antes de utilizar ahorros reales, la prueba debe cubrir recuperación, fallos y la versión exacta del software, no solo una firma exitosa. [2] [3]
Para obtener la imagen más completa, lee esta entrada junto con Schnorr Signature, MuSig2, Multisig, Taproot, Shamir Secret Sharing, Bitcoin.