http://bitcoinmagazine.com/8396/deterministic-wallets-advantages-flaw/
Как описано в статье выше (перейти к разделу «занижена Problem»), детерминированные бумажники имеют недостаток с раствором лучше, описанным в следующей цитате:
Идея заключается в том, что если вы даете аудитору часам только бумажник, он мог бы сговорился с одним из владельцев закрытых ключей под ним, чтобы создать закрытый ключ мастера и убегает со всеми деньгами.
M = мастер открытый ключ
м = мастер закрытый ключ
м / = генеральный директор держит его
М / = Аудитор удерживает его. С его помощью они могут просматривать все средства компании, но не тратить.
м / м1 = Отдел Голову держит его, и может генерировать дополнительные цепочки с ним.
м / м2 = Отдел Б голова держит его, и может генерировать дополнительные цепочки с ним.
м / м3 = Департамент C руководитель держит его, и может генерировать дополнительные цепочки с ним.
объединение М / с м / мИкс дали бы мне м / ... поэтому аудитор должен был бы сговорился с одним коррумпированным начальником отдела бежать с целыми финансами компании.
С решением при условии, что говорит генеральный директор сделает
м1/
м2/
м3/
затем
Отдел A:
м1/ м1
м2/ м1
м3/ м1
Отдел B:
м1/ м2
м2/ м2
м3/ м2
Отдел C:
м1/ м3
м2/ м3
м3/ м3
Каждый отдел с помощью трех открытых ключей, генерируемых этими цепями для создания детерминированных 2of3 цепей.
Аудитор будет получать только:
M1/
Тогда они могли бы проверить blockchain для redeemscripts, включавших
M1/ M1
M1/ M2
M1/ M3
Тогда они будут знать, сколько денег каждый отдел ПОТРАЧЕННАЯ, не будучи в состоянии сговариваются, чтобы получить 2 закрытых ключей.
Даунсайд: Они могли только найти Отработавшие средства, как redeemscript открывается только на blockchain, когда средства расходуются с адреса мульти-сиг.
имо, лучший способ сделать аудит для бизнеса будет использовать двойной ключ Stealth адрес и дать scan_privkey аудитору ... но это тема немного не связана с BIP32.
Вы можете настроить так стелс адрес вашей компании является генерировать на основе каждого отдела, но все scan_keypairs генерируются отдельной BIP32 цепи.
Дайте что главный секретный ключ к аудитору, так что пара ключи используются только для создания общих секретов, чтобы обнаружить средства, чтобы не тратить.
Я думаю, что есть такое решение, которое не зависит от 2 из 3 ключей, как описано выше.
Владелец Мастер закрытого ключа (назовем его «») порождает еще один секрет от этого (назовем его «г»), где г = Н (а), хэш «а».
Он проходит общественные стороны, A = [а] Q и R = [г] Q, аудитору и вместе, они становятся Master Public Key.
Владелец генерирует «N» й секретный ключ следующим образом:
Sn = Н (п, А)
т = Н (п, Р)
гп = (г) (т) произведение двух частных частей по модулю большой простой. Обратите внимание, что это остается тайной для владельца в силу сохранения «г» частным.
х = (зп) а + (р-н), где х становится «п» й закрытый ключ.
Идея заключается в том, что «р-н» не будет известно аудитору или обладателю «хп», как мы увидим в секунду. Поэтому она «охватывает» Мастер секретного ключа в случае сговора между аудитором и держателем «хп».
Аудитор:
Аудитор знает, A, R, и п (Кроме того, он знает «хп» для любого и все «п» из-за сговор.)
Он может генерировать «N» й открытый ключ следующим образом:
Sn = Н (п, А)
т = Н (п, Р)
Rn = [т] R общедоступную часть частного «гп», которую он не знает, так как он не знает, «г».
Xn = [Sn] A + Rn, где Xn является публичной стороной «хп», «N» й секретный ключ.
Зная «х» не дает ему «а», так как «а» защищена неизвестным «гп» в уравнении хп = (зп) а + (р-н)
редактировать Не удается, поскольку он не адекватно защитить секретный мастер-ключ от двух сговоров. Смотрите комментарии.