Что такое ошибка контрольной суммы? Руководство по обнаружению криптографических ошибок.

Что такое ошибка контрольной суммы? Руководство по обнаружению криптографических ошибок.

Ошибка контрольной суммы означает, что данные не прошли математическую проверку. В криптовалюте эта проверка гораздо слабее, чем предполагает большинство пользователей. EIP-55 в Ethereum обнаруживает примерно одну опечатку из четырех тысяч. Base58Check в Bitcoin примерно в тысячу раз надежнее. Bech32 еще надежнее. Тем не менее, ни одна из этих контрольных сумм не защищает кошелек от атаки, которая в 2025 году фактически лишила личные кошельки 713 миллионов долларов, потому что вредоносный адрес, находящийся в буфере обмена или в истории транзакций, сам по себе является допустимой строкой, прошедшей проверку контрольной суммы. Вот что такое ошибка контрольной суммы, почему криптовалютные кошельки ее отображают и почему чистый проход проверки не является доказательством безопасности.

Краткий ответ на вопрос об ошибках контрольных сумм в криптографии.

Ошибка контрольной суммы сообщает пользователю, что адрес, файл или сид-фраза не соответствуют встроенной проверке целостности. Кошелек, биржа или установщик отказываются действовать, потому что был искажен бит, неправильно введен символ или данные были изменены. В криптовалюте эта ошибка выявляет опечатки и случайное повреждение данных. Она не обнаруживает идеально введенный адрес, который контролирует злоумышленник. Крупнейшая задокументированная потеря средств на кошельке в 2025 году, 50 миллионов долларов в USDT в декабре, произошла из-за того, что жертва скопировала адрес с совершенно корректной контрольной суммой, и этот адрес просто принадлежал мошеннику.

Что такое контрольная сумма на самом деле (и чем она не является)?

Представьте себе контрольную сумму как крошечный чек для гораздо большего пакета, блок данных, хешированный до нескольких байт известным вычислением. Отправитель прикрепляет исходную контрольную сумму. Получатель выполняет то же вычисление, получает новую контрольную сумму и сравнивает её. Совпадение означает, что целостность данных подтверждена. Несовпадение означает повреждение данных где-то: перевернутый бит в оперативной памяти, преждевременное прерывание загрузки, опечатка. Именно несовпадение кошельки и установщики помечают как ошибку контрольной суммы. Вычисленные значения контрольной суммы не совпали с ожидаемым значением, прикрепленным к исходным данным (сохраненным значением, опубликованным отправителем). Ошибки данных не были пройдены, поскольку сработали базовые механизмы обнаружения ошибок и проверки целостности.

С механической точки зрения, классические контрольные суммы — это арифметические операции, а не криптография. Простейший вариант разбивает данные на слова и выполняет сложение в дополнительном коде (трюк с «дополнением до единицы», используемый в почтенной контрольной сумме TCP/IP интернета с 1988 года). Немного более сложные варианты — это продольная проверка четности, алгоритм Флетчера и CRC (циклические избыточные проверки), все они близки друг к другу. Циклическая избыточная проверка быстрая и хорошо подходит для ошибок передачи. Для обеспечения целостности современных файлов доминирующим выбором является Adler-32 (быстрый, без криптографии) или MD5 или SHA (медленнее, но гораздо надежнее). Программные инструменты, такие как `sha256sum`, `md5sum` и HashCheck, — это то, как большинство пользователей фактически выполняют проверку.

Вот в чём заключается граница. Контрольная сумма может доказать, что данные не были случайно повреждены или изменены на уровне байтов. И ничего больше. Она не может доказать, кто создал данные. SHA-256, криптографический хеш, намного надёжнее, чем CRC. Он всё ещё не доказывает авторство; для этого издатель подписывает хеш закрытым ключом. Криптографы постоянно путают эти два понятия. «Адрес прошёл проверку контрольной суммы» — это не то же самое, что «адрес принадлежит нужному человеку». Любой может сгенерировать действительный адрес Ethereum или Bitcoin. Только владелец закрытого ключа контролирует средства. Проверка контрольной суммы подтверждает корректность адреса. На чей кошелёк он указывает? Это другой вопрос, с другим ответом.

