
- •Московский технический университет связи и информатики
- •«Комплексное обеспечение информационной безопасности инфокоммуникационных сетей и систем»
- •210700 «Инфокоммуникационные технологии и системы связи»
- •Введение в современные криптографические алгоритмы Предисловие
- •Математические основы (теория чисел)
- •1.1 Простые числа
- •1.2 Наибольший общий делитель
- •1.3 Модулярная арифметика
- •2. Криптография с открытым ключом
- •2.1 Алгоритм rsa
- •2.2 Электронная цифровая подпись (эцп)
- •2.2.1 Алгоритм формирования подписи Эль-Гамаля
- •2.2.2 Алгоритм dsa (Digital Signature Algorithm)
- •2.3 Алгоритм формирования общего ключа по схеме Диффи-Хеллмана
- •3. Симметричная система шифрования
- •3.1 Потоковые шифры
- •3.2 Генераторы псевдослучайных чисел
- •3.3 Блочные шифры
- •3.4 Сети Файстеля
- •3.5 Режимы шифрования
- •3.5.1 Электронная кодовая книга (ecb)
- •3.5.2 Сцепление блоков по шифротексту (cbc)
- •3.5.3 Обратная загрузка шифротекста (cfb)
- •1. Задания по теории чисел
- •2.Задания по алгоритмам с открытыми ключами
- •3.Задания по симметричной системе шифрования генераторы псевдослучайных чисел
- •Задание по блочным шифрам
- •Задание по хэш-функциям
2. Криптография с открытым ключом
Основным пунктом концепции криптографии с открытым ключом было предложение использовать ключи парами. Для шифрования один ключ, а для расшифровки – другой. Эти ключи невозможно вычислить один из другого. С 1976 г. было создано много алгоритмов, использующих концепцию открытых ключей. Некоторые из этих алгоритмов пригодны только для решения ограниченной задачи распределения ключей шифрования, другие обеспечивают как шифрование, так и распределение ключей, третьи пригодны только для создания электронной подписи.
Алгоритм RSA и алгоритм Эль-Гамаля можно применять как для шифрования, так и для электронной подписи. Алгоритм DSA пригоден только для электронной подписи.
Все алгоритмы с открытым ключом работают значительно медленнее, чем симметричные алгоритмы. В результате часто используют гибридные криптосистемы, в которых для шифрования сообщений используется симметричный алгоритм со случайным сеансовым ключом, для шифрования которого используется алгоритм с открытым ключом.
2.1 Алгоритм rsa
Алгоритм RSA назван по первым буквам фамилий его разработчиков Р.Л. Райвеста, А. Шамира и Л.Адлемана. Алгоритм разработан в 1977 году в США.
Схема Райвеста-Шамира-Адлемана (RSA) с тех пор получила самое широкое признание и реализована практически во всех приложениях шифрования с открытым ключом.
RSA представляет собой блочный шифр, в котором открытый текст и шифротекст есть целые числа от 0 до 2n-1 при некотором n. В настоящее время используются значения n = 512, 1024, 2048 бит. В основу алгоритма положена процедура возведения в степень в модульной арифметике.
Краткие основы RSA:
1. Выбираются большие случайные простые числа P и Q;
2. Вычисляется их произведение: N=P*Q где N<=2n;
3. Случайным образом выбирается число E ( ключ шифрования), которое должно быть взаимно простым с результатом умножения (P-1)*(Q-1), т.е. не должно иметь с ним общих делителей, отличных от единицы;
4. Вычисляется число D( ключ расшифрования), из выражения (E*D) MOD [(P-1)*(Q-1)]=1;
Таким образом, пара чисел (E,N) будет открытым ключом, а пара чисел (D,N) -закрытым ключом. Два простых числа P и Q больше не нужны. Они могут быть отброшены , но не раскрыты. Понятно, что открытым ключом можно только закодировать исходный текст, для того, чтобы его раскодировать, нужен закрытый ключ.
Сообщение С, подлежащее шифрованию, разбивается на L отрезков длины n двоичных символов. Каждый отрезок сообщения рассматривается как число M , где 0<M <N =1,2…L
Кодирование отрезка сообщения: A= (M)E MOD N;
Преобразованное сообщение C = A1 A2 … AL отправляют пользователю
Обратная операция: M= (A)D MOD N;
Пример
(использование алгоритма RSA)
1. Выбираются большие случайные простые числа P=7 и Q=17;
2. Вычисляется их произведение: N=P*Q=7*17=119
3. Вычисляется φ(N)=(P-1)*(Q-1)= 6*16=96
4. Выбирается E, взаимно простое с φ(N)=96 и меньшее, чем φ(N); в данном случае E=5.
5. Определяется такое D, что (E*D) MOD 96=1 и D<96.
Соответствующим значением D будет 77, т.к. (77*5) MOD 96 =1
6. В результате получаем открытый ключ (5; 119) и секретный (77; 119).
7. Пусть исходный шифруемый текст будет M=19
8. Шифруем текст 19 5 MOD 119= 66
9. Передаем 66 – это зашифрованный текст.
10. Расшифровываем текст 6677 MOD 119= 19 – это восстановленный текст