Проект подготовили студенты группы 0372
Жуков Владимир
Пахаревская Элина
1/35
Данная работа выполнена с использованием материалов англоязычной статьи "Secrecy without one-way functions" (Dima Grigoriev, Vladimir Shpilrain, 2013)
2/35
Что такое односторонние функции?..................................................................4
Вычисление суммы чисел....................................................................................7
Вычисление произведения чисел....................................................................11
Схема обязательств.............................................................................................14
Сравнение двух чисел.........................................................................................17
Вычисление неоднородной функции..............................................................21
Вычисление определителя матрицы...............................................................25
Поиск узла с наибольшим секретным числом..............................................29
Поиск наибольшего числа.................................................................................32
3/35
4/35
Односторонняя функция - это функция, которую довольно легко вычислить, но трудно* найти по значению функции соответствующее значение аргумента.
*Под «трудно найти» нужно понимать как: потребуется не один год расчетов с использованием ЭВМ.
Авторские протоколы:
вычисление суммы\(^*\)
вычисление произведения\(^*\)
сравнение двух чисел
вычисление неоднородной функции
схема обязательств
* - оптимизированные протоколы
Исследовательские протоколы:
вычисление определителя
поиск узла и наибольшим секретным числом
поиск наибольшего числа
5/35
Во всех описанных протоколах подразумевается следующее:
6/35
7/35
Постановка задачи:
Вычислить сумму элементов \(n_1,n_2, \dots,n_k\), хранимых узлами \(P_1, P_2, \dots,P_k\) соответственно, не раскрывая этих значений.
Идея алгоритма:
Каждый узел прибавляет к полученному от предыдущего узла значению свое секретное число и передает результат следующему. Алгоритм начинается с первого узла, который отправляет второму случайное сгенерированное число.
8/35
Пример работы протокола
9/35
Протокол:
10/35
11/35
Постановка задачи:
Вычислить произведение элементов \(n_1,n_2, \dots,n_k\), хранимых узлами \(P_1, P_2, \dots,P_k\) соответственно, не раскрывая этих значений.
Идея алгоритма:
Каждый узел умножает полученное от предыдущего узла значение на свое секретное число и передает результат следующему. Алгоритм начинается с первого узла, который отправляет второму случайное сгенерированное число.
12/35
Пример работы протокола
13/35
14/35
Постановка задачи:
Организовать такой обмен значениями между узлами, при котором гарантируются секретность и однозначность.
Идея алгоритма:
Алгоритм проходит в две фазы: передачи и раскрытия. Узлы обмениваются значениями таким образом, что к концу:
После последней фазы участники могут сравнить вычисленные значения и убедиться, что среди них нет узла, который сообщил ложную информацию.
15/35
Протокол:
После этапа передачи:
\(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\)
Фаза передачи
Фаза раскрытия
16/35
17/35
\(n_1 \ge n_2 \Leftrightarrow n_1 - n_2 \ge 0 \\ n_{11} - n_{12} - (n_{21} - n_{22}) \ge 0 \\ n_{11} + n_{22} - (n_{21} + n_{12}) \ge 0\)
Постановка задачи:
Сравнить два числа \(n_1\) и \(n_2\), принадлежащие \(P_1\) и \(P_2\) соответственно, не раскрывая их значений.
Идея алгоритма:
Числа разбиваются на разность двух случайных чисел, после чего узлы обмениваются вторыми операндами, складывают их с первыми, и передают результаты третьему узлу. Он находит их разность и на основании следующих преобразований оценивает наибольшее число:
18/35
На видео:
Пример работы протокола
19/35
Протокол:
20/35
21/35
Постановка задачи:
Поиск значения функции вида \(f(n_1,n_2,n_3)=n_1 \cdot n_2+g(n_3)\), где \(g\) - любая вычислимая функция.
Идея алгоритма:
Узлы вычисляют произведение первых двух секретных чисел (с помощью протокола, упомянутого ранее) и передают третьему, который находит ее сумму с функцией \(g(n_3)\).
22/35
Пример работы протокола
23/35
Протокол:
24/35
25/35
Постановка задачи:
Необходимо найти определитель матрицы \(n\times n\), строки \(n_i\) которой распределены между \(n\) участниками сверху вниз.
Идея протокола:
Алгоритм основан на том, что при умножении матрицы на число, на него умножается и ее определитель. Каждый узел умножает хранимую строку на некоторое случайное значение, добавляет ее к полученной матрице и отправляет следующему. После этого первый узел находит определитель полученной матрицы \(n\times n\), который каждый последующий узел делит на свое сгенерированное число, получая в итоге определитель исходной матрицы.
26/35
Пример работы протокола
27/35
Протокол:
\(n_i\) - секретное число узла
\(m_i\) - случайное число узла
Переменные:
28/35
29/35
Постановка задачи:
Определить узел с наибольшим секретным числом так, чтобы оно не стало известно остальным.
Идея протокола:
Алгоритм основывается на том, что среднее двух чисел не превышает максимальное из этой пары. В качестве изначального среднего числа первый узел выбирает случайное число из промежутка от 1 до своего секретного, а остальные, если полученное от предыдущего узла число меньше секретного, выбирают новым средним половину их суммы, иначе полагают, что их секретное число наибольшее.
30/35
Протокол:
\(N\) - текущее "среднее" число
\(n_i\) - секретное число узла
Переменные:
31/35
32/35
Постановка задачи:
Определить наибольшее секретное число так, чтобы его владелец не стал известен.
Идея протокола:
Алгоритм основан на том, что среднее чисел может разбить их ряд на два множества: большие среднего и меньшие среднего. Для того, чтобы определить наибольшее значение, нужно "рекурсивно" искать среднее в множестве чисел, больших "текущего среднего".
33/35
Протокол:
\(N\) - текущее среднее арифметическое
\(c\) - счетчик чисел, больших текущего среднего
\(P\) - сумма чисел, больших текущего среднего
Переменные:
\(n_i\) - секретное число \(i\)-го узла
34/35
35/35