La Master Private Key, es uno de los elementos criptográficos más importantes de los monederos deterministicos o wallets HD. De esta clave depende la seguridad de nuestros fondos en todo momento. Es por ello que te invitamos a que los conozcas y entiendas como funciona este importante elemento.
La clave privada maestra o Master Private Key es una clave de 256 bits generada desde una frase semilla que permite la creación de una cantidad infinitas de claves en una wallet determinista o wallet HD. Se trata de una clave privada principal que es única para cada monedero, y que es almacenada como la raíz o inicio de dicho monedero. Desde la Master Private Key se genera la Master Public Key o Clave Pública Maestra. Luego, de la clave privada maestra también se genera todo un conjunto de claves privadas (Xpriv). Y con ellas se pueden gestionar las diferentes direcciones asociadas al monedero.
En pocas palabras, la Master Private Key da inicio a toda la wallet determinista y a partir de ella se deriva la Master Public Key. Pero no solo eso, también se derivan todas las claves privadas (Xpriv) que se necesitan para gestionar el saldo que se encuentren en las distintas direcciones de la wallet.
Deben entender un wallet HD como un árbol. De cada rama pueden salir nuevas ramas. Pues bien, cada nodo de esas ramas permite generar una Master Private Key. Esta clave les permitirá generar claves públicas y privadas de todas las ramas que se generen desde ese nodo. Sin embargo, esta no podrá crear las claves desde los otros nodos paralelos o anteriores.
Es decir, de esta forma una Master Private Key puede usarse para acotar el uso de una misma semilla. La Master Private Key del nodo 0 tiene control sobre todas las direcciones que se puedan generar. Pero puedes crear claves que tu podrás controlar, pero entre ellas no podrán controlarse.
Nunca debes entregar ni revelar la Master Private Key a nadie. A no ser que desees que esa persona / máquina pueda tener acceso a todos los fondos de las direcciones que se generen a partir de esa clave.
Función de la Master Private Key en las wallets HD
La implementación de las wallets o monederos deterministas jerárquicos de Bitcoin, también conocidos como wallets HD, se crearon con la finalidad de mejorar la seguridad y permitir la simplificación del proceso de recuperación de los fondos disponibles en ellas. Aunque también fueron desarrollados con la finalidad de hacer posible la generación y obtención de varias claves que partieran desde una misma raíz o semilla. Eliminando la necesidad de generar varias direcciones con claves privadas al azar, como hacían los antiguos monederos.
Este tipo de wallets, descritas en el BIP 32, cuentan con una estructura arborescente donde una clave principal (la Clave Privada Maestra) da lugar a una secuencia de claves que derivan de ella, de las que a su vez se derivan otros conjuntos de claves. Si representamos esto como una línea descendente, se podría decir que la Master Private Key hace el papel de padre y que la secuencia de claves generadas en primer lugar serán sus hijas. Luego de ese conjunto de claves, las nuevas claves generadas podrían verse como nietas y así sucesivamente.
Las wallets HD utilizan el algoritmo HMAC-SHA512 para generar un hash que deriva la Clave Privada Maestra partiendo desde una única semilla. Luego, desde la clave privada maestra se genera la Clave Pública Maestra a través de un proceso matemático de multiplicación de curva elíptica normal. Así mismo, desde el mismo hash derivado del algoritmo se crea un código de cadena que permite la generación de nuevas claves derivadas desde las claves maestras. Es decir, desde la Clave Privada Maestra serán creadas las claves privadas (Xpriv) que gestionan las direcciones y sus fondos, y desde la clave pública maestra se derivarán las claves públicas (Xpub) desde donde se generan las direcciones, pero no se gestionan.
Y como todos estos datos se generan partiendo desde la misma semilla, es posible recuperar la misma. Incluso es posible recrear nuevamente la wallet en cualquier dispositivo con tan sólo utilizar dicha semilla.
Importancia de la Master Private Key
Poder hacer copias de seguridad, exportar o importar un monedero, o restaurarlo en el peor de los casos. Todo esto es posible gracias a la implementación de las wallets HD y su estructura descendente. Donde la Master Private Key cumple una función importante, ya que de ésta se derivan todos los conjuntos de claves que permiten gestionar el monedero.
Como toda la información en la wallet HD se deriva de forma determinista y jerárquica desde la semilla, y posteriormente, desde la Master Private Key, es posible volver a recrear toda la wallet en cualquier otra wallet compatible o dispositivo partiendo únicamente desde la semilla. Con total seguridad de que la Master Private Key y todas las claves derivadas de ella, sean cientos, miles o millones, también serán restauradas. Y con ellas, por supuesto, todos los fondos que se tenían almacenados.
Entonces, se puede pensar en esta estructura arborescente como si la parte superior de un árbol fuera la Master Private Key, desde la cual se derivan una cantidad infinita de claves privadas (Xpriv) en orden descendente. Por ello, cada una de esas claves privadas derivadas puede ser recuperada con tan sólo disponer de la Master Private Key. Pero no se puede realizar el proceso a la inversa. Es decir, no se puede recuperar partiendo desde una clave privada secundaria.
Identificación de las Master Private Key y sus claves derivadas
La estructura descendente en una wallet HD es infinita, por lo que puede ser tan profunda como se desee. Cada clave derivada de la Master Private Key puede tener 4 mil millones de claves derivadas. Pero además, cada una de estas claves puede tener otras 4 mil millones más, y así sucesivamente. Por lo que puede haber un número infinito de descendientes.
Entonces para identificar las claves maestras y las claves derivadas en una wallet HD, se emplea una descripción de ruta. La cual permite observar cada nivel de la descendencia separado por el símbolo / (barra). De esta forma se facilita navegar por la estructura de árbol de la wallet. Por ejemplo, todas las claves privadas secundarias derivadas de la Master Private Key, que comienzan con la letra m (minúscula), por lo que se verán reflejadas como m/x/y/z/…/ según su nivel de descendencia.
Si tenemos la primera clave privada secundaria (hija) derivada de la clave privada maestra (padre), ésta se refleja como m/0. Mientras que si tenemos una clave privada derivada de la secundaria (nieta), ésta se refleja como m/0/1. Toda la línea descendente de la Master Private Key cumple con estos parámetros, que son leídos de derecha a izquierda hasta llegar a la clave privada maestra.
Utilidad de las claves privadas derivadas (Xpriv)
Las claves privadas generadas a partir de la Master Private Key se utilizan para crear las claves públicas de las direcciones de las wallets. Y para firmar las transacciones que se quieran realizar a partir de los fondos que estén disponibles en esas direcciones.
Estas claves privadas no se pueden distinguir o diferenciar de otras claves privadas que se generan de forma aleatoria. Ya que su particularidad de descendientes no se puede observar fuera de la propia wallet que las generó. Por lo que su comportamiento es exactamente igual a una clave privada normal.