Проект подготовили студенты группы 0372
Жуков Владимир
Пахаревская Элина
1/27
2/27
Данная работа выполнена с использованием материалов статьи "Secrecy without one-way functions" (D. Grigoriev, V. Shpilrain, 2013)
Пахаревская Элина:
- перевод статьи
- презентация
- анимации
Жуков Владимир:
- алгоритмы
- анимации
3/27
Что такое односторонние функции?..................................................................5
Вычисление суммы чисел....................................................................................8
Вычисление произведения чисел....................................................................11
Сравнение двух чисел.........................................................................................13
Вычисление неоднородной функции..............................................................15
Битовая схема обязательств..............................................................................17
Ментальный покер..............................................................................................20
Решение квадратного уравнения.....................................................................24
Вычисление определителя матрицы...............................................................26
4/27
5/27
Односторонняя функция - это функция, которую довольно легко вычислить, но трудно* найти по значению функции соответствующее значение аргумента.
*Под «трудно найти» нужно понимать как: потребуется не один год расчетов с использованием ЭВМ.
Протоколы, представленные в проекте:
вычисление суммы
вычисление произведения
сравнение двух чисел
вычисление неоднородной функции
битовая система обязательств
ментальный покер
решение квадратного уравнения
вычисление определителя
6/27
7/27
Во всех описанных протоколах подразумевается следующее:
8/27
Постановка задачи: вычисление суммы элементов \(n_1,n_2, \dots,n_k\), хранимых узлами \(P_1, P_2, \dots,P_k\) соответственно, не раскрывая этих значений.
Протокол:
*После получения от \(P_k\) суммы \(S\) узел \(P_1\) может сравнивнить ее с той, которая была отправлена узлу \(P_2\). Если они отличаются, то в сети есть узел, который изменил сумму, то есть сообщил ложную информацию.
9/27
Исходный протокол:
В исходном протоколе можно заметить избыточность. Если оставить способность генерации случайных чисел только первому узлу, не возникнет изменений ни в конечной сумме, ни в соблюдении секретности на всех шагах выполнения протокола. Мы предложили другой вариант, в котором сократится количество арифметических операций и снизится нагрузка на каналы связи.
10/27
11/27
Постановка задачи: вычисление произведения элементов \(n_1,n_2, \dots,n_k\), хранимых узлами \(P_1, P_2, \dots,P_k\) соответственно, не раскрывая этих значений.
Протокол:
Протокол для вычисления произведения также обладает избыточностью, что и протокол для вычисления суммы. Поэтому здесь также приведен измененный протокол.
12/27
13/27
Постановка задачи: сравнить два числа \(n_1\) и \(n_2\), принадлежащие \(P_1\) и \(P_2\) соответственно, не раскрывая их значений.
Протокол:
На видео:
14/27
Dummy - участник, которому запрещено генерировать случайные значения, он может лишь отвечать на конкретные запросы. В данном случае таким запросом будет вычисление суммы и возвращение результатов.
15/27
Постановка задачи: поиск значения функции вида \(f(n_1,n_2,n_3)=n_1 \cdot n_2+g(n_3)\), где \(g\) - любая вычислимая функция.
Протокол:
16/27
17/27
Постановка задачи: организовать такой обмен значениями между узлами, при котором гарантируется
Протокол:
*После этапа передачи ни один из участников не может восстановить какую-либо информацию о другом участнике. Имеющейся информации недостаточно. Можно исключить факт мошенничества, так как каждый фрагмент переданной узлу информации может быть подтвержден двумя другими.
18/27
После этапа передачи:
\(P_1\) знает: \(s_1\), \(r_1\), \(s_2 + s_3\), \(r_1+r_2+r_3\)
\(P_2\) знает: \(s_2\), \(r_2\), \(r_1\), \(s_3\)
\(P_3\) знает: \(s_3\), \(r_3\), \(r_1+r_2\), \(s_1+s_2+s_3\)
Частный случай. Частным случаем этой задачи является ситуация, когда участников двое. Для этого случая необходимо ввести третий узел Dummy, который не будет иметь возможности генерации случайных чисел и будет выступать в роли промежуточного.
19/27
20/27
Реализация: Идея алгоритма заключается в том, что сначала между участниками распределяются числа от 1 до \(m\) (количество карт), а после генерируется случайная перестановка из \(m\) элементов, используя которую карты раздаются игрокам.
Данный алгоритм реализуется путем последовательного выполнения двух протоколов, описания которых приведены на следующих слайдах.
Постановка задачи: необходимо раздать игрокам карты, гарантируя, что никто из них не сможет узнать карты другого или забрать себе заведомо выигрышную комбинацию.
21/27
Цель протокола 1: раздать числа каждому узлу так, чтобы никакой узел не мог догадаться о наборе чисел другого узла.
Протокол 1 (упрощенный):
Протокол 1:
Рассмотрим ситуацию, когда участников шестеро, а карт - 36 (\(s = \frac{36}{6} = 6\)). Перед началом все игроки договариваются о едином параметре \(N\), который означает максимальное количество обходов всех участников текущим числом. Пусть \(N=10\).
Формат данных узла:
\(q_m:c_i\), где \(q_m\) - счетчик получения узлом числа \(m\), \(c_i\) - максимальное значение счетчика \(q_m\)
22/27
Цель протокола 2: сгенерировать каждому участнику число, которое будет использовано в дальнейшем при непосредственной "раздаче карт"
Протокол 2:
Все узлы выбирают случайное число \(M\) от 1 до количества карт. Положим \(M\) = 36.
Принцип тасования Кнута:
Алгоритм начинается с исходной перестановки. Затем происходит последовательный обход всех позиций, для каждой из которой меняется местами текущий элемент и элемент с произвольно выбранным индексом. В случае протокола 2 этим индексом будет сгенерированное число \(n_i\).
Протокол 2 (упрощенный):
Алгоритм раздачи карт:
23/27
24/27
Постановка задачи: необходимо найти корни квадратного уравнения и сообщить их всем узлам \(P_1\), \(P_2\) и \(P_3\), которые хранят параметры соответственно \(a\), \(b\) и \(c\) в секретном виде.
Протокол (упрощенный):
25/27
Замечание.
Предполагается, что после исполнения алгоритма узлы не будут выполнять арифметические операции, иначе каждый из них, очевидно, может без проблем восстановить исходное уравнение.
Положим \(m_1, m_2, m_3\) - случайные сгенерированные числа.
26/27
Постановка задачи: необходимо найти определитель матрицы \(n\times n\), строки \(n_i\) которой распределены между \(n\) участниками сверху вниз.
Протокол:
27/27
Замечание.
"Настоящая" секретность достигается на поле действительных чисел. На нем узлы не могут по НОД'у предположительно определить секретные случайные числа других узлов.