Использование MultiSiq
Кейс
Обеспечить безопасность 800+ BTC/день проходящих через POOL с подписанием транзакции. Разработать механизмы проверок. Логика: позволяет двум и более пользователям подписывать транзакции уникальными подписями, - разновидность пороговой подписи. BTC хранящиеся на адресе, всегда тратятся целиком, распределившись на несколько исходящих отдельных bitcoin-адресов. Разницу между входящими и исходящими отправляется майнеру в качестве комиссии. Позволяет не использовать один и тот же адрес, и возвращать его на новый адрес. Адрес содержит хеш, принимающий решение, разрешить ли тратить BTC.
Схема как работают транзакции

Схемы подписей
| Схема | Описание | Решение безопасности |
|---|---|---|
| 3 из 5 | Кошелёк с низким уровнем доверия: тратить средства могут трое из пяти владельцев ключей, при этом перевод на адрес может инициировать любой. | Снижает риск растраты, взлома, заражения вирусами и утраты средств. |
| 2 из 3 (горячий) | Кошелёк горячего хранения: биржа хранит один приватный ключ, второй ключ — резервный, третий хранит команда кибербезопасности и использует его для подписи после проверки. | Разделение контроля над средствами и снижение риска компрометации одного ключа. |
| 2 из 3 (эскроу) | Кошелёк с условным счётом (эскроу): перевод с одного адреса на другой, где третья сторона выступает арбитром и подписывает транзакцию при успешном выполнении условий. | Обеспечивает арбитраж и защиту сторон сделки при переводе средств. |
Решение
- Использование SSO (Yubikey 5, Kensington) по PKCS#11. Генерация JWT-токена на стороне POOL с единым временем длины сессии. Распределение по типам через push-уведомления. Контрольные пуши с типом операции и суммой, Tx id, мониторгу блокчейна, дашборбу операций и информирования отвественных лиц. Все токены используются для подтверждения личности: токен со статическим паролем; токен с синхронно динамическим паролем; токен с асинхронным паролем по Варнаму; токен вызов-ответ. Передается не ключ, а указатель на ключ. Handle используется в операциях с закрытым ключом, при формирование подписи. Подпись формируется внутри токена/смарткарты. Наружу попадает только значение самой подписи.
- Kill-Switch — тайм-аут, превышающей лимит, с возможностью отмены, используя мастер-кошелек по защищенной линии. Отдельный смарт-контракт, в который смотрит Multisig, где мастер-кошелек по вызову возвращает транзакцию в сети. Использование transaction guard на уровне API. Подпись не всегда означает инициализацию транзакции. Холдирование каждой 3-5 транзакций с одного подписанта и блокирование до проверки осуществления транзакции. Надстройка отправки json параметров через хранилище или сейф - логирование действие пользователей при осуществлении операций и вывод лога в мониторинг.
- Ограничение лимита вывода по типам использования, запросам от подписанта, интервала запроса, очередность обращений, сумм, транзакций с уведомлением пользователя (timelock), счетов, повторных операций в интервале, запросов в дефиницу времени, потолка сумм с использованием SSO. Ограничение схем и чередование.
- Использование дочерних кошельков при транзакциях, где при запросе конкретной суммы формируется временный кошелек.
- HSM: решение на базе OpenVZ – множество изолированных ОС на одном ядре в отдельных контейнерах.