Ошибка контрольной суммы

Как работают алгоритмы криптографической контрольной суммы: EIP-55, Base58Check, Bech32

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

EIP-55 — это контрольная сумма смешанного регистра в сети Ethereum. Её предложили Виталик Бутерин и Алекс Ван де Санде 14 января 2016 года. Принцип работы заключается в преобразовании адреса в нижний регистр, хешировании полученной строки с помощью алгоритма Keccak-256, а затем повторном преобразовании шестнадцатеричных букв (A–F) в соответствии с битами этого хеша. Только 15 шестнадцатеричных букв в типичном адресе могут иметь измененный регистр, что дает схеме примерно 15 эффективных контрольных битов. EIP-1191, предложенный в марте 2018 года, расширяет EIP-55, добавляя идентификатор цепочки, чтобы контрольная сумма адреса в Ethereum и в форке, таком как Rootstock, не совпадала.

Base58Check — это устаревшая схема Bitcoin. Она добавляет 4-байтовую контрольную сумму в конец закодированного адреса, вычисляемую как первые 4 байта двойного SHA-256 байта версии плюс полезная нагрузка. Префикс «1» в адресе P2PKH соответствует байту версии 0x00; префикс «3» в адресе P2SH соответствует 0x05. Сам алфавит Base58 отбрасывает визуально запутывающие символы 0, O, I и l. Реализация логики контрольной суммы для Base58Check представляет собой один вызов SHA-256 с последующим сравнением 4 байтов.

Bech32 (BIP-173) — это схема адресации SegWit, разработанная Питером Вуйе и Грегом Максвеллом в 2017 году. Ее 6-символьный код BCH гарантирует обнаружение каждой ошибки, затрагивающей до четырех символов, и поддерживает частоту необнаруженных ошибок ниже одного на миллиард при более длительных повреждениях. Незаметное открытие 2020 года (что вставка или удаление буквы «q» перед конечной буквой «p» может сохранить контрольную сумму) послужило мотивацией для разработки BIP-350 Bech32m, который теперь используется в Taproot (версия-свидетель 1).

Схема Год Пример адреса Проверить размер Типичное обнаружение опечаток
EIP-55 / EIP-1191 2016 / 2018 `0xAbCd...EfGh` ~15 бит ~99,97% (1 случай из 4000)
Base58Check (P2PKH) 2009 `1A1zP1...` 32 бита ~99,99999998%
Base58Check (P2SH) 2012 `3J98t1...` 32 бита ~99,99999998%
Bech32 (SegWit v0) 2017 `bc1q...` ~30 бит ≥99,999999999% ошибок, связанных с 4 символами
Bech32m (Taproot) 2020 `bc1p...` ~30 бит То же самое, исправляет вставку qp.

В таблице представлены наиболее важные цифры в статье. Воспринимайте их как проектные планы, а не как гарантии безопасности.

Почему EIP-55 обнаруживает всего 1 опечатку из 4000

В спецификации EIP-55 явно указана частота ошибок: вероятность того, что случайная опечатка в адресе Ethereum пройдет проверку контрольной суммы, составляет 0,0247 процента, или примерно один случай из 4049. Это не ошибка. Это то, что дают 15 эффективных контрольных битов. Эта схема была модернизирована в 2016 году и разработана для обратной совместимости с существующим 40-символьным шестнадцатеричным форматом адресов. Совместимость стоит силы обнаружения.

