Перейти к содержанию

Использование MultiSiq

Кейс

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

Схема как работают транзакции

table1

Схемы подписей

Схема Описание Решение безопасности
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 – множество изолированных ОС на одном ядре в отдельных контейнерах.

Логотип