La Master Public Key es una parte fundamental de los procesos dentro de las wallets deterministas o wallets HD. De ella depende la generación de las claves públicas de este tipo de monedero y para ello usan un complejo sistema que garantiza la seguridad en todo momento. Por ello, aquí te explicamos todo lo que debes saber sobre la Master Public Key. 

En las wallets deterministas o HD, una Master Public Key es aquella clave pública principal derivada de la Master Private Key. Para ello se usa un proceso matemático normal de multiplicación de curva elíptica. Desde la clave pública maestra serán generadas una cantidad infinita de claves públicas (Xpub) que controlan las direcciones de una wallet, pero que no tienen acceso a las claves privadas de dichas direcciones. 

La Master Public Key tiene la propiedad de poder generar múltiples claves públicas. Esto sin necesidad de acceder a las claves privadas. Por lo que, en caso de exponer alguna de las claves públicas o incluso, la Master Public Key (MPK) en sí, no se correrá el riesgo de pérdida o robo de los fondos, aunque sí de privacidad. Esto se debe a que como las claves públicas no tienen acceso a las claves privadas de las direcciones, ni pueden generarlas dichas claves, entonces sólo mostrarán la cantidad disponible que esté en la wallet pudiendo ver en la blockchain su historial. Pero no darán acceso para utilizar o gastar los fondos que estén disponibles allí. 

De igual forma que con la Master Private Key, los monedero HD deben entenderse como un árbol. De cada rama pueden salir nuevas ramas. Pues bien, cada nodo de esas ramas permite generar una Master Private Key, pero también una Master Public Key. La Master Public Key les permitirá generar solo claves públicas de todas las ramas “hijas” que se generen desde ese nodo. Pero no podrá saber las direcciones que se pudieron generar desde los otros nodos paralelos o anteriores. 

La Master Public Key del nodo 0, tiene control para saber todas las direcciones que se generarán. A diferencia de la Master Private Key, si revelas esta clave no pondrás en riesgo tus fondos, pero sí pondrás en riesgo tu privacidad. Esto debido a que con la Master Public Key se pueden conocer todas las direcciones públicas de tu monedero. No obstante esta funcionalidad tiene muchos y buenos usos que te contaremos en este artículo. 

Master Public Key (MPK) y Wallets HD

Las wallets HD del BIP 32 cuentan con una estructura jerárquica y determinista. Esto les permite una mayor organización como si de un árbol descendiente se tratase. Esta estructura permite que los monederos puedan emplear una rama del árbol para la recepción de fondos y transacciones, y otra rama para la gestión de dichos fondos. Esto permite que ambas esten relacionadas pero al mismo tiempo separadas entre sí. Por lo que con una se pueden ver los fondos disponibles sin tener acceso a ellos. Y con la otra, sí se pueden firmar y gastar esos fondos. Esta separación completa de las claves maestras también permite garantizar una mayor seguridad y confiabilidad para la wallet. 

La Master Public Key (MPK) permite la generación de un número infinito de claves públicas (Xpub) y direcciones relacionadas a ella. Por lo que no se tendrá la necesidad de hacer una copia de seguridad de las direcciones cada vez que una nueva se genere. Sino que partiendo de la semilla, a la que están relacionadas las claves maestras (tanto pública como privada), se puede recuperar la wallet en totalidad con todas las claves generadas (Xpub y Xpriv), direcciones y fondos disponibles. 

Así mismo, todas las claves públicas y direcciones derivadas de la Master Public Key  permiten, por sí mismas, poder visualizar los montos disponibles en ella. Pero impiden el acceso a dichos fondos ya que no controlan las claves privadas asociadas a las direcciones que contienen los fondos.

Esta característica también es particularmente útil en los casos en los que se quiera configurar un monedero de almacenamiento en frío, por ejemplo, donde sólo se requiere observar el saldo disponible en él. En estos monederos, se puede configurar un servidor para que únicamente gestione la Master Public Key. Con la cual podrá crear cualquier cantidad de direcciones públicas para recibir fondos, pero no permitirá que ningún atacante pueda utilizar dichos fondos. 

Generación de las claves públicas derivadas (Xpub)

Las wallets HD emplean una función hash que les permite derivar las claves públicas secundarias (hijas) de la clave pública maestra (padre) inicialmente. Para lo cual emplea la Master Public Key, la semilla de la wallet, el código de cadena generado por medio del algoritmo HMAC-SHA512 y un número índice de 32 bits. 

A través del código de cadena, generado por el hash del algoritmo HMAC-SHA512, se añaden datos aleatorios en el proceso de derivación de las claves públicas. Esto sin permitir que el índice pueda derivar a otras claves públicas. Así se impide que por medio de una clave pública derivada se pueda localizar o encontrar a otra clave pública derivada (hermana). Y que ésto sólo se pueda realizar en caso que se disponga del código de cadena. 