Для практических сценариев использования кошелька это обычно нормально. Пользователь, который вводит или вставляет адрес один раз, с огромной вероятностью будет пойман, если допустит ошибку. Пользователь, который вставляет один и тот же «отравленный» адрес десять раз подряд, каждый раз пройдет проверку контрольной суммы, потому что адрес действителен. Тысячекратный разрыв с Base58Check в Биткоине и дальнейший шаг вперед с Bech32 — вот почему серьезный пользовательский интерфейс кошелька рассматривает проверку адресов Ethereum как ответственность пользователя, а не протокола.

Ошибки контрольной суммы вне криптографических функций: WinRAR, BIOS, микропрограмма, жесткий диск

Большинство людей, которые вводят в Google запрос "ошибка контрольной суммы", не являются криптографами. Они смотрят на WinRAR, или на зависший экран загрузки компьютера, или на нервничающий NAS. Словарь тот же. Но ставки совершенно разные.

WinRAR — это классический пример. Вы скачиваете .rar-архив, распаковываете его, и появляется всплывающее окно с ошибкой CRC. Архив поврежден. Обычно причина довольно проста: прерванная загрузка, нестабильное соединение Wi-Fi, поврежденный сектор на диске, иногда вредоносное ПО, попавшее в файл во время передачи. Перескачайте архив из источника. Запустите CHKDSK. Если вам абсолютно необходимо восстановить содержимое, опция WinRAR «сохранять поврежденные файлы» извлечет частичную копию содержимого.

Ошибка контрольной суммы BIOS или CMOS при загрузке ПК почти всегда связана с разрядившейся батарейкой CR2032 на материнской плате. Иногда неудачное обновление прошивки повредило NVRAM. Иногда пользователь вытащил модуль оперативной памяти, и сохраненный аппаратный идентификатор больше не совпадает. Замените батарейку. Загрузите настройки по умолчанию. Компьютер загрузится.

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

Ошибка контрольной суммы прошивки на аппаратном кошельке должна вызывать беспокойство у любого пользователя криптовалюты. Загрузчик Trezor повторно проверяет подпись прошивки при каждой загрузке. Защищенный элемент Ledger делает то же самое. Сообщение «Недействительная подпись» или «Неизвестная ошибка (0x6984)» от Ledger во время установки — это громкий сигнал устройства о том, что обнаруженная им прошивка не соответствует ожиданиям корневого ключа. Остановитесь. Отключите устройство. Загрузите прошивку заново с URL-адреса поставщика, который вы можете вспомнить наизусть. Любой, кто проигнорирует это предупреждение, только что попал под атаку на цепочку поставок.

Когда ошибка контрольной суммы означает попытку подделки — и когда это не так.

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

Согласно отчету Chainalysis о криптопреступлениях, общий объем краж криптовалюты в 2025 году составил 3,4 миллиарда долларов, из которых 1,5 миллиарда долларов пришлись на один взлом Bybit. Личные кошельки потеряли 713 миллионов долларов в результате примерно 80 000 атак в 158 000 инцидентах. Практически ни одна из этих потерь не была вызвана недействительными контрольными суммами, возникшими из-за опечаток, поскольку биржи и кошельки отклоняют такие данные в поле ввода. Они произошли в результате двух атак, которые не могут быть предотвращены корректными контрольными суммами.

Первый способ — отравление адреса. Злоумышленник отправляет крошечную фиктивную транзакцию с только что сгенерированного адреса, специально созданного таким образом, чтобы он содержал первые и последние несколько символов адреса часто используемого контрагента жертвы. В следующий раз, когда жертва копирует адрес из истории транзакций, поддельный адрес оказывается вверху списка. У адреса есть совершенно действительная контрольная сумма. Кошелек показывает зеленый цвет. Средства поступают злоумышленнику. По данным Chainalysis, цитируемым Университетом Карнеги-Меллона, в 2025 году будет совершено 270 миллионов попыток отравления адресов, жертвами которых станут 17 миллионов потенциальных клиентов. Инцидент 20 декабря 2025 года, в результате которого трейдер потерял 50 миллионов долларов в USDT, произошел примерно через 26 минут после того, как жертва отправила небольшую тестовую транзакцию; тест не спас ее, потому что отравленный адрес уже был добавлен в историю транзакций.

