Чтобы проверяющий не имел возможности выбрать случайный запрос, а вынужден был его формировать путем выполнения процедуры шифрования. В стандарте регламентируется формирование запроса в виде пары значений , где - шифртекст, полученный путем шифрования некоторого сообщения по открытому ключу доказывающего и - значение хэш-функции, вычисленное от сообщения с использованием некоторой специфицированной хэш-функции = Получая запрос ( ), доказывающий имеет возможность убедиться в том, что восстановленное им из шифртекста сообщение известно проверяющему. Для этого достаточно вычислить значение хэш-функции от восстановленного сообщения и сравнить его со значением второго элемента запроса [17].
В соответствии с [3] двухшаговый протокол с нулевым разглашением секрета (с нулевыми знаниями) включает следующие шаги:
1. Проверяющий выбирает произвольное сообщение M и, используя специфицированный алгоритм открытого шифрования и открытый ключ P доказывающего, зашифровывает сообщение в шифртекст . Затем, используя специфицированную хэш-функцию , вычисляет значение хэш-функции от После этого он отправляет доказывающему пару значений в качестве своего запроса.
2. Доказывающий расшифровывает криптограмму , используя свой личный секретный ключ, в результате чего получает восстановленное сообщение. Затем он вычисляет значение хэш-функции от сравнивает значения и, если то отправляет проверяющему значение ? в качестве своего ответа.
Поучив ответ , проверяющий сравнивает и Если , то он делает вывод о подлинности доказывающего.
В работе [4] предложено построения двухшаговых протоколов с использованием механизма меток включаемых в шифруемое сообщение. Наличие таких меток в восстановленном сообщение используется как свидетельство о том, что было известно проверяющему в момент формирования запроса ша первом шаге протокола. Размер меток | | выбирается равным от 80 до 512 бит, благодаря чему вероятность () того, что расшифрование некорректно сформированного запроса даст текст, в котором будет присутствовать метка m является пренебрежимо малой: () = 2?|m|. Использование меток устраняет необходимость дополнительного использования хэш-функций и выполнения вычисления хэш-кода как проверяющим, так и доказывающим [17].
4.2 Протокол на основе использования криптосхемы RSA
Рассмотрим случай построения протокола с нулевым разглашением с использованием алгоритма открытого шифрования RSA [19], в котором открытый ключ формируется в виде пары чисел (n, e). Первое число представляет собой произведение двух сильных простых чисел и генерируемых по случайному закону, а второе число представляет собой 32-битовое значение, которое выбирается таким, чтобы оно было взаимно простым с числом = где НОК ? наименьшее общее кратное ? значение обобщенной функции Эйлера от числаn. Секретный ключ вычисляется по формуле
После вычислении секретные значения r и q уничтожаются. Процедура открытого шифрования сообщения описывается формулой
Процедура расшифрования криптограммы C описывается формулой
Корректность процедуры расшифрования легко доказывается с использованием обобщенной теоремы Эйлера, согласно которой для любого числа M, взаимно простого с n имеет место соотношение
Рассмотрим двухпроходный протокол с нулевым разглашением на основе данного алгоритма открытого шифрования при использовании 128-битовой метки m = n mod 2128. В качестве метки берутся 128 младших битов открытого ключа доказывающего. Протокол описывается следующими шагами:
1. Проверяющий генерирует случайное сообщение размером удовлетворяющим условию. Затем он зашифровывает сообщение с присоединенной к нему меткой , т.е. зашифровывает битовую строку по открытому ключу доказывающего (n, e), т.е. по формуле = и направляет доказывающему значение C в качестве своего запроса, на который он ожидает ответ доказывающего.
2. Доказывающий расшифровывает криптограмму по своему личному секретному ключу по формуле = где ? битовая строка, заданная младшими 256 битами расшифрованного значения, и проверяет выполнимость равенства = m. Если = m., то полученное значение доказывающий направляет проверяющему в качестве своего ответа на полученный запрос. В противном случае доказывающий отправляет ответ «Некорректный запрос» [17].
Если проверяющий получил в качестве ответа правильное значение т.е. то значение, которое он сгенерировал на первом шаге протокола (т.е. до направления своего запроса доказывающему), то делается вывод о подлинности доказывающего.
В описанном протоколе важным является использование заранее специфицированной метки m, благодаря чему обеспечивается возможность доказывающему удостовериться в том, что отправляемое им значение ответа ? уже известно проверяющему. Тот факт, что оно уже известно проверяющему, означает, что проверяющий не пытается получить подпись к некоторому сообщению, используя механизм слепой подписи [5,6], и не пытается выполнить атаку при адаптивно выбираемом шифртексте (adaptive chosen cipher text attack), описанную в работе [7] или какую-то другую атаку.
4.3 Использование алгоритма открытого шифрования Эль-Гамаля
Рассмотрим реализацию прокола с нулевым разглашением секрета, основанном на использовании алгоритма открытого шифрования Эль-Гамаля [2]. В алгоритме используются открытый ключ вида p, где - большое простое число (размером 1024 бит и более), такое, что разложение числа p - 1 содержит простой делитель разрядностью не менее 160 бит; - примитивный элемент по модулю . Этот способ фактически представляет собой гибридную криптосистему, в которой секретные ключи распределяются в соответствии с протоколом Диффи-Хеллмана [8], а шифрование сообщения выполняется путем модульного умножения сообщения на секретный ключ. Шифрование сообщения , отправляемого владельцу открытого ключа, осуществляется с помощью следующего алгоритма:
Сгенерировать случайное число которое по своей сути является разовым секретным ключом отправителя сообщения.
Вычислить числоp - разовый открытый ключ отправителя
Используя открытый ключ получателя , вычислить разовый общий секретный ключ
Зашифровать сообщение путем умножения сообщения на разовый секретный ключ:
5. Отправить получателю криптограмму в виде пары чисел (R, C).
Процедуру открытого шифрования по открытому ключу y обозначим как Gamal_Encr). Получатель криптограммы используя свой личный секретный ключ выполняет процедуру расшифрования Gamal_Decr), которая описывается следующими шагами:
Вычислить разовый общий секретный ключ
Используя расширенный алгоритм Евклида, вычислить значение , обратное значению по модулю.
Расшифровать сообщение путем умножения значения на целое число: =
При шифровании сообщений в алгоритме Эль-Гамаля используются случайные значения, т.е. он реализует процедуру вероятностного шифрования, при которой одному и тому же сообщению соответствует множество различных криптограмм, все из которых, при расшифровании, дают одно и то же значение .
По аналогии с протоколом, предложенным в [4], построим протокол аутентификации с нулевым разглашением на основе алгоритма Эль-Гамаля при использовании 256-битовой метки , в качестве которой берутся младшие 160 бит открытого ключа доказывающего y (т.е. специфицируется значение , который описывается следующим образом:
1. Проверяющий генерирует случайное сообщение M размером |M|, удовлетворяющим условию . Затем он зашифровывает сообщение с присоединенной к нему меткой ??, т.е. зашифровывает битовую строку , по открытому ключу доказывающего y в соответствии с формулой = Gamal_Encr(,y). Затем он направляет доказывающему пару в качестве своего запроса, на который доказывающий должен дать ответ.
2. Доказывающий расшифровывает криптограмму по своему личному секретному ключу где ? битовая строка, заданная младшими 160 битами расшифрованного значения, и проверяет выполнимость равенства. Если то полученное значение доказывающий направляет проверяющему в качестве своего ответа на полученный запрос. В противном случае доказывающий отправляет ответ «Некорректный запрос».
Если проверяющий не имеет своей целью получение информации о секретном ключе доказывающего, то он корректно выполняет первый шаг протокола с использованием специфицированной метки m, которую он присоединит к выбираемому им сообщению , а потом выполнит процедуру зашифрования. В этом случае при расшифровании шифртекста доказывающий восстановит исходное сообщение, увидит в нем специфицированную метку, отбросит ее и получит значение M? = M. Проверяющий получает от доказывающего известное ему значение и делает вывод о подлинности доказывающего. Вероятность выполнения соотношения, для произвольно выбранного запроса, пренебрежимо мала и равна значению .
4.4 Протокол на основе криптосхемы Рабина
В алгоритме открытого шифрования Рабина используются вычисления по модулю вида который используется в качестве открытого ключа. Сильные простые числа q составляют личный секретный ключ и удовлетворяют условиям: . Последние два условия обеспечивает снижение сложности процедуры расшифрования криптограммы по сравнению со случаем выбора значений , которые не удовлетворяют указанным двум условиям.
Шифрование сообщения выполняется возведением числа в квадрат по модулю
Процедура расшифрования состоит в извлечении квадратного корня из криптограммы по модулю . Предварительно вычисляют корни из по модулям
Из этих четырех значений вычисляются четыре возможных корня из по модулю :
где
Двухпроходный протокол с нулевым разглашением на основе алгоритма открытого шифрования Рабина использует 128-битовую метку , в качестве которой берутся младшие 128 бит открытого ключа доказывающего, т.е. , и имеет следующий вид:
1. Проверяющий генерирует произвольное сообщение размером удовлетворяющим условию , и зашифровывает сообщение с присоединенной к нему меткой , т.е. значение , по формуле и направляет доказывающему значение в качестве своего запроса [3].
2. Доказывающий расшифровывает криптограмму по своему секретному ключу путем вычисления четырех значений квадратного корня из : . Каждое из последних значений он представляет в виде ? битовая строка, заданная младшими 128 битами -го корня . Затем он проверяет, выполняется ли равенство mi? = m для одного из четырех значений Если да, то соответствующее значение доказывающий направляет проверяющему в качестве своего ответа на полученный запрос. Если , то доказывающий отправляет ответ «Некорректный запрос».
Использование заранее специфицированной метки позволяет доказывающему идентифицировать исходное сообщение, благодаря чему он направляет проверяющему именно то значение, которое известно проверяющему. Это обеспечивает нулевую утечку информации о секретном ключе при передаче доказывающим своего ответа проверяющему.
Заключение
алгоритм информационный криптоанализ шифрование
Таким образом, в курсовой работе:
Изучена основная терминология.
Рассмотрены симметричные алгоритмы и алгоритмы с открытым ключом.
Изучена аутентификация пользователей в информационных системах.
Рассмотрены протоколы с нулевым разглашением секрета.
Изучены протоколы на основе алгоритмов открытого шифрования.
Рассмотрен протокол на основе использования криптосхемы RSA.
Изучено использование алгоритма открытого шифрования Эль-Гамаля.
Изучен протокол на основе криптосхемы Рабина.
Следует отметить, что криптографические методы, характеризующиеся большими возможностями по обеспечению конфиденциальности и достоверности информации, а также по обеспечению «неотказуемости» от авторства в процессе обмена информацией, находят себе применение во все более и более многочисленных приложениях. Можно предположить в связи с этим, что определённое знакомство с криптографией, её методами и возможностями в недалёком будущем потребуются каждому пользователю электронных средств обработки и обмена информацией. Более того, оптимисты криптографии считают, что криптография рано или поздно станет «третьей грамотностью», наряду со «второй» грамотностью - владением компьютером и информационными технологиями.
Литература
1. Алексеев В. А. Методы и средства криптографической защиты информации: методические указания к проведению лабораторных работ по курсу «Методы и средства защиты компьютерной информации» / В. А. Алексеев. - Липецк: Липецкий государственный технический университет, ЭБС АСВ, 2009. - 16 c.
2. Беломойцев Д. Е. Основные методы криптографической обработки данных: учебное пособие / Д. Е. Беломойцев, T. М. Волосатова, С. В. Родионов. - Москва: Московский государственный технический университет имени Н.Э. Баумана, 2014. - 80 c.
3. Бескид П. П. Криптографические методы защиты информации. Часть 1. Основы криптографии: учебное пособие / П. П. Бескид, Т. М. Тагарникова. - СПб: Российский государственный гидрометеорологический университет, 2010. - 95 c.
4. Бутакова Н. Г. Криптографические методы и средства защиты информации: учебное пособие / Н. Г. Бутакова, Н. В. Федоров. - СПб: Интермедия, 2017. - 384 c.
5. Жуков А. Е. Системы блочного шифрования: учебное пособие по курсу «Криптографические методы защиты информации» / А. Е. Жуков. - М.: Московский государственный технический университет имени Н.Э. Баумана, 2013. - 80 c.
6. Исагулов С. Т. Анализ системы мультиплексирования данных в распределённых компьютерных сетях / С. Т. Исагулов, У. Амиреулы // Молодой ученый. - 2016. - № 7 (111). - С. 11 - 14.
7. Калмыков И. А. Криптографические методы защиты информации: лабораторный практикум / И. А. Калмыков, Д. О. Науменко, Т. А. Гиш. - Ставрополь: Северо-Кавказский федеральный университет, 2015. - 109 c.
8. Котов Ю. А. Криптографические методы защиты информации. Стандартные шифры. Шифры с открытым ключом: учебное пособие / Ю. А. Котов. - Новосибирск: Новосибирский государственный технический университет, 2017. - 67 c.