Эта статья — для тех, кто хочет разоб­рать­ся с нуля, как устро­ены и как работа­ют крип­товалю­ты. Мы рас­смот­рим, каким обра­зом хеш‑фун­кции прев­раща­ют любой текст в уни­каль­ный отпе­чаток, зачем нуж­ны два раз­ных клю­ча вмес­то одно­го и как циф­ровая под­пись поз­воля­ет доказать авторс­тво и под­твер­дить целос­тность без помощи нотари­усов.

В янва­ре 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, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии