Мультиподпись Safe для казначейства компании: как настроить
Safe — смарт-аккаунт для EVM-сетей, которому для перевода нужны подписи нескольких владельцев. Для казначейства компании это базовый инструмент: ни один сотрудник не может вывести средства в одиночку. Но сама по себе мультиподпись не защищает от подписания поддельной транзакции, поэтому к ней нужен регламент проверки и раздельные устройства.
Как устроен Safe
Safe (раньше Gnosis Safe) — это контракт-кошелёк с набором владельцев и порогом. Транзакция выполняется, только когда её подписали не менее порога владельцев. Кроме этого, у Safe есть модули, которые добавляют сценарии вроде лимитов расходов, и защитники (guards), которые проверяют транзакцию перед и после выполнения. Описание — в документации Safe.
| Элемент | Что делает | Риск при неверной настройке |
|---|---|---|
| Владельцы | Адреса, которые могут подписывать | Два адреса у одного человека — фиктивная мультиподпись |
| Порог | Сколько подписей нужно | Слишком низкий — мало защиты, слишком высокий — блокировка при потере ключей |
| Модули | Дополнительные права выполнять транзакции | Модуль может действовать в обход порога |
| Защитники | Проверка каждой транзакции | Ошибка в защитнике может заблокировать кошелёк |
| Fallback handler | Обработка дополнительных вызовов и стандартов | Менять только понимая последствия |
Как выбрать порог
| Схема | Где подходит | Комментарий |
|---|---|---|
| 2 из 3 | Небольшая команда, оборотные средства | Потеря одного ключа не блокирует, одного взломанного мало |
| 3 из 5 | Казначейство компании или проекта | Можно включить внешнего подписанта, например юриста или совет |
| 4 из 7 | Крупные суммы, распределённые команды | Сложнее собрать подписи, нужен регламент |
| 1 из N | Не для казначейства | Это не мультиподпись, а общий кошелёк с N ключами |
Правило: порог больше половины владельцев и меньше общего числа. Тогда потеря одного-двух ключей не блокирует средства, а один взломанный ключ ничего не даёт.
Подписанты и устройства
- Каждый подписант — отдельный человек со своим аппаратным кошельком.
- Устройства не хранятся вместе, а сид-фразы не лежат в облаке и почте.
- Подписант использует отдельный компьютер или хотя бы отдельный профиль браузера без лишних расширений.
- Хотя бы один подписант находится в другом городе или вне компании, чтобы один инцидент не затронул всех.
- Список подписантов и их адресов хранится у руководителя и юриста, а не только в Safe.
Проверка транзакции перед подписью
Мультиподпись бессильна, если все подписанты подтверждают одну и ту же подмену. Интерфейс кошелька может показать одно, а в подпись уйти другое, если скомпрометирован компьютер или сервис. Поэтому подпись — это проверка, а не клик.
- Инициатор описывает операцию в рабочем канале: сумма, токен, адрес получателя, назначение.
- Каждый подписант сверяет адрес получателя с заранее согласованным списком или подтверждает его по второму каналу.
- Подписант смотрит на экране аппаратного кошелька тип операции, адрес контракта и данные вызова, а не только на интерфейс в браузере.
- Для операций с контрактами, особенно delegatecall и смены владельцев или порога, подписант расшифровывает данные вызова независимым инструментом.
- Если хоть что-то не совпадает — транзакцию не подписывают и выясняют причину.
- Последний подписант, который выполняет транзакцию, ещё раз сверяет хэш с остальными.
Модули и лимиты
Модули удобны: например, модуль разрешает бухгалтеру выплачивать до определённой суммы в месяц без сбора всех подписей. Но модуль действует в обход порога, поэтому его подключение — та же операция высокого риска. Подключайте только проверенные модули, ограничивайте их сумму и регулярно пересматривайте список.
Регламент казначейства
- Кто может инициировать операции и в каких пределах.
- Список проверенных получателей и порядок добавления нового.
- Сроки: за сколько дней предупреждать о крупной операции.
- Что делать при потере устройства подписантом: замена владельца в течение суток.
- Что делать при подозрении на компрометацию: остановка подписей, связь с остальными по второму каналу.
- Ежеквартальная проверка владельцев, модулей и защитников.
Регламент имеет смысл, только если его соблюдают. Проведите учебную операцию: небольшой перевод по полной процедуре, с замером, сколько времени ушло на сбор подписей.
Safe и TON
Safe работает в EVM-сетях. В TON для того же используют собственный контракт мультиподписи; принципы те же — независимые подписанты, порог, проверка данных перед подписью. Подробнее о многоуровневом хранении — в статье горячий и холодный кошелёк компании.
Пошаговая настройка
- Выберите сеть: ту, где лежат основные средства казначейства.
- Каждый подписант создаёт адрес на своём аппаратном кошельке и передаёт его по проверенному каналу.
- Создайте Safe с выбранными владельцами и порогом; сверьте адреса владельцев по второму каналу.
- Проверьте, что адрес Safe одинаково отображается у всех подписантов, и опубликуйте его во внутреннем регламенте.
- Проведите тестовую операцию на небольшую сумму по полному регламенту.
- Подключите мониторинг событий Safe.
- Только после этого переводите основные средства, частями.
Если вам нужен Safe в нескольких сетях, помните: это разные контракты, даже если адрес совпадает. Владельцы и порог в каждой сети настраиваются и проверяются отдельно.
Частые ошибки
- Все подписанты — сотрудники одного отдела, которые сидят в одном кабинете и подписывают с одного ноутбука.
- Порог 1 из 2 «для скорости».
- Адрес получателя копируют из переписки без проверки.
- Подключён модуль, о котором никто уже не помнит.
- Ушедший сотрудник остался владельцем.
Отчётность и учёт
Казначейство в мультиподписи удобно для учёта: каждая операция видна в сети, а предложения транзакций хранятся вместе с подписями. Договоритесь, что в описании каждой операции указывается её назначение, номер счёта или договора. Тогда бухгалтерия сможет сопоставить движения средств с документами без отдельной переписки, а при проверке вы быстро покажете, кто и когда утвердил каждый платёж.
Раз в месяц выгружайте историю операций и сверяйте остатки с учётной системой. Расхождение — повод для разбора, а не для корректирующей проводки.
Мониторинг Safe
Настройте алерты на каждое предложение транзакции, на смену владельцев и порога, на подключение модулей и на крупные исходящие суммы. Алерт должен приходить не только инициатору, но и людям, которые не участвуют в подписании, например в службу безопасности. Как собрать такую систему — в статье о мониторинге контрактов и кошельков.
Мы настраиваем Safe, модули, мониторинг и пишем регламенты в рамках услуги мультиподпись и казначейство компании. Безопасность компьютеров подписантов и почты, через которую им приходят запросы, — задача аутсорсинга ИБ.
Вопросы и ответы
Какой порог подписей выбрать для Safe?
Для казначейства компании часто выбирают 3 из 5: потеря двух ключей не блокирует средства, а двух взломанных ключей недостаточно для вывода. Главное — чтобы порог был больше половины владельцев.
Может ли мультиподпись защитить от фишинга?
Только если каждый подписант проверяет данные на экране аппаратного кошелька и сверяет адрес по второму каналу. Если все подтверждают подмену в интерфейсе, порог не поможет.
Что такое модуль Safe?
Расширение, которое даёт дополнительному адресу или правилу право выполнять транзакции. Например, лимит на ежемесячные выплаты. Модуль работает в обход порога, поэтому подключать его нужно так же осторожно, как менять владельцев.
Что будет, если подписант потеряет аппаратный кошелёк?
Если остальных подписей хватает для порога, остальные владельцы заменяют потерянный адрес новым. Сделать это нужно быстро, пока не потерян ещё один ключ.