Протоколы информационного обмена
.pdf
Рассмотрим общую схему защищенного информационного обмена для случая использования криптосистемы с открытыми ключами (рис.1.1).
Злоумышленник
|
М |
|
|
|
|
|
|
|
|
|
|
М |
|
||||
|
|
|
|
|
|
|
|
С |
|
|
|
||||||
Отправитель |
|
|
|
C=F(M, E2) |
M=F(C, D2) |
|
Получатель |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E1, D1 |
|
|
Шифратор |
|
|
|
|
|
|
|
|
|
|
Дешифратор |
E2, D2 |
||
|
|
|
|
|
|
|
ЦРК |
|
|
|
|||||||
Рис.1.1
Каждый абонент первоначально генерирует у себя пару связанных ключей: открытый ключ E и секретный ключ D. Открытые ключи могут быть опубликованы в некотором доверенном центре распределения ключей (ЦРК), который впоследствии будет выдавать копии открытых ключей всем желающим. Шифрование происходит на открытом ключе получателя. Расшифрование осуществляется на закрытом ключе получателя. Злоумышленник имеет возможность атаковать каналы передачи данных между абонентами сети, а также между абонентами и доверенным центром ЦРК. Секретные каналы связи (например, для распространения ключей) в схеме отсутствуют.
Чтобы система с открытыми ключами была безопасной, должны соблюдаться следующие требования [7]:
1)вычисление пары открытого и закрытого (E, D) ключей на основе некоторого начального условия должно быть простым;
2)зная открытый ключ E и открытый текст M, легко вычислить значение криптограммы C;
3)зная секретный ключ D и значение криптограммы C, можно легко расшифровать сообщение и получить открытый текст M;
4)зная только открытый ключ E, невозможно вычислить парный ему секретный ключ D;
5)зная только значение открытого ключа E и криптограмму C, невозможно восстановить открытый текст М.
Рассмотрим криптосистему с открытыми ключами RSA [5], регламентирующую правила генерации ключей и формулы криптографических преобразований для зашифрования и расшифрования сообщений.
Сначала необходимо выбрать два больших простых числа p и q. Для обеспечения большей секретности рекомендуется числа p и q выбирать одинаковой длины. Их перемножение дает модуль шифрования
29
n = p*q
Для генерации ключей предварительно нужно вычислить значение функции Эйлера от модуля шифрования
ϕ(n) = (p – 1)(q – 1)
Функция Эйлера показывает количество чисел, взаимно простых со значением аргумента.
Открытым ключом является целое положительное число e, такое, что
1 < e ≤ ϕ(n), НОД(e, ϕ(n)) = 1
т.е. это число в интервале от 1 до ϕ(n), и к тому же взаимно простое со значением функции Эйлера ϕ(n). Последнее условие накладывается для того, чтобы гарантировать существование секретного ключа. Секретным ключом является число d, мультипликативно обратное к числу e по модулю функции Эйлера, т.е. значение d находится из уравнения:
ed ≡1mod ϕ(n)
Решить это уравнение относительно d, легко можно с помощью расширенного алгоритма Евклида.
Таким образом, открытый ключ составляют значения {e, n}. Секретный ключ составляют значения {d, p, q}.
Операция зашифрования в RSA состоит в возведении открытого текста M, представленного в числовой форме, в степень открытого ключа e по модулю шифрования n.
C = M e mod n
Обратная операция расшифрования состоит в возведении значения криптограммы C в степень секретного ключа d по модулю шифрования n.
M =C d mod n
Типовой пример криптосистемы RSA разобран в приложении 2. Считается, что безопасность системы состоит в вычислительной слож-
ности решения задачи факторизации больших чисел. На существующем уровне развития вычислительной техники нет способа на практике эффективно раскладывать большие числа на множители. Под словом эффективно тут понимается полиномиальная зависимость времени работы от размера числа [12].
Действительно, злоумышленнику, так же как и любому абоненту сети, известен модуль шифрования n. Если бы он мог разложить его на множители, то легко бы вычислил значение функции Эйлера ϕ(n). Далее зная значения функции Эйлера и открытого ключа e, злоумышленнику не составило бы никакого труда вычислить30 значение секретного ключа d.
ставило бы никакого труда вычислить значение секретного ключа d. После этого злоумышленник мог бы дешифровать и читать все криптограммы.
При достаточно больших значениях числа n разложить его на множители за обозримое время не представляется возможным. Лучший из известных алгоритмов факторизации – алгоритм обобщенного числового решета [11] дает асимптотическую оценку времени работы, как
eO((ln(n))1/ 3 (ln ln(n))2 / 3 ) . Следует отметить, что с 1994 г. теоретически для квантового компьютера были предложены полиномиальные алгоритмы факторизации, а также решения некоторых других сложных проблем, включая задачу дискретного логарифмирования [6]. Однако существующий уровень технологий все еще не позволяет полноценно использовать эти алгоритмы. Для обеспечения действительной и достаточно долгосрочной секретности сегодня на практике рекомендуется использовать числа размером от 1024 бит. Приведем в табл.1.1 зависимости требуемой производительности для осуществления успешной атаки на RSA в зависимости от размера модуля шифрования [11].
Таблица 1.1
Размер модуля шифрова- |
512 |
768 |
1024 |
1280 |
1536 |
2048 |
ния, бит |
|
|
|
|
|
|
|
|
|
|
|
|
|
Производительность (M/Y) |
3*104 |
2*108 |
3*1011 |
1*1014 |
3*1016 |
3*1020 |
1 M/Y – год работы компьютера, который выполняет один миллион операций в секунду. Эквивалентной мощностью обладает, например, DEC VAX 11/780. Предполагается, что к 2004 г. вычислительный потенциал атаки со стороны некоторой крупной организации может достигнуть уровня до 108 M/Y, а к 2014 г. – до 1011 M/Y. Возможные атаки с привлечением вычислительных ресурсов компьютеров, подключенных к глобальной открытой сети, например к Интернет, достигнут еще большего уровня и составят в 2004 г. до 2*109 M/Y, а в 2014 г. – до 1013 M/Y.
Помимо факторизации модуля шифрования, злоумышленник может попытаться напрямую вычислить значение открытого текста M, зная криптограмму C и открытый ключ E. Однако, в конечном счете эта задача сводиться к задаче факторизации и не является более простой [7].
Рассмотрим доказательство корректности процедуры расшифрования в RSA. Для этого предварительно приведем формулировку теоремы Эйлера: если некоторые а и n – целые и положительные числа, причем НОД(а, n) = 1, то справедливо утверждение:
31
aϕ(n) =1mod n
В системе RSA ключи e и d связаны условием ed ≡1mod ϕ(n)
Что можно записать как
ed =1+ kϕ(n)
для некоторого целого числа k.
Отсюда следует корректность операции расшифрования в RSA, действительно:
C d mod n = (M e )d mod n = M ed mod n = M 1+kϕ(n) mod n = = M (M ϕ(n) )k mod n = M mod n = M .
Отметим, что RSA является блочным шифром, в котором исходный текст разбивается на блоки, и каждый блок представляется в числовой форме так, чтобы размер числа соответствующего блоку открытого текст не превышал значения модуля шифрования. Существуют различные методы сопоставления числа открытому тексту. В лабораторном практикуме для преобразования слов, состоящих из букв русского алфавита и пробелов, используются соответствия между символами и числами. Пробел заменяется на 1, буква А – на 2, буква Б – на 3 и т.д., буква Я заменяется на 34. Соответствующие числа, записанные в обратном порядке, образуют числовое представление открытого текста. Например, слову ДОМ будет соответствовать число 151706.
На практике система RSA часто используется в процессе управления ключами, для зашифрования сеансовых ключей – для симметричных алгоритмов (ГОСТ 28147-89, DES, AES и т.д.). Это связано в первую очередь с тем, что скорость работы RSA (и это общая черта практически всех двухключевых алгоритмов) в случае аппаратной реализации примерно в 1000 раз медленнее DES, а в случае программной реализации – в 100 раз. Однако RSA нашла самое разнообразное применение и является составной частью различных зарубежных стандартов и многочисленных систем [11]. Для ускорения процесса зашифрования рекомендуется выбирать открытый ключ e из чисел 3, 17 или 65537. Использование этих чисел никак не сказывается на стойкости системы, даже в том случае, если несколько абонентов имеют одинаковые значения открытых ключей.
ЗАДАНИЕ
1. Изучить работу специализированного вычислителя. Сгенерировать параметры критосистемы RSA для выбранных чисел p и q.
32
2.Вам известен открытый ключ RSA, состоящий из модуля шифрования n = 5183 и открытого ключа e = 733. Зашифруйте с помощью этого ключа произвольный выбранный вами текст из нескольких букв русского алфавита. Обменяйтесь криптограммами с вашим партнером. Дешифруйте полученную вами от партнера криптограмму.
3.Сообщение 1617-1273-1187 зашифровано по криптосистеме RSA с открытым ключом n = 4841 и e = 947, кроме того, известно, что функция
Эйлера ϕ(n) = 4692. Дешифруйте сообщение.
4. Оформить и сдать отчет о выполнении лабораторной работы. Форма отчета приведена в приложении 1 для работы 1.
Примечания к выполнению задания.
1.Исходный текст преобразуется в число путем замены каждой буквы русского алфавита на соответствующее число. Используйте возможности спецвычислителя для преобразования строки в число и обратно.
2.Каждый блок данных зашифровывается и дешифруется независимо. Криптограмма состоит из последовательности блоков разделенных символом ‘-‘ .
Например, 5634-678-7342.
3.Для дешифрования полученной криптограммы нужно провести атаку на алгоритм RSA.
ПРАКТИЧЕСКОЕ РУКОВОДСТВО
Работа происходит по протоколу «Шифрование RSA». Возможные роли: отправитель и получатель. Выберете роль для работы по протоколу. Договоритесь о том, кто создает сессию для работы по протоколу и о времени начала работы.
33
Р а б о т а 2
НЕСОСТОЯТЕЛЬНОСТЬ ШИФРОВАНИЯ RSA НА ОБЩЕМ МОДУЛЕ
Цель: практическое изучение и анализ дефекта протокола передачи данных, зашифрованных по криптосистеме RSA с одинаковым модулем шифрования у разных абонентов.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Стойкость криптосистемы RSA основывается на предположении о том, что ее взлом эквивалентен решению задачи факторизации, имеющей экспоненциальную сложность. Однако строго доказательства этого утверждения не существует [5, 11]. Известные же методы криптоанализа либо сводятся к задаче факторизации модуля шифрования на множители, либо работают еще медленнее [11]. По этим соображениям криптосистема RSA считается безопасной с практической точки зрения.
Тем не менее, только стойкость криптосистемы не обеспечивает безопасности протокола, в котором она применяется. Рассмотрим протокол, в котором два абонента сети обмениваются секретным сообщением, зашифрованным с применением криптосистемы RSA. У каждого абонента есть свои уникальные значения секретного и открытого ключей, но у них одинаковый модуль шифрования. В этой ситуации злоумышленник имеет возможность на основе значений, полученных только из открытых каналов связи, дешифровать и прочитать секретное сообщение без непосредственного прямого взлома криптосистемы RSA [9].
1-й абонент имеет следующие значения: n – модуль шифрования RSA;
e1 – открытый ключ 1-го абонента; d1 – секретный ключ 1-го абонента.
2-й абонент имеет следующие значения: n – модуль шифрования RSA;
e2 – открытый ключ 2-го абонента; d2 – секретный ключ 2-го абонента.
34
1-й абонент зашифровывает некоторое циркулярное сообщение M и посылает 2-му абоненту криптограмму C12 :
C12 = M e2 mod n
2-й абонент перешифровывает сообщение и посылает 1-му абоненту криптограмму С21 :
M = C12d2 mod n C21 = M e1 mod n
Злоумышленник перехватывает из открытого канала связи между абонентами значения криптограмм C12 и С21 . Помимо этого злоумышленнику
известны открытые ключи абонентов e1 , e2 и общий для них модуль шифрования n. Существует большая вероятность того, что числа e1 и e2
являются взаимно простыми. На основе этих данных злоумышленник может по расширенному алгоритму Евклида найти такие числа x и y ,
что:
xe1 + ye2 =1
Тогда можно вычислить значение секретного сообщения M , действительно:
C21x C12y mod n = M xe1 M ye2 mod n = M (xe1+ye2 ) mod n = M mod n .
Врезультате вычислений по расширенному алгоритму Евклида чисел x и y одно из них будет отрицательным. Это означает, что значение соответ-
ствующей криптограммы нужно будет возводить в отрицательную степень по модулю n . Фактически это означает возведение в положительную степень числа, мультипликативно обратного к значению криптограммы, т.е. для некоторых числа a , b и c :
a−b mod n = cb mod n
где
ac ≡1mod n
Для избежания описанной атаки при генерации ключей и их распределения необходимо следить за тем, чтобы у всех пользователей были различные модули шифрования. Следует заметить, что случайное совпадение значений модуля шифрования у разных абонентов можно практически исключить, так как это означает, что по крайне мере два
35
человека случайным образом выберут одинаковые большие простые числа p и q . Вероятность такого события пренебрежимо мала. Однако
при проектировании прикладных систем следует исключить моменты не случайного использования различными пользователями одинаковых параметров криптосистемы RSA для генерации своих ключей.
ЗАДАНИЕ
1. Один из двух абонентов выбирает простые числа p и q . Для вы-
бранных значений сгенерировать параметры криптосистемы RSA. Передать значение чисел p и q другому абоненту. Второй абонент, используя
полученные значения, генерирует свои параметры криптосистемы RSA. Так как использовались одинаковые значения чисел p и q , то у обоих
абонентов будет одинаковый модуль шифрования n , но различные пары открытого/секретного ключей. Абоненты обмениваются значениями своих открытых ключей.
2.Первый абонент выбирает некоторый исходный текст, и далее абоненты обмениваются данными по протоколу, описанному в теоретической части лабораторной работы.
3.Злоумышленник получает значение модуля шифрования n , ис-
пользуемого абонентами, значения криптограмм C12 и C21 , передаваемых между абонентами в процессе выполнения протокола, и значения открытых ключей абонентов e1 и e2 . На основе этих данных злоумыш-
ленник осуществляет атаку на прокол и получает исходный текст сообщения, выбранного первым абонентом.
4. Оформить и сдать отчет о выполнении лабораторной работы. Форма отчета приведена в приложении 1 для работы 2.
ПРАКТИЧЕСКОЕ РУКОВОДСТВО
Второе задание выполняется группами по три человека. Работа происходит по протоколу «Шифрование RSA на общем модуле». Возможные роли: 1-й абонент, 2-й абонент и злоумышленник. Выберете роль для работы по протоколу. Договоритесь о том, кто создает сессию для работы по протоколу, и о времени начала работы.
Для выполнения работы используйте специализированный вычислитель с поддержкой модулярной арифметики. Простые числа p и q можно
36
определить по таблице простых чисел. Исходный текст рекомендуется выбирать из двух букв русского алфавита, так чтобы числовое представление не превосходило размер одного блока данных для шифрования по RSA. В противном случае для передачи сообщения придется подготавливать несколько криптограмм в зависимости от количества блоков. Размер блока данных не должен быть больше модуля шифрования n . Для увеличения блока данных можно использовать большие значения чисел p и q ,
использующихся при генерации параметров криптосистемы RSA.
37
Р а б о т а 3
СХЕМА ЭЛЕКТРОННОЙ ЦИФРОВОЙ ПОДПИСИ ЭЛЬ-ГАМАЛЯ
Цель: практическое изучение схемы электронной цифровой подписи Эль-Гамаля.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Электронная цифровая подпись (ЭЦП) – это реквизит электронного документа, предназначенный для защиты данного электронного документа от подделки, полученный в результате криптографического преобразования информации с использованием закрытого ключа ЭЦП и позволяющий идентифицировать владельца сертификата ключа подписи, а также установить отсутствие искажения информации в электронном документе
[14].
Ниже рассматривается классическая схема ЭЦП Эль-Гамаля, предложенная в 1985 г. [16] и послужившая предтечей разработки отечественного и американского стандартов (ГОСТ Р 34.10-94 и Digital Signature Standard (DSS) FIPS 186 соответственно) цифровой подписи, основанных на криптографических преобразованиях в конечных группах [3, 7]. Безопасность схемы заключается в трудности решения задачи дискретного логарифмирования. Значение ЭЦП представляется в виде пары чисел, которые получаются в результате криптографических преобразований с учетом секретного ключа подписи и сообщения, представленного в числовой форме. Далее значение ЭЦП передается вместе с текстом сообщения. Любой желающий может использовать открытый ключ абонента, поставившего подпись на сообщении, для ее проверки, или как еще иногда говорят, верификации подписи. Если процедура верификации с применением открытого ключа абонента и текста сообщения прошла успешно, то это означает, что только этот абонент мог подписать сообщение с использованием своего секретного ключа. Если процедура верификации дает отрицательный результат, то это означает, что либо сообщение было искажено, либо его подписал другой абонент.
38
