Новый вид мошенничества: раскрываемые закрытые ключи

Новый вид мошенничества: раскрываемые закрытые ключи


В криптосообществе появился новый вид мошенничества: распространение кошельков с неслучайным алгоритмом создания закрытых ключей. Анонимный пользователь на сайте Pastebin представил доказательства того, что один из кошельков для Биткоина генерирует закрытые ключи, которые очень легко расшифровать и, следовательно, забрать находящиеся во взломанном кошельке биткоины. Названия кошелька в публикации не упоминается, не сообщается также, следует ли считать эти действия результатом вредоносной программы или просто ошибкой кода.
Чтобы понять суть обнаруженной проблемы, необходимо осознавать, как работает биткоин в целом, и в частности, что представляет собой закрытый ключ.
Если представить адрес криптовалютного кошелька в виде замка, то закрытый ключ используется для того, чтобы открыть этот замок и потратить средства, которые хранятся внутри.
При создании кошелька на устройстве - неважно, компьютере, телефоне или чем-то еще, генерируется случайный набор букв и цифр - это и есть закрытый ключ. Именно закрытый ключ (и только он) обеспечивает право обладания монетами. Контроль над закрытым ключом позволяет тратить монеты из кошелька.

После того, как закрытый ключ создан, он проходит через функцию хэширования. Хэш-функция — это математическая функция, которая, после помещения в нее числа или цепочки символов, возвращает другую, новую цепочку, которая уже не имеет обратной связи с первым числом/цепочкой. Получить второе из первого очень просто, тогда как получить первое из второго математически невозможно. Второе число – это публичный (открытый) ключ, и он хэшируется вновь - на этот раз, чтобы получить адреса кошельков биткоина.
«Расшифровка» закрытого ключа

Поскольку закрытым ключом может в буквальном смысле быть все, что угодно, технически мы можем взять любую фразу или цепочку букв и цифр и использовать их в качестве закрытого ключа (например, «satoshi nakamoto») . Другими словами, можно забросить в хэш-функцию любой набор символов и создать кошелек. После этого создается публичный ключ и – добро пожаловать в мир криптовалют! Однако так поступать настоятельно не рекомендуется, поскольку очевидно, что раз вы можете придумать закрытый ключ, то раскрыть его сможет и кто-то другой. Такой ключ уже не будет по-настоящему случайным, а ведь именно это свойство необходимо для создания безопасного кошелька.
К примеру, кошелек BrainWallet io оснащен инструментом, позволяющим пользователям поместить в него все, что они пожелают, и получить из этого пару открытый/закрытый ключ. Поскольку блокчейн представляет собой открытый публичный реестр, в нем можно наблюдать множество адресов, созданных из обычных фраз. Использовать подобные словосочетания в качестве ключей, мягко скажем, неразумно, однако иногда люди отправляют монеты просто для того, чтобы просто оставить след в блокчейне.
Проверка закрытых ключей для обнаружения биткоинов

Анонимный пользователь Pastebin использовал доступные в блокчейне фрагменты данных для того, чтобы проверить, использовались ли какие-то из них для создания кошельков. Он использовал хеширование для каждого блока, брал хэшированные несколько раз простые слова и фразы, и, наконец, стал тестировать все адреса биткоина. Помимо адресов с неистраченными балансами, он также включил в свой анализ адреса с нулевым балансом.
Первый эксперимент заключался в проверке хэшей номеров блоков и состоял в том, чтобы определить, использовались ли эти номера блоков для создания закрытых ключей. И действительно, пользователем было обнаружено более сорока адресов, которые за последние семь лет использовались для получения биткоинов. Все они впоследствии были подчищены, тем не менее, пользователь решил продолжить расследование.
Затем он использовал корни Меркла (Merkle roots) некоторых блоков на предмет существования раскрываемых ключей, и вновь ему удалось обнаружить адреса, на которые отправлялись монеты. К сожалению, все балансы были нулевыми, но охота становилась все интереснее. Третий эксперимент проводился с использованием простых слов, несколько раз прошедших хэширование, таких как “hello” или “sender”. Хэши этих слов затем хэшировались снова и снова, добавляя дополнительный слой защиты и уменьшая шансы на то, что ключ будет открыт. Если вы захэшируете слово один раз, впоследствии вы сможете повторить это еще и еще, и в конечном итоге вы получите закрытый ключ, который уже когда-то использовался. Таким образом было обнаружено несколько адресов, использовавших этот метод. Один из самых забавных было слово “password” (пароль), после хэширования которого 1 975 раз получался действующий закрытый ключ, на который отправлялись средства. Более чем вероятно, что создатель этого адреса родился в 1975 году.

Report Page