Реализация Secure Multi-Party Computation (SMPC) для совместного обучения моделей
SMPC позволяет нескольким организациям совместно обучить ML-модель, при этом ни одна из сторон не видит данные других. Банки могут объединить антифрод-данные, больницы — клинические записи, компании — поведение пользователей. Без передачи raw data.
Математическая основа
Secret Sharing (схема Шамира)
Число x разделяется на n долей (shares) таким образом, что любые k из n долей позволяют восстановить x, а любые k-1 не дают никакой информации. В ML-контексте: значения параметров модели разбиваются на shares, распределяются между участниками, вычисления производятся над shares.
Обفускация через Beaver's Multiplication Triples
Умножение двух тайных значений — дорогостоящая операция в SMPC. Beaver's triples — предвычисленные случайные multiplicative triples (a, b, c) где c = a·b. Используются для эффективного умножения без раскрытия значений.
Garbled Circuits
Альтернативный подход: схема вычислений преобразуется в "запутанную" (garbled) логическую схему. Одна сторона "шифрует" схему, другая выполняет вычисления без знания входных данных первой.
Federated Learning vs SMPC
Их часто путают, но это разные технологии:
| Аспект | Federated Learning | SMPC |
|---|---|---|
| Что передаётся | Градиенты/веса | Зашифрованные доли |
| Уязвимость | Gradient inversion attacks | Collusion между участниками |
| Производительность | Высокая | Зависит от протокола |
| Гарантии | Heuristic | Cryptographic (строгие) |
| Применимость | Large-scale (много клиентов) | Small-scale (2–10 сторон) |
SMPC даёт криптографически строгие гарантии, FL — практичнее для большого числа участников.
Протоколы для ML
SPDZ (Speedz) и его варианты
Наиболее практичный протокол для arithmetic circuits. Состоит из:
- Offline phase: генерация Beaver's triples (может выполняться заранее)
- Online phase: фактические вычисления над данными
Поддерживает произвольные арифметические операции, включая матричное умножение — критично для нейронных сетей.
ABY (Arithmetic-Boolean-Yao) Framework
Гибридный фреймворк, комбинирующий три парадигмы в зависимости от типа операции:
- Arithmetic sharing: линейные операции (матричное умножение)
- Boolean sharing: нелинейные функции (ReLU, max pooling)
- Yao's garbled circuits: сложные нелинейные операции
Реализации: MP-SPDZ, MOTION, ABY3, CrypTen (Facebook, Python-based).
CrypTen — практический пример
import crypten
import crypten.mpc as mpc
import torch
crypten.init()
# Each party loads their own data
@mpc.run_multiprocess(world_size=3)
def train_private():
# Party 0 owns features, party 1 owns labels
features = crypten.load('features.pt', src=0)
labels = crypten.load('labels.pt', src=1)
# Encrypt data as secret shares
features_enc = crypten.cryptensor(features)
labels_enc = crypten.cryptensor(labels)
# Train model on encrypted data
model = crypten.nn.from_pytorch(torch_model, features_enc)
model.train()
# Forward/backward pass happens in encrypted domain
output = model(features_enc)
loss = crypten.nn.MSELoss()(output, labels_enc)
loss.backward()
# Gradients are also encrypted shares
Производительность и ограничения
SMPC существенно медленнее обычного обучения:
- Overhead: 100x–1000x по сравнению с plaintext для нелинейных операций
- Нелинейности (ReLU, sigmoid, softmax) — узкое место, требуют протоколов для нелинейных функций
- Сетевые задержки критичны: протоколы требуют многораундовой коммуникации
Оптимизации:
- Approximation нелинейных функций полиномами (ReLU ≈ x²/4 в определённом диапазоне)
- GPU-ускорение для offline phase
- Batch обработка для амортизации overhead коммуникации
- Asynchronous preprocessing
Реалистичные ожидания: обучение логистической регрессии на 100k примерах между 3 сторонами — минуты. Обучение нейронной сети средней сложности — часы. Inference — секунды.
Use cases
- Банковский антифрод: несколько банков обучают общую модель без раскрытия транзакций клиентов
- Медицинские исследования: клиники объединяют данные пациентов для редких заболеваний
- Налоговый контроль: ФНС и банки совместно обучают модели без доступа к первичным данным
- Конкурентная аналитика: компании отрасли оценивают рыночные тренды без раскрытия внутренних метрик
Срок реализации SMPC для конкретной ML-задачи: 6–12 недель, включая выбор протокола, оптимизацию производительности и security audit.







