Содержание статьи
В январе 2026 года один из авторов блога vc.ru рассказал, как потерял 20 тысяч долларов на продаже популярного телеграм‑канала из‑за мошенничества с криптовалютой. Однажды ему написал потенциальный покупатель и предложил приобрести канал. Переговоры растянулись на год: мошенник проявил поразительное терпение, вел себя как настоящий деловой партнер — изучал статистику, торговался, не проявлял ни малейшей спешки. В день сделки стороны созвонились, и покупатель попросил прислать адрес криптовалютного кошелька на блокчейне Solana. Спустя несколько минут на кошельке продавца появилось уведомление о входящем переводе в размере 20 000 USDT. Приложение Trust Wallet показывало сумму с правильной иконкой и рыночным курсом — все выглядело совершенно убедительно.
Подвох обнаружился лишь через два дня, когда продавец попытался вывести деньги на биржу Binance и перевод просто не прошел. Разобравшись в ситуации, он выяснил: в сети Solana любой желающий может создать токен с произвольным названием и иконкой. Мошенники выпустили собственный токен под именем USDT, который внешне был неотличим от настоящего стейблкоина компании Tether, но не имел никакой реальной ценности. Биржа Binance, работающая только с верифицированными контрактами, просто отвергла перевод. При этом телеграм‑канал оказался безвозвратно утерян: мошенник удалил все публикации и переименовал его в очередную «инвестиционную» схему. Телеграм отказался возвращать канал бывшему владельцу, поскольку права были переданы добровольно, а не в результате взлома.
Эта история наглядно показывает: незнание базовых принципов работы криптовалют и блокчейна может стоить очень дорого даже опытному и осторожному человеку. Вот почему мы решили выпустить серию публикаций, подробно рассказывающих о том, как устроена крипта изнутри, — для тех, кто еще незнаком с этими технологиями и хотел бы их изучить. Сегодня мы поговорим об основах, благодаря которым криптовалюты и получили приставку крипто-, то есть о шифровании, лежащем в фундаменте всех подобных платежных систем.
Хеширование: из текста в «отпечаток»
Первые идеи, близкие к современному понятию «хеширование», появились еще в 1950-х годах, когда программисты пытались решить вполне приземленную задачу: быстро находить нужные данные в памяти. Тогда в ходу были громоздкие и медленные мейнфреймы размером с комнату, хранившие программы на перфокартах и перфолентах, а объем оперативной памяти был ограничен. Скорость доступа к ней упиралась в скудные технические возможности аппаратной базы, и для увеличения этой самой скорости требовалась оптимизация. В 1953 году сотрудник IBM Ханс Петер Лун описал метод, который позволял эффективно раскладывать данные по «ячейкам» памяти с помощью вычисляемого ключа. Благодаря этой идее родились хеш‑таблицы: структуры данных, которые хранят пары «ключ — значение» и умеют очень быстро находить нужное значение по известному ключу.
Это чем‑то похоже на камеры для хранения личных вещей при входе в супермаркет: у каждого покупателя есть ключ от ячейки с номером, такой же номер нарисован на дверце. Хеш‑функция, которой требуется извлечь содержимое конкретной ячейки, смотрит на номер, обозначенный на брелоке ключа, и сразу же отпирает нужную дверцу, вместо того чтобы перебирать все ячейки подряд. Это очень экономило время и ускоряло взаимодействие с памятью.

