Безопасность при подключении криптокошелька
Безопасность при подключении кошелька простыми словами
Ключ от вашего адреса, то есть секретный код, которым кошелёк подтверждает операции, хранится в кошельке, и подпись под любой операцией ставит сам кошелёк этим ключом (что такое приватный ключ). Сайт может только прислать запрос. Кошелёк открывает его отдельным окном с деталями, и ничего не произойдёт, пока вы не нажмёте «Подтвердить».
Представьте интернет-магазин, который присылает вам счета, а оплачиваете их вы сами, каждый раз. Так работает подключённый кошелёк. Разрешение approve approve (разрешение на токен) похоже на подписку с автоплатежом в этом магазине. Магазин списывает деньги сам, в пределах суммы, которую вы позволили, пока вы не отмените подписку. Если магазин окажется мошенническим, подписка станет для него способом забрать деньги. Подпись permit оформляет такую же подписку другим способом.
Опасно ли просто подключить кошелёк к сайту?
Нет. Сайт получает только ваш адрес, а чтобы двигать ваши токены, то есть криптовалюту, выпущенную поверх чужой сети, например USDT, ему нужна отдельная подпись-разрешение2. Записи сети открыты всем, поэтому по адресу сайт видит, какая криптовалюта на нём лежит2.
Что проверить перед подписью
Перед каждой подписью проверьте пять вещей:
- адрес сайта в строке браузера совпадает с официальным, и открыли вы его сами, без ссылки из рекламы или сообщения (как узнают сайты-двойники, разбирает статья фишинг и скам);
- вид запроса совпадает с тем, что вы делаете, например для входа на сайт разрешения не нужны;
- вы понимаете, кому и зачем даёте право (если нет или кошелёк предупреждает об опасности, остановитесь и уйдите с сайта);
- токен и сумма те, что нужны для сделки;
- на экране аппаратного кошелька, отдельного устройства для ключа, если он у вас есть, видны те же детали.
Аппаратный кошелёк держит ключ отдельно от компьютера, однако подпись под непонятными данными он безопасной не делает. Если вместо деталей на экране видны только нечитаемые символы, это слепая подпись слепая подпись (blind signing), и такой подписью пользуются мошенники3. Устройство такого кошелька описано в статье горячий и холодный криптокошелёк.
Проверять стоит и знакомый сайт, потому что его тоже могут взломать. В декабре 2023 года вредоносный код попал в программу, через которую сайты подключают кошельки, и на этих сайтах пользователи получали запросы на подпись, которые выводили их криптовалюту4.
Для новых и незнакомых сайтов заведите отдельный кошелёк и держите на нём небольшую сумму под конкретную задачу и немного монеты сети, то есть её собственной криптовалюты для комиссии. Разрешение, подписанное с этого кошелька, касается только его адреса, и сбережения на другом адресе остаются вне досягаемости. Где держать сами сбережения, объясняет гайд как хранить криптовалюту.
Как отозвать разрешение
У разрешения approve нет срока действия, и отключение кошелька от сайта его не отменяет. Снимают разрешение отдельной операцией, отзывом (revoke)5. Порядок такой5:
- Откройте сервис проверки разрешений, например раздел проверки разрешений в обозревателе сети Etherscan или сайт Revoke.cash. где посмотреть: ethereum.org, «How to revoke smart contract access to your crypto funds», список сервисов
- Подключите кошелёк и выберите в сервисе ту же сеть, что и в кошельке.
- Найдите смарт-контракт, разрешение которому больше не нужно, и выберите отзыв.
- Подтвердите отзыв в кошельке. Это операция в сети, и за неё платят комиссию сети. где посмотреть: размер комиссии кошелёк показывает перед подтверждением
- Через несколько минут откройте сервис снова и убедитесь, что разрешения в списке больше нет.
Отзыв запрещает смарт-контракту новые списания. Вклады, займы и другие ваши операции на этом сайте он не закрывает5. Неиспользованную подпись permit отменяют отдельной операцией с комиссией, и делать это стоит, только если вы точно подписали permit на мошенническом сайте6.
Что делать, если вы подписали разрешение мошенническому сайту
Сразу отзовите разрешение, которое получил этот сайт7. Остаток криптовалюты с этого адреса переведите на другой свой адрес, особенно если вы подписывали permit или не уверены, что нашли все разрешения. Если на сайте вы вводили seed-фразу, отзыв не поможет, и всё нужно перевести на новый кошелёк с новой seed-фразой. О краже сообщите в полицию своей страны8. Подтверждённый перевод в блокчейне отменить нельзя, поэтому тем, кто за плату обещает вернуть украденное, не платите. О таком обмане рассказывает статья фишинг и скам.
Какие подписи просит сайт после подключения
Чаще всего встречаются четыре вида запросов на подпись: вход, перевод, approve и permit. Подпись для входа подтверждает сайту, что адрес ваш9. Перевод сразу списывает с адреса указанную сумму или запускает действие смарт-контракта, программы внутри сети, а комиссию сети за него объясняет статья что такое газ.
| Вход | Перевод | Approve | Permit | |
|---|---|---|---|---|
| Видно в сервисе проверки разрешений? | нет | нет | да | нет1 |
| Нужна комиссия сети при подписи? | нет | да | да | нет2 |
| Даёт право списывать токен потом? | нет | нет | да | да |
Что такое разрешение approve
Approve — это та самая подписка, при которой смарт-контракт сайта сам забирает с вашего адреса этот токен, несколько раз, пока не исчерпает указанную сумму10. Сайт обмена просит approve перед первой сделкой с новым для вас токеном, ведь без разрешения его смарт-контракт не может забрать токен, который вы меняете7.
Почему кошелёк предупреждает о неограниченном разрешении?
Кошелёк предупреждает, потому что неограниченное разрешение позволяет смарт-контракту забрать весь этот токен с вашего адреса, сколько бы его ни было сейчас и ни пришло позже7. По сравнению с подпиской это уже доверенность распоряжаться всеми деньгами в одной валюте на вашем счёте. Честные сайты обмена часто просят почти неограниченную сумму, чтобы не просить новое разрешение перед каждой сделкой, и тем же приёмом пользуются мошеннические сайты7. Неограниченного доступа сайтам не давайте: если кошелёк позволяет изменить сумму в окне разрешения, впишите ту, что нужна для текущей сделки5.
Что такое подпись permit
Permit — это подпись, которая даёт смарт-контракту то же право на ваш токен, что и approve, только без отдельной операции в сети. Вы подписываете сообщение, а записать его в сеть может другой человек, поэтому монета сети на комиссию вам не нужна11. Если кошелёк показывает слово Permit, у вас просят разрешение на токен, даже когда сайт называет это входом или проверкой.
Пока подписью permit не воспользовались, её нет в блокчейне, и сервисы проверки разрешений её не видят6.
Глубже — стандарты токенов, поля permit, Permit2 и подписи для ETH
Approve так устроен у токенов стандарта ERC-20 в Ethereum и совместимых с ним сетях и у токенов TRC-20 в сети Tron12. Чем отличаются такие стандарты, объясняет статья стандарты токенов. Опытные пользователи сверяют адрес смарт-контракта, которому дают право, с адресом из документации сайта.
В тексте подписи permit есть адрес, которому вы даёте право (spender), сумма (value) и срок действия (deadline)11. Permit2 — это общий смарт-контракт разрешений от команды биржи Uniswap. Вы один раз даёте ему разрешение approve на токен, и дальше сайты, которые работают с Permit2, получают право на этот токен через подпись, с указанной суммой и сроком13.
Разрешение approve не может списать монету сети, например ETH, потому что работает с токенами стандарта ERC-20, а ETH появился раньше этого стандарта и ему не соответствует14. Монету сети с адреса снимает перевод, который вы подписали сами, или подпись, которая передаёт управление адресом смарт-контракту. Такую подпись ввело обновление Ethereum Pectra15. Если незнакомый сайт предлагает «обновить аккаунт» или «сделать смарт-аккаунт», откажитесь. На WETH, токен-версию ETH, разрешение дать можно14.