La Master Private Key, es uno de los elementos criptográficos más importantes de los monederos determinísticos o wallets HD. De esta clave depende la seguridad de nuestros fondos en todo momento. Es por ello que te recomendamos a que los conozcas y entiendas como funciona este elemento importante.
La clave privada maestra o Master Private Key es una clave de 256 bits desde una frase semilla que permite la creación de una cantidad infinita de claves en una billetera determinista o billetera HD. Se trata de una clave privada principal que es única para cada monedero, y que es guardada 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 cartera 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 encuentra en las distintas direcciones de la billetera.
Deben entender una billetera 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, esto 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 pueden generar. Pero puedes crear claves que tu puedes controlar, pero entre ellas no pueden controlarse.
Nunca debes entregar ni revelar la Master Private Key a nadie. A no ser que desee 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 carteras, 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 podrían generarse 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 billetera en cualquier dispositivo con tan solo 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 carteras 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 almacenan.
Entonces, se puede pensar en esta estructura arborescente como si la parte superior de un árbol fuera de la Master Private Key, ya que 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 la Master Private Key y sus claves derivadas
La estructura descendente en una billetera HD es infinita, por lo que puede ser tan profunda como se desee. Cada clave derivada de la Master Private Key puede tener 4 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 billetera 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 billetera. 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 billeteras. 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 billetera que las últimas. Por lo que su comportamiento es exactamente igual a una clave privada normal.