Pages:
Author

Topic: 2 ^ 256 закрытых ключей (Read 741 times)

copper member
Activity: 1498
Merit: 487
Stop the war!
December 23, 2021, 02:26:49 AM
#30
Закрытых ключей меньше 2^256 штук. Если точнее, то твердолобая реализация конечно же может использовать можно любое число на отрезке [0, 2^256 - 1], но безопасными в качестве ключей являются только числа меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141. Потому что бОльшие значения могут иметь соответствие более чем одному публичному ключу. Поэтому, практически все библиотеки при загрузке ключа первым делом проверяют, чтобы загруженное значение было меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141.

ну так это число 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 и есть 2 в 256
переводим в dec получаем 115792089237316195423570985008687907852837564279074904382605163141518161494337
делаем логарифм - получаем 2 в 256.

не понимаю, то ли ты ошибся, то ли я.
Ты ошибся.
2^256 = 16^64 = шестьдесят четыре английские буквы фэ.
jr. member
Activity: 51
Merit: 18
December 22, 2021, 05:59:50 PM
#29
Закрытых ключей меньше 2^256 штук. Если точнее, то твердолобая реализация конечно же может использовать можно любое число на отрезке [0, 2^256 - 1], но безопасными в качестве ключей являются только числа меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141. Потому что бОльшие значения могут иметь соответствие более чем одному публичному ключу. Поэтому, практически все библиотеки при загрузке ключа первым делом проверяют, чтобы загруженное значение было меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141.

ну так это число 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 и есть 2 в 256
переводим в dec получаем 115792089237316195423570985008687907852837564279074904382605163141518161494337
делаем логарифм - получаем 2 в 256.

не понимаю, то ли ты ошибся, то ли я.
legendary
Activity: 1792
Merit: 1909
Crypto Swap Exchange
December 15, 2019, 04:09:11 AM
#28
Адреса это элемент инструкции по трате которая заключена в Scriptpubkey или в случае P2SH - хэш скрипта ,который необходим для сверки, когда хозяин адреса решит потратить свои средства.

Это очень важно для осознания. В любой криптографии с открытым ключом у нас есть пара privkey - pubkey . И адреса это просто разные методы хэширования и превращения оригинального публичного ключа (о чем писали выше неоднократно).
Спасибо, я, благодаря A-Bolt, уже все осознал ).
Quote
Поэтому, в какой то мере, одному публичному ключу соответствуют сразу несколько адресов в разных системах. Отличие составляет лишь P2SH, так как адреса "3" получаются не прямо из публичного ключа, а из redeem script-a, и при одинаковом публичном ключе они могут отличаться.
P2SH вообще к ключам не привязан, в redeem скрипте может быть и 15 публичных ключей, и ни одного.
Quote
Это кстати очень хорошо видно по Electrum: при использовании функции "Swap", Electrum просит указать в каком формате необходимо превратить импортируемый приватник: p2pkh, p2wpkh, p2wpkh-p2sh .
Не только в "Sweep", но и при простом импорте (кстати, Electrum почему-то явно не предлагает выбрать, как трактовать введенный приватник, что новичков, не заметивших кнопку "info", постоянно ставит в тупик).
sr. member
Activity: 377
Merit: 282
Finis coronat opus
December 14, 2019, 07:09:06 AM
#27
Значение HASH160 для всех типов адресов (legacy, P2WPKH-in-p2sh, bc1-P2WPKH) вычисляется одинаково, поэтому формат адреса не имеет никакого значения. Это просто разные способы записи одного и того же хэша в "человекопонятном" виде, и не более того.
Но это же разные адреса? А то получается, что как-будто 3 адреса из одного публичного ключа  - это один и тот же адрес, но тогда они могли бы конвертироваться друг в друга (как, скажем, в лайткоине адреса на 3 и M)

Адреса это элемент инструкции по трате которая заключена в Scriptpubkey или в случае P2SH - хэш скрипта ,который необходим для сверки, когда хозяин адреса решит потратить свои средства.

