Экспертные посты
June 16, 2023

Кошелек с усиленной защитой: дополнение Владимира Абовяна

👋 Всем привет! На связи Владимир Абовян, и сегодня я хотел бы дополнить видео на тему создания кошелька с оповещением. Кто не смотрел видео вот ссылка.

💭 Для чего это нужно?

Одна из самых частых атак на пользователя – это атака через скомпрометированную мнемоническую фразу (12 или 24 английских слова).

Мы не будем вдаваться в подробности атак, а примем это как маловероятный, но возможный сценарий. Проблема в том, что компрометация фразы — необратимое действие, которое, как правило, сопровождается кражей всего цифрового портфеля пользователя. Я это называю «точка невозврата». То есть пользователь ничего не может предпринять для предотвращения кражи. Или может?

🛡 Механика защиты

Защититься мы можем с помощью кодовой фразы или парольной фразы (passphrase), которая была предложена в конце 2013 года в предложении BIP39.

Суть кодовой фразы следующая: на основе мнемонической фразы (24 английских слова) можно создать неограниченное количество кошельков, добавив кодовую фразу.

Выглядеть это будет так:

24 слова + кодовая фраза = новый кошелек

Мы можем создать кошелек без фразы (КОШЕЛЕК А), то есть, использовать просто 24 слова и задать к этому же кошельку кодовую фразу:

SUNSCRYPT2&1!hello 

Тем самым мы создадим абсолютно новый кошелек (КОШЕЛЕК B) с уникальными приватными и публичными ключами, адресами.

На кошелек А мы положим небольшую сумму 2, 3, 5% от своего портфеля. А на кошельке B будем хранить все наши активы.

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

🔔 Включаем оповещение

Следующим этапом мы включаем кошелек оповещения (КОШЕЛЕК А).

Импортируем кошелек
Добавляем приватный ключ кошелька
Кошелек отображается в списке "Мои кошельки"
Включаем уведомления

Я использовал кошелек Zerion для мониторинга активов. Не забываем включить все уведомления. Этот кошелек я называю «кошелек-оповещения» — на самом деле это просто кошелек, который мониторит адрес Ethereum.

Причем, что важно, чтобы это был:

  • Адрес самой популярной монеты (btc, eth, ltc…);
  • Самый первый адрес с индексом 0.

Условия эти нужны, чтобы любой скрипт, бот или человек при восстановлении кошелька тут же обнаружил активы без каких-либо препятствий. Я все же рекомендую использовать Ethereum, так как у него нет разных форматов адресов (segwit, native segwit, legacy…).

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

⚔️ Атака

При исходящей транзакции мы получим оповещение на телефон.

Мы на 100% можем быть уверены, что наш сид скомпрометирован и соответственно мы теряем пару процентов портфеля, но зато получаем ценную информацию и можем осуществить миграцию активов на новую мнемоническую фразу.

💡 Ключевые мысли

Для того, чтобы механизм защиты работал необходимы три ключевые вещи:

  1. Сид и кодовая фраза должны находится в разных локациях. Если сид лежит дома, то кодовая фраза в другом месте;
  2. Кодовая фраза должна быть достаточно сложной – это не должно быть ваше имя или номер телефона. Это должен быть сложный пароль из 15 символов с большим маленьким регистром, цифрами и спец.символами;
  3. Кошелек с оповещением, то есть, без фразы, на котором у нас будет лежать 5-10% портфеля должен выглядеть как реальный основной кошелек с историей транзакций, которым мы периодически пользуемся. Как раз этот кошелек можно и использовать в качестве прокладки с основным — добавляя в нашу модель безопасности чуть-чуть анонимности и безопасности особенно при интеграции например с дексами.

Не лишним будет ознакомиться со следующей таблицей по стоимости перебора кодовой фразы. К примеру, моя кодовая фраза имеет длину от 15 символов ASCII (стоимость взлома > $ 128 000 000 000).

📚 Полезные ссылки

SUNSCRYPT | Магазин | YouTube | Обменник | Майнинг | Подкасты | Клуб