Bitcoin Forum
December 09, 2019, 07:06:22 AM *
News: Latest Bitcoin Core release: 0.19.0.1 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Derivation path - простыми словами  (Read 839 times)
witcher_sense
Hero Member
*****
Offline Offline

Activity: 728
Merit: 954


CryptoTalk.Org - Get Paid for every Post!


View Profile WWW
June 29, 2019, 10:42:35 AM
Last edit: June 30, 2019, 12:46:27 PM by witcher_sense
Merited by Alex_Sr (5), suchmoon (4), chimk (4), FontSeli (2), diks (1), klarki (1), johhnyUA (1), TheFuzzStone (1), IeSua (1), MaoChao (1), epidemia (1), TechPriest (1), jokers10 (1)
 #1

Оригинал статьи: https://ethereum.stackexchange.com/questions/70017/can-someone-explain-the-meaning-of-derivation-path-in-wallet-in-plain-english-s

Предыстория


Пути вывода (или по-другому пути деривации) имеют отношение к HD-кошелькам или HD-ключам, это такой тип кошелька, где у вас есть одна, удобочитаемая, seed-фраза, которая разблокирует несколько учетных записей/адресов/приватных ключей в любой поддерживаемой сети. Эти фразы обычно выглядят как brain surround have swap horror body response double fire dumb bring hazard.

Техническое описание для наиболее часто используемых HD-кошельков...

  • BIP-32 - описание HD-кошельков.
  • BIP-39 - мнемоническая фраза / список слов / остальные части этой загадки.
  • BIP-44 - материал про пути вывода / алгоритмы.

Обычно у вас есть один закрытый (приватный) ключ (напр. afdfd9c3d2095ef696594f6cedcae59e72dcd697e2a7521b1578140422a4f890), который позволяет вам получить доступ к своим средствам по соответствующему адресу (напр.  0x06A85356DCb5b307096726FB86A78c59D38e08ee). Это пара ключей.

В случае с HD-кошельками у вас есть единственная seed-фраза (напр. brain surround have swap horror body response double fire dumb bring hazard), которая с помощью математических вычислений, алгоритмов, кода и прочего выводит несколько пар ключей. Бесконечное количество пар ключей.

Кроме того, существует небезопасный формат кошелька, известный как Brain wallet или «мозговой кошелек», в котором можно использовать одну понятную человеку фразу и через математику, алгоритмы, код и прочее она превращается в одну пару ключей.


Хорошо, но что там насчет путей вывода?


Мозговые кошельки позволяют вам превратить dogsarecool12 или brain surround have swap horror body response double fire dumb bring hazard в единственный закрытый ключ, который затем используется для доступа к вашим средствам и подписания ваших транзакций.

Для простоты, давайте представим это как



Если бы я использовал в качестве своей фразы catsarecool10 вместо dogsarecool12, я бы получил другую пару ключей, другой адрес, другой аккаунт.

HD-кошельки похожи, но каждая фраза имеет бесконечное количество пар ключей или учетных записей, к которым она может получить доступ. Потому что, в отличие от мозговых кошельков (brain wallets), это более сложная математика. Для простоты, давайте представим это как



Если вы измените какую-либо из этих частей, закрытый ключ, который вы получите (или выведите), будет другим, так же, как это было выше с catsarecool10 против dogsarecool12. Однако, поскольку все кодеры следуют одним и тем же правилам, фрагменты, которые добавляются к исходной фразе, являются согласованными и позволяют пользователям получать доступ к одним и тем же учетным записям в нескольких продуктах или блокчейнах.

Эти части называются "путь вывода"

Вот это



его часть.

Настоящие части пути вывода

Полный путь: m/44'/60'/0'/0'/0

Что представляет собой каждое число: m / purpose' / coin_type' / account' / change / address_index



Вероятно, это просто случайный способ начать строку, чтобы кодеры могли легко определить, является ли что-то путем вывода, а не то что вы начинаете вводить «мама».



Тут всегда 44 '. Однако, если решат, что произошла эволюция системы ключей HD, вы сможете изменить ее на 45 ', чтобы кодеры снова могли различить старую систему и новую систему.



К какому блокчейну вы обращаетесь? Каждый блокчейн имеет номер, который его представляет. Биткойн это 0. Эфириум это 60. Aion это 425. Когда вы создаете новый блокчейн, вы запрашиваете неиспользованный номер. Вы можете увидеть все цепи и их номера здесь: https://github.com/satoshilabs/slips/blob/master/slip-0044.md



