MPC-кошельки: риски, уязвимости и лучшие практики безопасности

MPC-кошелёк (Multi-Party Computation / MPC-TSS для пороговых подписей) — это кошелёк, где «целый» приватный ключ никогда не собирается на одном устройстве: вместо него несколько сторон держат доли секрета и совместно вычисляют подпись. На цепочке такая подпись выглядит как обычная (одноадресная), поэтому в сетях уровня Ethereum транзакции исходят от единого EOA-адреса без ончейн-мультиподписей.

Это мощная модель (устойчивость к краже одного устройства, прозрачность ончейн), но и особый класс рисков: криптографические протоколы сложны, реализационные ошибки тонкие, а организационная сторона (политики, бэкапы, роли) становится критически важной. Ниже — карта угроз MPC-кошельков и практики, как проектировать их безопасно.

MPC-кошельки: риски, уязвимости и лучшие практики безопасности

MPC vs мультисиг vs смарт-кошелёк (AA)

Критерий MPC / TSS Ончейн-мультисиг Смарт-кошелёк (AA)
Что видит блокчейн Обычная EOA-подпись M-of-N явно ончейн Логика в контракте (политики/лимиты)
Прозрачность правил Низкая (политики off-chain) Высокая (правила на цепи) Высокая (контракт)
Поддержка сетями Любая сеть с ECDSA/EdDSA Есть не везде/дорого Нужна поддержка/газ, но гибко
UX и комиссии Отличные (как EOA) Дороже/сложней UX Гибко (батчи, спонсоринг gas)
Основные риски Протокол/реализация, «невидимые» политики, коллюзии долей Ошибки контракта/потеря множественных ключей Баги контракта/экосистемные риски
Где уместно Кастоди, трейдинг, биржи, B2B BTC-L1, консервативные требования аудита Финтех-продукты, лимиты/гвардии, соц.-восстановление

Вывод: MPC хорошо решает «прозрачность ончейн» и UX, но правила безопасности живут вне блокчейна — их нельзя проверить снаружи. Это требует повышенной дисциплины DevSecOps и криптоаудита.

Модель угроз MPC-кошелька

* Криптографический уровень. Протокол пороговой ECDSA/EdDSA (MPC-TSS) может содержать ошибки: *nonce reuse*, *rogue-key*, уязвимости в Paillier/обменах. * Реализация/библиотеки. Баги в проверках, генерации случайных чисел, подписании, keygen/resharing. * Организация и операции. Неправильный выбор порога (t,n), невалидные бэкапы долей, коллокация долей в одной зоне отказа, слабые процедуры инцидентов. * Эндпоинты и UX. Заражённые устройства, blind signing, фишинг и злоумышленный фронтенд dApp, подмена «approve unlimited» ([см. транзакцию/кошелёк]). * Юридика и комплаенс. Доли у сторонних кастодианов/провайдеров → риск блокировок/судебных запретов по месту их регистрации (аналогично см. blacklists у стейблкоинов).

Далее — детально по классам.

Криптографические риски и уязвимости TSS

1) Уязвимости протоколов GG18/GG20 (ECDSA). В 2023 исследователи показали уязвимость в широко используемых спецификациях GG18/GG20 (Paillier-основа): злоумышленник может эксфильтровать приватный ключ за 1–2 подписи при недостаточных проверках в протоколе (CVE-2023-33241). Пострадал ряд библиотек и продуктов, потребовались патчи и обновления протокола.

2) TSSHOCK и родственные атаки. В 2023 Verichains представили TSSHOCK — набор практических атак на t-ECDSA реализации (динамики обменов, недостаточные доказательства знаний, проверка диапазонов): возможна полная компрометация ключа после малых серий подписей при злонамеренной стороне. Вывод: неполные проверки и оптимизации в реализациях TSS смертельно опасны.

3) Nonce reuse / плохая энтропия. Классическая проблема ECDSA: повторное (или коррелированное) значение k в двух подписях → арифметически восстанавливается приватный ключ. В MPC это усложняется: k часто генерируется совместно, и недостоверный RNG в одной стороне способен «отравить» процесс; есть реальные кейсы утечек из-за повторного k. Требование: строгое совместное доказуемое RNG, k-confidentiality и аудит.

4) Rogue-key / key-validation. Если участники не доказывают корректность своих публичных вкладов (proof of knowledge / range proofs, корректность Paillier ключей и т.п.), злоумышленник может провести rogue-key атаку, ведущую к компрометации общего секрета. Многие инциденты сводятся к отсутствию или неполному выполнению обязательных доказательств.

5) Уязвимости библиотек и «только на keygen». Открытые реализации (напр., tss-lib) публиковали исправления и отчёты: часть уязвимостей затрагивает только этап генерации ключей (если среди участников присутствовал злонамеренный субъект при keygen), но требует ротации групп и обновления библиотек. Игнорирование подобных бюллетеней оставляет «бомбу замедленного действия».

Реализационные и архитектурные ловушки

Недостаточность «библиотека = безопасность». Даже «правильный» протокол в руках интегратора легко испортить: убрать одну проверку «ради производительности», заменить CSPRNG, забыть timeouts/abort-logic. Большинство практических атак — на стыке теории и кода.

Keygen/reshare как момент максимального риска. Если на этапе keygen/resharing участвовал злонамеренный участник или пропущены доказательства, риск компрометации может стать перманентным. Нужны церемонии генерации, офлайн-каналы, видеопротокол и независимый аудит.

Политики вне блокчейна. Ончейн мы видим «обычную» подпись. Значит, вся безопасная логика (лимиты, whitelist, 2FA, гео/временные правила) выполняется off-chain и может быть обойдена при компрометации N из M долей либо систем оркестрации (policy engine, оркестратор транзакций).

Неочевидная зона отказа. Доли хранятся на «разных» девайсах/у провайдеров — но часто в одном контуре риска (один облачный вендор, один домен администрирования, единый MDM). Это приводит к ложному ощущению «распределённости».

Бэкапы ≠ безопасное восстановление. Хранение копий долей (или «восстановительных бэкапов») у тех же акторов, что и боевые доли, либо в предсказуемых юрисдикциях, нивелирует смысл MPC. Отличайте MPC-восстановление от обычного «шамира»; не путайте с seed-бэкапами (seed-фраза).

Необдуманный выбор порога. Слишком низкий t (например, 2-of-3 в рознице) + слабые разделения ролей → злоумышленнику достаточно двух слабых устройств/аккаунтов. Слишком высокий t усложняет аварийный доступ и операционные процессы.

Смешение потоков подписания. Один и тот же кластер долей подписывает и выплаты, и высокорисковые DeFi-вызовы. При компрометации фронтенда dApp/интеграции злоумышленник проталкивает «approve unlimited», снимая защиту MPC (подписи валидны). Решение: разделяйте кластеры, включайте инспекцию calldata, минимизируйте allowances.

Операционный и юридический риск

Коллюзия и давление на хранителей долей. Если часть долей удерживается внешними компаниями, на них могут воздействовать юридически (subpoena), административно (регулятор), физически (BGP/дата-центр). В ряде кейсов вокруг институциональных MPC-сетапов потери доступа возникали не из-за криптографии, а из-за процессов и бэкапов (см. кейс StakeHound vs Fireblocks: потеря ключевого доступа привела к судебному спору о ~38 178 ETH).

Санкционные/юрисдикционные ограничения. Доли у поставщиков из одной страны → риск «одним приказом» остановить операции. Планируйте юридическое разведение ролей и локаций.

Доступность и DoS. MPC-подписание требует координации нескольких узлов. DDoS/сбой одного узла может «заморозить» выводы. Нужны избыточные участники, независимые каналы связи, офлайн-процедуры аварийных подпечатей.

Эндпоинты, UX и человеческий фактор

Blind signing и обман интерфейса. Если пользователь/оператор не видит декодированный и проверенный calldata, MPC никак не защитит от подписи вредоносной транзакции. Именно поэтому в 2025 году ряд вендоров акцентирует «анти-blind-signing» слои (симуляции, полис-движки, алерты).

Заражение конечных устройств. Мобильные/рабочие станции с долей секрета — мишень малвари. Даже если доля шифруется аппаратно (SE/TEE), злоумышленник может подменить намерение (prompt-injection, overlay, session hijack) и «легально» инициировать подписи.

Социальная инженерия. Подмена адреса, токена, сети; навязывание «approve unlimited»; фальшивые апдейты SDK. MPC не лечит процедурные ошибки и фишинг, он лишь снижает риск кражи ключа как артефакта.

Разбор кейсов и уроки индустрии

GG18/GG20 → эксфильтрация ключа. Уязвимости в спецификациях и имплементациях TSS показали, что «академическая» корректность — не гарантия безопасности продукта. Протоколы нужно жёстко дополнять проверками знаний и диапазонов, а код — аудитить и обновлять.

TSSHOCK → атаки одного участника. Даже 1 злонамеренный участник при неправильных проверках способен вытащить весь секрет за 1–2 подписи. Минимизируйте доверие, включайте доказательства и защиту от повторов/перезапусков этапов.

StakeHound vs Fireblocks → операционные процессы. Судебный спор вокруг утери доступа к 38 178 ETH (2021) иллюстрирует: даже крупные провайдеры/клиенты спотыкаются на бэкапах/процессах, а не на матане. Документируйте и регулярно проверяйте DR-план, роли TA/кастоди/вендоров.

«MPC ≠ серебряная пуля» (оценка экспертов). Исследователи/поставщики мониторинга отмечают: взломы бирж происходят и при MPC, когда компрометируются внутренние системы (оркестрация, CI/CD, IAM). Важно защищать всю траекторию транзакции, а не только криптографию.

Паттерны безопасной архитектуры MPC

Криптография и библиотеки - Используйте протоколы с современными доказательствами против rogue-key и корректности Paillier/обменов; следите за бюллетенями уязвимостей и обновляйте библиотеки (включая tss-lib). - Совместный RNG с верификацией: *commit-reveal*, проверки непредсказуемости, отказ при аномалиях. - Keygen-церемонии: офлайн окружение, видеопротокол, подписанные отчёты, независимые наблюдатели.

Политики и оркестрация - Разделяйте кластеры: выплаты ≠ DeFi. Для высокорисковых вызовов — отдельные лимиты/пороги/кворумы. - Применяйте policy-engine с симуляцией транзакции и декодированием calldata; запрещайте blind signing; проверяйте целевой контракт/функцию/поля. - Вводите мультифактор на уровне людей/устройств (FIDO2, физические токены) и мягкие «ночные»/гео-лимиты.

Инфраструктура - Истинная распределённость: разные облака/AS, независимые домены администрирования, изоляция CI/CD и ключевой плоскости. - DR-план: регулярные учения «потеря доли/вендора», документированные RTO/RPO, тест ротации ключа и resharing без простоя. - Аттестация (TEE/SE) где возможно; но не полагайтесь только на маркетинг TEE — проектируйте крипто-гарантии на протокольном уровне.

Юридика - Разводите хранителей долей по юрисдикциям и правовым субъектам; учитывайте санкционные/регуляторные риски. - Ясная политика апгрейдов: timelock, публичные оповещения, внешние аудиторы.

Пользователи и интерфейсы - Показывайте пользователю читаемое назначение транзакции (декодер), предупреждения по «approve unlimited». - Интегрируйте allow-list адресов/контрактов и «двухконтурную» подачу (черновик → подтверждение). - Обучайте операторов: см. базовая безопасность, приватность.

Чек-лист аудита MPC-кошелька (due diligence)

Протокол и код - Какая версия TSS? Есть ли контрмеры против rogue-key, корректность Paillier/диапазонные доказательства? Патчи по CVE-2023-33241 применены? - Как реализован RNG и совместная генерация k? Как ловятся повторы/корреляции? - Пройден ли внешний аудит/формальная верификация? Какой процесс рассылки security-бюллетеней?

Операции и процессы - Порог t/n, разделение ролей, независимость долей (облака/AS/юрисдикции). - Наличие keygen-церемонии и регулярных reshare-учений. - DR-план (потеря доли/вендора), RTO/RPO документированы и тестировались?

Политики и UX - Есть ли layer для симуляции транзакций и запрет blind signing? Расширяемые правила (лимиты, время, гео, тип функции)? - Разделены ли кластеры на «касса/DeFi»? «Approve unlimited» запрещён политикой по умолчанию? - Логи и оповещения: кто, когда и что подписал? Есть необратимые журналы?

Юридика - Где зарегистрированы стороны, держащие доли? Возможны ли юридические запреты на подпись? - Политика инцидентов/апгрейдов: timelock, уведомления, внешний наблюдатель.

Сравнение моделей хранения/подписания

Модель На что похожа для пользователя Сильные стороны Уязвимости/риски
MPC / TSS (EOA) Обычный адрес, «магия внутри» UX, кросс-чейновость, гибкость порогов Протокол/реализация; политики off-chain; коллюзия долей
Мультисиг ончейн Видны M-of-N и правила Прозрачность правил, ончейн-гарантии Дороже/сложней UX; не везде доступно
Смарт-кошелёк (AA) Контракт со «сторожами» Лимиты/гвардии/соц-восстановление; спонсоринг газа Риски контракта/эко-совместимости
HSM у кастодиана «Банк хранения» Аппаратные корни доверия, зрелые процессы Централизация; блокировки/юрисдикции

FAQ

Защитит ли MPC от drain-атаки через «approve unlimited»? Нет. MPC защищает ключ, но не намерение. Если вы подписали «approve unlimited», злоумышленник опустошит баланс через контракт. Нужны политики на calldata/симуляция.

Достаточно ли 2-of-3? Для розницы — часто да; для бизнеса — лучше 3-of-5 и выше, с независимостью долей и разделением ролей.

Нужен ли всё равно бэкап? Да, но корректный: не храните «целый ключ», а стройте восстановление долей (reshare) с иными участниками/юрисдикциями. Проверяйте процедуры.

Можно ли комбинировать MPC и мультисиг? Да: MPC-узел как один из подписантов смарт-кошелька (AA) — для особо критичных хранилищ.

Почему «MPC ≠ серебряная пуля»? Потому что большинство крупных взломов — это IAM/DevOps/оркестрация/UX, а не математика. Стройте защиту сквозь весь стек.

См. также

Task Runner