Протокол конфиденциального вычисления
(
безопасное
,
защищённое
или
тайное многостороннее вычисление
;
англ.
secure multi-party computation
) —
криптографический протокол
, позволяющий нескольким участникам произвести вычисление, зависящее от тайных входных данных каждого из них, таким образом, чтобы ни один участник не смог получить никакой информации о чужих тайных входных данных. Впервые задача конфиденциального вычисления была поднята
Эндрю Яо
(
англ.
Andrew Yao
) в 1982 году в статье
. Два миллионера, Алиса и Боб, хотят выяснить, кто же из них богаче, при этом они не хотят разглашать точную сумму своего благосостояния. Яо предложил в своей статье оригинальный способ решения этой задачи, получившей впоследствии название
проблема миллионеров
. Гораздо позже, в 2004 году Йехуда Линделл (Yehuda Lindell) и Бенни Пинкас (Benny Pinkas) предоставили математически строгое доказательство корректности протокола Яо в статье
. Задача конфиденциального вычисления тесно связана с
задачей разделения секрета
.
Формализованная постановка задачи
В конфиденциальном вычислении участвуют
N
участников
p
1
, p
2
, …, p
N
. У каждого участника есть тайные входные данные
d
1
, d
2
, …, d
N
соответственно. Участники хотят найти значение
F(d
1
, d
2
, …, d
N
)
, где
F
— известная всем участникам
вычислимая функция
от
N
аргументов. Допускается, что среди участников будут
получестные нарушители
, то есть те, которые верно следуют протоколу, но пытаются получить дополнительную информацию из любых промежуточных данных.
Требования к безопасности
К безопасности протоколов конфиденциального вычисления обычно предъявляются различные требования в зависимости от ситуации. Приведём основные требования.
-
Конфиденциальность. Никто из участников не должен иметь возможности получить больше информации, чем им предписано.
-
Корректность. Каждый участник должен гарантировано получить верные данные.
-
Гарантия получения информации. У участников не должно быть возможности помешать другим участников получить выходные данные.
Пример решения проблемы миллионеров
Пусть миллионеры Алиса и Боб хотят выяснить, чьё состояние больше, не разглашая точную сумму своих состояний. Для определённости предположим, что у Алисы имеется
i
миллионов, а у Боба —
j
, где
1<i
и
j<10
. Для начала Алисе и Бобу понадобится надёжная
криптосистема с открытым ключом
, например,
RSA
. Пусть
E
a
— произвольная функция шифрования для ключа
a
, а
D
a
— функция расшифрования с закрытым ключом для открытого ключа
a
. Пусть
a
— открытый ключ Алисы. Тогда протокол выглядит так:
-
Боб выбирает случайное целое число
x
из
N
бит и конфиденциально считает
k=E
a
(x)
;
-
Боб посылает Алисе число
k-j+1
;
-
Алиса конфиденциально считает значения
y
u
=D
a
(k-j+u)
для
u=1,2,…,10
;
-
Алиса выбирает случайное простое число
p
из
N/2
бит так, чтобы числа
z
u
=y
u
mod(p)
отличались по меньшей мере на 2 по модулю
p
для всех
u
и посылает число
p
Бобу;
-
Алиса посылает числа
z
1
, z
2
, …, z
i
с последующими числами
z
i+1
+1, …, z
10
+1
; числа берутся по модулю p;
-
Боб, который знает, сколько у него денег (
j
), сравнивает число под номером
j
с числом
x mod p
, выбранном на первом шаге, и, если они равны, то Боб делает вывод о том, что
i ⩾ j
, и
i < j
в противном случае;
-
Боб сообщает результат Алисе.
Видно, что протокол позволяет однозначно определить, чьё состояние больше, и при этом участники не могут узнать состояния друг друга.
Реализации
Существует два различных подхода к реализации протокола. Первый подход обычно основан на
разделении секрета
и работает на представлении вычисляемой функции в виде
(
англ.
arithmetic circuit
), как, например, в протоколах BGW (Ben-Or, Goldwasser и Wigderson)
и CCD (Chaum, Crepeau и Damgard)
. Этот подход обычно применяется тогда, когда известно, что большинство участников честные (что возможно только в том случае, когда число участников больше двух). Другой подход представляет функцию в виде
. Этот подход был использован
Эндрю Яо
при построении искажённой схемы (
англ.
garbled circuit
)
, а также в протоколе GMW (Goldreich, Micali и Wigderson)
.
Метод с применением арифметической схемы лучше подходит для выполнения операций сложения и умножения (где у участников есть доли секрета, и воссоздать секрет можно только в случае получения информации от каждого из участников), но плохо подходит для выполнения операций сравнения. Этот подход достиг большого успеха в проекте «SIMAP»
.
Метод с использованием логической схемы выполняет операции сложения и умножения с меньшей эффективностью, но легко может выполнять бинарные операции, такие как сравнения. Этот второй подход, на котором основывается система
Эндрю Яо
для случая двух участников, был реализован
в системе честной игры (
англ.
fairplay system
)
. Эта система также предоставляет возможность реализовать необходимую функциональность, представленную
высокоуровневым языком программирования
в виде логического контура, который потом интерпретируется средой выполнения и безопасно выполняется. Также существует система «FairplayMP»
, являющаяся расширением «Fairplay» на случай более чем двух участников. Значительным преимуществом основанных на методе систем с логическими схемами является то, что они выполняются за постоянное число обменов информацией, в то время как преимуществом систем, основанных на арифметических схемах, является способность очень быстро выполнять арифметические операции (сложение и умножение).
Пример протокола
Для простоты допустим, что в вычислении участвуют два участника, то есть,
N=2
, и участникам нужно посчитать функцию
F
.
-
Представим функцию
F
в виде
логической схемы
, то есть, представим входные данные функции
F
в двоичном виде, а саму функцию реализуем с помощью операций AND, OR и NOT. Тогда на вход логической схемы подаются биты всех аргументов функции
F
, а сама схема состоит из
логических вентилей
AND, OR и NOT, и на выходе выдаёт результат функции
F
в двоичном формате.
-
Участник
p
1
генерирует для каждого провода логической схемы два различных случайных числа
k
0
u
k
1
. Числа представляют шифрованные ноль и единицу в этом проводе соответственно.
-
Участник
p
1
создаёт для каждой схемы зашифрованную таблицу вычисления. Для бинарного вентиля OR такая таблица будет выглядеть следующим образом:
Входной провод
w
1
|
Входной провод
w
2
|
Выходной провод
w
3
|
Зашифрованная таблица вычисления
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Здесь
означает результат шифрования значения
x
ключом
k
, а
— соответственно расшифровка шифротекста
y
ключом
k
. Следует выбрать
симметричную схему шифрования
, обладающую одним дополнительным свойством: при попытке расшифровать текст с неправильным ключом алгоритм возвращает ошибку.
Смысл этой таблицы таков: если мы знаем зашифрованные значения сигнала
k
1
u
k
2
на входных проводах вентиля
w
1
u
w
2
соответственно, то мы можем вычислить зашифрованное же значение сигнала, вычислив для всех
i=1…4
значение
. В трёх случаях из четырёх должна возникнуть ошибка, а в оставшемся четвёртом мы получим зашифрованное значение
k
3
сигнала на выходе вентиля.
-
Участник
p
1
передаёт логическую схему и зашифрованные таблицы вычисления для всех схем участнику
p
2
.
-
Участник
p
1
передаёт участнику
p
2
зашифрованные значения входных сигналов для тех входов, которые соответствуют входным данным участника
p
1
.
-
Для каждого входного провода
w
i
соответствующего входным данным
p
2
, участник
p
1
передаёт участнику
p
2
с помощью протокола
забывчивой передачи
число
, где
b
i
— значение бита тайных входных данных участника
p
2
. При такой передаче участник
p
1
не узнает значения
b
i
. Так как для каждого провода ранее были случайным образом выбраны свои случайные числа, являющиеся нулём и единицей, то участник
p
2
не сможет узнать, какое число является нулём, а какое — единицей для входных проводов участника
p
1
, а значит и не сможет узнать входные данные участника
p
1
.
-
Теперь у участника
p
2
есть зашифрованная логическая схема и зашифрованные значения всех входных проводов. Он вычисляет в зашифрованном виде (как было описано выше) все вентили схемы друг за другом и затем передаёт зашифрованный результат участнику
p
1
.
-
Участник
p
1
расшифровывает результат и сообщает его участнику
p
2
.
Используемые протоколы
-
Важной составляющей протокола конфиденциального вычисления может быть
забывчивая передача
.
-
Протокол виртуальных участников — протокол, который скрывает личность участников
.
-
Протоколы безопасных сумм позволяют сотрудничающим участникам вычислить некоторые функции от их индивидуальной информации, не разглашая эту информацию друг другу
.
Практическое применение
-
Электронное голосование
. Например, каждый участник может проголосовать за или против, тогда результатом голосования
n
участников будет функция
F(x
1
, …,x
n
)
, где
x
i
может принимать значения 0 (против) и 1 (за).
-
Электронные аукционы. Каждый участник предлагает цену
x
i
, и функция
F(x
1
, …,x
n
)
возвращает номер максимального
x
i
.
-
Статистика. Допустим, студенты хотят узнать лучшую или среднюю оценку, не показывая оценки друг другу.
-
Базы данных
. Например, пусть пользователь хочет выполнить запрос к базе данных и получить ответ, не раскрывая запроса. Владелец сервера с базой данных хочет, чтобы при запросах никакая информация, кроме ответа на запрос, не попадала к пользователю. В этом случае участниками протокола конфиденциального вычисления будет как пользователь, так и сервер.
-
Распределённый
центр сертификации
. Допустим нужно создать центр сертификации, который будет выдавать сертификаты пользователям, подписывая их каким-нибудь секретным ключом. Для защиты ключа ключ можно поделить между несколькими серверами таким образом, чтобы каждый сервер хранил свою часть ключа. Тогда возникнет проблема: как выполнить криптографическую операцию (в данном примере выдачу подписи), не передавая все части ключа на один компьютер. Эта проблема решается с помощью протокола конфиденциального вычисления, где входными данными для функции конфиденциального вычисления являются части ключа и подписываемое сообщение, а выходные данные представляют собой подписанное сообщение.
Примечания
-
Andrew Chi-Chih Yao: Protocols for Secure Computations (Extended Abstract) FOCS 1982: 160—164
-
Yehuda Lindell, Benny Pinkas: A Proof of Yao’s Protocol for Secure Two-Party Computation, Cryptology ePrint Archive, Report 2004/175
-
19 мая 2008 года.
-
M. Ben-Or, S. Goldwasser and A. Wigderson. Completeness theorems for non-cryptographic fault-tolerant distributed computation. In 20th STOC, 1-10, 1988.
-
P. Bogetoft, D.L. Christensen, I.Damgard, M. Geisler, T. Jakobsen, M. Kroigaard, J.D. Nielsen, J.B. Nielsen, K. Nielsen, J.Pagter, M. Schwartzbach and T. Toft. Secure multiparty computation goes life. In Financial Cryptography and Data Security — FC 2009
-
A. Yao. How to generate and exchange secrets. In 27th FOCS, 162—167, 1986.
-
Goldreich, S. Micali and A. Wigderson. How to play any mental game — A completeness theorem for protocols with honest majority. In 19th STOC, 218—229, 1987.
-
P. Bogetoft, I. Damgard, T. Jakobsen, K. Nielsen, J. Pagter. and T. Toft. A practical implementation of secure auctions based on multiparty integer computation. In Financial Cryptography and Data Security — FC 2006, Springer-Verlag LNCS 4107, 142—147, 2006.
-
D. Malkhi, N. Nisan, B. Pinkas and Y. Sella. Fairplay — a secure two-party computation system. In Proc. of 13th USENIX Security Symposium, 2004.
-
A. Ben-David, N. Nisan and B. Pinkas. FairplayMP: a system for secure multi-party computation. In Computer and Communications Security — CCS 2008, ACM, 257—266, 2008.
-
Pathak Rohit, Joshi Satyadhar, Advances in Information Security and Assurance, Springer Berlin / Heidelberg, ISSN 0302-9743 (Print) 1611-3349 (Online),
ISBN 978-3-642-02616-4
, DOI 10.1007/978-3-642-02617-1
-
Rashid Sheikh, Brijesh Kumar and Durgesh Kumar Mishra, Privacy Preserving k-secure sum protocols, International Journal of Computer Science and Information Security, ISSN 1947-5500 (Online),Vol.6, No.2, Nov. 2009