Pāriet uz galveno saturu

Kas ir BIP39?

U
Autors: UKey Wallet

BIP-39 specifikācija galvenokārt apraksta algoritmu un procesu deterministisku maku ģenerēšanai, pamatojoties uz mnemoniku (viegli iegaumējamu vārdu kopu).

Specifikācija sastāv no divām galvenajām daļām:

  1. Kā ģenerēt mnemoniku.

  2. Kā ģenerēto mnemoniku pārveidot par bināro sēklu.

Tālāk ir apskatīts, kā izveidot deterministiskus makus, vispirms aprakstot katru no šīm divām daļām.

Mnemonikas ģenerēšana

Algoritmiskais process mnemonikas ģenerēšanai ir šāds:

Process ir šāds:

  1. Izveidojiet nejaušu secību (entropiju) no 128 līdz 256 bitiem (soļa lielums 32 biti)

  2. Veiciet SHA256 nejaušajai secībai, kas ģenerēta iepriekšējā darbībā, lai ģenerētu jaucējvērtību, un kā nejaušās secības kontrolsummu ņemiet pirmos N jaucējvērtības bitus (entropijas garums / 32, piemēram, 128 biti, tad N = 4).

  3. Pievienojiet kontrolsummu pirmajā solī ģenerētās nejaušās secības beigās, lai attēla piemērā nejaušā secība ar kontrolsummu būtu 128 + 4 = 132 biti.

  4. Atdaliet nejaušo secību no iepriekšējās darbības ar 11 bitu segmentiem (sadalīt), lai 128 bitu entropijas garuma secībai tiktu ģenerēti 12 segmenti (132 / 11 = 12).

  5. Šajā brīdī katras vērtības kartēšana, kas satur 11 bitu segmentu, iepriekš noteiktai 2048 vārdu vārdnīcai.

  6. Pēdējā vārdu grupa, kas ģenerēta izgriezuma secībā, ir mnemonika.

Sēklu ģenerēšana no mnemonikas

Pēc mnemoniskās ģenerēšanas mēs varam ģenerēt sēklu, izmantojot atslēgu ģenerēšanas funkciju PBKDF2 algoritmu.

PBKDF2 nepieciešami divi parametri: mnemonika un sāls. Sāls mērķis ir apgrūtināt plaisāšanu, un BIP-39 mēs varam ieviest ieejas frāzi kā papildu drošības faktoru, lai aizsargātu sēklas.

"PBKDF2 ir daļa no RSA Laboratories publiskās atslēgas kriptogrāfijas standartu (PKCS) sērijas, īpaši PKCS #5 v2.0, kas publicēts arī kā Internet Engineering Task Force's RFC 2898.

Pēc iepriekš minētās mnemoniskās ģenerēšanas nākamajā diagrammā parādīts sēklu ģenerēšanas algoritms.

  • Pirmais PBKDF2 parametrs ir iepriekš ģenerēta mnemonika.

  • Otrais PBKDF2 parametrs ir sāls, kas parasti sastāv no virknes un lietotāja nodrošinātu šifrēšanas virkņu izvēles savienojuma.

  • PBKDF2 izmanto HMAC-SHA512 algoritmu, kas izmanto 2048 jaucējus, lai izveidotu 512 bitu vērtību kā sākuma vērtību.

** HD maka ģenerēšana no sēklas**

Iepriekš ģenerētā sēkla tiks izmantota kā HD maka saknes sēkla, un jebkura HD maka saknes sēkla var atjaunot visu HD maku.

Saknes sēklu ievadīšana HMAC-SHA512 algoritmā iegūst 512 bitu jaucējkodu, kura kreisie 256 biti tiek izmantoti kā galvenā privātā atslēga un labie 256 biti kā galvenās ķēdes kods. Pēc tam galveno publisko atslēgu (264 biti) var ģenerēt ar galveno privāto atslēgu m.

Kā redzat no iepriekšējā attēla, HD atslēga tiek ģenerēta ar šādiem parametriem.

  • Vecāka privātā atslēga vai Vecāka publiskā atslēga; (abi ir nesaspiesti 256 bitu ECDSA atslēgas).

  • Vecāku ķēdes kods 256 biti.

  • 32 bitu vesela skaitļa indeksa numurs.

Turklāt iepriekš minētais process ir rekursīvs, un diagrammā redzamo bērnu privāto atslēgu var izmantot kā vecāku privāto atslēgu nākamajā līmenī.

Ievadot (Parent Publick Key, Parent Chain Code, Index Number) HMAC-SHA512 algoritmā, mēs varam ģenerēt tā apakšatslēgas, un mēs varam pielāgot indeksa numuru, lai ģenerētu vairākas apakšatslēgas vienā līmenī.

Par paplašināto atslēgu

Tā kā šī atslēgu atvasināšanas funkcija ir vienvirziena, visas apakšatslēgas nevar izmantot, lai atvasinātu to vecāktslēgas vai māsas atslēgas vienā līmenī, tikai vecākatslēgu un vecākķēdes kodu (kas tiek ģenerēti no vecāka līmeņa atslēgas un ķēdes koda) var izmantot, lai atvasinātu visas apakšatslēgas un apakšķēdes kodus un pēc tam ģenerētu atbilstošās apakšpubliskās atslēgas un adreses parakstīšanai.

Atslēgas un ķēdes koda kombināciju sauc par paplašināto atslēgu, un paplašināto atslēgu var izmantot, lai ģenerētu visas filiāles no turienes uz leju.

Paplašinātajā atslēgā sniegtā atslēga var būt vai nu privātā atslēga, vai publiskā atslēga, kas apvienota ar ķēdes kodu, ko attiecīgi sauc par paplašināto privāto atslēgu un paplašināto publisko atslēgu, un atzīmēta attiecīgi kā (k, c) un (K, c), kur publiskā atslēga K = punkts (k).

Mēs varam iegūt paplašināto publisko atslēgu no paplašinātās privātās atslēgas, nevis otrādi, tāpēc dažiem darījumu scenārijiem (piemēram, e-komercijai) katram darījumam maksājuma saņemšanai var ģenerēt jaunu publisko atslēgu un adresi, savukārt paplašināto privāto atslēgu var glabāt papīra makā vai aparatūras makā drošai darījumu parakstīšanai bezsaistē. Kā redzam, paplašinātās publiskās atslēgas drošība ir salīdzinoši augsta, un šajā diagrammā parādīts paplašinātās vecāk publiskās atslēgas pārsūtīšanas mehānisms, lai iegūtu atvasināto privāto atslēgu un ģenerētu pakārtoto publisko atslēgu:

Vai saņēmāt atbildi uz savu jautājumu?