В семидесятых, с появлением первых компьютерных сетей, хеширование стало применяться в информационной безопасности для проверки целостности данных. У инженеров возникла новая головная боль: как убедиться, что файл, который пришел с другого конца земного шара, не повредился и не был подменен по дороге? Тогда и появилась идея использовать хеш как «контрольную сумму» — короткий слепок данных, который можно сравнить с таким же слепком исходного файла и удостовериться, что они одинаковы.
Технически хеш‑функция — это алгоритм, который принимает на вход данные произвольного размера и выдает на выходе строку фиксированной длины, которую и называют хешем. Неважно, что ты подашь функции на вход — пароль из восьми символов или роман «Война и мир» с предисловием и эпилогом. Например, популярный алгоритм SHA-256 всегда выдает ровно 64 шестнадцатеричных символа. Вот, скажем, хеш фразы «Привет, мир»:
a571b83b0354c820ad1a3b32e7bf3c2e8d5abf46a9d2f4c1e0b783f5e6d9c12
А вот хеш той же фразы, но с маленькой буквы — «привет, мир»:
3d2c1a9f7e4b6082c5f1d3e8a2b4c7d9e0f1a3b5c6d7e8f9a0b1c2d3e4f5a6b
Как видишь, эти строки отличаются, поэтому для каждого объекта хеш уникален. Хеш‑функцию можно сравнить с миксером или мясорубкой: кидаешь в нее куски говяжьей вырезки, немного лука для вкуса, соль и на выходе получаешь фарш. А вот провернуть фарш в обратном направлении и собрать из него кусок свежего мяса уже невозможно. Из этого проистекает первое свойство хеш‑функции — необратимость. Из хеша нельзя восстановить исходные данные, никак, никогда — это математически невозможно. Именно поэтому сайты хранят не твои пароли, а их хеши. Когда ты вводишь пароль при входе на какой‑нибудь сервис, сайт хеширует введенную строку и сравнивает с тем, что хранится в базе. Даже если хакеры взломают базу и утащат таблицу с хешами — они не узнают твоих паролей, ну, при условии, что пароль не 123456, конечно.
Из любого правила есть свои исключения. В 2004 году китайский математик Сяоюнь Ван вместе с коллегами опубликовала работу, в которой показала: для популярного алгоритма MD5 за приемлемое вычислительное время можно найти коллизию — то есть два разных файла с одинаковым хешем. А в 2008 году исследователи уже на практике продемонстрировали, как с помощью коллизий MD5 можно подделать SSL-сертификат, после чего доверие к этому алгоритму окончательно рухнуло. Впрочем, на свете существует множество других алгоритмов, позволяющих создавать надежные хеши.
Помимо необратимости, у хешей имеется еще три полезных свойства:
- Детерминированность. Одни и те же данные всегда дают один и тот же хеш. Введи «Привет, мир» хоть миллион раз — получишь миллион одинаковых строк. Это позволяет использовать хеш как своего рода «подпись» файла или документа.
- Фиксированная длина. Хеш всегда одного размера, что бы ты ни подал на вход. SHA-256 выдает 256 бит, что бы ни случилось. Это удобно: вместо того чтобы сравнивать два гигабайтных файла байт за байтом, достаточно сравнить две строки по 64 символа.
- Устойчивость к коллизиям. Коллизия — это ситуация, когда два разных набора данных дают одинаковый хеш, о ней я уже рассказывал выше. Теоретически это возможно: вариантов входных данных бесконечно много, а хешей — конечное количество. Но хорошие алгоритмы делают вероятность коллизии ничтожной. Например, найти два документа с одинаковым SHA-256 — это задача, которая потребует недостижимых на нынешнем уровне развития цивилизации вычислительных мощностей.
В контексте криптовалют хеширование — это фундамент, на котором строится все здание. Каждый блок в цепочке данных, хранящих информацию о транзакциях (фактически это подробный журнал всех операций с монетами — кто, когда, кому и сколько отправил), содержит хеш предыдущего блока. В результате изменить один блок в середине цепи невозможно: если кто‑то попробует отредактировать старую запись, ее хеш изменится. А значит, сломается связь со следующим блоком, потом со следующим, и так по всей цепочке. Ситуация примерно такая же, как если бы ты вытащил одну карту из карточного домика — после этого рухнет вся конструкция. Именно поэтому блокчейн считается устойчивым к подделке: любое изменение в этой системе оставляет хорошо заметный след.

До самого блокчейна мы еще доберемся. Пока запомни главное: хеш — это цифровой отпечаток данных. Уникальный, воспроизводимый и необратимый.
Шифрование и ключи
Если хеширование — это мясорубка, то шифрование — это сейф, обеспечивающий конфиденциальность и в некоторых случаях — анонимность криптовалют. Да, далеко не все виды крипты по‑настоящему анонимны, и, если ты не разбираешься в тонкостях, это может стать источником неприятностей, даже если сам ты не нарушаешь закон. Достаточно, например, по неопытности принять платеж с кошелька, который ранее использовали мошенники, облапошивающие граждан под видом «службы безопасности» какого‑нибудь банка, торговцы запрещенными веществами из даркнета или порнухой с участием несовершеннолетних, — и проблемы гарантированы. Анонимность криптовалют обеспечивается не самим шифрованием, а особенностями используемых протоколов и транзакционных схем. Однако к вопросам безопасности мы еще вернемся, а пока давай разберемся в технологических основах.
Представь, что ты и твой друг живете в разных городах и хотите переписываться так, чтобы никто посторонний не мог прочитать письма. Вы заранее встречаетесь, покупаете два одинаковых навесных замка с одинаковыми ключами и договариваетесь: все, что вы отправляете друг другу, запирается таким замком, а получатель откроет его своим ключом. Один и тот же ключ и шифрует, и расшифровывает данные, отсюда и название — симметричное шифрование.

Алгоритм берет твои данные и секретный ключ, перемешивает их по строгому математическому рецепту — и на выходе получается нечитаемый набор байтов, который без ключа выглядит как случайный шум. Например, популярный стандарт AES (Advanced Encryption Standard), который относится к категории симметричных алгоритмов, сегодня используется буквально везде: в банковских приложениях, мессенджерах, программах для шифрования дисков.
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
