Искаженная цепь — это криптографический протокол для организации двустороннего конфидециального вычисления, в котором вычисляемая функция представляется в виде Булевой цепи.

Введение править

Далее участников протокола будем называть Алиса и Боб.

Двустороннее конфидециальное вычисление править

Алиса имеет свои секретные входные данные x, Боб имеет секретные входные данные y. Протокол двустороннего конфидециального вычисления используется для того, чтобы совместно вычислить некую функцию f(x, y) таким образом, чтобы никто не узнал чужих входных данных.

Примеры править

  • Проблема миллионеров Яо. Два миллионера хотят узнать, кто из них богаче, не разглашая при этом свое состояние.

Забывчивая передача данных править

В забывчивой передаче данных участвуют две стороны: отправитель и получатель. Протокол определяется следующим образом:

  • Начала протокола: Отправитель имеет два сообщения   и  , получатель имеет бит  .
  • Конец протокола: получатель узнает сообщение  , в то время как отправитель не узнает ничего.

Протокол искаженной цепи править

Протокол состоит из 6 шагов:

  1. Вычисляемая функция (например, в проблеме миллионеров это функция сравнения) представляется в виде Булевой цепи с двумя входами. Вид цепи известен обеим сторонам. Этот шаг может быть сделан заренее третьей стороной.
  2. Алиса искажает (зашифровывает) цепь. Алису называют искажатель.
  3. Алиса отправляет искаженную цепь Бобу вместе с ее зашифрованными входными данными.
  4. Боб, с помощью забывчивой передачи данных, получает свои зашифрованные входные данные от Алисы.
  5. Боб восстанавливает (расшифровывает) цепь и получает зашифрованные результаты вычисления.
  6. Алиса и Боб связываются чтобы узнать результат вычисления

Далее эти шаги будут описаны более подробно.

Генерация цепи править

Для небольших функций можно сгенерировать цепь вручную. При генерации цепи принято использовать логические вентели AND и XOR. При этом важно, чтобы сгенерированная цепь имела минимальное количество логических вентелей AND (см. оптимизации). Для этого существуют методы генерации оптимальной (в смысле минимального количества элементов AND) цепи, использующие логический синтез.

Алгоритм править

Протокол состоит из следующих шагов:

Искажение цепи править

Алиса (искажатель) на этом шаге зашифровывает Булеву цепь, чтобы получить искаженную цепь. Каждому проводу в цепи (входы и выход) Алиса присваивает по паре рандомно сгенерированных строк, называемых метками: одна строка для булевой 1 и одна для 0. (Метки имеют размер k бит, где k - параметр безопасности, обычно равный 128.) Затем в таблице истинности цепи Алиса заменяет все нули и единицы на соответствующие метки. Таблица ниже показывает таблицу истинности для логического вентиля AND с двумя входами: wa, wb, и выходом wc.

 
Провода и их метки для вентиля
a b c
0 0 0
0 1 0
1 0 0
1 1 1

Алиса заменяет в таблице 0 и 1 соответствующими метками:

a b c
     
     
     
     

Затем Алиса зашифровывает метки выходных значений в таблице, используя соответствующие входные метки. Полученная зашифрованная таблица называется искаженная таблица. Шифрование проводится таким образом, чтобы расшифровать запись в таблице было возможно только имея две корректные входные метки, в противном случае запись при расшифровке должна давать какой-то случайный мусор.

Искаженная таблица
 
 
 
 

В конце Алиса случайным образом переставляет строки в таблице.

Передача данных править

Пусть Алиса и Боб имеют входные данные   и  . Алиса отправляет искаженную таблицу и метку  , соответствующую ее входным данным, Бобу. Далее осуществляется забывчивая передача:

  • Алиса (отправитель) имеет   и  
  • Боб (получатель) имеет  

Боб получает свою метку  .

Получение цепи? править

Вычисление результата править

Оптимизации править

См. также править

Примечания править

Ссылки править

Литература править