Это очень важно для осознания. В любой криптографии с открытым ключом у нас есть пара privkey - pubkey . И адреса это просто разные методы хэширования и превращения оригинального публичного ключа (о чем писали выше неоднократно).
Поэтому, в какой то мере, одному публичному ключу соответствуют сразу несколько адресов в разных системах. Отличие составляет лишь P2SH, так как адреса "3" получаются не прямо из публичного ключа, а из redeem script-a, и при одинаковом публичном ключе они могут отличаться.

Это кстати очень хорошо видно по Electrum: при использовании функции "Swap", Electrum просит указать в каком формате необходимо превратить импортируемый приватник: p2pkh, p2wpkh, p2wpkh-p2sh .
hero member
Activity: 1218
Merit: 858
December 12, 2019, 06:09:12 PM
#26
~Даже если у двух конкретных ключей один хэш, им может соответствовать разный набор P2PK и raw multisig выходов, поскольку при их создании не используется функция hash160. ~

Темный лес. Я всегда думал что если хэш одинаковый то и ключ полностью одинаковый, иначе были бы отличия в хэше. Не понимаю.
Ни одна хэш функция, даже будучи криптографической и не имеющей багов, не может взять энтропию из воздуха.

Ну вот теперь все значительно понятнее стало)))



Я всегда думал что если хэш одинаковый то и ключ полностью одинаковый, иначе были бы отличия в хэше. Не понимаю.
Тут дело не в том, что хеш-функция может быть неидеальна и давать коллизии, а в том, что размерность хеша меньше размерности ключа (20 байт против 32). То есть это как пытаться 20 яблок положить в 10 корзин - по одному в корзину поместить никак не получится. Поэтому на каждый немультиподписной адрес приходится в среднем 296 приватных ключей. Если представить емкость размером с Землю, заполненную горохом, то количество горошин примерно и будет равно количеству приватников, "отпирающих" каждый адрес ). И тем не менее, я не слышал, чтобы были найдены хотя бы два ключа, дающих одинаковый хеш.

Вот теперь стало немного понятнее, спасибо. Нужно почитать еще будет об этом.
legendary
Activity: 3108
Merit: 1358
December 12, 2019, 05:59:09 PM
#25
Тем не менее, я не слышал, чтобы были найдены хотя бы два ключа, дающих одинаковый хеш.
В биткойне такого действительно не было. Но случалось в альткойнах, авторы которых брались за изобретение хэш функции с нуля, не имея соответствующего образования. К примеру, хэш функцию в IOTA взламывали.
legendary
Activity: 1792
Merit: 1909
Crypto Swap Exchange
December 12, 2019, 04:59:29 PM
#24
Я всегда думал что если хэш одинаковый то и ключ полностью одинаковый, иначе были бы отличия в хэше. Не понимаю.
Тут дело не в том, что хеш-функция может быть неидеальна и давать коллизии, а в том, что размерность хеша меньше размерности ключа (20 байт против 32). То есть это как пытаться 20 яблок положить в 10 корзин - по одному в корзину поместить никак не получится. Поэтому на каждый немультиподписной адрес приходится в среднем 296 приватных ключей. Если представить емкость размером с Землю, заполненную горохом, то количество горошин примерно и будет равно количеству приватников, "отпирающих" каждый адрес ). И тем не менее, я не слышал, чтобы были найдены хотя бы два ключа, дающих одинаковый хеш.
legendary
Activity: 1694
Merit: 4213
December 12, 2019, 04:37:09 PM
#23
~Даже если у двух конкретных ключей один хэш, им может соответствовать разный набор P2PK и raw multisig выходов, поскольку при их создании не используется функция hash160. ~

Темный лес. Я всегда думал что если хэш одинаковый то и ключ полностью одинаковый, иначе были бы отличия в хэше. Не понимаю.
Ни одна хэш функция, даже будучи криптографической и не имеющей багов, не может взять энтропию из воздуха.
Можно както объяснить на пальцах, чтобы простому обывателю тоже было понятно.
legendary
Activity: 3108
Merit: 1358
December 12, 2019, 12:10:45 PM
#22
~Даже если у двух конкретных ключей один хэш, им может соответствовать разный набор P2PK и raw multisig выходов, поскольку при их создании не используется функция hash160. ~

