Тройки Бивера для безопасного умножения
- title
- Тройки Бивера для безопасного умножения
- type
- summary
- summary
- Разбор Stoffel Labs: как тройки Бивера позволяют умножать секретные доли без повышения порога восстановления
- tags
- cryptography, mpc, tutorial
- sources
- stoffel-beaver-triples
- created
- 2026-05-10
- updated
- 2026-05-10
- lang
- ru
- translation_of
- mpc-beaver-triples
- source_updated
- 2026-05-10
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
Компания Stoffel Labs (предоставляющая MPC как сервис) написала наглядное руководство по beaver-triples на примере четырёх друзей, выбирающих ресторан. Такая подача важна, потому что протокол выглядит абстрактным ровно до тех пор, пока кто-нибудь не нарисует прямоугольник.
Условия задачи: четыре человека оценивают три ресторана по доступности a и качеству еды f, обе шкалы от 0 до 10. Группа хочет получить итоговые баллы для каждого ресторана S_j = Σ a_ij · f_ij так, чтобы никто не узнал чужие a_ij и f_ij. Для этого они используют secret-sharing с порогом восстановления 2 из 4.
Сложение разделяемых секретов ничего не стоит - разделение секрета линейно, поэтому [x] + [y] = [x+y] не требует взаимодействия участников и не увеличивает степень многочлена. С умножением всё сложнее: прямое вычисление [x][y] удваивает степень многочлена, а значит, порог восстановления возрастает с 2 до 3. Это нарушает базовое условие протокола о том, что двое участников могут раскрыть результат.
Решение - заранее вычисленная тройка ([a], [b], [c]), где c = ab, а a, b выступают случайными масками. Тождество Бивера переписывает площадь прямоугольника xy через (x-a) и (y-b):
xy = c + (x-a)·b + a·(y-b) + (x-a)·(y-b)
= c + d·b + a·e + d·e where d = x-a, e = y-b
Важно то, что d и e можно безопасно раскрыть, поскольку a и b - это равномерно распределённые одноразовые маски. Когда d и e становятся публичными, правая часть вычисляется исключительно из долей секрета - без роста степени. Плата за это - одна свежая тройка на каждое умножение плюс один раунд коммуникации для раскрытия d и e.
Две оговорки по корректности и безопасности, которые подчёркивает Stoffel:
aиbобязаны быть равномерно случайными; если в них есть смещение, раскрытиеd=x-aприведёт к утечке информации обx.- Каждую тройку можно использовать ровно один раз. Повторное применение
[a],[b]для двух умножений(x,y)и(x',y')раскроетd'-d = x'-xиe'-e = y'-y, то есть линейные зависимости между секретными входными значениями.
Тройки Бивера обычно генерируются на офлайн-фазе (иногда доверенной третьей стороной - TTP, иногда через протоколы на базе OT/HE) и расходуются в онлайн-фазе. Этот паттерн лежит в основе любого современного MPC-стека для модели с пассивным нарушителем (semi-honest) - SPDZ, MASCOT, TinyOT. Именно благодаря ему Stoffel может продавать "MPC как сервис", не переписывая криптографию под каждый конкретный сценарий.
Ссылки: secret-sharing, secure-multiparty-computation, beaver-triples, stoffel-mpc.