Второй тип — это программы, перехватывающие буфер обмена. Вредоносные программы, такие как GitVenom, задокументированная Kaspersky, незаметно заменяют любой криптографический адрес, скопированный в буфер обмена, на адрес, контролируемый злоумышленником. Предполагаемые потери от GitVenom в конце 2024 года составили примерно 485 000 долларов США среди жертв в Бразилии, Турции и России. Опять же, подмененный адрес имеет действительную контрольную сумму. В кошельке нет ничего, что могло бы вызвать подозрения. Критические данные, адрес назначения крупного перевода, ускользают от проверки целостности, поскольку они не были изменены или повреждены; они были заменены чем-то столь же действительным.

атака 2025 года Механизм Остановила ли это проверка контрольной суммы?
Отравление адресов (50 млн долларов США, 20 декабря 2025 г.) Поддельный адрес в истории транзакций. Нет — поддельный адрес имеет действительную контрольную сумму EIP-55.
Взломщики буфера обмена (GitVenom, ~485 тыс. долларов) Вредоносное ПО подменяет скопированный адрес Нет — замененный адрес действителен.
Мошеннические боты MEV, созданные на основе ChatGPT (>30 ETH, >100 жертв) Контракты, рекомендованные ИИ, истощают кошелек. Нет — контрольная сумма не содержит ничего, что могло бы подтвердить намерения, изложенные в договоре.
Мошенничество с использованием ИИ широко распространено В 4,5 раза прибыльнее традиционных схем. Нет — это основано на социальной инженерии, а не на исправлении опечаток.

Зелёная контрольная сумма означает, что адрес корректно сформирован. Это не значит, что он ваш. Именно это различие является самым важным выводом, который может сделать пользователь криптовалюты из этой статьи.

Исходная фраза BIP-39: почему допустимые слова по-прежнему не проходят проверку контрольной суммы.

В сид-фразах BIP-39 также присутствует контрольная сумма, которая может удивить пользователей во время восстановления. Схема кодирует последние несколько битов SHA-256 поверх энтропии кошелька в последнее слово фразы. Сид-фраза из 12 слов содержит всего 4 бита контрольной суммы. Сид-фраза из 24 слов содержит 8 битов. Для 12 слов это означает, что только примерно один случайный выбор последнего слова из шестнадцати пройдет проверку. Фраза «Я уверен, что моя сид-фраза верна, но кошелек ее отклоняет» в подавляющем большинстве случаев является опечаткой в начале фразы или неправильным словом из списка BIP-39, состоящего из 2048 слов.

На аппаратном уровне действуют более строгие правила. Trezor и Ledger повторно проверяют подписи прошивки при каждой загрузке с помощью кода защищенного элемента, а не на хосте. Несоответствие подписи рассматривается как вмешательство, и прошивка откажется запускаться. Это правильное поведение. Любой, кто видит ошибку контрольной суммы или подписи прошивки на аппаратном кошельке, должен рассматривать это как тревогу, а не как сбой.

Ошибка контрольной суммы

Как проверить и исправить ошибку контрольной суммы: лучшие практики

Контрольный список короткий. Одинаков для большинства кошельков и бирж.

Адрес Ethereum. Скопируйте его из подтвержденного канала контрагента (его опубликованного профиля, а не личного сообщения в Telegram). Вставьте. Дождитесь проверки кошелька. Отправьте 1 доллар в качестве тестовой транзакции. Дождитесь подтверждения. Затем отправьте всю сумму. Kraken по умолчанию хранит каждый сохраненный адрес ETH в формате EIP-55. Binance и Coinbase отклоняют ввод с неверной контрольной суммой на этапе отправки, до того, как какая-либо широковещательная передача попадет в цепочку. MetaMask по умолчанию использует формат EIP-55 и показывает предупреждение для адресов, отредактированных вручную; исторически он также принимал адреса в нижнем регистре, на что годами жаловались в нескольких открытых проблемах на GitHub.

