Проект подготовили студенты группы 0372
Жуков Владимир Андреевич
Пахаревская Элина Станиславовна
1/37
Научный руководитель
Дужин Василий Сергеевич
Данная работа выполнена с использованием материалов статьи "Secrecy without one-way functions" (D. Grigoriev, V. Shpilrain, 2013)
2/37
Пахаревская Элина:
- презентация
- алгоритмы
Жуков Владимир:
- презентация
- алгоритмы
3/37
Цель...........................................................................................................................5
Что такое односторонние функции?..................................................................6
Вспомогательные протоколы..............................................................................9
Протокол N0.......................................................................................................10
Протокол N1.......................................................................................................15
Протокол N2.......................................................................................................17
Протокол N2.1....................................................................................................19
Протокол N3.......................................................................................................21
Взрывные котята...................................................................................................23
Уно!...........................................................................................................................28
Опциональный раздел.........................................................................................33
4/37
Рассмотреть практическое применение протоколов без односторонних функций в реализациях двух карточных игр разного уровня сложности интерпретации на язык криптографии с соблюдением честности игроков.
5/37
6/37
Односторонняя функция - это функция, которую довольно легко вычислить, но трудно* найти по значению функции соответствующее значение аргумента.
*Под «трудно найти» нужно понимать как: потребуется не один год расчетов с использованием ЭВМ.
7/37
Базовые протоколы:
1. N0 - распределение чисел
2. N1 - тасование колоды
3. N2, N2.1 - коллективная генерация числа
4. N3 - добор карт из колоды
Игры:
1. Взрывные котята
2. Уно
Во всех описанных протоколах подразумевается следующее:
8/37
9/37
10/37
Цель: распределить числа от \(1\) до \(s*n\) между \(n\) игроками так, чтобы у каждого было \(s\) чисел, причем никто другой не знал какие.
Обозначения
\(P_i\) - игрок с индексом \(i\)
\(m\) - текущее число
\(s\) - количество чисел, которые получит каждый игрок
\(q_i\) - счетчик получения числа \(m\)
\(N\) - натуральное число, выбираемое участниками перед выполнением алгоритма
\(c_i\) - максимальное значение \(q_i\) (\(1 \le c_i \le N, c_i \in Z\))
\(n\) - количество игроков
11/37
Обозначения
\(P_i\) - игрок с индексом \(i\)
\(m\) - текущее число
\(q_i\) - счетчик получения числа \(m\)
\(c_i\) - максимальное значение \(q_i\) (\(1 \le c_i \le N, c_i \in Z\))
12/37
Обозначения
\(s\) - количество чисел, которые получит каждый игрок
13/37
Обозначения
\(s\) - количество чисел, которые получит каждый игрок
\(n\) - количество игроков
\(c_i\) - максимальное число раз, когда игрок получает текущее число \(m\) (\(1 \le c_i \le N, c_i \in Z\))
14/37
15/37
Цель: перетасовать карты методом Кнута.
Обозначения
\(M\) - количество карт
\(N2.1\) - протокол коллективной генерации случайного числа
16/37
17/37
Цель: секретно сгенерировать случайное число с помощью смежных узлов.
Обозначения
\(n\) - Количество узлов
\(n_i\) - случайно сгенерированное число узлом \(i\)
\(M\) - количество карт в колоде
\(P_i\) - узел под номером \(i\), \(i \in [1, n]\)
18/37
19/37
Цель: cгенерировать случайное число с помощью смежных узлов так, чтобы узел не мог сделать это нечестным образом (например, заменить его на свое).
Обозначения
\(n_i\) - случайно сгенерированное число узла \(i\)
\(n\) - количество узлов
\(M\) - количество карт в колоде
20/37
21/37
Цель: секретно взять \(k\) карт из колоды.
Обозначения
\(K\) - множество карт добора
\(M\) - количество карт в колоде \(K\)
\(N\) - множество карт сброса
\(*\) - если правила игры позволяют.
22/37
23/37
Обозначения:
\(n\) - количество игроков \((2 \le n \le 5)\)
\(K\) - множество карт колоды (\(\tilde K = 56\))
\(N\) - множество карт сброса
24/37
Обозначения:
\(n\) - количество игроков
\(K\) - множество карт добора
Примечание: карты в колоде \(K\) располагаются в порядке: нейтральные, черные, зеленые.
25/37
Обозначения
\(n\) - количество игроков
\(K\) - множество карт добора
\(N1\) - протокол тасования
\(N2.1\) - протокол генерации случайного числа с помощью смежных узлов
26/37
После чего участник делает проверку:
Обозначения
\(N\) - множество карт колоды сброса
\(N1\) - протокол тасования
27/37
28/37
Обозначения
\(n\) - количество игроков
\(m\) - начальное число карт на руках у игрока (\(m = 7\))
\(K\) - множество карт "прикуп" (\(\tilde K = 108\))
\(N\) - множество карт "сброс"
\(Q_i\) - множество карт, имеющиеся на руках игроков
\(L_i\) - множество карт, которые игрок взять не может
29/37
Обозначения
\(\tilde K\) - количество карт во множестве добора
\(n\) - число игроков
\(m\) - начальное число карт на руках у игрока
\(N0\) - протокол выдачи s чисел игрокам
\(N1\) - протокол тасования
30/37
Обозначения
\(L_i\) - множество карт, которые игрок взять не может
\(N3\) - протокол добора \(k\) карт
Примечание: каждая выброшенная карта игроком \(P_i\) заносится во множество \(L_i\).
31/37
32/37
Возможные варианты лжи
33/37
Решение
Ложь выявится в процессе игры: когда он выкинет эту карту, другой игрок заметит, что индекс этой карты принадлежит ему, о чем сообщит остальным.
34/37
Решение
Как только игрок выкинет не свою карту, другой игрок это заметит и сообщит остальным.
35/37
Решение
Оба игрока сообщают свои счетчики \(q_i\) и \(q_j\), соответствующие карте и сгенерированные в процессе выполнения протоколов \(N0\) или \(N3\). У кого его не будет или он окажется больше, тот и лжет.
Если же так получилось, что эти числа равны, то игру начинают заново, потому что определение лжеца не представляется возможным.
36/37
Все действия, совершаемые игроками, на любом этапе игры и выполнении любого протокола, записываются в логи. Они позволяют согласовать состояние всей системы и обнаружить игроков, играющих нечестно.
37/37