Generador de direcciones para billetera Bitcoin

Como describe Maxwell aquí en carteras HD, suponiendo que tenemos un par de claves con una clave privada SK.ay una clave pública PK.ay una semilla sy un punto generador G, podemos generar un nuevo par de claves de (SK.b, PK.b)la siguiente manera:

PK.b = PK.a + sG
SK.b = SK.a + s

La ventaja de este método es que un proveedor de servicios puede generar nuevas claves públicas sin conocer la clave privada del cliente. Mi pregunta es, ¿por qué no multiplicamos la semilla y la clave privada en lugar de agregarlas?

PK.b = PK.a * s
SK.b = SK.a * s

¿Hay algún problema con el último método que sugerí?

Respuestas (1)

Un borrador anterior de BIP0032 hizo esto, en realidad. (Perdón por vincular a la wiki de bitcoin; ese cambio se realizó antes de cambiar a git para el seguimiento de BIP).

Según el registro de cambios, se hizo por razones de velocidad.

  • [30 de abril de 2013] Se cambió de la multiplicación por I L a la suma de I L (implementación más rápida y sencilla)

Es mucho más rápido derivar una clave privada secundaria de una clave privada principal. El nuevo método requiere solo una suma normal (mod n) en lugar de una multiplicación de puntos ECDSA.

No es más rápido cuando se deriva una clave pública secundaria de una clave pública principal. Eso todavía requiere una multiplicación de ECDSA seguida de una suma de ECDSA. (De hecho, es aproximadamente un 2% más lento ) .

El uso de la adición no agrega ningún problema de seguridad. Es posible obtener una clave privada principal de una clave privada secundaria y una clave pública extendida, pero eso también sería cierto si se usara la multiplicación.

¡Gracias por la respuesta! Como también esperaba, debería ser debido al rendimiento y la eficiencia. Sin embargo, ¿la multiplicación no lo hace más fuerte en términos de seguridad? Además, supongo que encontrar la clave pública maestra basada en la clave pública de los niños sería fácil para un atacante. Solo necesita restar la clave pública de un niño por un número diferente (tamaño de semilla de fuerza bruta)
No, no añade nada. No hay propiedades de seguridad que dé una multiplicación que no dé la suma. Las razones para cambiar fueron que 1) no mejoró nada 2) fue más rápido 3) fue más fácil de implementar y 4) no haría que la gente asumiera que tiene propiedades que no tiene (la gente a menudo asume que no hay inversa para la multiplicación EC existe, lo cual es cierto, pero solo para resolver k en k*P = Q; es posible resolver P).
@PieterWuille, ¿puede elaborar un poco más su última oración? ¿Qué quiere decir con resolver P es posible?
@abeikverdi Esto se sale del alcance de la pregunta original, así que hice una nueva pregunta .