Темный лес. Я всегда думал что если хэш одинаковый то и ключ полностью одинаковый, иначе были бы отличия в хэше. Не понимаю.
Ни одна хэш функция, даже будучи криптографической и не имеющей багов, не может взять энтропию из воздуха.
hero member
Activity: 1218
Merit: 858
December 12, 2019, 10:48:23 AM
#21
~Даже если у двух конкретных ключей один хэш, им может соответствовать разный набор P2PK и raw multisig выходов, поскольку при их создании не используется функция hash160. ~

Темный лес. Я всегда думал что если хэш одинаковый то и ключ полностью одинаковый, иначе были бы отличия в хэше. Не понимаю.
legendary
Activity: 3108
Merit: 1358
December 11, 2019, 04:20:09 AM
#20
Поясните, почему это множество нас интересует
По двум причинам:

1. Даже если брутфорсер уже нашел 290 коллизий, нет никакой гарантии что очередной проверяемый ключ даст уникальное значение, а не будет новой коллизией. Все равно придется перебирать все ключи, без оглядки на ранее найденные коллизии.

2. От ключа могут зависеть не только P2SH/P2PKH выходы, но и другие скрипты. Даже если у двух конкретных ключей один хэш, им может соответствовать разный набор P2PK и raw multisig выходов, поскольку при их создании не используется функция hash160. Проверка по хэшу на оба таких ключа даст положительный результат, т.е. что баланс есть, но для полной траты балансов придется использовать разные ключи. Это актуально, потому что во времена продажи пиццы по 10 тысяч биткойнов P2PK транзакции использовались довольно часто, и на таких выводах висит очень много монет.
legendary
Activity: 1792
Merit: 1909
Crypto Swap Exchange
December 11, 2019, 03:55:41 AM
#19
А никакого практического смысла нет. Grin
На доступном в обозримом будущем уровне технологического развития...
Мне, видимо, следовало выразиться яснее. Я имел в виду, какой смысл в знании, что пар ключ-хеш не 2160, а больше?

Вы написали:
Quote
Потому что нас интересует не просто множество ни с чем не связанных хэшей, что было бы совершенно бесполезно, а множество пар (ключ, хэш). Это очень разные вещи.
Поясните, почему это множество нас интересует, и почему полезно?
legendary
Activity: 3108
Merit: 1358
December 11, 2019, 03:33:43 AM
#18
Где здесь ошибка?
Ошибки нет, в данном случае всё зависит от точки зрения. Впрочем, брутфорсеру независимо от этого придется перебрать все разрешенные значения закрытого ключа. Потому что он не может знать заранее, какой ключ даст уникальный хэш, а какой - коллизию.

Кстати, количество пар у меня получилось 2257, а не 2161.
Я оценил исходя из стартового поста, в котором написано что "коллайдер" ставит своей целью перебор множества из 2160 ключей. Можно почитать, что там у них написано в планах, но вряд ли стоит заморачиваться.

А какой в этом практический смысл?
А никакого практического смысла нет. Grin

На доступном в обозримом будущем уровне технологического развития эта задача в любом случае неразрешима за время, которое придется прождать до схлопывания вселенной, с какой стороны ни посмотри. Пока что даже RSA ключи толком не могут взломать в разумные сроки. Недавний рекорд для быстрого взлома был вроде 700 бит, если не ошибаюсь, что в три раза короче реально используемых ключей. А ведь эта задача несравнимо легче в вычислительном плане, чем эллиптическая криптография.

С быстрым квантовым компьютером, оснащенным достаточным количеством памяти, было бы веселее и можно было бы щелкать такие ключи пачками, за время заваривания чашки чая. Но таких нет и пока даже близко непонятно, как их придумать.
legendary
Activity: 1792
Merit: 1909
Crypto Swap Exchange
December 11, 2019, 01:06:20 AM
#17
Даже если у хэша длина 1 бит, соответствий (ключ, хэш) всё равно будет 2161.
А какой в этом практический смысл?

