Bitcoin Forum
May 04, 2024, 11:07:08 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: 2 ^ 256 закрытых ключей  (Read 753 times)
zasad@ (OP)
Legendary
*
Offline Offline

Activity: 1750
Merit: 4272



View Profile WWW
December 09, 2019, 11:28:06 AM
Last edit: December 09, 2019, 11:56:17 AM by zasad@
Merited by fillippone (9), mindrust (3), IeSua (2), Symmetrick (2), witcher_sense (1), madnessteat (1), qwed (1)
 #1

Это перевод, оригинал статьи принадлежит fillippone. Спасибо за полезную информацию!

2256 закрытых ключей: насколько велико это число?

Вчера, просматривая bitcoinrabbithole.org, я наткнулся на печально известный веб-сайт https://keys.lol

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

Вот Это Да!
Если вы обнаружите положительный баланс на этих страницах,то вы фактически являетесь владельцем закрытых ключей, поэтому у вас есть доступ к средствам, и ничто не мешает вам перевести их на свой собственный кошелек.

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

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

Я с самого начала знал, что возможности найти что-то были крошечными, но я хотел попробовать, потому что поискав положительные балансы и ничего не найдя, убедило бы меня, что никто не может сделать то же самое с моими собственными битками, так ревниво удерживаемыми в моем холодном кошельке.

В ожидании решения от @babo, я подумал про себя: «Fillippone - единственная пешка в игре жизни"...почему никто никогда не думал об этом?

Вернувшись на bitcoinrabbithole.org, я быстро обнаружил Большой биткойн коллайдер.

https://lbc.cryptoguru.org/abow

Круто, это серьезный проект.
В основном тысячи распределенных серверов ежедневно генерируют и проверяют 26 триллионов (!!!) закрытых ключей.
За первые три года им удалось найти 7 закрытых ключей. Это много! Я предположил, что шансы были намного ниже, но, вероятно, в каком-то кошельке есть какая-то ошибка, использующая неоптимальный генератор случайных чисел для создания ключей. (Здесь необходимы дальнейшие исследования!)


Давайте быстро рассмотрим несколько цифр:
Количество закрытых ключей, теоретически возможно: 2256 или примерно 1077
Количество адресов биткойнов: 2160
Количество закрытых ключей, которые ищет биткойн-коллайдер: 2160
Количество атомов во вселенной: от 1078 до 1082
Количество использованных адресов Биткойн : 18 000 000

Количество закрытых ключей, которое В действительности возможно, немного меньше, чем 2256, как указано здесь

Давайте рассмотрим несколько примеров.
Предположим, у нас есть миллиард активных адресов, каждый с положительным балансом: мы знаем, что это примерно на 103 больше, чем фактическое число.
Вероятно, число атомов во вселенной в 103 раза больше, чем количество адресов, поэтому справедливо сказать, что найти закрытый ключ с положительным количеством примерно так же вероятно, как найти один из этих атомов, разбросанных по всей  видимой вселенной.
Насколько велики миллиарды атомов? Согласно этому ответу Quora, он меньше, чем бактерия E. Coli. Так что догадайтесь взять эту бактерию, измельчить на атомном уровне, распределить ее по вселенной и попытаться найти один из этих атомов. Довольно сложно, не так ли?

Второй пример из этой статьи.  Предположим, мы хотим сканировать все закрытые ключи в поисках положительного баланса и предположим, что каждый житель Земли имеет скорость сканирования в миллиард раз выше, чем двойная текущая вычислительная мощность сети Биткойн, таким образом:
* 10 миллиардов человек;
* умноженный на один миллиард;
* умноженнаяна 2  вычислительная мощность биткойна, около 100 тысяч терахеш в секунду;
получаем: 1 000 000 000 000 * 1 000 000 000 * 100 000 * 100 0000 000 000 = 1010 * 109 * 105 * 1012 = 1036
Для простоты мы округлили '115,792,089,237,316,195,423,570,985,008,687,907,852,837,564,279,074,904,382,605,163,141,518,161,494,336' до 1077,и мы получили, что, если мы проверим каждый отдельный закрытый ключ в поисках положительного баланса, это займет  1077/1036 = сколько лет это будет?
Поскольку в году около 31557600 секунд, это соответствует примерно 1041/31557600 = 3133 годам, что более или менее в 1023 раза превышает предполагаемый возраст Вселенной (в настоящее время оценивается в 13,82 миллиарда лет), короче говоря
100,000,000,000,000,000,000, то есть примерно в 100 миллиардов миллиардов раз больше возраста Вселенной.

