- •Основы информационной безопасности и введение в современную криптологию
- •8 Глава 129
- •Предисловие
- •Введение
- •Формальная криптография;
- •Математическая криптография;
- •1. Криптографические системы «докомпьютерной эры» и проблемы современной криптографии
- •1.1 Криптография древнего мира. Шифр Цезаря и его криптостойкость
- •1.2 Шифр Атбаш и его модификации
- •1.3 Тарабарская грамота как аналог шифра Атбаш
- •1.4 Шифр Плейфера
- •1.5 Шифр adfgvx
- •1.6 Шифр Виженера
- •1.7 Формальная криптография
- •1.8 Математическая криптография
- •1.9 Современная компьютерная криптография и ее основные проблемы
- •2 Режимы шифрования для симметричных алгоритмов.
- •2.1 Режимы простой замены (электронная кодовая книга ecb)
- •2.2 Режим сцепления блоков (Cipher Block Chaining (cbc))
- •2.2 Режимы гаммирования
- •2.3 Режим гаммирования с обратной связью
- •Функции шифрования симметричных криптосистем
- •3.1 Стандарт шифрования данных des. Data Encryption Standard
- •3.2 Преобразования Сетью Фейстеля
- •3.3 Режимы работы алгоритма des
- •3.4.1Алгоритм гост – 28147-89
- •3.4.2Ключи в кзу
- •3.4.3В блоке подстановки k
- •3.5.1Описание алгоритма
- •4.Глава
- •4.1Хэш - функция
- •4.2Коллизия
- •4.4Пример простого хеширования
- •4.3Современные виды хеширования
- •5.Глава Элементы алгебры и теории чисел
- •5.1Быстрое возведение в степень.
- •5.2Нахождение простого числа
- •5.3Метод Шермана — Лемана
- •5.3Метод Раббина-Миллера
- •5.4Нахождение обратного элемента по модулю
- •5.5Теорема ферма, Эйлера
- •5.6Алгоритм Эвклида
- •5.7Расширенный алгоритм Эвклида
- •5.8 Китайская теорема об остатках
- •5.11 Нахождение с помощью расширенного алгоритма Евклида
- •5.11Квадратичные вычеты
- •5.11Нахождение генераторов
- •6. Глава
- •6.1 Алгоритм Диффи – Хеллмана
- •6.2Описание алгоритма
- •6.3Алгоритм Диффи — Хеллмана с тремя и более участниками
- •6.7Криптографическая стойкость
- •6.8Rsa алгоритм
- •6.10Алгоритм шифрования rsa
- •6.11Алгоритм подписи rsa
- •7.16Эль-Гамаля
- •6.13История dsa
- •6.14Алгоритм цифровой подписи dsa
- •6.15 Алгоритм цифровой подписи гост р 3410-94
- •7.1Эллиптическая кривая
- •7.2 Эллиптические кривые в криптографии
- •7.3 Метрика операций на эк
- •7.3.1Сложение различных точек
- •7.3.2Удвоение
- •7.7Порядок эллиптической кривой
- •7.6Теорема Хассе
- •7.5 Порядок точки на эллиптической кривой
- •7.8Порядок точки на эллиптической кривой (Теория, можешь не читат)
- •7.9Криптография на эллиптических кривых
- •7.10Пример эллиптической кривой над конечным полем.
- •7.11Кратные точки.
- •7.12Безопасность криптографии с использованием эллиптических кривых.
- •7.13Алгоритм Диффи-Хелмана на эллиптической кривой
- •7.14Алгоритм dsa на эллиптической кривой
- •7.14.1Алгоритм эцп на основе эллиптических кривых (ecdsa)
- •7.15Алгоритм Эль-Гамала на эллиптической кривой
- •Литература
- •8 Глава
- •8.1Криптоанализ
- •8.2Классический криптоанализ.
- •8.3 Современный криптоанализ
- •8.4Универсальные методы криптоанализа.
- •8.4.1Метод полного перебора
- •8.4.2Атака по ключам
- •8.4.3Частотный анализ
- •8.4.4Метод "встречи посередине"
- •8.4.5Криптоанализ симметричных шифров
- •8.4.6Дифференциальный криптоанализ
- •8.4.7Дифференциальный анализ на основе сбоев.
- •8.4.8Дифференциальный метод криптоанализа des.
- •8.4.9Линейный криптоанализ .
- •8.4.10Криптоанализ асимметричных шифров
- •8.4.11Метод безключевого чтения rsa.
- •8.4.12Криптоанализ хеш-функций
- •8.4.13Криптоанализ по побочным каналам
- •8.5Нанотехнологии в криптоанализе
3.1 Стандарт шифрования данных des. Data Encryption Standard
В 1977 году Национальное бюро Стандартов США (NBS) опубликовало стандарт шифрования данных Data Encryption Standard (DES), предназначенный для использования в государственных и правительственных учреждениях США для защиты от несанкционированного доступа важной, но несекретной информации. Алгоритм, положенный в основу стандарта, распространялся достаточно быстро, и уже в 1980 году был одобрен ANSI(Americal National Standart Institute). С этого момента DES превращается в стандарт не только на бугаме(Data Encryption Standard), но и фактически начианет использоватся. Появляются программное обеспечение и специализированные микрочипы, предназначенные для шифрования/расшифрования информации в сетях передачи данных и на магнитных носителях. К настоящему времени DES был вытеснен современными криптоалгоритмами. Программа DISKREET из пакета Norton Utilities, предназначенная для создания зашифрованных разделов на диске, использует именно алгоритм DES. "Собственный алгоритм шифрования" отличается от DES только числом итераций при шифровании. Почему же DES добился такой популярности?
Основные достоинства алгоритма DES:
используется только один ключ длиной 56 битов;
относительная простота алгоритма обеспечивает высокую скорость обработки информации;
достаточно высокая стойкость алгоритма в 90 годах, 20 века.
3.2 Преобразования Сетью Фейстеля
Это преобразование над векторами (блоками) представляющими собой левую и правую половины регистра сдвига. В алгоритме DES используются прямое преобразование сетью Фейстеля в шифровании (см. Рис.1) и обратное преобразование сетью Фейстеля в расшифровании (см. Рис.2).
Рис.1 Прямое преобразование сетью Фейстеля(Улучшить визуально рисунки)
Рис.2 Обратное преобразование сетью Фейстеля
-функция
шифрование
-
младшие биты
-
старшие биты
DES является шифром Фейстеля и сконструирован так, чтобы выполнялось полезное свойство: для шифрования и дешифрования используется один и тот же алгоритм. Единственное отличие состоит в том, что ключи должны использоваться, а обратном порядке.
То
есть если при шифровании использовались
ключи
то ключами дешифрования будут
.
Алгоритм использует только стандартную
арифметику 64-битовых чисел и логические
операции, поэтому легко реализуется на
аппаратном уровне.
DES работает с 64-битовыми блоками открытого текста. После первоначальной перестановки блок разбивается на правую и левую половины длиной по 32 бита. Затем выполняются 16 преобразований (функция ), в которых данные объединяются с ключом. После шестнадцатого цикла правая и левая половины объединяются, и алгоритм завершается заключительной перестановкой (обратной по отношению к первоначальной). На каждом цикле биты ключа сдвигаются, и затем из 56 битов ключа выбираются 48 битов. Правая половина данных увеличивается до 48 битов с помощью перестановки с расширением, объединяется посредством XOR с 48 битами смещенного и перестановленного ключа, проходит через -блоков, образуя 32 новых бита, и переставляются снова. Эти четыре операции и выполняются функцией f.
Затем результат функции f объединяется с левой половиной с помощью другого XOR. В итоге этих действий появляется новая правая половина, а старая становится новой левой половиной. Эти действия повторяются 16 раз, образуя 16 циклов DES
|
|
DES осуществляет шифрование 64-битовых блоков данных с помощью 56-битового ключа. Расшифрование в DES является операцией обратной шифрованию и выполняется путем повторения операций шифрования в обратной последовательности (несмотря на кажущуюся очевидность, так делается далеко не всегда. Позже мы рассмотрим шифры, в которых шифрование и расшифрование осуществляются по разным алгоритмам).
Как было сказано выше, из 64-битного ключа шифрования алгоритм DES использует только 56 бит. Каждый 8-й бит отбрасывается и никак не применяется в алгоритме, причем использование оставшихся бит ключа шифрования в реализациях алгоритма DES никак не лимитировано стандартом
Процесс шифрования заключается в начальной перестановке битов 64-битового блока, шестнадцати циклах шифрования и, наконец, обратной перестановки битов (рис.1).
Рис.1.
Обобщенная схема шифрования в алгоритме
DES
Необходимо сразу же отметить, что ВСЕ таблицы, приведенные в книге, являются СТАНДАРТНЫМИ, а следовательно должны включаться в вашу реализацию алгоритма в неизменном виде. Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс расшифровки путем подбора ключа. Структура алгоритма DES приведена на рис.2.
Рис.2.
Структура алгоритма шифрования DES
Пусть
из файла, который разбит на 64 битные
блоки, считан очередной 8-байтовый=64
битный блок
,
который преобразуется с помощью матрицы
начальной перестановки IP
(табл.1) следующим образом: бит 58 блока
становится битом 1, бит 50 - битом 2… и
т.д., что даст в результате:
= IP(T).
Другими словами перестваляются биты
по таблице 1.
Таблица 1: Матрица начальной перестановки IP
58 50 42 34 26 18 10 02
60 52 44 36 28 20 12 04
62 54 46 38 30 22 14 06
64 56 48 40 32 24 16 08
57 49 41 33 25 17 09 01
59 51 43 35 27 19 11 03
61 53 45 37 29 21 13 05
63 55 47 39 31 23 15 07
Полученная
последовательность битов
разделяется на две последовательности
по 32 бита каждая:
- левые или старшие биты,
- правые или младшие биты. (Рис.2а)
Рис.2а. Структурная система шифрования DES
Затем выполняется шифрование, состоящее из 16 итераций. Результат i-й итерации описывается следующими формулами:
|
где
- операция ИСКЛЮЧАЮЩЕЕ ИЛИ(сложение по
модулю 2).
Функция
f
называется функцией шифрования. Ее
аргументы - это 32-битовая последовательность
,
полученная на
-ой итерации, и 48-битовый ключ
,
который является результатом преобразования
64-битового ключа
.
Подробно функция шифрования и алгоритм
получения ключей
описаны ниже.(ссылку
сделать)
На
16-й итерации получают последовательности
и
(без
перестановки), которые конкатенируют
в 64-битовую последовательность
.
Затем позиции битов этой последовательности
переставляют в соответствии с матрицей
IP-1
(табл.2).
Таблица 2: Матрица обратной перестановки IP-1
40 08 48 16 56 24 64 32
39 07 47 15 55 23 63 31
38 06 46 14 54 22 62 30
37 05 45 13 53 21 61 29
36 04 44 12 52 20 60 28
35 03 43 11 51 19 59 27
34 02 42 10 50 18 58 26
33 01 41 09 49 17 57 25
Матрицы IP-1 и IP соотносятся следующим образом: значение 1-го элемента матрицы IP-1 равно 40, а значение 40-го элемента матрицы IP равно 1, значение 2-го элемента матрицы IP-1 равно 8, а значение 8-го элемента матрицы IP равно 2 и т.д.
Процесс расшифрования данных является инверсным(обратимым) по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровываемые данные сначала переставляются в соответствии с матрицей IP-1, а затем над последовательностью бит R16L16 выполняются те же действия, что и в процессе шифрования, но в обратном порядке.
Итеративный процесс расшифрования может быть описан следующими формулами:
|
На
16-й итерации получают последовательности
и
,
которые конкатенируют в 64-битовую
последовательность
.
Затем позиции битов этой последовательности переставляют в соответствии с матрицей IP. Результат такой перестановки - исходная 64-битовая последовательность, или дешифрованный 64-х битный текст.
Теперь
рассмотрим функцию шифрования
.
Схематически она показана на рис. 3.
Рис.3.
Вычисление функции
Для вычисления значения функции используются следующие функции-матрицы:
-
расширение 32-битовой последовательности
до 48-битовой,
-
преобразование 6-битового блока в
4-битовый,
-
перестановка бит в 32-битовой
последовательности.
Функция
расширения
определяется табл.3. В соответствии с
этой таблицей первые 3 бита
- это биты 32, 1 и 2, а последние - 31, 32 и 1.
Таблица 3:Функция расширения E
32 01 02 03 04 05
04 05 06 07 08 09
08 09 10 11 12 13
12 13 14 15 16 17
16 17 18 19 20 21
20 21 22 23 24 25
24 25 26 27 28 29
28 29 30 31 32 01
Результат
функции
есть 48-битовая последовательность,
которая складывается по модулю 2 (операция
xor) с 48-битовым ключом
(схема формирования раундовых ключей
приводится ниже). Получается
48-битовая последовательность, которая
разбивается на восемь 6-битовых блоков
.
То есть:
.
Функции определяются табл.4.
Таблица 4 Функции преобразования |
|||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||
К
табл.4. требуются дополнительные
пояснения. Пусть на вход функции-матрицы
поступает 6-битовый блок
=
,
тогда двухбитовое число
указывает номер строки матрицы, а
- номер столбца. Результатом
будет 4-битовый элемент, расположенный
на пересечении указанных строки и
столбца.
Например,
.
Тогда S1(В1)
расположен на пересечении строки 1 это
и
столбца 13-это
.
В столбце 13 строки 1 задано значение 5.
Значит,
.
Например
.
Тогда
расположен на пересечении строки
,
столбца
.
В столбце 11 строки 1 задано значение 11.
Значит,
.
Применив
операцию выбора к каждому из 6-битовых
блоков
,
получаем 32-битовую последовательность
.
-кадый
равень 4 битам.
Наконец, для получения результата функции шифрования надо переставить биты этой последовательности. Для этого применяется функция перестановки (табл.5). Во входной последовательности биты перестанавливаются так, чтобы бит 16 стал битом 1, а бит 7 - битом 2 и т.д.
Таблица 5:Функция перестановки
16 07 20 21
29 12 28 17
01 15 23 26
05 18 31 10
02 08 24 14
32 27 03 09
19 13 30 06
22 11 04 25
Таким образом,
Раундовые
ключи
ki
получаются
из начального ключа
(64
бит
=
8 байтов или 8 символов в
ASCII)
следующим образом. Восемь бит, находящихся
в позициях 8, 16, 24, 32, 40, 48, 56, 64 убираются
из ключа
таким
образом, чтобы каждый
байт
содержал
нечетное число единиц. Это используется
для обнаружения ошибок при обмене и
хранении ключей. Затем делают перестановку
для расширенного ключа (кроме добавляемых
битов 8, 16, 24, 32, 40, 48, 56, 64)
Для удаления контрольных битов и перестановки остальных используется функция G первоначальной подготовки ключа (табл.6).
Таблица
6: Матрица
первоначальной подготовки ключа
57 49 41 33 25 17 09
01 58 50 42 34 26 18
10 02 59 51 43 35 27
19 11 03 60 52 44 36
63 55 47 39 31 23 15
07 62 54 46 38 30 22
14 06 61 53 45 37 29
21 13 05 28 20 12 04
Результат
преобразования
разбивается на два 28-битовых блока
и
,
причем
будет состоять из битов 57,
49, ..., 44, 36 (верхняя
половина таблицы 6) ключа
,
а
будет состоять из битов 63, 55, ..., 12, 4
(нижняя половина таблицы 6) ключа K.
После определения
и
рекурсивно определяются
и
,
i=1...16.
(Рис.4)
Для этого применяют циклический сдвиг
влево на один или два бита в зависимости
от номера итерации, как показано в
табл.7.
Таблица 7 Таблица сдвигов для вычисления ключа |
||||
|
Рис.4 Алгоритм генерации подключа DES
Полученное
значение вновь "перемешивается"
в соответствии с матрицей
(табл.8).
Таблица 8: Матрица H завершающей обработки ключа
14 17 11 24 01 05
03 28 15 06 21 10
23 19 12 04 26 08
16 07 27 20 13 02
41 52 31 37 47 55
30 40 51 45 33 48
44 49 39 56 34 53
46 42 50 36 29 32
Ключ
будет состоять из битов 14, 17, ..., 29, 32
(таблица 8)последовательности
.
Таким образом:
=
Блок-схема алгоритма вычисления ключа приведена на рис.5.
Рис.5.
Блок-схема алгоритма вычисления ключа
Восстановление
исходного текста осуществляется по
этому алгоритму, но вначале вы используете
ключ
,
затем -
и так далее.

,
;
.