SMPC (или MPC, *secure multi-party computation*) — класс криптографических протоколов, позволяющих нескольким участникам совместно посчитать функцию от их приватных данных, при этом никто не раскрывает свои входы другим. На выходе все (или выбранные) участники получают только результат, а приватность входов сохраняется даже при частичном компрометировании сторон.
Это фундамент для: MPC-кошельков и пороговых подписей (TSS) в крипто-кастоди, приватного машинного обучения, приватных аукционов, PSI (Private Set Intersection) и безопасной агрегированной аналитики.
Связанные страницы: FHE (полностью гомоморфное шифрование), zkML (верифицируемый ИИ), AI Security Hub, Guardrails.
Зачем нужен SMPC (Secure Multi-Party Computation)
- Приватность по умолчанию. Данные остаются у владельцев; протокол раскрывает только то, что требуется функцией.
- Совместная аналитика между конкурентами. Банки/биржи/медучреждения могут агрегировать метрики, не делясь сырыми данными.
- Устойчивость к компрометации. Секрет дробится на «доли»; чтобы украсть ключ/данные, злоумышленнику нужно захватить порог участников.
- Кастоди и операции с ключами. Пороговая генерация/подпись без «единого приватного ключа» в памяти.
- Соответствие регуляторике. Локальность данных и отсутствие их копирования упрощают аудиты и DPIA.
Как это работает: интуиция
Базовая идея — секрет-шеринг (разделение секрета). Вместо прямого обмена данными участники создают доли (shares) так, что:
- каждую долю можно хранить/передавать безопасно — изолированно она ничего не раскрывает;
- по любым t из n долей можно восстановить секрет (t-of-n порог), а по меньшему числу — нельзя.
Поверх разделения строятся операции сложения/умножения/сравнения — из этого «конструктора» собирают произвольные функции (от статистики до подписей).
Модели безопасности
| Модель | Предпосылка | Где встречается |
|---|---|---|
| Semi-honest (Honest-but-Curious) | Участники следуют протоколу, но пытаются выведать лишнее | Исследовательская аналитика, быстрые POC |
| Malicious | Часть участников может отступать от протокола и саботировать вычисления | Боевые кастоди/кошельки, финансы |
| Honest-majority | Бóльшая часть честна (например, ≥2/3) | Быстрые протоколы агрегации/аналитики |
| Dishonest-majority | Допускается большинство вредоносных | Более тяжёлые, но универсальные протоколы (например, SPDZ) |
Важно также, кто узнаёт результат (все/лишь один) и нужен ли публичный аудит.
Основные семейства протоколов
1) Секрет-шеринг (аддитивный, полиномиальный).
- *Аддитивный*: x = x₁ + x₂ + … + xₙ (mod q) — каждая доля случайна, сумма даёт секрет.
- *Shamir (полиномиальный)*: секрет — свободный член случайного полинома степени t−1, доля — значение в точке; любые t точек восстанавливают секрет (интерполяция).
2) Протоколы на схемах/цепях.
- Yao Garbled Circuits — двусторонние безопасные вычисления (2PC) через «зашумлённые» логические схемы.
- GMW — вычисления по булевым схемам с обширным использованием oblivious transfer (OT).
- BGW — «классика» на базе полиномиального секрета в модели честного большинства.
3) Современные активные линии.
- SPDZ/Overdrive/MASCOT/Triples — эффективное умножение по модулю через заготовленные *Beaver triples*; часто устойчивы к злоумышленной модели.
- ABY/ABY3 — смешанные представления (булево/арифметическое/шифротекст) и переключение между ними для эффективности.
- PSI/OPRF — специальные протоколы пересечения множеств без раскрытия элементов.
4) Пороговые подписи (TSS).
- Threshold ECDSA/EdDSA/BLS — ключ «рождается» распределённо и никогда не собирается целиком; подпись получается кооперацией t участников.
MPC-кошельки и TSS: в чём идея
В классическом кошельке приватный ключ хранится целиком (одна точка отказа). В MPC-кошельке ключ распределяется: sk = sk₁ ⊕ sk₂ ⊕ … ⊕ skₙ (условно), а подпись (ECDSA/EdDSA/BLS) выпускается совместным протоколом.
Плюсы:
- Нет единого «секретного файла». Риск утечки/малвэра сильно снижается.
- Политики утверждения. Порог t можно настраивать (например, 2-из-3: устройство+HSM+офис).
- Прозрачность ончейн. Для наблюдателя транзакция выглядит как обычная подпись (в отличие от on-chain multisig).
Минусы/нюансы:
- Сложность реализации. Нужны правильно настроенные протоколы, энтропия, отказоустойчивость.
- Коммуникационные раунды. Для подписи требуется интерактивность между участниками.
- Доверие окружению. Компрометация порога устройств даёт злоумышленнику возможность подписывать.
MPC-кошелёк vs Multisig
| Критерий | MPC (TSS) | On-chain Multisig |
|---|---|---|
| Видимость ончейн | Обычная одиночная подпись (приватность политики) | Явная многоадресность/политика в транзакции |
| Гибкость порога | Почти произвольные t-of-n, перенос порога без миграции адреса | Жёстко вшито в смарт-контракт/скрипт |
| Сложность/инфра | Криптопротоколы, защищённые каналы, HSM/TEE | Контракт/скрипт, меньше криптознаний |
| Стоимость ончейн | Как у обычной транзакции | Выше (несколько подписей/логика в контракте) |
| Единая точка отказа | Нет «целого ключа»; но уязвим порог t | Нет единого ключа, но конфигурация публична |
Оба подхода уместны: multisig — прозрачно и просто; MPC — приватно и гибко.
Классические задачи на SMPC
- PSI (Private Set Intersection). Найти пересечение множества клиентов двух организаций без раскрытия остального. В крипто — проверки пересечений санкционных/фрод-списков.
- Приватная аналитика/агрегация. Суммы/средние/частоты без раскрытия индивидуальных значений (KYC-счётчики, антикрут).
- Приватные аукционы и торги. Выбрать победителя по ставке, не раскрывая проигравшие.
- Федеративное обучение и secure aggregation. Обновления градиентов суммируются по MPC; сервер видит только агрегат.
- Пороговые подписи/кастоди. Подпись транзакций/сообщений без «единого ключа»; ротация долей; восстановления.
Пайплайн на примере (t-of-n TSS)
- Distributed Key Generation (DKG). Участники совместно генерируют распределённые доли skᵢ и согласуют публичный ключ pk.
- Политика. Определяется порог t, роли (оператор/владалец/аудитор), расписания, квоты.
- Подпись. Любые t участников запускают протокол подписи (синхронно/асинхронно).
- Аудит. Логи попыток подписи, аттестация устройств, ротации долей.
- Роллбек. Процедуры блокировки утерянного устройства и восстановление доли.
Плюсы и минусы SMPC в целом
| Плюсы | Минусы/ограничения |
|---|---|
| Приватность входов; минимум утечек | Сложность реализации и верификации протоколов |
| Пороговая устойчивость и отсутствие единой точки отказа | Коммуникационные раунды, требования к сети/латентности |
| Гибкие политики доступа (t-of-n) | Стоимость вычислений выше, чем «в лоб» |
| Прозрачность on-chain (для TSS) | Операционный риск: резервирование долей, HSM/TEE, инцидент-плейбуки |
SMPC vs FHE vs zkML (когда что выбирать)
| Задача | SMPC | FHE | zkML |
|---|---|---|---|
| Совместные вычисления между организациями | Да (нативно) | Можно, но тяжело и медленно | Не про совместное вычисление |
| Приватность входов от исполнителя | Да | Да | По умолчанию — нет (добавляется отдельно) |
| Публичная верификация результата on-chain | Не специализация | Не основная цель | Сильная сторона |
| Подписи/кастоди | Идеально (TSS) | Не применимо | Не применимо |
| ML-инференс | Через secure aggregation / смешанные протоколы | Да (CKKS/TFHE) | Да (доказуемый вывод) |
На практике часто используют гибриды: SMPC для распределения доверия, FHE — для вычислений по зашифрованным данным, zk — для доказуемой корректности результата.
Архитектурные заметки (инженерные)
- Предраспределённые материалы: для умножений по модулю заранее готовят *Beaver triples* (онлайн-фаза быстрее).
- Переключение представлений: булево ←→ арифметическое (линии ABY) в зависимости от операции.
- Сетевые SLO: MPC чувствителен к задержкам; планируйте колокацию/каналы/кэширование.
- Хранилище долей: HSM, смарт-карты, enclave/TEE, аппаратная энтропия, защищённые резервные копии.
- Логи и аудит: неизменяемые журналы «кто подписал»/«какие доли участвовали», доказуемые утверждения.
- Откат/ротация: протоколы обновления долей без пересоздания адресов/ключей.
Риски и антипаттерны
- Склейка долей в одном месте. Любые «удобные» бэкапы, где встречаются ≥t долей, убивают модель угроз.
- Нет DKG (генерация «центром»). Нельзя генерировать полный ключ и «нарезать» его; нужна распределённая генерация.
- Слабая энтропия/повторные nonce в пороговой ECDSA — критическая уязвимость.
- Отсутствие политики отказоустойчивости (что делаем при потере устройства?)
- «Чёрные ящики» без независимого аудита. Сложные MPC-системы требуют внешних проверок/формальной верификации.
Чек-лист внедрения
- Определите модель угроз (semi-honest vs malicious, honest-majority, t-of-n).
- Выберите семейство протоколов (секрет-шеринг/SPDZ/ABY/Yao) под ваши операции.
- Зафиксируйте сетевые SLO (латентность/пакет-лосс), план колокации узлов.
- Настройте DKG и безопасное хранение долей (HSM/TEE/смарт-карты, резервные копии).
- Опробуйте инцидент-плейбуки: потеря, компрометация, ротация долей, отзыв доступа.
- Введите аудит и журналирование, тесты отказоустойчивости, независимую проверку реализации.
- Для кошельков — пропишите политики подписи (лимиты/кворумы/мульти-фактор).
- Для аналитики — приготовьте golden-наборы и «санити-тесты», чтобы не сломать корректность.
Мини-пример: PSI для пересечения санкционных списков
Две биржи хотят сверить клиентов на предмет попадания в общий санкционный список, не раскрывая полные базы.
- Каждая кодирует список хешами и участвует в PSI-протоколе (на базе OPRF/OT).
- Выход — только пересечение (идентификаторы совпадений).
- Никакой сторонний пользователь не узнаёт элементы вне пересечения.
Частые вопросы (FAQ)
Чем SMPC отличается от «просто шифрования и отправки данных оператору»?
Оператор при обычном шифровании должен расшифровать, чтобы посчитать. В SMPC никто не видит чужих входов: вычисление происходит над разделёнными долями/«загарбленными» схемами.
Можно ли совместить SMPC и FHE?
Да. Популярны гибриды: часть операций выполняют по FHE (чтобы уменьшить коммуникацию), часть — по SMPC (чтобы ускорить нелинейности), плюс zk-доказательства для публичной верификации.
Насколько это быстро?
Медленнее, чем «в лоб». Но для конкретных классов задач (агрегация, пороговые подписи, PSI) современные протоколы дают практичные задержки при грамотной сетевой архитектуре и предвычислениях.
Зачем TSS, если есть multisig?
Multisig прозрачен, но виден ончейн и менее гибок по порогу/политикам. TSS держит политику оффчейн: на блокчейне транзакция выглядит обычной, а ключ никогда не собирается целиком.
Что будет, если участники пропадут?
Если активно t-of-n, достаточно набрать кворум t оставшихся. Продумайте ротацию долей и «запасні» участники (эскалация по процедурам).
Мини-глоссарий
- Secret Sharing — разделение секрета на доли; восстановление по порогу.
- Shamir Sharing — полиномиальная схема порогового секрета.
- Beaver Triples — заготовки для ускоренного умножения в MPC.
- Garbled Circuits (Yao) — двусторонние вычисления по «зашумлённой» схеме.
- OPRF/PSI — протоколы слепых функций и приватного пересечения множеств.
- TSS — пороговые подписи (ECDSA/EdDSA/BLS), основа MPC-кошельков.
