Где я могу найти код, позволяющий вычислить Z1 и Z2 на основе подписи ECDSA?

Следуя «Восстановлению закрытых ключей биткойнов с использованием слабых подписей из блокчейна », я могу выполнять другие вычисления, но я понятия не имею, как вычислять Z1или Z2. Был общедоступный код, доступный Шону Брэдли :

http://2coin.org/tx.asmx?op=GetTXExtended

Но сейчас это не работает. Есть ли какой-то другой общедоступный код для расчета Z1и Z2на любом языке. Я могу преобразовать его на язык, который я предпочитаю. Любая помощь приветствуется.

Не могли бы вы описать, для чего вам это нужно? Я не хочу непреднамеренно помогать кому-то красть биткойны других людей.
@DavidA.Harding Я исследователь безопасности и хочу воспроизвести эту атаку. Все уязвимые адреса уже находятся в Интернете и пусты. А уязвимые приложения уже исправлены. Я просто хочу повторить это ничего больше.
Я дал ответ. Однако атака, которую описывает Нильс, — это просто базовая атака с повторно используемым kзначением. Если вы действительно хотите воспроизвести это, вам будет гораздо проще избавиться от багажа Биткойна и выполнить математические расчеты для ваших собственных произвольных хешированных данных. Даже в Википедии есть инструкции для этого .

Ответы (2)

Согласно сообщению Нильса, zзначения — это хэши, которые подписываются в формуле ECDSA. Справочную информацию о том, какие данные входят в эти хэши, можно найти на вики-странице OP_CHECKSIG и в превосходном справочнике разработчиков в формате PDF Кшиштофа Окупского .

Код Bitcoin Core для генерации хэшей находится здесь . Любое другое приложение Биткойн, которое подписывает транзакции (или проверяет подписи), должно иметь совместимую функцию (по крайней мере, для SIGHASH_ALL по умолчанию), поэтому вы сможете найти реализацию практически на любом популярном языке программирования.

вставьте свою транзакцию на эту страницу https://2xoin.com/getRSZfromRawTX/

он даст вам все R, S и Z, если он смог декодировать TX.

Например,0100000002f64c603e2f9f4daf70c2f4252b2dcdb07cc0192b7238bc9c3dacbae555baf701010000008a4730440220d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad1022044e1ff2dfd8102cf7a47c21d5c9fd5701610d04953c6836596b4fe9dd2f53e3e014104dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ffffffffff29f841db2ba0cafa3a2a893cd1d8c3e962e8678fc61ebe89f415a46bc8d9854a010000008a4730440220d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad102209a5f1c75e461d7ceb1cf3cab9013eb2dc85b6d0da8c3c6e27e3a5a5b3faa5bab014104dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ffffffffff01a0860100000000001976a91470792fb74a5df745bac07df6fe020f871cbb293b88ac00000000

будет выводить

[
  {
    "sigR": "d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad1",
    "sigS": "44e1ff2dfd8102cf7a47c21d5c9fd5701610d04953c6836596b4fe9dd2f53e3e",
    "sigZ": "c0e2d0a89a348de88fda08211c70d1d7e52ccef2eb9459911bf977d587784c6e",
    "pubKey": "04dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ff",
    "N": 0
  },
  {
    "sigR": "d47ce4c025c35ec440bc81d99834a624875161a26bf56ef7fdc0f5d52f843ad1",
    "sigS": "9a5f1c75e461d7ceb1cf3cab9013eb2dc85b6d0da8c3c6e27e3a5a5b3faa5bab",
    "sigZ": "17b0f41c8c337ac1e18c98759e83a8cccbc368dd9d89e5f03cb633c265fd0ddc",
    "pubKey": "04dbd0c61532279cf72981c3584fc32216e0127699635c2789f549e0730c059b81ae133016a69c21e23f1859a95f06d52b7bf149a8f2fe4e8535c8a829b449c5ff",
    "N": 1
  }
]
`