Число, которое начинается с 0 и увеличивается. Слой разделения или иерархии. (подробнее об этом ниже)



Иногда используется в Ethereum, а иногда нет. Первоначально был создан для Биткойна, который на самом деле не имеет «учетных записей», а имеет «неизрасходованные выходы транзакций». По сути, вы никогда не отправляете часть своих биткойнов, вы отправляете все свои биткойны по нескольким адресам. Если у вас 0,75 BTC, но вы хотите отправить мне только 0,5 BTC, вы отправите мне 0,5 BTC, а затем отправите себе 0,25 BTC. «Ваше» может вернуться к исходному адресу или к другому адресу, к которому у вас есть доступ (например, к следующему адресу в «списке»). Этот номер гласит: «Отправить все, что я не хочу отправлять другу, на 10-й адрес в моем списке. Или на 0-й адрес в списке (или адрес, с которого я отправляю).



Еще одна переменная для получения разных аккаунтов и т. д.


Разделение и Иерархия


Некоторые из приведенных выше переменных основаны на внешних факторах, например, в какой я цепи. Некоторые выбираются пользователем или программным обеспечением кошелька, например, переменная change. Переменные account и index дают мне (или моему кошельку) больше возможностей для изменения.

Например, скажем, я хочу отделить мои личные активы BTC от активов моей компании. Я мог бы использовать m / 44 '/ 0' / 0 '/ 0' / 0 для компании и m / 44 '/ 0' / 1 '/ 0' / 0 для своих личных.

Но скажем, я хочу иметь разные адреса для ...

  • моих личных сбережений
  • где я получаю свою зарплату каждую неделю
  • когда я лично получаю деньги от друзей
  • публичного показа в моем личном github для пожертвований
  • все мои личные расходы на учебу

Я мог бы использовать m / 44 '/ 0' / 1 '/ 0' / 0 для сбережений, m / 44 '/ 0' / 1 '/ 0' / 1 для зарплаты, m / 44 '/ 0' / 1 '/ 0 '/ 2 для того, чтобы мой друг вернул мне деньги, и так далее. Я мог бы сделать то же самое со счетами компании. Ура!


Полезные ссылки


 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
1575875182
Hero Member
*
Offline Offline

Posts: 1575875182

View Profile Personal Message (Offline)

Ignore
1575875182
Reply with quote  #2

1575875182
Report to moderator
1575875182
Hero Member
*
Offline Offline

Posts: 1575875182

View Profile Personal Message (Offline)

Ignore
1575875182
Reply with quote  #2

1575875182
Report to moderator
1575875182
Hero Member
*
Offline Offline

Posts: 1575875182

View Profile Personal Message (Offline)

Ignore
1575875182
Reply with quote  #2

1575875182
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
Captain-Cryptory
Full Member
***
Offline Offline

Activity: 520
Merit: 204


榮譽和加密


View Profile
June 29, 2019, 11:54:06 AM
Last edit: July 06, 2019, 04:56:03 AM by Captain-Cryptory
 #2

...................
Полный путь: m/44'/60'/0'/0'/0

Что представляет собой каждое число: m / purpose' / coin_type' / account' / change / address_index



Вероятно, это просто случайный способ начать строку, чтобы кодеры могли легко определить, является ли что-то путем вывода, а не то что вы начинаете вводить «мама».
.........................

"m"  - указывает на то, что истоком пути является секретный мастер ключ, если бы было  "M" то это бы указывало, что его истоком является публичный мастер ключ ( cryptonist)
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
June 30, 2019, 07:47:22 PM
Merited by chimk (4), xandry (2), witcher_sense (1), FontSeli (1)
 #3

Quote
Пути вывода (или по-другому пути деривации) имеют отношение к HD-кошелькам или HD-ключам, это такой тип кошелька, где у вас есть одна, удобочитаемая, seed-фраза, которая разблокирует несколько учетных записей/адресов/приватных ключей в любой поддерживаемой сети.
В Bitcoin Core нет удобочитаемой seed-фразы, хотя это HD-кошелек.


Quote
Тут всегда 44 '. Однако, если решат, что произошла эволюция системы ключей HD, вы сможете изменить ее на 45 ', чтобы кодеры снова могли различить старую систему и новую систему.
Далеко не всегда 44', все чаще для биткоина используются сегвит-адреса (которые живут на 49' и 84' ветках дерева адресов). А в Bitcoin Core и Electrum вообще старый BIP32, где пути деривации типа m/0'. В оригинальной статье подразумевался эфир, но мы в разделе биткоина ).

И раз тема про пути деривации, то неплохо бы пояснить про эти апострофы.


Quote
К какому блокчейну вы обращаетесь? Каждый блокчейн имеет номер, который его представляет. Биткойн это 0. Эфириум это 60. Aion это 425. Когда вы создаете новый блокчейн, вы запрашиваете неиспользованный номер. Вы можете увидеть все цепи и их номера здесь: https://github.com/satoshilabs/slips/blob/master/slip-0044.md
В общем да, но эти номера производители кошельков не всегда соблюдают. Например, Леджер иногда назначает свои номера (которые в этой таблице по ссылке уже заняты другими монетами).

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
witcher_sense
Hero Member
*****
Offline Offline

Activity: 728
Merit: 954


CryptoTalk.Org - Get Paid for every Post!


View Profile WWW
July 02, 2019, 08:00:38 AM
Merited by igor72 (1), Captain-Cryptory (1)
 #4

Цель этой темы заинтересовать вопросом "Derivation path" и подтолкнуть к более глубокому изучению вопроса. Я выбрал эту небольшую статью, потому что она заставила меня заинтересоваться. Те вопросы и уточнения, озвученные выше вполне закономерны, потому что статья небольшая и, так сказать, тезисная. Она не охватывает всех нюансов и частных случаев, а также технических спецификаций отдельно взятых аппаратных кошельков. Некоторые вопросы наиболее полно раскрываются в статьях и видео, приведенных в разделе "Полезные ссылки", где принципы объясняются даже с использованием непонятных математических формул.

Переместил топик в раздел "Новички", потому что этот вопрос не касается только биткойна, но и отдельно взятого раздела для полобных тем не предусмотрено.

По мере изучения вопроса, я постараюсь добавлять сноски и комментарии в первый пост, чтобы содержимое стало более понятно и более содержательно.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
July 02, 2019, 10:39:13 AM
Last edit: July 03, 2019, 03:22:51 PM by igor72
Merited by chimk (4), johhnyUA (1), m2017 (1), jokers10 (1)
 #5

Если позволите, попытаюсь изложить, насколько смогу простыми словами, свое определение derivation path.

В HD-кошельках (HD - это Hierarchical Deterministic) ключи вычисляются иерархически. Корнем всего этого дерева ключей является seed - огромное число в 64 байта корневой приватный мастер-ключ (полученный из огромного числа, называемого seed-ом), из которого математически получаются ключи первого уровня, из которых получаются ключи второго уровня, из которых... и так далее. Из одного конкретного сида всегда получается один и тот же набор ключей, и каждый ключ занимает одно и то же место на дереве ключей. Это дерево может ветвиться почти бесконечно, но на практике используется небольшая "глубина" ветвления - этого вполне достаточно.
Координата каждого ключа на дереве называется "derivation path" (на русский часто переводят, как "путь деривации", что ненамного понятней, идеального перевода я подобрать пока не могу) и записывается строкой, типа m/0/5/10/..., где m - не изменяется, это корневой мастер-ключ, а дальше идут ветви (счет ведется с нуля). В моем примере нужный ключ находится на 11-й веточке, которая выходит из 6-й ветки, которая в свою очередь выходит из первой ветви, выходящей из ствола дерева ).

Число веток на каждом уровне 232, то есть 4294967296. Первые 231 (2147483648) ключей являются non-hardened, вторая половина - hardened ("усиленные ключи"). Имея простой (non-hardened) приватный ключ и родительский публичный мастер-ключ (extended public key, xpub) можно легко вычислить остальные приватные ключи этой ветки, поэтому предпочтительнее использовать hardened ключи, где такой "взлом" невозможен. Но из публичного hardened мастер-ключа (xpub) нельзя получить (можно только из приватного xprv или non-hardened публичного xpub) дочерние публичные ключи, а получение публичных ключей из xpub необходимо для современых кошельков. Поэтому на практике используется смешанный derivation path - на верхних уровнях hardened, а уже на уровнях ниже аккаунтов non-hardened ключи. Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
Captain-Cryptory
Full Member
***
Offline Offline

