- •Содержание
- •Введение
- •1.1. Общая система секретной связи (по К. Шеннону)
- •1.1.1. Основные криптографические термины
- •1.1.2. Модель системы секретной связи К.Шеннона
- •1.2. Подходы к оценке надежности реальных криптосистем
- •1.2.2. Метод сведения к общей алгоритмической проблеме
- •Глава 2. ОБЩИЕ АЛГОРИТМИЧЕСКИЕ ПРОБЛЕМЫ АНАЛИЗА ОСНОВНЫХ ТИПОВ ШИФРОВ
- •2.1. Элементарные шифры
- •2.2. Основные типы шифров
- •2.2.1 Потоковые шифры. Последовательность выбора шифрпреобразований
- •2.2.2. Качество гаммы
- •2.2.3. Периодичность гаммы
- •2.2.4. Блочные шифры
- •2.2.5. Алгоритмические проблемы, связанные со стойкостью основных типов шифров
- •Глава 3. ТЕСТИРОВАНИЕ УЗЛОВ КРИПТОСХЕМ КАК МЕТОД КОМПРОМЕТАЦИИ ШИФРОВ
- •3.1. Компрометация шифров
- •3.2. Задача тестирования линейной рекуррентной составляющей криптоузла
- •3.3. Задача восстановления параметров искаженной линейной рекурренты
- •3.3.1. Представление элементов рекурренты через элементы начального заполнения
- •3.3.2. Производные соотношения
- •3.3.4. Качественная характеристика задачи восстановления параметров линейной искаженной рекурренты
- •Глава 4. КРИПТОГРАФИЧЕСКИЕ СВОЙСТВА БУЛЕВЫХ ФУНКЦИЙ
- •4.1. Нелинейность булевой функции
- •4.2. Критерии распространения и корреляционная иммунность
- •4.3. Устойчивые булевы отображения
- •Глава 5. ОСОБЕННОСТИ ПРИМЕНЕНИЯ АЛГОРИТМА ГОСТ 28147-89
- •5.1. Криптоэквивалентная схема алгоритма ГОСТ 28147-89
- •5.2. Влияние блока подстановки на последовательности выходов итераций
- •5.2.1 Расшифрование в режиме простой замены
- •5.2.2. Возможность ослабления шифра за счет структуры сеансового ключа
- •5.3. Замечания о режимах шифрования и имитовставки
- •Глава 6. ВЫБОР ДОЛГОВРЕМЕННОГО КЛЮЧА АЛГОРИТМА ГОСТ 28147-89
- •6.1. Область сильных ключей
- •6.1.1. Достаточность условия равновероятности псевдогаммы для выбора сильного блока подстановки
- •6.2. Контроль долговременного ключа алгоритма ГОСТ 28147-89
- •6.2.1. Угроза внедрения слабых параметров
- •6.2.2. Подход к выявлению слабых долговременных ключей
- •6.2.3. Свойства теста
- •6.2.4. Тестирование долговременного ключа
- •Глава 7. ЭЛЕМЕНТЫ ТЕОРИИ СРАВНЕНИЙ
- •7.1.1. Расширенный алгоритм Эвклида
- •7.2. Модульная арифметика
- •7.2.1. Функция Эйлера и малая теорема Ферма
- •7.3. Сравнения первой степени от одного неизвестного
- •7.3.1. Китайская теорема об остатках
- •7.3.2. Степенные сравнения по простому модулю
- •Глава 8. ВЫЧИСЛЕНИЕ КВАДРАТНОГО КОРНЯ В ПРОСТОМ ПОЛЕ
- •8.1.1. Символ Лежандра
- •8.1.2. Символ Якоби
- •8.2. Алгоритм нахождения квадратного корня в простом поле
- •9.1. Построение криптосистемы RSA. Идея цифровой подписи
- •9.2. Смешанные криптосистемы. Протокол Диффи-Хэллмана ключевого обмена
- •9.3. Цифровая подпись Эль-Гамаля
- •9.3.1. Криптосистема Эль-Гамаля
- •9.3.2. Механизм цифровой подписи Эль-Гамаля
- •9.3.3. Ослабление подписи Эль-Гамаля вследствие некорректной реализации схемы
- •9.3.4. Варианты цифровой подписи типа Эль-Гамаля
- •10.1 Обозначения и постановка задачи
- •10.2. Построение корней из единицы в поле
- •10.3. Алгоритм дискретного логарифмирования
- •10.3.1. Пример вычисления дискретного логарифма
- •10.4. Фальсификация подписи Эль-Гамаля в специальном случае выбора первообразного элемента и характеристики поля
- •10.4.1. Слабые параметры в подписи Эль-Гамаля
- •Глава 11. МЕТОДЫ ФАКТОРИЗАЦИИ ПОЛЛАРДА
- •11.2.1. Оценка вероятности выбора критической пары
- •11.2.2. Оптимизация выбора критической пары
- •Глава 12. НЕКОТОРЫЕ СЛУЧАИ ОСЛАБЛЕНИЯ КРИПТОСИСТЕМЫ RSA
- •12.1. Атаки на RSA, не использующие факторизацию модуля
- •12.2. Атаки на RSA, использующие факторизацию модуля
- •12.2.1. Алгоритм факторизации Диксона
- •Глава 13. ТЕСТ ФЕРМА ПРОВЕРКИ ЧИСЕЛ НА ПРОСТОТУ
- •13.1. Решето Эратосфена и критерий Вильсона
- •13.2. Тест на основе малой теоремы Ферма
- •13.2.1. Основные свойства псевдопростых чисел
- •13.2.2. Свойства чисел Кармайкла
- •13.2.3. (n-1) - критерий Люка
- •13.2.3. Понятие о последовательностях Люка. (n+1) - критерий Люка
- •Глава 14. ТЕСТЫ СОЛОВЕЯ-ШТРАССЕНА И РАБИНА-МИЛЛЕРА ПРОВЕРКИ ЧИСЕЛ НА ПРОСТОТУ
- •14.1. Тест Соловея-Штрассена
- •14.1.1. Эйлеровы псевдопростые числа
- •14.2. Тест Рабина-Миллера
- •14.2.1. Сильно псевдопростые числа
- •Глава 15. ПОСТРОЕНИЕ БОЛЬШИХ ПРОСТЫХ ЧИСЕЛ
- •15.1. Детерминированный тест, основанный на обобщенном критерии Люка
- •15.1.1. Теорема Поклингтона
- •15.1.2. Обобщение критерия Люка
- •15.2. Детерминированный тест, основанный на теореме Димитко
- •Глава 16. ВЫБОР ПАРАМЕТРОВ КРИПТОСИСТЕМЫ RSA
- •16.1. Общие требования к выбору параметров
- •16.2. Метод Гордона построения сильно простых чисел
- •16.3. Пример построения сильно простого числа
- •Глава 17. ОБЩИЕ СВЕДЕНИЯ ОБ ИНОСТРАННЫХ КРИПТОСРЕДСТВАХ
- •17.1. Аппаратные криптосредства
- •17.2. Основные принципы построения систем управления ключами
- •17.2.1. Ключевые системы потоковых шифров
- •17.3. Блочные шифры в смешанных криптосистемах
- •17.3.2. Смешанная криптосистема на основе алгоритмов RSA и IDEA
- •ЗАКЛЮЧЕНИЕ
- •ЛИТЕРАТУРА
116 Глава 9. КРИПТОСИСТЕМА RSA, ПРОТОКОЛ ДИФФИ-ХЭЛЛМАНА И ЦИФРОВАЯ ПОДПИСЬ ЭЛЬ-ГАМАЛЯ
Широко известная криптографическая система RSA, предложенная в 1978 году, является асимметричной криптосистемой, основанной на односторонней функции с лазейкой, в качестве которой выбрана степенная функция в кольце вычетов целых чисел по составному (двупростому) модулю n = pq . На основе криптосистемы RSA можно построить механизм цифровой подписи [42]. Стойкость системы основана на сложности задачи факторизации больших двупростых чисел.
Криптосистема RSA на каждом такте шифрования преобразует двоичный блок открытого текста m длины size(n)= log2 n +1, рассматриваемый как целое число, с помощью возведения в степень по модулю n: c = me (n). Показатель степени и модуль являются элементами открытого ключа.
Лазейка обеспечивается за счет секретного ключа d , построенного таким образом, что для всех m выполняется соотношение cd = med = m(n).
9.1. Построение криптосистемы RSA. Идея цифровой подписи
Построение криптосистемы обеспечивает получатель сообщений.
Сначала случайным образом выбираются два различных больших простых числа p и q . Выбранные простые числа должны удовлетворять некоторым дополнительным условиям.
Затем вычисляется модуль n = pq , функция Эйлера от модуля
ϕ(n)= (p −1)(q −1), а также выбирается случайное число e, взаимно простое с
ϕ(n).
Секретный ключ строится с помощью расширенного алгоритма Эвклида,
как число d , удовлетворяющее сравнению de ≡1(ϕ(n)). После этого все данные, кроме , включая данные промежуточных вычислений,
уничтожаются. Пара e,n объявляется в качестве открытого ключа.
Построение криптосистемы RSA. Идея цифровой подписи 117
Расшифрование обеспечивается тем, что для (m,n)=1 из теоремы Эйлера следует cd = m1+kϕ ≡ m(n) и, кроме того, для других значений m соотношение med ≡ m(n) также имеет место, вследствие свойств модуля вида n = pq .
Свойства параметров криптосистемы RSA позволяют показать принципиальную возможность построения схемы электронной цифровой подписи.
Цифровой подписью (ЦП) называется результат специального криптографического преобразования, осуществленного над электронным документом его владельцем.
Цель преобразования – доказать неоспоримость текста документа и факта преобразования данных конкретным лицом.
Основной метод – проверка факта использования секретного параметра (ключа) подписи, без знания ключа проверяющим.
Подпись представляет собой блок данных. Подписанное сообщение представляет собой исходное сообщение, передаваемое совместно с ЦП.
Владелец секретного ключа d криптосистемы RSA мог бы в качестве подписанного сообщения представить пару (m,md )= (m,c). Действительно, преобразование md может осуществить только он. Поскольку m имеется в сообщении в исходном виде, любой абонент в состоянии проверить соотношение m = ce , которое будет выполняться лишь в том случае, когда действительно c = md .
Однако подобный подход не обеспечивает стойкость подписи при передаче случайных данных. Действительно, выберем число a и построим сообщение m = ae (n). Тогда, очевидно, (m,md )= (m,a), т.е. подпись построена без знания секретного ключа.
118 Глава 9. КРИПТОСИСТЕМА RSA, ПРОТОКОЛ ДИФФИ-ХЭЛЛМАНА И ЦИФРОВАЯ ПОДПИСЬ ЭЛЬ-ГАМАЛЯ
По этой причине лучше вместо (m,md )использовать пару (m,h(m)d ), где h(m) - т.н. хэш-функция сообщения m: несекретное, заранее обусловленное преобразование. Значение z = h(m) называется хэш-кодом сообщения m.
Проверка подписи (m,c) начинается с вычисления h(m), затем результат сравнивается с ce (m).
Реальные хэш-функции представляют собой сложные алгоритмы, рекомендованные в соответствующих стандартах [17,18]. Методика их обоснования выходит за рамки данной книги.
Определение хэш-функции. Хэш-функция z = h(m) - преобразование
битовой строки произвольной длины в битовую строку (блок) фиксированной длины (обычно, 160-512 битов), обладающее следующими свойствами.
1. Восстановление m по z , исходя из соотношения вычислительно нереализуемо.
2. Исходя из m и z , вычислительно нереализуемо определение второго прообраза для z , т.е. такого сообщения m1 ≠ m , что
На практике, как правило, используются хэш-функции, удовлетворяющие более жесткому, чем последнее, условию: требуется вычислительная нереализуемость нахождения произвольной коллизии, т.е. пары сообщений x, y , таких, что h(x)= h(y).
Рассмотрим пример построения (учебной) криптосистемы RSA.
1.p = 3 , q =11, n =33, ϕ(n)= 20 .
2.e = 7 (e,ϕ(n))=1.
3.d =3 ed =1(ϕ).
Протокол Диффи-Хэллмана 119
Зашифруем сообщение из трех блоков: 3,1,2.
RSA(3)=37 = 2187 =9(33), RSA(1)=17 =1(33),
RSA(2)= 27 =128 = 29(33).
Для расшифрования возведем блоки в степень d =3 по модулю 33:
93 = 729 = 3(33) , 13 =1(33) , 293 = 24389 = 2(33).
Секретный ключ для учебной системы легко найти перебором. На практике это невыполнимо, т.к. реальный размер модуля (длина битового представления) size(n) находится в диапазоне от 512 до 4096 битов.
9.2. Смешанные криптосистемы. Протокол Диффи-Хэллмана ключевого обмена
В настоящее время в системах связи общего назначения широко распространены т.н. смешанные криптосистемы. В таких системах конфиденциальность сообщений обеспечивается за счет шифрования с помощью симметричной криптосистемы, рассылка ключей для которой осуществляется с помощью асимметричных криптоалгоритмов.
Здесь возникает новый тип задач, связанный с т.н. недоверием корреспондентов друг к другу.
Имеется большое количество стандартизованных протоколов безопасного ключевого обмена, применимых в различных ситуациях. Обычно в ходе таких протоколов обеспечивается аутентификация абонентов и построение общего секретного набора данных для дальнейшей генерации ключей.
Наиболее ранний протокол обмена ключами при взаимном недоверии участников обмена предложен Диффи и Хэллманом [29]. В этом протоколе используется показательная функция в простом поле Галуа GF(p), обратной к которой является дискретный логарифм.
120 Глава 9. КРИПТОСИСТЕМА RSA, ПРОТОКОЛ ДИФФИ-ХЭЛЛМАНА И ЦИФРОВАЯ ПОДПИСЬ ЭЛЬ-ГАМАЛЯ
Пусть абонент А является инициатором обмена. Он намерен выработать общий с абонентом В секретный ключ для симметричной криптосистемы.
При этом обоим корреспондентам известен первообразный элемент
(точнее, элемент большого порядка) g поля GF(p) и простое число p .
Протокол решает задачу построения общего секретного блока данных вида g xy (p), где x, y - случайные вычеты по модулю p −1.
Абонент А случайно выбирает x, вычисляет значение g x (p) и отправляет это значение абоненту В. Абонент В действует аналогично: выбирает y ,
вычисляет значение g y (p) и отправляет это значение абоненту А. Каждый из абонентов в состоянии теперь вычислить значение общего секретного блока g xy (p). Получить это значение, исходя из перехвата, оказывается, невозможно,
вследствие свойств дискретного логарифма, а подходов, неэквивалентных дискретному логарифмированию, не найдено.
Пример системы экспоненциального ключевого обмена Диффи-Хэллмана.
1. |
|
p =13, |
g = 7 , |
поскольку |
g(p−1) 2 =117649 = −1(p), |
|
g(p−1) 3 =9 ≠1(p). |
|
|
|
|
||
2. |
Абонент А генерирует |
псевдослучайное |
число, например, |
x =8 и |
||
передает абоненту В значение g x = 78 =3(13). |
|
|
||||
3. |
В |
аналогично генерирует y =5 и |
отправляет А |
значение |
||
g y = 75 =11(13). |
|
|
|
|
||
4. А вычисляет общий секретный параметр k = (g y )x =118 =9(13). |
||||||
5. |
В |
вычисляет |
общий |
секретный параметр k = (g x )y =35 =9(13). |