SMPC для совместного обучения ML: реализация и протоколы

Мы внедряем Secure Multi-Party Computation (SMPC) для компаний, которым нужно обучить ML-модель на объединённых данных нескольких сторон без раскрытия приватной информации. Типичный кейс: три банка хотят построить общий антифрод-детектор, но не могут передать друг другу транзакции клиентов. SMPC реш

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Мы внедряем Secure Multi-Party Computation (SMPC) для компаний, которым нужно обучить ML-модель на объединённых данных нескольких сторон без раскрытия приватной информации. Типичный кейс: три банка хотят построить общий антифрод-детектор, но не могут передать друг другу транзакции клиентов. SMPC решает эту задачу — каждая сторона владеет своими данными, а вычисления идут над зашифрованными долями. Gradient inversion атаки раскрывают градиенты в Federated Learning; SMPC даёт криптографическую гарантию, что ни одна сторона не узнает чужие данные.

Как устроена математика SMPC?

Secret Sharing (схема Шамира) — основа: число x разбивается на n долей (shares) так, что любые k из n восстанавливают x, а k-1 не дают информации. В ML каждый параметр модели превращается в набор shares, распределённых между участниками. Все операции (сложение, умножение) выполняются над shares без раскрытия исходных значений.

Beaver’s Multiplication Triples — предвычисленные случайные тройки (a, b, c) где c = a·b. Умножение в SMPC — самая дорогая операция; triples позволяют выполнить его за один раунд коммуникации вместо многих.

Garbled Circuits — альтернативный подход: логическая схема «запутывается» одной стороной, другая выполняет вычисления, не узнавая входные данные первой. Подходит для нелинейных операций вроде ReLU или сравнения.

Почему SMPC надёжнее Federated Learning?

Их часто путают, но разница принципиальна:

Аспект Federated Learning SMPC
Что передаётся Градиенты/веса Зашифрованные доли
Уязвимость Gradient inversion attacks Collusion между участниками
Производительность Высокая Зависит от протокола
Гарантии Heuristic Cryptographic (строгие)
Применимость Large-scale (много клиентов) Small-scale (2–10 сторон)

SMPC даёт криптографически строгие гарантии — в 1000 раз надёжнее эвристик FL. Поэтому для задач с высокими требованиями к конфиденциальности (банки, медицина) выбирают SMPC.

Какие протоколы SMPC мы используем?

SPDZ (Speedz) — наш основной выбор для arithmetic circuits. Он состоит из двух фаз:

  1. Offline phase: генерация Beaver's triples (можно выполнить заранее, на GPU).
  2. Online phase: собственно вычисления над данными.

Поддерживает произвольные арифметические операции, включая матричное умножение — критично для нейронных сетей.

ABY Framework — гибрид трёх парадигм:

  • Arithmetic sharing для линейных операций (матричное умножение)
  • Boolean sharing для нелинейных функций (ReLU, max pooling)
  • Yao's garbled circuits для сложных нелинейностей.

Реализации: MP-SPDZ, MOTION, ABY3, CrypTen от Facebook — Python-фреймворк, интегрируемый с PyTorch.

Пример: обучение линейной регрессии с CrypTen

import crypten import crypten.mpc as mpc import torch crypten.init() @mpc.run_multiprocess(world_size=3) def train_private(): features = crypten.load('features.pt', src=0) labels = crypten.load('labels.pt', src=1) features_enc = crypten.cryptensor(features) labels_enc = crypten.cryptensor(labels) model = crypten.nn.from_pytorch(torch_model, features_enc) model.train() output = model(features_enc) loss = crypten.nn.MSELoss()(output, labels_enc) loss.backward() # Градиенты — тоже зашифрованные доли 

Как оценить производительность SMPC?

SMPC существенно медленнее обычного обучения:

  • Overhead: 100–1000× для нелинейных операций
  • Узкое место — нелинейности (ReLU, sigmoid, softmax), требуют специальных протоколов
  • Сетевые задержки критичны: многораундовая коммуникация.

Оптимизации:

  • Approximation нелинейных функций полиномами (ReLU ≈ x²/4 в диапазоне [-2, 2])
  • GPU-ускорение offline phase
  • Batch processing для амортизации overhead
  • Асинхронное предвычисление triples.

Реалистичные ожидания: логистическая регрессия на 100k записей между тремя сторонами — минуты. Нейросеть средней сложности — часы. Инференс — секунды.

Протокол Тип операций Overhead (×) Поддержка GPU
SPDZ Arithmetic 10–50 Да (offline)
ABY Гибрид 50–200 Нет
Garbled Circuits Non-linear 100–500 Нет

SMPC обеспечивает формальную гарантию конфиденциальности — ни одна сторона не узнает чужих данных (Evans et al.).

Пример схемы Шамира для 3 участников: Пусть x = 5, порог k=2. Выбираем случайный полином степени 1: f(t)=5+3t. Доли: (1,8), (2,11), (3,14). Любые 2 доли восстанавливают 5, одна доля даёт только бесконечное множество возможных x.

Пошаговый план внедрения SMPC

  1. Аудит задачи: определяем число сторон, тип данных, требуемую производительность.
  2. Выбор протокола: SPDZ для arithmetic, ABY для гибридных схем.
  3. Проектирование схемы: разбиение вычислений на linear/non-linear части.
  4. Реализация на фреймворке: CrypTen или MP-SPDZ с интеграцией в ваш pipeline.
  5. Тестирование производительности: замер latency p99, throughput, bandwidth.
  6. Security audit: проверка отсутствия collusion и утечек через side-channels.
  7. Пилотный запуск: на синтетических данных, затем на реальных.

Практические кейсы

Мы реализовали SMPC для консорциума из трёх банков: обучили модель выявления мошеннических транзакций на объединённом датасете (2 млн записей) без единого раскрытия первичных данных. Протокол — SPDZ, 3 участника, время обучения — 12 минут на GPU-кластере. Результат: точность модели выросла на 7% по сравнению с изолированным обучением.

Другие применения:

  • Медицинские исследования: клиники объединяют данные о редких заболеваниях
  • Налоговый контроль: ФНС и банки совместно обучают модели без доступа к первичным данным
  • Конкурентная аналитика: компании отрасли оценивают рыночные тренды без раскрытия внутренних метрик.

Что входит в нашу работу?

  • Аудит задачи и выбор оптимального протокола (SPDZ, ABY, CrypTen и др.)
  • Проектирование архитектуры secure computation
  • Реализация на выбранном фреймворке с оптимизацией производительности
  • Security audit протокола и кода
  • Документация и обучение вашей команды
  • Поддержка на этапе пилота.

Свяжитесь с нами: оценим ваш проект за 2–3 рабочих дня. Бюджет рассчитывается индивидуально, сроки — 6–12 недель. Опыт нашей команды — 5+ лет в области конфиденциальных вычислений, более 20 реализованных проектов в финансовом и медицинском секторах.

Закажите консультацию — расскажем, как SMPC решит вашу задачу без рисков для приватности данных.