Уведомления о движении средств настраиваются в три приёма. Наблюдательный кошелёк получает расширенный публичный ключ и видит поступления со списаниями. Служба оповещений получает правило вида «адрес, событие, адресат». Право менять это правило остаётся у одного человека и фиксируется в журнале. Разграничить доступ значит развести три роли: читатель ленты событий, редактор набора отслеживаемых адресов, подписант траты. Последняя роль к первым двум не примыкает никогда.

Конфигурация наблюдения — это набор правил «адрес — событие — адресат», который живёт отдельно от ключей и определяет, кто и о чём узнаёт при движении средств.

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

Под какой сценарий подбирается кошелёк и схема оповещений

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

Отсюда вытекает неочевидное следствие. Административное право на конфигурацию — самостоятельный актив. Денег его кража не даёт. Она даёт тишину, а тишина даёт время: пока оповещение отключено или переадресовано, подписант не узнает о списании, не поднимет тревогу и не успеет вывести остаток на свежий счёт, пока ключ ещё под его контролем.

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

Сравнение ролей: что меняется для пользователя

Роль Что видит Что может изменить Чем опасен захват роли
Читатель ленты Входящие и исходящие события по адресам под наблюдением Ничего Утечка истории и остатков, деньги недоступны
Редактор конфигурации Полный список правил и адресатов Добавить адрес, снять адрес, сменить адресата, выключить канал Отключение оповещений и окно тишины перед кражей
Подписант Транзакцию на экране устройства Отправить средства Прямая потеря средств
Хранитель резервной копии Фразу восстановления и дескриптор Воссоздать кошелёк целиком Полный контроль без следов в журнале сервиса

Разводить роли проще, когда понятно, что именно отдаётся наружу. Наблюдение строится на расширенном публичном ключе: по стандарту BIP-32 аудитор получает все публичные ключи счёта и видит движение, не имея возможности подписать трату. У того же стандарта есть оговорка, которую пропускают: знание родительского расширенного публичного ключа вместе с любым неужесточённым дочерним приватным ключом равносильно знанию родительского приватного ключа — то есть всего кошелька. Разбор, как устроен расширенный публичный ключ в мультиподписи, стоит прочесть до выдачи ключа сервису.

Настройка шаг за шагом

  1. Составьте опись ролей на бумаге: имя человека, что он видит, что вправе изменить. Опись датируйте — она станет точкой сверки через полгода.
  2. Выгрузите из устройства расширенный публичный ключ нужного счёта и отдайте сервису наблюдения только его. Приватные ключи и фраза восстановления из устройства не выходят.
  3. Создайте правило оповещения: адрес или дескриптор, тип события, канал доставки, адресат. Отдельным правилом закройте исходящие — списание важнее поступления.
  4. Снимите у читателей право правки: в сервисе это отдельная роль или отдельный аккаунт, а не галочка в том же профиле.
  5. Включите журнал изменений конфигурации и настройте оповещение на само изменение правила. Правка настройки должна приходить тем же каналом, что и движение средств.
  6. Проверьте результат чужими руками: попросите читателя изменить адресата. Отказ сервиса и запись в журнале — критерий приёмки.
Два числа из стандартов, на которые опирается настройка. Предел разрыва адресов по BIP-44 равен 20: встретив двадцать неиспользованных адресов подряд, кошелёк прекращает поиск — значит, наблюдение надо настраивать на дескриптор, а не на отдельные адреса. Регистровая контрольная сумма адреса Ethereum по ERC-55 (стандарт в статусе Final, создан 14 января 2016 года) оставляет вероятность 0,0247 %, что опечатка в адресе пройдёт проверку.

Резервная копия и проверка восстановления

Копируется не только фраза восстановления. Конфигурация наблюдения — отдельный объект резервирования: перечень правил, дескрипторы, адресаты, список людей и их ролей. Сервис закроется или сменит владельца, и восстанавливать схему придётся по памяти, если бумаги нет.

Проверка выглядит так. Берётся второй, чистый экземпляр сервиса или второй аккаунт, и по бумажной описи в него заводятся ровно те же правила — без доработок по памяти, иначе проверяться будет не опись, а ваша память. Затем на тестовый адрес счёта отправляется минимальная сумма. Оба контура обязаны сработать одинаково. Расхождение означает, что опись неполна.

Канал доставки отдельно заслуживает скепсиса. Национальный институт стандартов и технологий США в публикации SP 800-63B (июнь 2017 года, правки от 2 марта 2020 года) относит проверку через телефонную сеть общего пользования к ограниченным способам и прямо называет индикаторы риска: подмена устройства, замена SIM-карты, перенос номера. Для оповещений вывод тот же: канал на номере телефона нельзя считать единственным.

Типовые ошибки, которые стоят денег

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

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

Четвёртая встречается у аккуратных людей. Правило сделано, адресат проверен, канал работает — и никто не оповещается об изменении самого правила. Злоумышленнику остаётся тихо переставить адресата и подождать. Именно поэтому в порядке действий пятый шаг не факультативен.

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

Что делать при утере доступа

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

  1. Проверьте по журналу, были ли изменения правил за последние недели. Неизвестная правка означает компрометацию панели, а не забытый пароль.
  2. Создайте новый контур наблюдения на новом аккаунте и с новым адресатом, не восстанавливая старый.
  3. Старый расширенный публичный ключ считайте раскрытым: переведите средства на счёт с другим путём вывода.
  4. Перепроверьте опись ролей и подпишите её заново. Документ без даты через год бесполезен.

Чек-лист

  • Опись ролей на бумаге, с датой и подписями участников
  • Сервису отдан расширенный публичный ключ отдельного счёта, не основного
  • Правила заведены на дескриптор, а не на перечень адресов
  • Исходящие события оповещаются отдельным правилом
  • Право правки конфигурации отделено от права чтения
  • Журнал изменений включён, правка правила приходит оповещением
  • Канал доставки не сводится к номеру телефона
  • Копия конфигурации лежит вне сервиса и проверена восстановлением

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

Материалы по теме:

Частые вопросы

Можно ли дать родственнику уведомления, но не дать ему ничего больше?

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

Почему оповещение о смене правила важнее оповещения о переводе?

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

Сервис просит расширенный публичный ключ. Это нормально?

Для наблюдения — да, подписать трату по нему нельзя. Но ключ раскрывает всю историю и будущие адреса счёта, и отозвать его невозможно. Разумная практика: выделить под наблюдение отдельный счёт, а основной оставить без публикации. Приватные ключи и фразу восстановления сервису не передают ни при каких условиях.

Что считать доказательством, что разграничение работает?

Неудачную попытку. Читатель пробует сменить адресата, сервис отказывает, в журнале появляется запись об отказе с датой и аккаунтом. Три элемента вместе — отказ, запись, дата — и есть проверяемый результат настройки. Без журнала проверка превращается в утверждение на словах.

Вердикт

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

Разборы и предупреждения о свежих схемах публикуем в Telegram-канале Cryptium.

Источники: спецификация BIP-32 о расширенных публичных ключах и публикация NIST SP 800-63B о каналах подтверждения.