¿NBitcoin utiliza derivación privada reforzada?

Al escribir el siguiente código:

            ////////////////1st offline SERVER//////////////////
            //Create Master Private Key with a seed
            ExtKey privateKey = new ExtKey("16236c2028fd2018eb7049825e6b4f0191de4dbff003579918de7b7348ff06ac");
            //create master public key from this privateKey
            ExtPubKey pubKey = privateKey.Neuter();

            //save it's wifStr as key to the next server to use and generate all child keys 
            string wifStr = pubKey.ToString(Network.Main);
            ////////////////END//////////////////



            ////////////////2nd online SERVER//////////////////
            ExtPubKey key = ExtPubKey.Parse(wifStr);
            //The payment server receive an order, note the server does not need the private key to generate the address
            uint orderID = 1001;
            //address created with only extendet publik key 
            BitcoinAddress address = key.Derive(orderID).PubKey.GetAddress(Network.Main);

            Console.WriteLine(address);
            ////////////////END//////////////////

¿Estoy usando una función de derivación privada endurecida? por favor explique por qué. Sé que para usar la función de derivación privada endurecida, debo derivarla de un padre endurecido, pero ¿cómo sé que el padre es un padre endurecido?

Respuestas (1)

¿Estoy usando una función de derivación privada reforzada?

No. Está utilizando una derivación no endurecida. Ese es el único tipo de derivación que puede usar cuando solo tiene la clave pública.

La derivación endurecida se ve así:

BitcoinAddress address = privateKey.Derive(orderID, true).Key.PubKey.GetAddress(Network.Main);

Requiere la clave privada. Tampoco importa si el padre está endurecido o no.

Recomendaría usar claves no endurecidas para la mayoría de las aplicaciones.

Porque ? en el libro "Mastering bitcoin", la recomendación de usar claves reforzadas, ya que el uso de claves no reforzadas y la fuga de una clave privada pueden exponer todo el brunch de la clave Publik extendida. No entiendo el problema en el uso de claves reforzadas en las que debe proporcionar la clave privada superior, entonces, ¿cómo puede crear un "cortafuegos"?
@HaddarMacdasi Si está utilizando claves protegidas, entonces la clave privada debe estar presente cada vez que desee generar direcciones. Eso es, en la práctica, menos seguro.