Биткойн-адрес. Предпочтительнее использовать формат Bech32 (`bc1...`) вместо устаревших форматов `1...` и `3...`, если контрагент его поддерживает. Уровень обнаружения ошибок значительно выше, а формат адреса сложнее неправильно интерпретировать.

Загрузка файла. Двоичный файл кошелька, образ прошивки аппаратного кошелька, образ Linux ISO. Вычислите хеш SHA-256 локально. Сравните с подписанным значением издателя, а не с копией, напечатанной рядом со ссылкой для загрузки. Злоумышленник, контролирующий страницу загрузки, может подменить оба значения. Сохраните резервную копию любого проверенного файла, на который вы действительно полагаетесь. Обнаружение ошибок позже намного проще, когда заведомо исправная копия находится на USB-накопителе или распечатке.

Ошибка контрольной суммы или подписи прошивки аппаратного кошелька. Не обходите её. Загрузите прошивку повторно по указанному URL-адресу производителя. Попробуйте другой кабель. Попробуйте другой USB-порт. Перезапустите Ledger Live или Trezor Suite. Если ошибка сохраняется, напишите в службу поддержки производителя. Поиск по запросу "fix Ledger 0x6984" на сторонних форумах — это то место, где поджидают злоумышленники.

Запомните одну фразу. Пройденная контрольная сумма доказывает, что данные не были случайно повреждены. Но она не доказывает, что это именно те данные, которые вы хотели отправить.

Любые вопросы?

Нет. Атаки с использованием отравления адресов используют действительные, свежесгенерированные адреса, которые проходят все необходимые контрольные суммы. Кошелек отображается зеленым цветом, транзакция подтверждается, и средства поступают злоумышленнику. Защита обеспечивается посимвольной проверкой адреса назначения (особенно середины строки) и отправкой небольшой тестовой транзакции перед любым крупным переводом.

EIP-55 — это контрольная сумма Ethereum с учетом регистра символов, внедренная в существующий 40-символьный шестнадцатеричный формат адресов в 2016 году. Она имеет примерно 15 контрольных битов и показатель успешности проверки на опечатки 0,0247%. Base58Check — это более старая 4-байтовая контрольная сумма Bitcoin, добавляемая в код, примерно в тысячу раз более надежная. Различные проектные ограничения привели к разным показателям надежности.

Между отправителем и получателем произошла ошибка. Распространенные причины: частичная загрузка, искаженный бит в оперативной памяти, поврежденный сектор на жестком диске, неудачное обновление прошивки, опечатка в адресе, указанном вручную, или преднамеренное вмешательство. Проверка не может определить, что именно произошло, а лишь то, что произошло.

Скопируйте адрес из проверенного источника. Вставьте его в новое поле. Дождитесь проверки кошелька. Отправьте небольшую тестовую транзакцию для подтверждения адреса получателя. Если адрес неоднократно отклоняется, возможно, вы находитесь в неправильной сети (например, адрес Bitcoin, вставленный в кошелек Ethereum).

В загрузках или настройках BIOS это обычно указывает на устранимые проблемы: поврежденный файл загрузки, разряженная батарея CMOS, поврежденный сектор диска. В аппаратных кошельках это может указывать на вмешательство в прошивку, поэтому следует остановиться, пока не будет подтверждена корректность прошивки. В полях криптографических адресов ошибка означает, что защита работает.

Ошибка контрольной суммы означает, что фрагмент данных (адрес, загрузка, сид-фраза, образ прошивки) не прошел встроенную математическую проверку. Отправитель добавил небольшой «отпечаток». Получатель пересчитал его, получил другое число, и кошелек или установщик отказались продолжить.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.