Рейтинг:2

Протокол Чаума-Педерсена

флаг ph

Я младший разработчик программного обеспечения, и мне нужно реализовать очень простую систему аутентификации на основе протокола Chaum-Pedersen ZKP. Я ничего не знаю о криптографии и прошу вас помочь мне понять одну вещь в алгоритме. Алгоритм выглядит следующим образом: введите описание изображения здесь

я просто не могу понять что $q$ является. Я читал о протоколе в книге «Криптография: введение» Найджела Смарта. Есть фраза: «Мы предполагаем, что $г$ и $ч$ генерировать группы простого порядка $q'$ но мне это ни о чем не говорит. Я пытался погуглить «группу простого порядка», но это всегда было связано с доказательством того, что это зациклено, и другими вещами. Извините, если этот вопрос глупый, но у меня нет никого, кто мог бы мне помочь. Было бы здорово иметь пример с цифрами.

Рейтинг:3
флаг my

Я не думаю, что это место, чтобы давать учебник по элементарной теории чисел, поэтому я просто коснусь аспектов, которые непосредственно относятся к вашему вопросу.

Когда мы берем прайм $р$ и значение $г$ (что не кратно $р$), то если рассматривать последовательность значений $g^0 \bmod p, g^1 \bmod p, g^2 \bmod p, ...$, то мы обнаружим, что в какой-то момент последовательность вернется к 1, а после этого начнется заново. Мы называем порядок $г$ количество значений, которые мы проходим, прежде чем мы достигнем 1, то есть, $g^q \bmod p = 1$, а это наименьшее значение $q > 0$ это удовлетворяет.

Итак, когда Смарт говорит, что $г$ и $ч$ имеют тот же самый простой порядок, он говорит, что $g^q \bmod p = 1$, $h^q \bmod p = 1$ и $q$ является простым (и в обоих случаях нет меньшего значения $q$).

Как найти такую $г, ч, д$? На самом деле это оказывается не так уж и сложно; $q$ всегда будет делить $p-1$ равномерно; мы можем выбрать простое число $р$ чтобы найти такое простое значение $q$ легкий. Кроме того, если $q$ такое простое число, то для любого значения $u$ без $р$ как фактор, значение $j = u^{(p-1)/q} \bmod p$ будет либо 1, либо порядок $q$; поэтому нахождение значений $ г, ч $ легко.

Вы просили пример, я вам дам игрушечный - подберем $р=23$ и $q=11$ (Обратите внимание, что $11$ делит $23-1$ равномерно) и $г=4$ и $ч=9$ (легко проверить, что они оба имеют порядок 11). Мы также выбираем секретное значение $х$ (мы выберем 6) и публикует $y_1 = g^x \bmod p = 4^6 \bmod 23 = 2$ и $y_2 = h^x \bmod p = 9^6 \bmod 23 = 3$

Затем доказывающий выбирает случайный $к$, мы произвольно выберем $к=7$

Затем доказывающий вычисляет $r_1 = g^k \bmod p = 4^7 \bmod 23 = 8$ и $r_2 = h^k \bmod p = 9^7 \bmod 23 = 4$, и передает тех. Обратите внимание, что мы сделали эти вычисления по модулю $р$ - это было неявно в протоколе (такие модульные операции обычно понимаются).

Теперь претендент выбирает значение $с$; мы выберем $4$; и отправляет это.

Затем доказывающий вычисляет $s = (k - c \cdot x) \bmod q = (7 - 4 * 6) \bmod 11 = 5$ (примечание: в математике $x \bmod q$ операция всегда возвращает значение между $0$ и $q-1$ так что $x - (x \bmod q)$ является кратным $q$ - многие компьютерные языки не следуют этому - эти языки неверны), и отправляет это.

Затем верификатор проверяет, что $r_1 = 8$ такой же как $g^s \cdot y_1^c \bmod p = 4^5 \cdot 2^4 \bmod 23 = 8$ и $r_2 = 4$ такой же как $h^s \cdot y_2^c \bmod p = 9^5 \cdot 3^4 \bmod 23 = 4$; оба проверить, и так это проходит.

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

флаг ph
Иисус, ты спас мне жизнь. огромное спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.