Цель лабораторной работы: научиться на практике применять протоколы идентификации а аутентификации с нулевым разглашением на основе использования схем Фейге – Фиата – Шамира, Гиллу – Кискате, Шнорра.
Задачи:
Смоделировать процесс взаимодействия двух пользователей для их идентификации при использовании схемы Фейге – Фиата – Шамира с нулевым разглашением.
Смоделировать процесс взаимодействия двух пользователей для подписи документа при использовании схемы Фиата – Шамира с нулевым разглашением. В качестве хэша использовать разбиение n битов и поблочный xor.
Смоделировать процесс взаимодействия двух пользователей для их идентификации при использовании схемы Гиллу – Кискате.
Смоделировать процесс взаимодействия двух пользователей для аутентификации одного из них при использовании схемы Шнорра.
Протокол Фейга — Фиата — Шамира — протокол идентификации с нулевым разглашением, обобщение более раннего протокола Фиата — Шамира, разработанный Уриэлем Фейге, Амосом Фиатом и Ади Шамиром в 1986 году. Безопасность протокола основана на сложности извлечения квадратного корня по модулю достаточно большого составного числа n, факторизация которого неизвестна. Алгоритм протокола: Доверенный центр публикует большое число n = pq, где p и q— простые числа, которые держатся в секрете. Также выбираются целые числа k и t- параметры безопасности. Генерируются открытый ключ - k случайных целых чисел 1 ,затем вычисляется закрытый ключ где = sqrt ()mod (n) и k случайных бит .Следующие действия выполняются t раз, пока B не убедится, что А знает s. В считает знание доказанным, если все t раундов прошли успешно: A выбирает случайное r, меньшее n. Затем А вычисляет x = mod (n) и посылает В. B посылает А случайный бит b, если b = 0, то А посылает В r, если b = 1, то А посылает В y = r*s mod (n). Если b = 0, B проверяет, что x = mod (n), если b = 1, В проверяет что x= mod (n) [2]. Превращение этой схемы идентификации в схему подписи - это, по сути, вопрос превращения B в хэш-функциию. Главным преимуществом схемы цифровой подписи Fiat-Shamir по сравнению с RSA является ее скорость: для Fiat-Shamir нужно всего лишь от 1 до 4 процентов модульных умножений, используемых в RSA. Выбирается число n = pq, где p и q — простые числа. Генерируются открытый ключ и закрытый ключ где = sqrt ()mod (n). А выбирает t случайных чисел r и вычисляет = mod (n). Алиса хэширует объединение сообщения и строки создавая битовый поток: H(т, , …, ). Она использует первые k*t битов этой строки в качестве значений , где i от1 до t, а j от 1 до k. Алиса вычисляет , …, где = г, *(*…* ) mod n. Алиса посылает Бобу т, все биты и все значения . У Боба уже есть открытый ключ Алисы: . Боб вычисляет , …, где = y, *(*…* ) mod n. Боб проверяет, что первые k*t битов H(т, , …, ). - это значения которые прислала ему Алиса [3].
Стойкость схемы цифровой подписи Клауса Шнорра(Schnorr)основывается на трудной задаче вычисления дискретных логарифмов. Для генерации пары ключей сначала выбираются два простых числа, p и q так, чтобы q было сомножителем p-1. Затем выбирается a, не равное 1, такое что = 1 ( mod p). Все эти числа могут быть свободно опубликованы и использоваться группой пользователей. Для генерации конкретной пары ключей выбирается случайное число, меньшее q. Оно служит закрытым ключом, s. Затем вычисляется открытый ключ v = (mod p). Для подписи сообщений используется хэш-функция H(M). Пользователь A выбирает случайное число r, меньшее q, и вычисляет x = (mod p). Для того, чтобы подписать сообщение M пользователю A необходимо выполнить следующие действия:
объединить M и x и хэшировать результат: e = H(M,x),
вычислить y = (r + se) ( mod q). Подписью являются значения e и y, их нужно выслать получателю B.
Для проверки подписи для сообщения M получатель B вычисляет x' = ay ve (mod p). Затем он проверяет, что хэш-значение для объединения M и x' равно e. e = H(M,x') Если это так, то он считает подпись верной [4].
Для освоения и закрепления материала разрабатывается комплекс практических заданий, предоставляющий собой компьютерные программы с интуитивно-понятным графическим интерфейсом на языке программирования Python. Выполнение будет заключаться в том, что с помощью программного модуля студент должен произвести работу криптографического протокола и проверить правильность вычислений.
Библиографический список
1.Доказательство с нулевым разглашением - Bits.media. URL: http://bits.media/zero-knowledge-proof/ 2. Протокол Фейга — Фиата — Шамира — Википедия. URL: https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB_%D0%A4%D0%B8%D0%B0%D1%82%D0%B0_%E2%80%94_%D0%A8%D0%B0%D0%BC%D0%B8%D1%80%D0%B0 3. Схема подписи Fiat-Shamir - Студопедия.Орг. URL: http://studopedia.org/4-65363.html 4. Схема цифровой подписи Клауса Шнорра(Schnorr). URL: http://kunegin.narod.ru/ref8/ecp/schnorr.htm