Завещания не будет
В современном цивилизованном мире слово Интернет воспринимается жителями Земли точно так же, как и в прошлом веке слово радио или ручные механические мясорубки для измельчения овощей и различного вида мяса.
Интернет – глобальная система взаимосвязанных компьютерных сетей, позволяющая хранить, обрабатывать и передавать информацию, охватывает весь мир, соединяя миллионы компьютеров, серверов и других устройств с помощью различных технологий, включая кабели, оптоволокно и спутники.
У большинства пользователей всемирной сети знания о возможностях данной системы ограничиваются скачиванием и хранением различных картинок и видео, в лучшем случае – классической игрой в тетрис с пиксельной графикой или аркадной компьютерной игрой Digger – «Землекоп», выпущенной канадской компанией Windmill Software в 1983 году. И только небольшая часть продвинутых клиентов сети, хорошо знает, что в Интернете есть деньги - миллиарды долларов, в значительной части – ничейных, по случаю смерти их владельцев или банальной утрате хозяином цифрового ключа к своему электронному кошельку. И все это - благодаря некоему Сатоши Накамото.
Сатоши Накомото – псевдоним человека или группы людей, разработавших протокол криптовалюты биткойн (BTC) и создавших первую версию программного обеспечения, в котором этот протокол был реализован. В начале 2009 года он опубликовал первую версию клиентского модуля сети Биткойн и запустил его в работу. Изобретение было направлено на создание децентрализованной системы, независимой от банков и правительств, которая могла бы решить проблемы глобального финансового кризиса. Накамото заложил основы всей индустрии криптовалют, создав первую в мире успешную децентрализованную платежную систему. Создатель на то время даже не предполагал, как за эти годы вырастит стоимость его цифровых денег – на данный час, более ста тысяч долларов за 1 BTC. И цена продолжает расти.
Посмотреть баланс любого крипто-кошелька, легко можно найдя его адрес в блокчейне – децентрализованной и неизменяемой распределенной базе данных, представляющую собой цепочку блоков с записанной в них информацией. Каждый блок связан с предыдущим с помощью криптографии, что делает очень трудным изменение или подделку данных, записанных ранее. Все, на первый взгляд, кажется, легко и просто. Любой пользователь сети может смело, зайдя в блокчейн, полюбоваться содержимым чужих кошельков. А вот чтобы завладеть этими цифровыми деньгами – нужен ключ, который знает только владелец кошелька. Или знал …
Ключ кошелька представляет собой обыкновенное десятичное число, которое проходит алгоритм преобразования специальными криптографическими функциями, созданными именно для этих целей. В результате таких изменений получается сам адрес биткойн-кошелька, на который можно переводить средства, или, наоборот, снимать цифровые деньги, и находящийся в свободном доступе для выполнения необходимых транзакций. Такой вот себе уникальный буквенно-цифровой идентификатор, аналог банковского счета в сети Bitcoin, который используется для отправки и получения криптовалюты. И получить обратно ключ, зная адрес кошелька, не представляется возможным, так как все используемые функции шифрования – односторонние. Биткойн-адрес дешифровке не подлежит. И сколько людей, заинтересовавшихся новой платежной системой, не покидала мысль – а вдруг он найдет ключ, вдруг случайно возьмет первое попавшееся число и оно так удачно подойдет к нужному и «толстому» кошельку. Но надежды угасали, когда человек сталкивался с диапазоном этих случайных чисел. Количество возможных биткоин-ключей, а это приблизительно десять в 77-ой степени, значительно больше, чем число атомов на Земле. Безопасность биткойна и строится на том, что количество возможных ключей настолько велико, что его невозможно перебрать даже за время существования вселенной.
* * *
Смыслов находился в своей квартире, за большим рабочим столом, на котором лежал ноутбук компании «DELL» с запущенной на нем для выполнения специальной программой. Олега Викторовича, как математика и программиста по специальности, с самого начала ее создания заинтересовала криптовалюта биткойн. Стоимость ее на тот момент была маленькой и особой жажды наживы не вызывала. А вот криптографические функции, используемые для получения биткойн-адреса, его, как математика, заинтересовали. Инструкций по написанию таких функций, как SHA-256, RIPEMD-160 и BASE-58 в Интернете было мало, да и те содержали ошибки в описании. Но благодаря своим профессиональным знаниям, Смыслову удалось создать собственные коды этих функций. И где? На устаревшем в настоящее время языке программирования Foxpro-2.6X. Смешно подумать, но они точно рассчитывали нужные значения. Мелочь, а приятно. Вот только скорость выполнения оставляла желать лучшего. Да и неважно – главное для Олега Викторовича было разобраться в принципах теории криптографии. Это увлекало и побуждало к дальнейшему изучению структуры биткойна.
Внезапно мужчина прижал рукой левую часть груди и свободной правой дотянулся до лежащей на столешнице упаковки с препаратом корвалмент. Достав оттуда одну капсулу лекарств, положил ее под язык. Сердце его беспокоило давно, а для человека, возраст которого перешагнул за пятьдесят, эти колики становятся все опаснее. Врачи давно настаивали на операции, но разве мог себе позволить Олег Викторович прерваться от своей давнишней затеи подобрать ключ хотя бы к одному из кошельков с этими проклятыми биткойнами. Врачи – потом. Тем более, что цель поиска, как ему казалось, была уже близка.
Сердечная боль слегка приутихла. Хозяин квартиры посмотрел на экран ноутбука, на котором в окошке командной строки одни цифры очень быстро менялись на другие. Специальная утилита активно подбирала ключ к заданному адресу определенного формата.
Когда Смыслов разобрался с работой криптографических функций, он обратил внимание на язык программирования Python, который буквально был напичкан подобными кодами. Теперь, с помощью этого программного обеспечения, можно было легко использовать нужные крипто-функции, и писать простые коды для формирования биткоин-адресов от случайно взятых ключей. Затем оставалось только проверить полученный адрес на нахождение его в общей базе адресов с ненулевым балансом, которую любезно предоставляют множество специальных сайтов. Все, казалось бы, просто, если не вспоминать тот огромнейший диапазон, из которого случайно выбирались числа для создания реальных рабочих кошельков. Хотя бы для тех же криптовалютных бирж. Олегу Викторовичу понадобилось несколько месяцев тестирования своих небольших программ, чтобы понять, что это абсолютно пустая трата времени и нужного результата по поиску нужного ключа она не принесет, каким бы не был везучим человек. К тому же, скорость вычисления – каких то 10 тысяч ключей в секунду – слишком мизерная цифра для заоблачного интервала возможных чисел.
Сердце опять напомнило о себе – на этот раз острой болью. Смыслов хотел уже подняться и сходить за аэрозолью нитроглицерина, но передумал – боль внезапно отступила. «Наверное, зря ослушался врачей, - мелькнуло в голове, - так можно и не успеть дать шанс своему здоровью». И о чем я только думаю? Биткойны дороже или, все-таки, жизнь?».
Посидев пару минут с прижатой к левому боку рукой и склоненной головой, мужчина вновь посмотрел на монитор ноутбука, на котором в командной строке не переставала отображаться круговерть цифр, выдаваемая программой.
Как-то просматривая сайты, уделявшие особое внимание созданной криптовалюте, Смыслов нашел информацию, которая его очень заинтересовала. Некий бизнесмен, судя по всему, имеющий немало такой цифровой валюты, перечислил 1000 BTC на созданные им же крипто-кошельки. Исходная сумма была распределена на более мелкие части приблизительно равномерно между адресами - в пределах от 1 до 16 биткоинов. Это действие, скорее всего, было выполнено с целью привлечения внимания пользователей к новой платежной системе, и предложением вычислить самостоятельно каждому желающему ключ к любому понравившемуся биткойн-адресу. Интересом к поставленной задаче и служил относительно небольшой диапазон чисел, из которых и формировались биткойн-кошельки, а бонусом, как плата за взлом, были деньги, лежащие на этих адресах. Конечно – скажем, 15-и разрядное число тоже огромная величина. Но это намного меньше, чем 78 знаков числа, допустимого при создании реального биткойн-адреса. Информация о решенных головоломках постоянно обновлялась на сайте в реальном режиме времени – ключи из самых маленьких диапазонов были найдены незамедлительно. По ходу увеличения интервала задача усложнялась. Но время от времени очередные решения, все-таки, появлялись на сайте.
Смыслов, не спеша, поднялся со стула и, подойдя к окну, открыл его настежь. Уже прохладный вечерний воздух уходящего августа моментально заполонил комнатное пространство. Дышать стало легче, хотя Олег Викторович чувствовал себя плохо – порок сердечного клапана ничего хорошего не предвещал. С операцией, похоже, тянуть дальше просто было опасно. Мужчина сделал несколько глубоких вдохов и вернулся за стол.
После тщательного анализа найденного на сайте материала, Смыслов взял в разработку биткоин-кошелек с наименьшим интервалом нахождения ключа, пропустив два самых наименьших, так как был уверен, что ими уже занимаются программисты, и скоро они будут взломаны. Это вопрос времени, и абсолютно не хотелось его тратить попусту.
Разрядность выбранного ключа составляла 19 знаков в шестнадцатеричной системе исчисления. Баланс кошелька составлял, по текущему курсу, приблизительно 800 тысяч долларов США. Сумма внушительная – завладеть ею было бы очень кстати. Но старая проблема никуда не исчезла – применять к поиску созданные ранее коды Python было бесполезно, так как мизерная скорость процесса не приведет к нужному ключу. Решение, казалось, было найдено, когда спустя несколько дней Смыслов на веб-платформе для хостинга IT-проектов GitHub нашел программу OclvanityGen++ с исходным кодом. В данный момент именно этот софт выполнялся на ноутбуке.
Олег Викторович не выключал его ни днем, ни ночью – только раз в сутки переводил гаджет в спящий режим, чтобы дать хоть какую-то возможность немного отдохнуть процессору. Код программы был написан на довольно сложном современном языке программирования С++, которого Смыслов не знал, а тратить время на изучение не хотел. Да и желания особого не было. Утилита была рабочей, и это устраивало заинтересованных пользователей. Ценность ее была в том, что она могла использовать для вычислений довольно большую память графической видеокарты устройства, что позволяло увеличивать скорость проверки до пяти миллионов ключей в секунду. А это уже что-то.
Изучив приложенную инструкцию по использованию данной утилиты, Смыслов понял, что ее можно запускать с различными параметрами, но с одной целью – найти ключ к цифровому адресу, начальные символы которого указаны в параметрах при запуске. И вот количество этих начальных символов представляло собой особый интерес. Поскольку все биткойн-адреса формата Legacy начинались на единицу, вводить ее одну для поиска было бы, по крайней мере, глупо – программа выдавала бы абсолютно все существующие ключи. А вот по мере увеличения количества начальных символов время поиска увеличивалось, но вероятность определения нужного ключа возрастала. Поэкспериментировав с начальными параметрами при запуске, Олег Викторович понял, что самое оптимальное число начальных символов адреса должно равняться восьми, так как уже при девяти время для поиска хотя бы одного ключа начинается от трех месяцев. Глупо было бы ожидать при таком раскладе какого-то положительного результата. А, учитывая, что длина legacy-адреса варьирует между 26 и 35 знаками, пробовать вводить дополнительные символы из адресной строки просто не разумно.
Смыслов снова встал, подошел к окну и, постояв минуту, вернулся к столу. Сев на стул, взял лежащую на столе «мышку» ноутбука, и открыл в верхней части экрана текстовый файл. В нем были записаны 49 ключей, найденных за время работы программы с фиксированными параметрами запуска и начальными восемью символами 12VVRNPi выбранного Смысловым крипто-кошелька. Все 49 ключей порождали цифровые адреса с таким вот одинаковым строковым началом. Но ни на одном из них не было биткойнов – баланс, как говорится, был нулевым.
Анализируя работу утилиты в процессе поиска этих ключей, Олег Викторович сделал для себя любопытные выводы. Первые ключи были найдены довольно быстро, а время для поиска каждого последующего увеличивалось. И странно, что при поиске очередного ключа никогда не попадался ключ, найденный ранее. Это, с одной стороны, и хорошо, а с другой – плохо. Закрадывалось сомнение - если автором головоломки ключ уже определялся, чтобы перевести на порождаемый им биткойн-адрес определенный баланс монет, то что – его уже нельзя обнаружить повторно? Бред какой-то… Не может такого быть…
А еще Смыслов был абсолютно уверен, что с таким восьмизначным шаблоном начальных символов адреса много ключей не должно существовать. Сколько их вообще может быть Олег Викторович, естественно, не знал, но найденных 49-ти, по его мнению, было уже предостаточно. А значит, затянувшийся почти не целую неделю без перерыва поиск, мог привести к нужному результату. В этом мужчина уже не сомневался. Ни капельки, по-другому быть и не могло.
Смыслов внимательно посмотрел на меняющуюся строчку цифр в командной строке экрана ноутбука. Информация, выводящаяся в ежесекундном сообщении, указывала, что в определенном массиве чисел количество проверенных значений приближалось к 100% выбранных элементов. Олег Викторович разволновался, глядя на быструю череду цифр на мониторе девайса. «Это несомненно победа, - мелькнула мысль, - я, все-таки, добьюсь своей цели».
Эмоциональная нагрузка вызвала сердечную боль. «Черт, только не сейчас. Надо хоть написать какое-то завещание на эти деньги – сумма-то большая. Жаль будет, если пропадут. Или скорую вызвать?». Смыслов положил перед собой чистый лист бумаги, а затем потянулся за контейнером с таблетками.
* * *
Алгоритм программы OclvanityGen++, согласно вложенной в него разработчиком схемы действий, определил окончательный массив чисел, подлежащих проверке на соответствие полученного адреса заданному шаблону и, используя разогретую до предельной температуры видеокарту устройства, обрушил усиленную атаку на ключ, предположительно находящийся в оставшейся области данных, прямым перебором всех чисел по возрастанию. Графический процессор Intel ® HD Graphics 520, объемом в 4 Гигабайта, со скоростью обработки почти 7 миллионов ключей в секунду, с заданным целевым количеством поступающей информации в четыре потока, легко принимал нужные данные для проверки и удалял обработанные данные, как не отвечающие заданным условиям. До окончательного завершения процесса оставалось не так уж и много времени.
* * *
До Смыслова только сейчас дошло, что и оставить-то хоть какое-нибудь завещание ему, оказывается, и некому. Жена умерла, детей у них не было, с дальними родственниками перестал общаться очень давно. Мужчина, держа руку на левой груди, болезненно улыбнулся, вспомнив давно прочитанный рассказ Мишеля Моруа «Завещаю государству», где старый и скупой коллекционер старины, будучи уже в край немощным, решил оставить все свое наследие державе. Но внезапно полыхнувший пожар уничтожил весь антиквариат вместе с его хозяином.
«Может, и мне завещать государству? Хотя – какому государству? А что оно мне дало? Уничтожающие налоги? Убивающие тарифы? Нищенские зарплаты и пенсии? Обойдутся. Значит – никому. Кто захочет много денег – пусть пройдут мой путь. Тогда будут и ценить свой труд».
Смыслов еще больше разволновался – давящая и жгучая боль охватила область сердца. Рука снова потянулась за таблетками, но, сделав несколько судорожных вздохов, мужчина уронил голову на стол. Сердце сидящего внезапно остановилось.
* * *
Спустя некоторое время, программа, закончив последние вычисления, выдала в командной строке сообщение – «Процесс завершен. Найдено 49 ключей, порождающих адрес с паттерном 12VVRNPi. Больше строковых идентификаторов, отвечающих заданному начальному шаблону – не обнаружено».
03.09.2025
Свидетельство о публикации №225090301906