Я читаю о дочернем ключе 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?
Заранее большое спасибо.