Entonces, a través de la función hash que combina inicialmente, tanto la clave pública maestra, como el código de la cadena y el número de índice, se generan las claves derivadas, como un hash de 512 bits. Que posteriormente es dividido en dos mitades: la mitad derecha para convertirse en el código de cadena de la clave derivada (hija). Y la mitad izquierda para añadirse junto al número índice a la clave privada (padre) que creará la clave privada (hija). Este proceso se repite en secuencia para crear un número infinito de claves públicas, donde las claves públicas hijas podrán convertirse en padres y generar sus propias claves hijas. Por lo que puede haber un número infinito de generaciones. 

Bajo este esquema, la función hash unidireccional no permite que las claves públicas derivadas puedan ser utilizadas para encontrar a otras claves públicas hermanas. Ni para localizar a la clave pública maestra o principal. Así mismo, este esquema permite derivar las claves públicas hijas ya sea partiendo desde la clave privada hija, o directamente desde una clave pública padre.  

Importancia de la generación de claves públicas derivadas

La derivación de claves públicas hijas a partir de las claves públicas padres permite que se puedan crear ramificaciones de claves públicas de la wallet sin comprometer los fondos disponibles en ella. Ya éstas no relacionan a las claves privadas en ningún momento. 

Así es posible la generación de monederos de observación, por ejemplo para servidores no seguros, donde sólo se podrán ver los fondos disponibles en él pero sin la opción de gastar los fondos que estén almacenados en esas direcciones. Esta función puede ser muy útil para servidores destinados al comercio electrónico, donde la exposición de las claves privadas al servidor podría ser de alto riesgo. 

También es muy útil para esos casos en que los usuarios sólo quieren disponer de un monedero de almacenamiento en frío u offline. Que les permita mantener sus fondos seguros y libres de riesgos. Que mantendrá las claves privadas fuera de línea en el monedero, pero sí permitirá la transmisión en línea de las claves públicas sin ningún riesgo. 

Generación de claves públicas reforzadas 

La posibilidad de poder derivar un sin fin de claves públicas hijas a partir de una clave pública padre es muy útil. Sin embargo, esto puede representar un riesgo de seguridad potencial. Debido a que la clave pública que deriva a las demás tiene acceso al código de cadena, y si se llegará a filtrar o a conocer una clave privada hija, entonces se podría deducir el resto de claves privadas hijas, comprometiendo la seguridad de los fondos. 

El conocimiento de una clave privada hija junto al código de cadena de una clave pública padre puede revelar todas las claves privadas hijas, e incluso, se podrían utilizar para deducir una clave privada padre. Entonces, para romper con esta brecha de seguridad, se utiliza una función de derivación conocida como derivación reforzada. Que utiliza la clave privada padre, en lugar de la clave pública padre, para derivar el código de cadena de cada clave hija. Rompiendo con la relación existente entre la clave pública padre y el código de cadena hijo. Esto genera una especie de cortafuegos que no permite detectar una secuencia padre-hija en las claves públicas derivadas.

¿Cuánto sabes, criptonauta?

¿Las Master Public Key son una forma más eficiente y segura de proteger nuestros monederos de criptomonedas?

¡CIERTO!

El objetivo de la creación de la Master Public Key, era el de brindar un medio de creación de claves públicas que permitiera asegurar de mejor manera tanto la privacidad de los usuarios como la seguridad de los monederos, algo que ha logrado perfectamente esta herramienta.

Casos de uso de las Master Public Key

Prueba de solvencia

Imagina que eres una empresa, o incluso un gobierno. Un monedero HD sería perfecto para simplificar la gestión de tus fondos. De hecho si además fuera multifirma añadiría seguridad y control. Pero ¿cómo haces para demostrar que tienes determinados fondos sin que la gente los pueda gastar y sin necesidad de enviar miles de direcciones?, o ¿ y si quieres que la gente pueda ver en tiempo real como se usa el dinero?

Para estos, y otros escenarios, una Master Public Key es la solución perfecta. Con ello das transparencia absoluta, pues no hay problema en dar transparencia, ya que es lo que se busca, al tiempo que nadie tiene capacidad de utilizar los fondos. Incluso podrán verse las direcciones que aún no han sido generadas / usadas, además del saldo y todos los movimientos.

Además debido a las ramificaciones de un monedero HD, podrías generar múltiples Claves maestras públicas con el objetivo de separar por departamentos.

¿Te imaginas que un gobierno fuera tan transparente como para funcionar de esta forma?

Pasarelas de pago

Otro caso de uso es poder recibir cobros a través de herramientas en la nube. Existen servicios que permiten crear soluciones básicas de cobro en Bitcoin. 

En este tipo de servicios el usuario puede añadir su propia Master Public Key de forma que, cuando el servicio deba mostrar una dirección, podrá generarla pero siendo tú quien tiene en todo momento la clave privada que permita luego usar esas criptomonedas recibidas.