Puncte:1

Întrebare despre derivarea Harden și Normal Key

drapel vn

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:

  1. 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?
  1. 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.

Puncte:1
drapel gb

Cu toate acestea, deoarece există un factor mod n la sfârșit, nu am putut spune dacă Kchild din Cazul 1 se va lega de cel din Cazul 2.

Da, cheia privată copil din cazul 1 este cheia secretă pentru cheia publică derivată în cazul 2. $n$ este ordinea punctului generator $G$ deci nu afectează corectitudinea cheii secrete.

deoarece funcția HMAC are 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?

În cazul specific al semințelor, cheia este „Bitcoin seed”, și este folosită ca un fel de separare a domeniilor - un șir unic tocmai în acest scop.

În celelalte utilizări ale HMAC în BIP 32, cheia este „codul în lanț”, în timp ce textul/datele sunt așa cum ați scris mai sus în întrebarea dvs.Acest cod în lanț asigură că cheile copil nu sunt derivate exclusiv din cheile părinte, ci mai degrabă folosesc o entropie suplimentară care trebuie cunoscută pentru a deriva copiii. Deci, puteți alege să oferiți codul de lanț dacă doriți ca oamenii să poată obține chei pentru copii sau să îl păstrați secret, astfel încât să nu poată.

John Pham avatar
drapel vn
Pentru răspunsul la cea de-a doua întrebare, nu se folosește *bitcoin seed* ca parametru „text” pentru funcția HMAC? Sau formatul funcției hash pentru cheia privată principală este HMAC (seed, seed)?
meshcollider avatar
drapel gb
@JohnPham cheia este literalmente șirul „Bitcoin seed”, nu sămânța în sine. Este acel șir fix.
John Pham avatar
drapel vn
Ok, am înțeles acum, nu mă așteptam să fie atât de simplu :)) Mulțumesc mult. Btw, sunt bucuros surprins să te văd din nou dintr-unul dintre [firele mele de întrebări anterioare](https://crypto.stackexchange.com/questions/98362/elliptic-curve-how-to-calculate-y-value)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.