En Mastering Bitcoin (2da edición) de A. Antonopoulus en la página 106, hay una buena ilustración que muestra cómo se genera la base para una billetera BIP32 HD:
Así que aquí está la única cosa que no entiendo al respecto:
En el medio de la imagen está la parte donde la semilla se HMAC y se estira a 512 bits. ¿Por qué se necesita un HMAC en lugar de simplemente tomar un hash de la semilla (SHA512)?
Según tengo entendido, la diferencia entre un hash y un HMAC es que el HMAC ofrece algún tipo de no repudio, es decir, que solo aquellos que pueden crear un HMAC válido son los que conocen una clave específica (así como una firma). Sin embargo, esta característica es inútil en el caso de uso dado.
Entonces, ¿por qué HMAC-SHA512 en lugar de SHA512? ¿La idea es aumentar artificialmente la carga de trabajo necesaria para la generación de una billetera HD para limitar las posibilidades de un ataque de fuerza bruta?
Encontré esta respuesta de David Schwartz bajo las etiquetas de criptografía en stackexchange, puede responder a su pregunta: HMAC . Básicamente establece que HMAC es más pequeño en tamaño y requiere menos CPU para calcular.
dalit sairio
pieter wuille