Это видео о том, насколько безопасен алгоритм SHA 256.
 https://youtu.be/S9JGmA5_unY

Весь предыдущий пример не учитывал энергию, нужную для таких вычислений. Конечно, все эти очень мощные машины должны питаться какой-то энергией. Сколько энергии будет необходимо? Ну очень много, согласно этой инфографике:




Reddit

Другие примеры того, сколько потребуется, чтобы случайным образом угадать закрытый ключ:
Reddit: время и энергия, необходимые для грубого шифрования AES-256


Дальнейшие ссылки:

Тема Bitcointalk о возможном количестве адресов биткойнов
Освоение Биткоина: Ключи, Адреса

Другие очень большие цифры:

52!: Начинается с простой колоды игральных карт

Вот лишь несколько примеров, если у вас есть дополнительные ресурсы или комментарии, не стесняйтесь размещать свои ниже, и я добавлю в список!


_______________________________________________________________________________ ___________________
От меня.  Легендарная статья
Кто найдет кошелек с баллансом на сайте https://keys.lol/  обязательно напишите Grin

Даже есть люди, которые годами вычисляют https://lbc.cryptoguru.org/stats    Grin


.BEST..CHANGE.███████████████
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
███████████████
..BUY/ SELL CRYPTO..
1714820828
Hero Member
*
Offline Offline

Posts: 1714820828

View Profile Personal Message (Offline)

Ignore
1714820828
Reply with quote  #2

1714820828
Report to moderator
1714820828
Hero Member
*
Offline Offline

Posts: 1714820828

View Profile Personal Message (Offline)

Ignore
1714820828
Reply with quote  #2

1714820828
Report to moderator
1714820828
Hero Member
*
Offline Offline

Posts: 1714820828

View Profile Personal Message (Offline)

Ignore
1714820828
Reply with quote  #2

1714820828
Report to moderator
You can see the statistics of your reports to moderators on the "Report to moderator" pages.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
fillippone
Legendary
*
Offline Offline

Activity: 2156
Merit: 15457


Fully fledged Merit Cycler - Golden Feather 22-23


View Profile WWW
December 09, 2019, 12:26:31 PM
Merited by zasad@ (1)
 #2

это была хорошая статья для написания, еще веселее было читать перевод на русском форуме.
Спасибо за приятные слова.

.
.HUGE.
▄██████████▄▄
▄█████████████████▄
▄█████████████████████▄
▄███████████████████████▄
▄█████████████████████████▄
███████▌██▌▐██▐██▐████▄███
████▐██▐████▌██▌██▌██▌██
█████▀███▀███▀▐██▐██▐█████

▀█████████████████████████▀

▀███████████████████████▀

▀█████████████████████▀

▀█████████████████▀

▀██████████▀▀
█▀▀▀▀











█▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
CASINSPORTSBOOK
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀▀█











▄▄▄▄█
zasad@ (OP)
Legendary
*
Offline Offline

Activity: 1750
Merit: 4272



View Profile WWW
December 09, 2019, 02:14:41 PM
 #3

любителям прочитать про приватные ключи возможно заинтересует также этот пост

Визуальный генератор приватных ключей
https://bitcointalk.org/index.php?topic=5188860

.BEST..CHANGE.███████████████
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
██
███████████████
..BUY/ SELL CRYPTO..
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 09, 2019, 10:25:25 PM
 #4

Количество адресов биткойнов: 2160
Побольше, по-моему:
2160 адресов на "1" (P2PKH)
2160 адресов на "3" (P2SH)
2160 адресов на "bc1" (42 символа) (P2WPKH)
2256 адресов на "bc1" (62 символа) (P2WSH)

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 09, 2019, 11:21:23 PM
Last edit: December 09, 2019, 11:36:50 PM by Balthazar
Merited by fillippone (2), johhnyUA (1), witcher_sense (1), madnessteat (1), zasad@ (1), Symmetrick (1)
 #5

Закрытых ключей меньше 2^256 штук. Если точнее, то твердолобая реализация конечно же может использовать можно любое число на отрезке [0, 2^256 - 1], но безопасными в качестве ключей являются только числа меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141. Потому что бОльшие значения могут иметь соответствие более чем одному публичному ключу. Поэтому, практически все библиотеки при загрузке ключа первым делом проверяют, чтобы загруженное значение было меньше 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141.

Количество адресов биткойнов: 2160
Побольше, по-моему:
2160 адресов на "1" (P2PKH)
2160 адресов на "3" (P2SH)
2160 адресов на "bc1" (42 символа) (P2WPKH)
2256 адресов на "bc1" (62 символа) (P2WSH)
Значение HASH160 для всех типов адресов (legacy, P2WPKH-in-p2sh, bc1-P2WPKH) вычисляется одинаково, поэтому формат адреса не имеет никакого значения. Это просто разные способы записи одного и того же хэша в "человекопонятном" виде, и не более того.

Но адресов действительно больше, хотя и не поэтому. Дело в том, что публичный ключ может быть записан в двух формах - сжатой и несжатой. По этой причине для легаси адресов, тех что начинаются с 1, каждому приватному ключу гарантированно соответствует по крайней мере два возможных адреса. Для сегвит адресов (как нативных bc1, так и P2SH) есть обязательное требование использовать именно сжатый ключ, поэтому такой неопределенности уже нет.

Итого, на 2^160 закрытых ключей получается:

2161 адресов на "1" (P2PKH)
2160 адресов на "3" (P2WPKH-in-P2SH)
2160 адресов на "bc1" (42 символа) (P2WPKH)

Где 2160 легаси адресов будет использовать тот же самый хэш, что и сгенерированные из того же приватного ключа P2WPKH-in-P2SH и P2WPKH адреса, а для оставшихся 2160 легаси адресов не будет соответствия среди новых.

P2WSH адреса совсем другая степь, для них никакого соответствия не будет. Равно как и для обычных P2SH адресов, не сегвитных.
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 10, 2019, 07:00:14 AM
Last edit: December 10, 2019, 07:43:59 AM by igor72
 #6

Значение HASH160 для всех типов адресов (legacy, P2WPKH-in-p2sh, bc1-P2WPKH) вычисляется одинаково, поэтому формат адреса не имеет никакого значения. Это просто разные способы записи одного и того же хэша в "человекопонятном" виде, и не более того.
Но это же разные адреса? А то получается, что как-будто 3 адреса из одного публичного ключа  - это один и тот же адрес, но тогда они могли бы конвертироваться друг в друга (как, скажем, в лайткоине адреса на 3 и M).
Quote
Дело в том, что публичный ключ может быть записан в двух формах - сжатой и несжатой.
Точно! Про несжатые P2PKH вылетело из головы.
Quote
Итого, на 2^160 закрытых ключей получается:
Почему на 2^160? На 2^256, в среднем 2^96 закрытых ключа будут давать одинаковый адрес.
Quote
P2WSH адреса совсем другая степь, для них никакого соответствия не будет. Равно как и для обычных P2SH адресов, не сегвитных.
Да, но я говорил про количество всех возможных биткоин-адресов (не обязательно полученных из ключа). P2WSH-адрес тоже является биткоин-адресом, не так ли?

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
A-Bolt
Legendary
*
Offline Offline

Activity: 2314
Merit: 2302


View Profile
December 10, 2019, 09:51:35 AM
Last edit: December 10, 2019, 12:25:57 PM by A-Bolt
Merited by igor72 (1), kzv (1), Symmetrick (1), TechPriest (1)
 #7

Но это же разные адреса? А то получается, что как-будто 3 адреса из одного публичного ключа  - это один и тот же адрес, но тогда они могли бы конвертироваться друг в друга (как, скажем, в лайткоине адреса на 3 и M).

По крайней мере, адрес P2PKH (1...) и P2PWKH (bc1...) - это один и тот же хеш публичного ключа RIPEMD160(SHA256(pubKey)), только первый преобразуется в base58check, а второй - в bech32, исключительно для человекочитаемого отображения. Внутри выхода транзакции этот хеш в виде 20-байтной последовательности будет выглядеть одинаково и для P2PKH-выхода, и для P2WPKH-выхода.

Совместимые SegWit-адреса (P2PWKH-P2SH) создаются следующим образом:
1. Берётся хеш приватного ключа RIPEMD160(SHA256(pubKey))
2. К нему спереди добавляются два байта 0014(HEX)
3. Над полученной последовательностью из 22 байт снова выполняется операция хеширования RIPEMD160(SHA256(0014<hashPubKey>))
4. Результат хеширования представляется в кодировке base58check c версией 05.