Activity: 520
Merit: 204


榮譽和加密


View Profile
July 03, 2019, 07:07:03 AM
Merited by igor72 (1)
 #6


[?] Корнем всего этого дерева ключей является seed - огромное число в 64 байта,

Не обязательно 64. По спецификации  BIP32 размер затравки (seed) может лежать в интервале от 16 до 64 байт, рекомендуемое значение составляет 32 байта:

Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
July 03, 2019, 07:46:22 AM
 #7


[?] Корнем всего этого дерева ключей является seed - огромное число в 64 байта,

Не обязательно 64. По спецификации  BIP32 размер затравки (seed) может лежать в интервале от 16 до 64 байт, рекомендуемое значение составляет 32 байта:

Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
Более полная цитата оттуда:
Quote
    Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
    Calculate I = HMAC-SHA512(Key = "Bitcoin seed", Data = S)
    Split I into two 32-byte sequences, IL and IR.
    Use parse256(IL) as master secret key, and IR as master chain code.
Выделил цветом строку, где получается 64-байтное число, которое я имел в виду, называя его сидом. А то, что там называется "seed byte sequence S of a chosen length", это еще называют энтропией. В известном конвертере https://iancoleman.io/bip39/ , например, так.
Но, согласно BIP32, вы правы - seed=entropy. Спасибо за замечание.

Насчет того, что энтропия может лежать между 16 и 64 байт, я думаю, это просто рекомендация. Ничто не мешает мне сделать ее 1 байт или 100, просто меньше 16 считается уже небезопасно, а больше 64 слишком избыточно.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
Captain-Cryptory
Full Member
***
Offline Offline

Activity: 520
Merit: 204


榮譽和加密


View Profile
July 03, 2019, 08:31:50 AM
Last edit: July 05, 2019, 05:58:09 AM by Captain-Cryptory
Merited by chimk (4), xenon131 (2), igor72 (1)
 #8


[?] Корнем всего этого дерева ключей является seed - огромное число в 64 байта,

Не обязательно 64. По спецификации  BIP32 размер затравки (seed) может лежать в интервале от 16 до 64 байт, рекомендуемое значение составляет 32 байта:

Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
Более полная цитата оттуда:
Quote
   Generate a seed byte sequence S of a chosen length (between 128 and 512 bits; 256 bits is advised) from a (P)RNG.
    Calculate I = HMAC-SHA512(Key = "Bitcoin seed", Data = S)
    Split I into two 32-byte sequences, IL and IR.
    Use parse256(IL) as master secret key, and IR as master chain code.
Выделил цветом строку, где получается 64-байтное число, которое я имел в виду, называя его сидом. А то, что там называется "seed byte sequence S of a chosen length", это еще называют энтропией. В известном конвертере https://iancoleman.io/bip39/ , например, так.
Но, согласно BIP32, вы правы - seed=entropy. Спасибо за замечание.

Насчет того, что энтропия может лежать между 16 и 64 байт, я думаю, это просто рекомендация. Ничто не мешает мне сделать ее 1 байт или 100, просто меньше 16 считается уже небезопасно, а больше 64 слишком избыточно.

Понятно, но то 64-байтное число, в спецификации обозначенное как I ( Intermediate - промежуточный), не есть корень дерева.  I  =  HMACSHA512("Bitcoin seed", S) это промежуточная функция аргумента S, который и является затравкой -SEED-, получаемой из PRNG (pseudorandom number generator, в качестве ключа I применяет константу равную "Bitcoin seed" ). I используется в частности  для вычисления  секретного мастер ключа m=parse256(IL), где IL одна, а именно левая, (IL, L -left- левый) из 2-х  32-байтных половинок  64-байтного I. Когда говорят об энтропии S имеют ввиду размер затравки (псевдослучайного числа). Подмена  двух понятий, которая иногда используется, - seed и entropy -  может ставить в тупик.
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
July 03, 2019, 12:33:48 PM
Last edit: July 03, 2019, 12:52:36 PM by igor72
 #9

не есть корень дерева
Ошибку исправил, спасибо.
Quote
Когда говорят об энтропии S имеют ввиду размер затравки (псевдослучайного числа). Подмена  двух понятий, которая иногда используется, - seed и entropy -  может ставить в тупик.
Согласен.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
Captain-Cryptory
Full Member
***
Offline Offline

Activity: 520
Merit: 204


