Citesc despre cheia copil Hardened și Normal în capitolul 5 al cărții „Mastering Bitcoin” de Andreas, împreună cu aceasta fir detaliat și BIP-32. Iată câteva dintre înțelegerile mele despre aceste două proceduri:
k: cheie privată // K: cheie publică // i index // c cod de lanț // H Rezultat hashing HMAC // Hstânga primii 32 de biți ai rezultatului hash. // n ordinul curbei eliptice. // G punctul de plecare al curbei eliptice
Derivarea normală a cheilor
Cazul 1: parPrivkey -> childPrivkey (și de aici, childPubkey)
H = HMAC(cpar, Kpar || ichild)
=> kchild = (kpar + Hstânga) mod n
=> Kchild = G*kchild = G*[ (kpar + Hstânga) mod n)]
Cazul 2: parPubkey -> childPubkey
H = HMAC(cpar, Kpar || ichild)
=> Kcopil = G*Hstânga + Kpar
Hardened Key Derivation`
Cazul 3: parPrivkey -> childPrivkey (și de la acea childPubkey)
H = HMAC(cpar, kpar || ichild)
=> kchild = (kpar + Hstânga) mod n
=> Kchild = G*kchild = G*[ (kpar + Hstânga) mod n]
Având în vedere aceste 3 metode, sunt oarecum confuz:
- diferența în ecuația generației dintre cazurile 1 și 2 este destul de subtilă, astfel încât trebuie doar să înmulțim
kchild = (kpar + Hstânga) mod n de G pentru a obține asta în cazul 2. Cu toate acestea, deoarece există un factor mod n la final, nu am putut spune dacă Kchild din Cazul 1 se va raporta cu cel din Cazul 2. Dacă nu, atunci ce rost are să generezi doar cheia publică fără a putea cheltui fondurile trimise către aceasta?
- Acest lucru nu este legat de întrebarea de mai sus, ci mai degrabă de generarea cheii private master: am citit că după obținerea semințelor rădăcină, sămânța a fost introdusă în funcția HMAC-SHA512 pentru a obține un hash de 512 biți, primii 32 de biți. din care octeți servesc ca cheie privată principală. Deci întrebarea mea este, deoarece funcția HMAC preia 2 intrări care sunt
cheie și text, care este „cheia” în acest caz? Dacă nu există nicio „cheie”, atunci de ce să nu folosiți doar funcția de hashing SHA-512?
Vă mulțumesc foarte mult anticipat.