Рейтинг:1

Вопрос о создании Harden и Normal Key

флаг vn

Я читаю о дочернем ключе Hardened и Normal в главе 5 книги Андреаса «Мастерство биткойнов» вместе с этим подробная нить и БИП-32. Вот некоторые из моих представлений об этих двух процедурах:

к: закрытый ключ // К: открытый ключ // я показатель // с цепной код // ЧАС Результат хеширования HMAC // Хлев первые 32 бита результата хеширования. // н порядок эллиптической кривой. // г начальная точка эллиптической кривой

Нормальный вывод ключей

Случай 1: parPrivkey -> childPrivkey (и, следовательно, childPubkey)

H = HMAC(cpar, Kpar || ichld) 
=> kchild = (kpar + Hleft) mod n
=> Kchild = G*kchild = G*[(kpar + Hleft) mod n)]

Случай 2: parPubkey -> childPubkey

H = HMAC(cpar, Kpar || ichld)
=> Kchild = G*Hleft + Kpar

Получение усиленного ключа`

Случай 3: parPrivkey -> childPrivkey (и из этого childPubkey)

H = HMAC(cpar, kpar || ichld)
=> kchild = (kpar + Hleft) mod n
=> Kchild = G*kchild = G*[(kpar + Hleft) mod n]

Учитывая эти 3 метода, я несколько смущен:

  1. разница в уравнении генерации между случаями 1 и 2 довольно тонкая, так что нам нужно только умножить kchild = (kpar + Hleft) mod n на G, чтобы получить это в случае 2. Тем не менее, поскольку существует множитель мод н в конце концов, я не мог сказать, был ли ребенок случая 1 будет относиться к случаю 2. Если это не так, то какой смысл генерировать только открытый ключ, не имея возможности потратить отправленные на него средства?
  1. Это не связано с вышеуказанным вопросом, а скорее с генерацией главного закрытого ключа: я читал, что после получения корневого начального числа начальное число было помещено в функцию HMAC-SHA512 для получения 512-битного хэша, первые 32 байтов которого служит главным закрытым ключом. Итак, мой вопрос заключается в том, что функция HMAC принимает 2 входа, которые ключ и текст, что является "ключом" в этом случае? Если «ключа» нет, то почему бы не использовать только функцию хеширования SHA-512?

Заранее большое спасибо.

Рейтинг:1
флаг gb

Тем не менее, поскольку в конце есть множитель по модулю n, я не могу сказать, будет ли Kchild из случая 1 относиться к случаю 2.

Да, дочерний закрытый ключ из случая 1 является секретным ключом для открытого ключа, полученного в случае 2. $n$ порядок точки генератора $G$ так что это не влияет на правильность секретного ключа.

поскольку функция HMAC принимает 2 входа: ключ и текст, что такое «ключ» в этом случае? Если «ключа» нет, то почему бы не использовать только функцию хеширования SHA-512?

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

В других случаях использования HMAC в BIP 32 ключом является «цепной код», а текст/данные такие, как вы написали выше в своем вопросе.Этот цепочный код гарантирует, что дочерние ключи получаются не только из родительских ключей, но также используют некоторую дополнительную энтропию, которая должна быть известна для получения дочерних ключей. Таким образом, вы можете выдать код цепи, если хотите, чтобы люди могли получить дочерние ключи, или сохранить его в секрете, чтобы они не могли этого сделать.

John Pham avatar
флаг vn
Что касается ответа на ваш второй вопрос, разве биткойн-семя* не используется в качестве «текстового» параметра для функции HMAC? Или формат хеш-функции для главного закрытого ключа — HMAC (seed, seed)?
meshcollider avatar
флаг gb
@JohnPham ключ - это буквально строка «Семя биткойна», а не само семя. Это фиксированная строка.
John Pham avatar
флаг vn
О, теперь понял, не ожидал, что будет так просто :)) Большое спасибо. Кстати, я рад снова увидеть вас в одной из моих [предыдущих веток вопросов] (https://crypto.stackexchange.com/questions/98362/elliptic-curve-how-to-calculate-y-value)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.