[{"data":1,"prerenderedAt":22},["ShallowReactive",2],{"blog-content-ru-what-is-blind-signing":3},{"slug":4,"title":5,"excerpt":6,"description":7,"bodyHtml":8,"faqItems":9},"what-is-blind-signing","Что такое слепое подписание? Почему нельзя подписывать то, что вы не можете прочитать","Слепое подписание — это подтверждение транзакции или сообщения, которое кошелёк не может показать в читаемом виде: сырая calldata, непрозрачный hex-блоб или голый хеш. Разбираем, почему eth_sign нельзя подтверждать никогда, как дрейнеры зависят от нечитаемых запросов и как clear signing и симуляция позволяют прочитать запрос до подписи.","Слепое подписание простыми словами: непрозрачная calldata, eth_sign, экраны аппаратных кошельков с одним лишь хешем, почему дрейнеры зависят от нечитаемых запросов, как это исправляют clear signing и симуляция и при чём здесь некастодиальная подпись в WATS.","\u003Cblockquote>\u003Cp>\u003Cstrong>Слепое подписание\u003C\u002Fstrong> — это подтверждение транзакции или сообщения, которое ваш кошелёк не может показать в человекочитаемом виде: сырая calldata, непрозрачный hex-блоб или голый 32-байтовый хеш вместо понятной фразы о том, что именно разрешает подпись. Это не сбой криптографии: подпись абсолютно валидна и в сети обладает полной силой, поэтому подписание нечитаемых данных выдаёт разрешения, которых вы ни разу не видели, — и именно на этом построен почти любой дрейнер кошельков. Лекарство — \u003Cem>clear signing\u003C\u002Fem>, прозрачное подписание: кошелёк расшифровывает запрос в предложение, которое можно проверить, и симулирует его, показывая, какие активы на самом деле сдвинутся, — плюс привычка, которую за вас не обеспечит никакой софт: отклоняйте всё, что не можете прочитать. Поскольку подпись — это ровно тот момент, когда передаются полномочия, важно и то, чтобы создающий её ключ принадлежал только вам: \u003Ca href=\"\u002Fhot-wallet\">WATS Hot Wallet\u003C\u002Fa> некастодиален в Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana и TON, поэтому ничего не двигается без подписи, которую вы одобрили лично.\u003C\u002Fp>\u003C\u002Fblockquote>\n\n\u003Ch2>Что такое слепое подписание?\u003C\u002Fh2>\n\u003Cp>Слепое подписание — это любое подтверждение, в котором запрос и его отображение разошлись. Блокчейн исполняет то, что написано в подписанных байтах; ваш экран — единственное место, где ваше намерение можно сравнить с реальным содержимым. Когда на экране hex, такое сравнение невозможно — и злоумышленники строят атаки именно вокруг этой невозможности.\u003C\u002Fp>\n\u003Cp>Разрыв здесь информационный, а не математический. Подпись не кодирует «я согласился обменять 100 USDC»; она кодирует «этот ключ авторизует эти байты». Означают ли эти байты своп, безлимитный approval или офчейн-ордер, продающий ваш NFT за бесценок, — на этот вопрос может ответить только интерфейс, а слепое подписание наступает тогда, когда интерфейс отвечать отказывается.\u003C\u002Fp>\n\n\u003Ch2>Где встречается слепое подписание\u003C\u002Fh2>\n\u003Cp>Слепое подписание — не отдельная функция, а целое семейство ситуаций, в которых отображение не справляется с данными. Обычные подозреваемые:\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\u003Cth>Тип запроса\u003C\u002Fth>\u003Cth>Что вы обычно видите\u003C\u002Fth>\u003Cth>Риск\u003C\u002Fth>\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\u003Ctd>eth_sign\u003C\u002Ftd>\u003Ctd>Сырой хеш или hex-блоб\u003C\u002Ftd>\u003Ctd>Критический — непроверяем по своей природе; отклоняйте всегда\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Сырые типизированные данные (EIP-712)\u003C\u002Ftd>\u003Ctd>Структурированные поля — spender, сумма, срок действия\u003C\u002Ftd>\u003Ctd>Высокий, когда смысл неясен: читаемое поле — ещё не понятое поле\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Транзакция к контракту\u003C\u002Ftd>\u003Ctd>Расшифрованное действие или сырая calldata, если кошелёк не смог её расшифровать\u003C\u002Ftd>\u003Ctd>Полностью зависит от расшифровки в кошельке\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Экран аппаратного кошелька только с хешем\u003C\u002Ftd>\u003Ctd>На дисплее устройства один лишь хеш\u003C\u002Ftd>\u003Ctd>Высокий — устройство подтверждает присутствие, а не понимание\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Закономерность во всех четырёх строках одна: риск идёт следом за читаемостью. Где отображение редеет, там опасность густеет.\u003C\u002Fp>\n\n\u003Ch2>Почему eth_sign настолько опасен?\u003C\u002Fh2>\n\u003Cp>Среди методов подписи \u003Cem>eth_sign\u003C\u002Fem> — самая чистая форма проблемы: он просит кошелёк подписать произвольное 32-байтовое значение, показанное вам сырым hex, без каких-либо префиксов, помечающих сообщение как «просто сообщение». Поскольку у входных данных нет доменного разделения, это может быть что угодно — в том числе хеш транзакции, выводящей активы с вашего счёта. Проверить такой запрос по одному лишь окну подтверждения не сможет даже дотошный эксперт: он непроверяем по своей природе. Именно поэтому крупные кошельки объявили метод устаревшим или удалили его совсем, и поэтому у практического правила нет исключений: по состоянию на 2026 год сайт, запрашивающий eth_sign, либо опасно устарел, либо откровенно враждебен, и оба ответа означают «отклонить».\u003C\u002Fp>\n\n\u003Ch2>Что на самом деле показывает аппаратный кошелёк?\u003C\u002Fh2>\n\u003Cp>Аппаратный кошелёк хранит ключи офлайн и показывает запросы на экране, который вредонос не может подменить, — но такой экран полезен ровно настолько, насколько понятно то, что на нём отрисовано. Для взаимодействий с контрактами, которых устройство не понимает, многие модели исторически откатывались к показу одного лишь хеша — за переключателем в настройках, буквально названным blind signing. Подтверждение хеша на доверенном экране доказывает, что вы нажали кнопку; о том, что именно вы одобрили, оно не доказывает ничего. Обещание аппаратной безопасности звучит как \u003Cem>что видишь, то и подписываешь\u003C\u002Fem>, и оно тихо рушится, когда видите вы тридцать два байта шума. Аппаратная изоляция защищает ключ, а не решение.\u003C\u002Fp>\n\n\u003Ch2>Как дрейнеры используют слепое подписание?\u003C\u002Fh2>\n\u003Cp>Набор дрейнера — это прежде всего атака на опыт подписания. Сайт выглядит как страница минта, клейма аирдропа или портал поддержки; а запрос, который он отправляет, — это безлимитный approval токена, setApprovalForAll на целую коллекцию NFT или офчейн-подпись Permit либо ордера, которая переместит активы позже, уже без единого окна подтверждения. Объединяет их подача: жертва подписала запрос, который не могла прочитать — или прочитала, но не поняла, — а дальше последовало опустошение. Полный сценарий разобран в материале о том, \u003Ca href=\"\u002Fblog\u002Fwhat-is-a-wallet-drainer\">что такое дрейнер кошельков\u003C\u002Fa>, а механика разрешений — включая то, почему одна подпись без газа способна обнулить баланс токена, — в статье про \u003Ca href=\"\u002Fblog\u002Ftoken-approvals-and-permit-explained\">approvals токенов и Permit\u003C\u002Fa>. Обе приводят к одной первопричине: кража происходит в момент подписи, а слепое подписание — это то, что позволяет атакующему пройти этот момент незамеченным.\u003C\u002Fp>\n\n\u003Ch2>Что такое clear signing — и как далеко он продвинулся?\u003C\u002Fh2>\n\u003Cp>Ответ индустрии — \u003Cstrong>clear signing\u003C\u002Fstrong>, прозрачное подписание: принцип, по которому кошелёк обязан перевести каждый запрос на язык, понятный человеку, прежде чем просить подпись. На 2026 год он держится на двух механизмах. \u003Cem>Расшифровка\u003C\u002Fem>: кошелёк распознаёт вызываемые контракт и функцию и отрисовывает их в виде фразы — approve токена X, спендер Y, сумма безлимитная, — а инициативы вроде ERC-7730 строят открытые реестры метаданных, чтобы даже экраны аппаратных кошельков могли показывать вызовы контрактов человеческим языком, а не хешем. \u003Cem>Симуляция\u003C\u002Fem>: кошелёк или сервис, к которому он обращается, прогоняет транзакцию на текущем состоянии сети до того, как вы подпишете, и показывает предварительный результат — какие активы уйдут, какие придут, какие разрешения изменятся. Симуляция — прогноз, а не гарантия: состояние может измениться между предпросмотром и включением в блок, а враждебный контракт способен повести себя иначе после попадания в блок, — но предпросмотр, показывающий, что ваши NFT уходят на неизвестный адрес, останавливает большинство опустошений на месте. Внедрение по кошелькам и сетям на 2026 год всё ещё неровное, поэтому проверьте, что именно ваш кошелёк отрисовывает для рутинного действия, прежде чем полагаться на его предупреждения.\u003C\u002Fp>\n\n\u003Ch2>Практические правила: нечитаемое значит недоверенное\u003C\u002Fh2>\n\u003Cp>Чтобы оставаться в безопасности, не нужно уметь читать calldata — нужны привычки, при которых нечитаемый запрос по умолчанию отклоняется:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Никогда не подтверждайте запрос eth_sign.\u003C\u002Fstrong> Легитимных массовых сценариев для него не осталось — сам такой запрос и есть красный флаг.\u003C\u002Fli>\n\u003Cli>\u003Cem>Выбирайте кошельки, которые расшифровывают и симулируют.\u003C\u002Fem> Если ваш кошелёк показывает сырой hex для рутинного действия, это проблема кошелька, ради которой стоит его сменить.\u003C\u002Fli>\n\u003Cli>\u003Cem>Читайте поля, которые важны\u003C\u002Fem>, в запросах на типизированные данные: spender, сумма, срок действия, оператор. Безлимитная сумма или незнакомый спендер — это знак «стоп».\u003C\u002Fli>\n\u003Cli>\u003Cem>Держите режимы blind signing в аппаратном кошельке выключенными\u003C\u002Fem>, если только вы точно не понимаете, зачем они нужны одной конкретной транзакции, — и выключайте их обратно сразу после.\u003C\u002Fli>\n\u003Cli>\u003Cem>Подключайтесь осознанно.\u003C\u002Fem> Большинство плохих запросов приходит через поспешные подключения — порядок действий из статьи о том, \u003Ca href=\"\u002Fblog\u002Fhow-to-connect-wallet-to-dapp\">как безопасно подключить кошелёк к dApp\u003C\u002Fa>, держит парадную дверь под охраной.\u003C\u002Fli>\n\u003Cli>\u003Cem>Нечитаемое равно недоверенное.\u003C\u002Fem> Отклонённая подпись стоит вам одной лишней попытки. Неверная подпись может стоить всего. Эта асимметрия решает за вас.\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>При чём здесь WATS\u003C\u002Fh2>\n\u003Cp>Слепое подписание — проблема отображения. Расшифровка и симуляция могут показать запрос понятными словами, но ни один кошелёк — включая WATS — не может решить за вас, действительно ли вам нужен этот запрос. Что кошелёк действительно определяет, так это кто контролирует ключ, превращающий ваше решение в полномочие. \u003Ca href=\"\u002Fhot-wallet\">WATS Hot Wallet\u003C\u002Fa> полностью некастодиален: ключи держите вы, WATS никогда не хранит ключ, и ни один перевод не покидает ваш счёт без подписи, которую вы одобрили, — в Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana или TON. Это убирает целый класс риска — за вас никто не подпишет, — оставляя дисциплину чтения, описанную выше, целиком на вас.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"\u002Fnfc-card\">WATS NFC Metal Card\u003C\u002Fa> занимает такое же честное место. Она не хранит приватные ключи и не расшифровывает calldata: это устройство аутентификации касанием с уникальным ID карты, связанное ровно с одним устройством, которое аутентифицирует доступ к ключам, живущим в приложениях WATS. Это добавляет физический фактор — то, что вы держите в руке, а не только то, что на экране, — но нечитаемый запрос читаемым не сделает. Этого не сделает ничто, кроме самого окна подтверждения.\u003C\u002Fp>\n\u003Cp>Поэтому относитесь к двум половинам задачи по отдельности. Половина про чтение — это привычка: никогда не подписывайте то, что не можете прочитать, и отклоняйте всё, что приходит голым hex. Половина про хранение — выбор, который делается один раз: держите ключи в некастодиальном кошельке и оставляйте полномочие подписи там, где ему место. Установите \u003Ca href=\"\u002Fhot-wallet\">WATS Hot Wallet\u003C\u002Fa>, превратите каждый нечитаемый запрос в автоматический отказ и свяжите \u003Ca href=\"\u002Fnfc-card\">WATS NFC Metal Card\u003C\u002Fa> со своим устройством, если хотите физический фактор, аутентифицирующий вас к ключам в приложениях WATS.\u003C\u002Fp>",[10,13,16,19],{"q":11,"a":12},"Слепое подписание — это то же самое, что eth_sign?","Нет — eth_sign лишь самый крайний его случай. Слепое подписание — это любое подтверждение, при котором вы не можете прочитать, что именно авторизуете: сырая calldata, непрозрачные типизированные данные или экран аппаратного кошелька, показывающий один хеш. eth_sign идёт дальше: он непроверяем в принципе, поэтому крупные кошельки объявили его устаревшим или удалили. Каждый запрос eth_sign — это слепое подписание, но и в обычных окнах подтверждения транзакций слепого подписания хватает.",{"q":14,"a":15},"Защищает ли аппаратный кошелёк от слепого подписания?","Лишь частично. Аппаратный кошелёк хранит ключи офлайн и показывает запросы на экране, который вредонос не может подделать, — но если устройство не может расшифровать вызов контракта, оно способно показать только хеш, а подтверждение хеша не говорит вам ничего о том, что вы одобрили. Защита улучшается по мере того, как стандарты метаданных clear signing доходят до экранов устройств; на 2026 год этот процесс идёт. Аппаратура изолирует ключ, но сама по себе транзакцию не объясняет.",{"q":17,"a":18},"Защищает ли некастодиальный кошелёк от слепого подписания?","Он защищает ключ, а не решение. Некастодиальность означает, что подпись можете создать только вы: WATS Hot Wallet — пример такого кошелька, ключи держите вы, WATS никогда не хранит ключ, и ничего не двигается в Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana или TON без вашего одобрения. Это снимает риск того, что за вас подпишет кто-то другой, но подпись, которую вы одобрили сами, всё равно обязывает, поэтому читать запрос до подтверждения — по-прежнему ваша задача. WATS NFC Metal Card добавляет физический фактор аутентификации касанием для ключей, живущих в приложениях WATS: она не хранит приватных ключей и не расшифровывает calldata.",{"q":20,"a":21},"Что делать, если кошелёк показывает только сырой hex?","Отклонить. Запрос на подпись, который вы не можете прочитать, — это запрос, который вы не можете оценить, а отказ стоит вам лишь одной повторной попытки. Затем разберитесь: настоящий ли это dApp, поддерживает ли ваш кошелёк расшифровку и симуляцию для этой сети и действительно ли действие требует такого метода. Если читаемый путь существует — расшифрованное окно подтверждения или симулированный предпросмотр, — воспользуйтесь им. Если его нет, считайте запрос недоверенным и уходите.",1786059401647]