榮譽和加密


View Profile
July 08, 2019, 05:56:06 PM
Merited by chimk (4), xenon131 (1)
 #10

не есть корень дерева
Ошибку исправил, спасибо.
Quote
Когда говорят об энтропии S имеют ввиду размер затравки (псевдослучайного числа). Подмена  двух понятий, которая иногда используется, - seed и entropy -  может ставить в тупик.
Согласен.

👍

Хотелось бы продолжить начатое и показать принципиальное отличие "усиленных" ( hardened) ключей от нормальных. Посмотрим как вычисляются те и другие согласно спецификации BIP32.

   Check whether i ≥ 231 (whether the child is a hardened key).
       If so (hardened child): let I = HMAC-SHA512(Key = cpar, Data = 0x00 || ser256(kpar) || ser32(i)). (Note: The 0x00 pads the private key to make it 33 bytes long.)
       If not (normal child): let I = HMAC-SHA512(Key = cpar, Data = serP(point(kpar)) || ser32(i)).
    Split I into two 32-byte sequences, IL and IR.
    The returned child key ki is parse256(IL) + kpar (mod n).
    The returned chain code ci is IR.
    In case parse256(IL) ≥ n or ki = 0, the resulting key is invalid, and one should proceed with the next value for i. (Note: this has probability lower than 1 in 2127.)

Как видим процедура вычисления одна и та же  как для усиленных, так и для нормальных ключей. Отличие состоит лишь в данных, которые принимает на один из своих входов промежуточная  функция I. Для усиленных ключей  Data = 0x00 || ser256(kpar) || ser32(i))  в то время как для нормальных Data = serP(point(kpar)) || ser32(i))  Различающиеся части выделены цветом. ( на 0x00 перед красным внимания не обращаем- это для того, чтобы расширить   ser256(kpar) до 33 байт).  То что выделено красным это сериализованный (приведенный к 256-бит виду) секретный родительский  ключ - kpar, в то время как serP(point(kpar)) не что иное, как сериализованная точка элиптической кривой, полученная умножением базовой точки из secp256k1 на kpar, т.е сериализованный публичный ключ.

Поэтому, принципиальная разница между усиленными и  нормальными дочерними  ключами состоит в том, что для вычисления первых используются секретные родительские ключи, а для вторых - публичные родительские ключи.

Вторые при определенных условиях можно "взломать". Для первых  эта процедура становится  проблематичной (отсюда в названии - усиленные -hardened).



johhnyUA
Legendary
*
Offline Offline

Activity: 1400
Merit: 1118


CryptoTalk.Org - Get Paid for every Post!


View Profile
July 20, 2019, 10:54:52 PM
 #11

Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

Здесь кстати интересный момент, если что, поправьте.
Если считать грубо, то вот что получается 232 (purpose) * 232 (coin type) * 232 (account) * 232 (change) * 232 (index)

Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов. Но так как purpose и coin type это у нас конкретные числа для конкретного блокчейна ( ну или пара чисел) то выходит что один сид покрывает - 1 * 1* 232 * 232 * 232 тоесть, 296 ключей.

Если ошибся, то извиняйте, немного заспанный. Буду благодарен любой критике.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
July 21, 2019, 05:43:32 AM
Last edit: July 21, 2019, 06:03:01 AM by igor72
 #12

Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

Здесь кстати интересный момент, если что, поправьте.
Если считать грубо, то вот что получается 232 (purpose) * 232 (coin type) * 232 (account) * 232 (change) * 232 (index)
Это по BIP44 такая схема принята. А по BIP32 (на который BIP44 опирается) таких уровней может быть больше. Не знаю, насколько больше, не важно. Например, ничто не мешает сделать в электруме кошелек с путем m/44'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0' (последний 0' - аккаунт) - это сколько ключей получается, 2576? ))
Quote
Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов.
Многие из этих 2160 ключей будут давать одинаковые адреса. Но, как я выше писал, уровней деривации больше, поэтому вы правы - из каждого сида теоретически можно получить все ключи. )
Quote
Но так как purpose и coin type это у нас конкретные числа для конкретного блокчейна ( ну или пара чисел) то выходит что один сид покрывает - 1 * 1* 232 * 232 * 232 тоесть, 296 ключей.
Вроде верно (если оставаться в рамках BIP44, что не обязательно).

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
johhnyUA
Legendary
*
Offline Offline