Таким образом, получается, что из legacy-адреса можно получить bech32-адрес, и наоборот.
Из legacy-адреса или bech32-адреса можно получить P2PWKH-P2SH-адрес, а наоборот не получится.
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 10, 2019, 11:37:12 AM
 #8

Но это же разные адреса? А то получается, что как-будто 3 адреса из одного публичного ключа  - это один и тот же адрес, но тогда они могли бы конвертироваться друг в друга (как, скажем, в лайткоине адреса на 3 и M).
Они и могут. Лайткойн плохой пример, это копипастный шиткойн, который не принёс и никогда не принесёт ничего нового.

Да, но я говорил про количество всех возможных биткоин-адресов (не обязательно полученных из ключа). P2WSH-адрес тоже является биткоин-адресом, не так ли?
Да, но функционально не эквивалентен и потому этот вариант не имеет смысла учитывать наравне с остальными
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 10, 2019, 01:27:56 PM
 #9

[...]
Ок, я понимаю, что 20-байтный хеш в P2PKH и P2WPKH одинаковый, можно ли после преобразования в удобный формат считать их одним адресом хотя бы в контексте расчетов в первом посте? Я думаю, что нет. Ведь при кодировании в base58check еще два SHA256 считать приходится, так что конвертация из bech32 в base58check проходит лишь в два раза быстрее, чем полная генерация P2PKH-адреса из ключа (про скорость кодирования в bech32 не знаю, чек-сумма как-то хитро там считается и, кажется, без хешей).

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
A-Bolt
Legendary
*
Offline Offline

Activity: 2314
Merit: 2302


View Profile
December 10, 2019, 02:03:55 PM
Merited by igor72 (2), Symmetrick (1)
 #10

Ок, я понимаю, что 20-байтный хеш в P2PKH и P2WPKH одинаковый, можно ли после преобразования в удобный формат считать их одним адресом хотя бы в контексте расчетов в первом посте? Я думаю, что нет. Ведь при кодировании в base58check еще два SHA256 считать приходится, так что конвертация из bech32 в base58check проходит лишь в два раза быстрее, чем полная генерация P2PKH-адреса из ключа (про скорость кодирования в bech32 не знаю, чек-сумма как-то хитро там считается и, кажется, без хешей).

Когда я захотел просканировать пространство приватных ключей в диапазоне:
от 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001
до 00000000 00000000 00000000 00000000 00000000 00000000 00000000 FFFFFFFF
на наличие транзакций, содержащих адреса, соответствующие этим приватным ключам, я сделал это так:

Вычислил публичные ключи от приватных ключей из указанного диапазона, вычислил хеши этих публичных ключей и записал их в файл в виде 20-байтных последовательностей.

Далее просканировал все выходы транзакций блокчейна и выцарапал из них хеши публичных ключей в виде, опять же, 20-байтных последовательностей, записав их в два файла: один - для P2PKH-выходов, второй - для P2WPKH-выходов.

Ну, и наконец, проверил наличие хешей из двух последних файлов в первом файле. Заметьте, мне ни разу не понадобились преобразования в base58check и bech32. Для каких задач, по-вашему, нужны эти преобразования?
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 10, 2019, 02:42:37 PM
 #11

Хорошо, я понял, спасибо за ликбез.

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

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

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

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 10, 2019, 04:29:42 PM
Last edit: December 10, 2019, 04:44:09 PM by Balthazar
 #12

Оценка "более" или "менее" в отношении надежности в данном случае представляется как штука сильно теоретическая. Криптостойкость 128 бит, что на современном железе в принципе невзламываемо ни перебором, ни криптоанализом, если подписывание делается с использованием нормального ГСЧ. До появления квантовых компьютеров все эти коллайдеры - не более, чем смехотворная имитация бурной деятельности, результат известен заранее. Если ребята делают это всерьёз, то по ним плачут ударные дозы аминазина. Если же под попил донатов, то схема понятна, и остаётся поднять пальцы вверх и оценить грамотный развод спонсоров.
A-Bolt
Legendary
*
Offline Offline

Activity: 2314
Merit: 2302


