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