Activity: 1400
Merit: 1118


CryptoTalk.Org - Get Paid for every Post!


View Profile
July 21, 2019, 01:18:32 PM
 #13

Это по BIP44 такая схема принята. А по BIP32 (на который BIP44 опирается) таких уровней может быть больше. Не знаю, насколько больше, не важно. Например, ничто не мешает сделать в электруме кошелек с путем m/44'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0'/0' (последний 0' - аккаунт) - это сколько ключей получается, 2576? ))

Надо значит разбираться, интересная тема. Но по такой логике да, получается 2576

Quote
Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов.
Многие из этих 2160 ключей будут давать одинаковые адреса. Но, как я выше писал, уровней деривации больше, поэтому вы правы - из каждого сида теоретически можно получить все ключи. )

Не все ключи. я не правильно выразился. Все адреса, вот что я имел ввиду. У нас же количество легаси адресов ограничено 2160, тоесть, по моему примеру выше видно что можно покрыть всю область (в теории) легаси адресов всего лишь одним сидом. Но так, как мы используем условно только BIP44 и единый cointype, то уже не получится такое провернуть.

Вот правильно ли я размышляю, если с BIP44 и cointype 0 (для блокчейна биткоина), то у нас с одного сида получается 296 ключевых пар. Так как количество адресов ограничено 2160, то получается чтобы адреса не повторялись (случайно не отправил дядьке в Камбодже свои битки), то количество уникальных сидов тоже ограничено, и являет собой 2160-296 = 264 . Чет не очень много.

Ну вот если предположить что сегвит адреса, с их BIP49 и BIP84 (один для нестед , один для трушного, как я помню) то получится еще по 264. Тобишь всего в сумме 266

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
July 21, 2019, 03:10:36 PM
Merited by johhnyUA (1)
 #14


Вот правильно ли я размышляю, если с BIP44 и cointype 0 (для блокчейна биткоина), то у нас с одного сида получается 296 ключевых пар. Так как количество адресов ограничено 2160, то получается чтобы адреса не повторялись (случайно не отправил дядьке в Камбодже свои битки), то количество уникальных сидов тоже ограничено, и являет собой 2160-296 = 264 . Чет не очень много.
Только не минус, а разделить.
Ну да, на каждого жителя Земли всего лишь по два с половиной миллиарда сидов с уникальными адресами выходит ).
Quote
Ну вот если предположить что сегвит адреса, с их BIP49 и BIP84 (один для нестед , один для трушного, как я помню) то получится еще по 264. Тобишь всего в сумме 266
0.75*266 на самом деле. Но все равно - практического смысла в этом не вижу, никто сиды на уникальность набора адресов не проверяет, это невозможно сделать. Имхо, адресные пространства разных сидов часто где-то пересекаются. Просто вероятность обнаружить эти пересечения ничтожно мала.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
johhnyUA
Legendary
*
Offline Offline

Activity: 1400
Merit: 1118


CryptoTalk.Org - Get Paid for every Post!


View Profile
July 21, 2019, 10:07:35 PM
 #15

Только не минус, а разделить.
Ну да, на каждого жителя Земли всего лишь по два с половиной миллиарда сидов с уникальными адресами выходит ).

Кстати да, спешил и сглупил, там деление.

Ну население то не постоянное  Cheesy

Quote
0.75*266 на самом деле.

Почему 0.75 ?

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
igor72
Hero Member
*****
Offline Offline

Activity: 602
Merit: 739

CryptoTalk.Org - Get Paid for every Post!


View Profile
July 22, 2019, 05:22:50 AM
Merited by johhnyUA (1)
 #16

Почему 0.75 ?
264+264+264 = 3*264 = 1.5*265 = 0.75*266

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
tenant48
Jr. Member
*
Offline Offline

Activity: 99
Merit: 7


View Profile
November 07, 2019, 05:24:21 PM
 #17

Пример m/44'/0'/1'/0. Апостроф после цифры обозначает, что на данной ветке используются hardened ключи, этот апостроф как бы заменяет +231. То есть m/44'/0'/1'/0 можно записать как m/44+231/0+231/1+231/0 или m/2147483692/2147483648/2147483649/0 - эти пути дадут одинаковые ключи.

Здесь кстати интересный момент, если что, поправьте.
Если считать грубо, то вот что получается 232 (purpose) * 232 (coin type) * 232 (account) * 232 (change) * 232 (index)

