Análisis de Nonces Ocultos en Schnorr y MuSig2: Fundamentos Matemáticos y Métricas
Las firmas criptográficas modernas, como Schnorr (BIP340) y MuSig2 (BIP327), requieren no solo verificaciones de validez, sino también un análisis profundo de características estructurales. Este artículo explora un método para transformar firmas en un conjunto de restricciones afines con el fin de descubrir patrones ocultos en los nonces. El enfoque pasa de la verificación binaria a la evaluación cuantitativa de la geometría de la familia de nonces, lo cual es crítico para el análisis forense en casos de fugas parciales de datos.
Principios Fundamentales de la Representación Afín
La idea clave es interpretar la ecuación de la firma como una restricción afín. Para BIP340, la ecuación s = k + e·d mod n forma la base para construir la función de nonce oculto k_i(d') = s_i - e_i·d' mod n, donde d' es una clave secreta candidata. Cuando d' = d es correcta, esta función recupera los verdaderos nonces canónicos. Para candidatas incorrectas, genera una familia pseudaleatoria con propiedades estadísticas que difieren bruscamente de los datos reales.
Puente de Pertenencia BIP340
La transición normalizadora mediante la recuperación del punto R* = sG - eP permite una clasificación estricta de las firmas por cinco criterios:
rdentro del camposen el rango válido- Punto
R*no cero - Paridad de la coordenada Y
- Coincidencia de la coordenada X
Este puente elimina falsos positivos en el análisis al filtrar cadenas basura antes de aplicar las métricas. Sin esta etapa, cualquier análisis posterior se vuelve vulnerable a artefactos de parseo.
Geometría de la Familia de Nonces
Métricas de Compresión
El análisis de un conjunto de firmas para una sola clave se basa en medir la compresión de la familia K(d'):
- Nonces únicos:
U_k(d') = |{k_i(d')}| - Colisiones:
C_k(d') = m - U_k(d') - Análisis de deltas:
- Deltas únicos: U_Δ(d') = |{Δ_i(d')}|
- Deltas repetidos: C_Δ(d') = (m-1) - U_Δ(d')
- Métricas de prefijo para niveles de bits 128/64/32/16:
- U_pref_b(d') = |{Pref_b(k_i(d'))}|
Estas métricas revelan patrones característicos:
- Reutilización de nonce → colisiones aumentadas
- Generación en escalera → deltas repetidos
- Nonce corto → entropía anormalmente baja en prefijos altos
Modelo de Conectividad
Para detectar estructuras locales, se utiliza un sistema de dos hojas:
K_plus = sorted([k_i(d') for i in range(m)])
K_minus = sorted([-k_i(d') % n for i in range(m)])
El análisis se realiza en cuatro modos de vecindad (++/--/+-/-+), calculando:
- Soporte de delta local:
Support_local(d') = max_mode max_δ count_mode(δ) - Masa de repeticiones:
Mass_repeat(d') = Σ max(count(δ)-1, 0) - Soporte de prefijo para niveles 128/96/64/32/16
Este enfoque descubre clústeres ocultos y simetrías locales inaccesibles al análisis global.
Particularidades de MuSig2
Linealización Válida por Protocolo
Para MuSig2, el análisis se realiza no en la firma final, sino en firmas parciales con contexto completo de sesión. Componentes clave:
- Clave agregada
Q - Nonce compartido
R - Coeficientes
b,e,a - Factores de paridad
gygacc
La paridad de la clave se determina como par_key = g·gacc mod n, lo que permite el manejo correcto de coordenadas Y par/impar. Las firmas parciales se reducen a forma afín mediante la recuperación del nonce crudo del contexto de sesión.
Diferencias Clave con BIP340
- No hay ecuación directa
s = k + ed - Necesidad de considerar la agregación de claves
- Dependencia de parámetros específicos de la sesión
- Manejo doble de paridad (clave + nonce)
Esto requiere modificar todas las métricas para trabajar con estructuras válidas por protocolo en lugar de datos crudos.
Conclusiones Principales
- Puente de pertenencia — etapa de filtrado obligatoria antes del análisis
- Las métricas de compresión detectan de manera efectiva la reutilización y patrones en escalera
- El análisis de conectividad descubre estructuras locales mediante el modelo de dos hojas
- MuSig2 requiere un manejo separado a través del contexto de sesión
- Todas las conclusiones se basan en propiedades matemáticas medibles, no en heurísticas
Implementación Práctica
El sistema se implementa como una demo interactiva en GitHub. Componentes clave:
- Validador de pertenencia BIP340
- Generador de familia afín para un
d'dado - Suite de métricas de compresión/conectividad
- Visualizador de geometría de nonces
Ejemplo de cómputo de soporte de prefijo:
def top_prefix_support(k_list, bits):
prefix_mask = (1 << (256 - bits)) - 1
prefixes = [k & prefix_mask for k in k_list]
return max(Counter(prefixes).values())
Los artefactos del proyecto confirman la efectividad de las métricas en datos reales con vulnerabilidades conocidas. Lo importante es que el sistema no recupera directamente claves privadas, sino que proporciona señales medibles para un análisis adicional.
Este enfoque expande el conjunto de herramientas de criptoanálisis, transformando la tarea del tanteo en propiedades matemáticas medibles. Para los desarrolladores, ofrece una forma de verificar la calidad de la generación de nonces y detectar vulnerabilidades ocultas en las implementaciones.
— Editorial Team
Aún no hay comentarios.