View Profile
December 10, 2019, 06:52:54 PM
Merited by igor72 (1), kzv (1)
 #13

Так сколько адресов в итоге нужно считать в первом посте?
Получается, 2161 P2(W)PKH + 2160 P2WPKH-P2SH = 1.5 * 2161. Так?

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

Исключение - P2WSH-адрес, где в качестве хеш-функции используется только SHA-256 и пространство адресов получается  2256.
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 10, 2019, 09:36:22 PM
 #14

Поэтому все эти адреса помещаются в одном общем пространстве - 2160.
И да и нет. На самом деле пространство больше, потому что для легаси адресов разрешено использование несжатых публичных ключей. Поэтому за их счёт на 2160 закрытых ключей приходится 2161 значений hash160. Из которых половина валидна для всех типов выходов (p2pkh, P2SH, p2wpkh), а другая валидна только для p2pkh и не может применяться для двух других типов выходов. Вернее, может, но такие выходы нельзя будет потратить.
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 11, 2019, 03:48:05 AM
 #15

2161 значений hash160
Как такое возможно? Это все равно что 4 значения вместить в одном бите, 8 в двух и так далее.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 11, 2019, 04:30:05 AM
Last edit: December 11, 2019, 04:45:56 AM by Balthazar
 #16

Как такое возможно?
Потому что нас интересует не просто множество ни с чем не связанных хэшей, что было бы совершенно бесполезно, а множество пар (ключ, хэш). Это очень разные вещи.

Это все равно что 4 значения вместить в одном бите, 8 в двух и так далее.
Не всё равно. Даже если у хэша длина 1 бит, соответствий (ключ, хэш) всё равно будет 2161. Просто в этих парах будут коллизии, то есть одинаковые значения хэша для разных ключей.
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 11, 2019, 05:06:20 AM
Last edit: December 11, 2019, 05:49:27 AM by igor72
 #17

Даже если у хэша длина 1 бит, соответствий (ключ, хэш) всё равно будет 2161.
А какой в этом практический смысл?

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

Где здесь ошибка? Кстати, количество пар у меня получилось 2257, а не 2161.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 11, 2019, 07:33:43 AM
Last edit: December 11, 2019, 07:48:42 AM by Balthazar
 #18

Где здесь ошибка?
Ошибки нет, в данном случае всё зависит от точки зрения. Впрочем, брутфорсеру независимо от этого придется перебрать все разрешенные значения закрытого ключа. Потому что он не может знать заранее, какой ключ даст уникальный хэш, а какой - коллизию.

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

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

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

С быстрым квантовым компьютером, оснащенным достаточным количеством памяти, было бы веселее и можно было бы щелкать такие ключи пачками, за время заваривания чашки чая. Но таких нет и пока даже близко непонятно, как их придумать.
igor72
Legendary
*
Offline Offline

Activity: 1834
Merit: 2003


Crypto Swap Exchange


View Profile
December 11, 2019, 07:55:41 AM
 #19

А никакого практического смысла нет. Grin
На доступном в обозримом будущем уровне технологического развития...
Мне, видимо, следовало выразиться яснее. Я имел в виду, какой смысл в знании, что пар ключ-хеш не 2160, а больше?

Вы написали:
Quote
Потому что нас интересует не просто множество ни с чем не связанных хэшей, что было бы совершенно бесполезно, а множество пар (ключ, хэш). Это очень разные вещи.
Поясните, почему это множество нас интересует, и почему полезно?

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
Balthazar
Legendary
*
Offline Offline

Activity: 3108
Merit: 1358



View Profile
December 11, 2019, 08:20:09 AM
Last edit: December 11, 2019, 08:37:27 AM by Balthazar
Merited by KTChampions (1), igor72 (1), Symmetrick (1)
 #20

Поясните, почему это множество нас интересует
По двум причинам:

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

2. От ключа могут зависеть не только P2SH/P2PKH выходы, но и другие скрипты. Даже если у двух конкретных ключей один хэш, им может соответствовать разный набор P2PK и raw multisig выходов, поскольку при их создании не используется функция hash160. Проверка по хэшу на оба таких ключа даст положительный результат, т.е. что баланс есть, но для полной траты балансов придется использовать разные ключи. Это актуально, потому что во времена продажи пиццы по 10 тысяч биткойнов P2PK транзакции использовались довольно часто, и на таких выводах висит очень много монет.
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!