Un par de preguntas sobre Schnorr sig

En el BIP de Pieter Wuille se dice que se necesita la versión prefijada clave de la firma de Schnorr cuando el esquema se usa en combinación con la derivación no endurecida de BIP32. ¿Alguien podría dar un ejemplo que muestre esta necesidad? No pude averiguar uno por mí mismo.

Siempre en el BIP, al llegar a la validación de lotes, podemos ver que existe la necesidad de generar números aleatorios. Nuevamente, ¿alguien podría proporcionar un ejemplo que muestre que la versión más simple es insegura? Descubrí que la razón es el llamado "ataque de cancelación". Me gustaría averiguar cómo se puede explotar.

¡Gracias de antemano por sus respuestas!

Respuestas (1)

Una firma schnorr, sin prefijo de clave, es una tupla {pubkey (P), mensaje (m), R, s} donde se cumple la ecuación R == sG + H(R||m)P.

Ahora, suponga que tiene las claves públicas P y P2 cuyos registros discretos difieren en c, lo que conozco, como es el caso del BIP 32 no endurecido cuando conozco la clave pública extendida (P2 == P + cG). Si conozco una firma mediante la clave pública P del mensaje m, puedo usarla para falsificar una firma de m mediante la clave pública P2: {P2, m, R, s - H(R||m)c} porque si escribe la relación para P2 y luego expresarla en términos de la relación para la primera firma, eso es lo que obtienes.

Para el procesamiento por lotes: la tarea es que tenemos de dos a an ecuaciones de la forma R_n = s_nG + h_nP_n, podríamos verificar por lotes ingenuamente reescribiéndolas primero como 0 = sum(s_n)G + sum(h_nP_n) - sum(R_n) y luego usando un multiexp eficiente para calcular la gran suma del producto. Por ejemplo, si queremos hacer que {P1, m1, R1, s1} se mantenga, podemos agregar al lote {-P1, m1, R1, -s1} para que ahora los errores se cancelen.

Para resolver esto, el verificador debe delinear las ecuaciones multiplicando cada una por un valor desconocido del atacante que les impide cancelar con probabilidades mejores que el azar. Esto se puede hacer sin dañar mucho la eficiencia sustituyéndola en los escalares en el multiexp.

Para un ejemplo aún más simple: considere la verificación por lotes donde el atacante conoce todas las firmas válidas. El atacante puede simplemente barajar los valores de s entre firmas en el lote. Sin la delineación, el lote obviamente aún pasaría (ya que la suma ingenua no se preocupa por el orden de los valores s), pero todas las firmas no serían válidas.