Как видим, получается число 232*32*32*32*32 - 21606 тоесть максимальное количество адресов из хэшфункции RIPEMD-160.
По такой логике получается что одним сидом в теории можно покрыть весь диапазон адресов. Но так как purpose и coin type это у нас конкретные числа для конкретного блокчейна ( ну или пара чисел) то выходит что один сид покрывает - 1 * 1* 232 * 232 * 232 тоесть, 296 ключей.

Если ошибся, то извиняйте, немного заспанный. Буду благодарен любой критике.
Небольшая поправка: значение "change" обычно может принимать только 2 значения (0 внешние и 1 внутрение адреса). Так что теоретически ключей может быть еще меньше - 265
EdvinZ
Sr. Member
****
Offline Offline

Activity: 882
Merit: 260


CryptoTalk.Org - Get Paid for every Post!


View Profile
November 08, 2019, 05:20:00 AM
 #18

Seed фразы намного удобнее для запоминания человеческому мозгу, чем огромное число приватного ключа. Неудивительно, что был придуман этот способ запароливания кошельков, потому что обычный приватник наизусть не выучишь, а seed фразу при желании запомнить легко и можно получать доступ к своим средствам откуда угодно, не нося с собой флэшку с приватником, которая может быть скомпрометирована.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
CryptoTalk.org| 
MAKE POSTS AND EARN BTC!
🏆
tenant48
Jr. Member
*
Offline Offline

Activity: 99
Merit: 7


View Profile
November 08, 2019, 06:24:16 AM
 #19

Seed фразы намного удобнее для запоминания человеческому мозгу, чем огромное число приватного ключа. Неудивительно, что был придуман этот способ запароливания кошельков, потому что обычный приватник наизусть не выучишь, а seed фразу при желании запомнить легко и можно получать доступ к своим средствам откуда угодно, не нося с собой флэшку с приватником, которая может быть скомпрометирована.
Запоминать нужно не только слова, а и точную их последовательность. Поэтому на практике эта задача маловыполнимая, если конечно вы не обладаете феноменальной памятью. Запомнить seed из 12 слов, это тоже самое что выучить 128 битный ключ. Если вы сами попытаетесь создать свой seed котрый будет иметь цепочку слов имеющий логический смысл, то он будет моментально взломан. На этом погорело достаточно много людей, так же как и на brain wallet.
johhnyUA
Legendary
*
Offline Offline

Activity: 1400
Merit: 1118


CryptoTalk.Org - Get Paid for every Post!


View Profile
November 08, 2019, 04:18:06 PM
Last edit: November 09, 2019, 06:56:47 PM by johhnyUA
 #20

Запоминать нужно не только слова, а и точную их последовательность. Поэтому на практике эта задача маловыполнимая, если конечно вы не обладаете феноменальной памятью. Запомнить seed из 12 слов, это тоже самое что выучить 128 битный ключ.

Ты неправ. Я то конечно понимаю, у каждого разный интеллектуальный потенциал, но сравнивать 12 (та даже 24 слова) со 64 знаками (256 битный ключ, которыми они все в основном и являются) это конечно нечто. Та даже блин возьмем 128 бит энтропии, или 16 байт, или 32 знака. И запомнить 12 слов. Ага, одинаково.

 
                                . ██████████.
                              .████████████████.
                           .██████████████████████.
                        -█████████████████████████████
                     .██████████████████████████████████.
                  -█████████████████████████████████████████
               -███████████████████████████████████████████████
           .-█████████████████████████████████████████████████████.
        .████████████████████████████████████████████████████████████
       .██████████████████████████████████████████████████████████████.
       .██████████████████████████████████████████████████████████████.
       ..████████████████████████████████████████████████████████████..
       .   .██████████████████████████████████████████████████████.
       .      .████████████████████████████████████████████████.

       .       .██████████████████████████████████████████████
       .    ██████████████████████████████████████████████████████
       .█████████████████████████████████████████████████████████████.
        .███████████████████████████████████████████████████████████
           .█████████████████████████████████████████████████████
              .████████████████████████████████████████████████
                   ████████████████████████████████████████
                      ██████████████████████████████████
                          ██████████████████████████
                             ████████████████████
                               ████████████████
                                   █████████
.CryptoTalk.org.|.MAKE POSTS AND EARN BTC!.🏆
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!