Sa Master Seed, binubuo ang seed byte sequence S gamit ang pseudo-random number generator (PRNG). Ang seed byte sequence ay may habang 128 hanggang 512 bits, at 256 bits ang rekomendasyon sa BIP-0032.
Ang randomness na nakukuha ng isang random number generator ay tinatawag na entropy. May ibang wallet na kaya makakuha ng entropy mula sa true random number generator (TRNG). Basta kung hindi man, dapat Cryptographically Secure Pseudo-random Number Generator (CSPRNG). Ang entropy ay nababanggit rin na may kaukulang haba ng bits, gaya ng makikita sa ilustrasyon ng key tree. Kaya baka mapagkamalan mo na ang seed at entropy ay parehas. Hindi. Ang seed ang lumabas na representasyon matapos makakolekta ng entropy ang random number generator.
Pag tapos makapili ng S, dadaan ito sa Hash-based message authentication code (HMAC).
Hash-based message authentication code (HMAC)
Ang ideya ng HMAC ay gumamit ng cryptographic hash function at susi/key para patunayan ang integridad ng mensahe. Ito ay alternatibo sa digital signatures para sa nabanggit na layunin.
HMAC(K, m) = H((K’ ⨁ opad) || H((K’ ⨁ ipad)||m))
Kung saan:
H – cryptographic hash function
m – message/mensaheng papatunayan
K – secret key
K’ – block-sized key – galing sa secret key pero ginawang singhaba ng block (mag-padding kapag mas maiksi, hashing kapag mas mahaba)
|| – concatenation/pagdugtong
⨁ – XOR
opad – outer padding na sinlaki ng block, gamit ang 0x5c na paulit-ulit
ipad – inner padding na sinlaki ng block, gamit ang 0x36 na paulit-ulit
Ang napiling mga sangkap ng HMAC sa BIP-0032 na gagamitin sa pagkuha ng unang key sa master node ay:
- Key = “Bitcoin seed” (oo yung pariralang yan)
- Message o data = seed byte sequence S
- Cryptographic hash function = SHA-512. Kaya HMAC-SHA512 ang tawag.
Ang makukuhang
I = HMAC-SHA512 (“Bitcoin seed”, S)
Ay may habang 512 bits o 64 bytes, at hahatiin sa dalawa na tig 32 bytes. Ang nasa kaliwa IL ay dadaan sa parse256(IL) na syang interpretasyon ng 32 bytes na sequence sa 256 bits na numero, na uunahin ang most significant byte. Ang resultang ito ay ang master secret key. Ang kanang IR naman ay ang gagamiting master chain code.
Ano naman ang chain code? Ito ay karagdagang entropy na ginagamit sa pagkuha ng mga anak o child keys, para hindi lang nakadepende sa magulang o parent key ang deribasyon. Ang kombinasyon ng IL at IR ay tinatawag na extended key.

Ang konseptong key at chain code na kombinasyong gamit sa Child Key Derivation (CKD) Function ay gagamitin mula master node papuntang wallets/accounts, tapos papuntang wallet chains, hanggang addresses. Tignan ang detalye ng mga sumusunod sa BIP-0032 na mismo.
- Private parent key ➔ Private child key
- Public parent key ➔ Public child key
- Private parent key ➔ Public child key
Gamit pa rin ang HMAC-SHA512 sa mga yan, may pagkakaiba lang sa kung anu-ano ang key at data na itatakda.
Banggitin lang din natin na may 232 (mahigit 4 na bilyon!) child keys na mabubuo sa isang extended key. 231 dito ay normal child keys, samantalang 231 dito ay hardened child keys. Anong pagkakaiba? Ang normal child keys ay naka index bilang unang 231: mula 0 ➔ 231 − 1. Ang hardened child keys ay naka index mula 231 ➔ 232 − 1.
Ang parent private key syempre kayang bumuo ng child private keys pati child public keys, mapa normal o hardened. Posible makakuha ng child public keys gamit ang parent public key. Pero gumagana lang ito sa normal child keys. May mga katangiang kanais-nais ang paggamit ng normal child keys. Subalit mas mataas ang seguridad kapag gamit ang hardened child keys. Muli, basahin sa BIP-0032 para mabigyang linaw pa ang mga sitwasyon na ganito.
Sa BIP-0032, ang index sa account level ay nilalagyan ng subscript na H para mas simple ang pagtukoy sa hardened child key. Halimbawa, kung ang index ng unang normal key sa account ay: m/0, ang unang hardened key ay may index na m/0H.
Ngayon at alam mo na ang pagbuo ng seed, susunod naman natin pag-uusapan ang paraan upang mas madaling tandaan o buuin ang master seed: ang paggamit ng mnemonic code o seed phrase.
Kitakits sa ika-21.
Salamat sa pinagsamang:
- Photo by Gelgas Airlangga: https://www.pexels.com/photo/shallow-focus-of-sprout-401213/
- Photo by Markus Spiske: https://www.pexels.com/photo/green-and-white-line-illustration-225769/