La generación de números aleatorios k
en una curva elíptica es crucial y en cualquier firma de transacciones en Bitcoin, k
se requiere un número aleatorio para calcular un punto k*G
. Si esto k
no se elige al azar, instantáneamente filtra la clave privada.
Por lo tanto, se les ocurrió una idea de generación determinista de ECDSA que se describe en RFC6979 . Básicamente, concatenan la clave privada con el mensaje hash y usan una función HMAC y generan un pseudo aleatorio k
.
Este método parece simple y fácil.
¿O, en general, hay alguna ineficiencia o problema con este método y por qué todavía vemos una implementación no determinista de ECDSA?
No hay problemas serios de eficiencia. La firma se realiza con poca frecuencia para un cliente en particular (generalmente, solo unas pocas firmas por transacción). Si bien es posible que la firma demore un poco más en generar el k
valor, no se notaría, especialmente considerando la poca frecuencia con la que lo usa un cliente en particular. La verificación de todas las firmas es el cuello de botella de la CPU para la verificación de bloques en bitcoin, porque todos los nodos completos tienen que verificar las firmas de todas las transacciones en la red, y esto lleva el mismo tiempo, independientemente de cómo k
se haya elegido el parámetro.
Gregory Maxwell hizo un comentario sobre el uso de k
valores deterministas aquí :
Los principales argumentos en la mayoría de los espacios en contra de la eliminación aleatoria de DSA son la conformidad con FIPS (irrelevante para nosotros) y preocupaciones razonables sobre los riesgos de usar una construcción criptográfica (menos) revisada. Con un movimiento generalizado hacia DSA sin aleatorizar, esta última preocupación es un problema menor.
La nueva biblioteca libsecp256k1 de Pieter Wuille en realidad usa la generación determinista de k
.
También tenga en cuenta que uno de los beneficios clave de usar esta construcción es que no necesita preocuparse por la explotación de una debilidad en su PRNG en el proceso de firma. Por ejemplo, firmar diferentes datos con el mismo k
valor filtra instantáneamente su clave privada . También se puede explotar un ataque similar si el PRNG es lo suficientemente débil como para determinar la relación entre los diferentes k
valores utilizados al firmar el mismo dato. Dado k
que se genera de manera determinista a partir de los datos que está firmando (y la clave privada), estas preocupaciones sobre el PRNG ya no son tan relevantes, ya que siempre producirá la misma firma para la misma información. Esto también facilita la escritura de pruebas unitarias ECDSA.
abeikverdi
amaclin
pieter wuille
codificador morse
pieter wuille
abeikverdi
pieter wuille
abeikverdi
pieter wuille
abeikverdi
codificador morse
abeikverdi
codificador morse
abeikverdi