¿Cuáles son las limitaciones para amortizar la configuración de sesión interactiva de MuSig?

Estoy tratando de encontrar una manera de amortizar la configuración de la sesión interactiva en el esquema de agregación de firmas MuSig . Mi motivación es utilizar la agregación de firmas entre dispositivos que se comunican mediante canales de bajo ancho de banda (radio) sin tener que configurar la sesión varias veces. Idealmente, los nonces públicos previamente compartidos podrían reutilizarse para diferentes conjuntos de firmantes, claves públicas y mensajes.

He resumido a continuación cómo entiendo que funciona ahora, principalmente al mirar el ejemplo de código aquí :

  • cada par crea una clave secreta por sesión a partir del hash del conjunto de claves públicas de los firmantes y la clave secreta para la clave pública del par (independiente del nonce)

  • cada par crea un nonce secreto a partir de las claves públicas de los firmantes y otra información codificada, incluido un número aleatorio

  • cada par crea un nonce público , generado como una clave pública a partir del nonce secreto .

  • todos los pares envían a todos los demás pares un compromiso nonce de 32 bytes

  • todos los pares envían a todos los demás pares su nonce público de 32 bytes y verifican a los demás contra sus compromisos de nonce compartidos previamente

el punto clave parece ser que el nonce público NO debe ser elegido libremente por nadie después de aprender los nonces públicos de los otros firmantes

  • cada compañero ahora puede firmar usando su clave secreta de sesión y nonce secreto

  • otros pares pueden verificar la firma múltiple final (o parcial) utilizando las claves públicas elegidas por otros firmantes y sus correspondientes nonces públicos .

  • Lo que me pregunto es si todos los pares pueden comprometerse con el nonce público una vez por adelantado y luego reutilizarlo para diferentes combinaciones de (clave pública, claves públicas de otros pares, mensajes).

Parece que los pares podrían almacenar en caché los nonces públicos entre sí y reutilizarlos para diferentes sesiones de firma con diferentes claves públicas y otros firmantes, siempre que todos los firmantes estuvieran obligados a usar el mismo nonce público cada vez que firmaron.

Cualquier sugerencia sobre las restricciones para reutilizar estos nonces públicos de MuSig sería apreciada.

Si alguna vez reutiliza el mismo nonce público, los otros participantes aprenden su clave privada. Puede compartir previamente listas de compromisos públicos nonce para evitar algunos pasos, pero todos los participantes deben pasar por la lista al mismo tiempo. Si alguien alguna vez se confunde acerca de la posición en la lista, es probable que filtre su clave privada.

Respuestas (1)

¡Los nonces no deben ser reutilizados! En particular, en MuSig, los nonces no se pueden reutilizar para otras combinaciones de claves públicas o mensajes (también si todos usan los mismos nonces públicos todo el tiempo). Esto filtraría claves privadas.

Pre-compartes nuevos nonces ejecutando múltiples rondas de firmas en paralelo. Con la biblioteca a la que se vincula ( secp256k1-zkp ), esto es seguro siempre que mantenga los estados de sesión en la memoria y no los copie. Serializar el estado y almacenarlo en un medio persistente no es compatible con secp256k1-zkp y es difícil hacerlo bien porque si accidentalmente usa el nonce incorrecto, pierde la clave privada.

Una forma sencilla de eliminar la sobrecarga de las dos primeras rondas de interacción es adjuntar el compromiso de nonce y el nonce a los mensajes ya existentes en su protocolo. De esa forma solo tendrías dos sesiones de firma paralelas.

Se están realizando investigaciones sobre nonces deterministas para MuSig que tienen pruebas de conocimiento cero de que el nonce se deriva correctamente. Con tales pruebas, los nonces se pueden derivar a pedido del conjunto de firmantes, su clave privada y el mensaje y no hay estado para realizar un seguimiento.

Además, ¿no hay forma de usar algo como una generación de clave determinista jerárquica BIP-32 para obtener nonces públicos de una raíz previamente compartida y una ruta de derivación acordada?
No, la creatividad solo hará que las cosas sean más difíciles de analizar, pero no te ayudará a evitar problemas fundamentales. MuSig tiene tres rondas de interacción por una razón; si hubiera una forma conocida de evitar eso, no habríamos escrito un artículo que usa tres rondas.
Gracias por las respuestas. Espero que no tengas que responder a esta línea de preguntas tontas en SO nuevamente por un tiempo. :-)
Deberíamos iniciar un grupo de apuestas para la fecha de la primera pérdida de fondos informada debido a una implementación de firma de umbral insegura.