У нас есть 2256 закрытых ключей, из каждого получаем 2 открытых ключа - сжатый (33 байта) и несжатый (65 байт).
Все эти ключи (2257) хешируем HASH160, получается 2160 уникальных адресов и 297 коллизий.

Где здесь ошибка? Кстати, количество пар у меня получилось 2257, а не 2161.
legendary
Activity: 3108
Merit: 1358
December 11, 2019, 12:30:05 AM
#16
Как такое возможно?
Потому что нас интересует не просто множество ни с чем не связанных хэшей, что было бы совершенно бесполезно, а множество пар (ключ, хэш). Это очень разные вещи.

Это все равно что 4 значения вместить в одном бите, 8 в двух и так далее.
Не всё равно. Даже если у хэша длина 1 бит, соответствий (ключ, хэш) всё равно будет 2161. Просто в этих парах будут коллизии, то есть одинаковые значения хэша для разных ключей.
legendary
Activity: 1792
Merit: 1909
Crypto Swap Exchange
December 10, 2019, 11:48:05 PM
#15
2161 значений hash160
Как такое возможно? Это все равно что 4 значения вместить в одном бите, 8 в двух и так далее.
legendary
Activity: 3108
Merit: 1358
December 10, 2019, 05:36:22 PM
#14
Поэтому все эти адреса помещаются в одном общем пространстве - 2160.
И да и нет. На самом деле пространство больше, потому что для легаси адресов разрешено использование несжатых публичных ключей. Поэтому за их счёт на 2160 закрытых ключей приходится 2161 значений hash160. Из которых половина валидна для всех типов выходов (p2pkh, P2SH, p2wpkh), а другая валидна только для p2pkh и не может применяться для двух других типов выходов. Вернее, может, но такие выходы нельзя будет потратить.
legendary
Activity: 2301
Merit: 2269
December 10, 2019, 02:52:54 PM
#13
Так сколько адресов в итоге нужно считать в первом посте?
Получается, 2161 P2(W)PKH + 2160 P2WPKH-P2SH = 1.5 * 2161. Так?

Все три типа адресов (P2PKH, P2SH и P2WPKH) используют в качестве хеш-функции на последнем этапе одну и ту же функцию - RIPEMD160. Её выходной диапазон значений - от 0 до 2160. Адрес любого типа - это всего лишь вот этот 160-битный хеш, ничего кроме 160 бит в адресе нет. Поэтому все эти адреса помещаются в одном общем пространстве - 2160.

Исключение - P2WSH-адрес, где в качестве хеш-функции используется только SHA-256 и пространство адресов получается  2256.
legendary
Activity: 3108
Merit: 1358
December 10, 2019, 12:29:42 PM
#12
Оценка "более" или "менее" в отношении надежности в данном случае представляется как штука сильно теоретическая. Криптостойкость 128 бит, что на современном железе в принципе невзламываемо ни перебором, ни криптоанализом, если подписывание делается с использованием нормального ГСЧ. До появления квантовых компьютеров все эти коллайдеры - не более, чем смехотворная имитация бурной деятельности, результат известен заранее. Если ребята делают это всерьёз, то по ним плачут ударные дозы аминазина. Если же под попил донатов, то схема понятна, и остаётся поднять пальцы вверх и оценить грамотный развод спонсоров.
legendary
Activity: 1792
Merit: 1909
Crypto Swap Exchange
December 10, 2019, 10:42:37 AM
#11
Хорошо, я понял, спасибо за ликбез.

Так сколько адресов в итоге нужно считать в первом посте?

Получается, 2161 P2(W)PKH + 2160 P2WPKH-P2SH = 1.5 * 2161. Так?

P2(W)SH получается самый надежный тип адреса - его никто не будет даже пытаться ломать всякими "коллайдерами" )).
Pages:
Jump to: