русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Алгоритмы шифрования DES и 3-DES


Дата добавления: 2015-08-31; просмотров: 5070; Нарушение авторских прав


Американский алгоритм шифрования DES был разработан в 1976 году Национальным институтом стандартов и технологий (NIST) и опубликован в 1977 году. Само это событие стало беспрецедентным в мировой практике, поскольку, хотя всегда и предполагается, что криптоаналитику известен алгоритм шифрования, они обычно никогда не публиковались и хранились в секрете. Американские разработчики применили новый подход, заявив, что криптоанализ созданного алгоритма по сложности сопоставим с перебором всех 256 возможных ключей, поэтому его публикация гарантированно не влечет ослабления криптосистемы, и все желающие могут попытаться выявить недостатки предложенной схемы. Таким образом, дополнительно они обеспечили себе всемирное тестирование.

Алгоритм DES официально действовал в качестве стандарта с 1980 по 1998 год, когда производительность вычислительной техники достигла такого уровня, что перебор всех возможных ключей стал возможен за короткое время (например, распределив диапазоны ключей по тысячам компьютеров в сети Internet, можно добиться дешифрования в течение суток).

В связи с этим в 1997 году NIST объявил конкурс на создание нового стандарта AES (Advanced Encryption Standard), который завершился в 2000 году принятием нового стандарта на базе алгоритма Rijndael. В течение же переходного периода применялся алгоритм 3-DES, который использует ключ в три раза длиннее (168 бит) и заключается в следующем:

1. Текст шифруется алгоритмом DES при помощи первых 56 бит ключа.

2. Полученная в п.1 комбинация расшифровывается по алгоритму DES с использованием следующих 56 бит ключа.

3. Полученная в п.2 комбинация шифруется алгоритмом DES при помощи последних 56 бит ключа.

4. Расшифрование шифртекста алгоритма 3-DES производится в обратном порядке.

Таким образом, базовая процедура осталась неизменной, она лишь удлинилась, что позволило увеличить ключ до неприемлемой, с точки зрения тотального перебора, длины.



Сам алгоритм DES, как и многие блочные шифры замены, имеет четыре модификации:

1. Electronic Code Book (ECB) – электронная кодовая книга, базовая версия алгоритма.

2. Cipher Block Chaining (CBC) – режим сцепления блоков, когда очередной блок шифртекста побитно складывается по модулю 2 со следующим блоком открытого текста, а первый блок складывается со специальным секретным инициирующим вектором. Этим достигается общая связанность всего шифруемого текста, усиливающая стойкость алгоритма. Данная модификация используется наиболее часто.

3. Output Feed Back (OFB) – режим обратной связи по выходу, здесь инициирующий вектор перед применением тоже шифруется, в отличие от предыдущего режима. Этот режим используется для генерации данных аутентификации.

4. Cipher Feed Back (CFB) – режим обратной связи по шифртексту, то же, что и OFB, только инициирующий вектор создается из самого открытого текста. Этот режим используется в основном для генерации псевдо случайных чисел (последовательностей).

В целом процесс шифрования включает следующие этапы:

1. Подготовка преобразующих комбинаций из ключа KEY.

2. Начальная перестановка блока открытого текста длиной 64 бита.

3. 16 проходов преобразования блока, полученного в п. 2.

4. Конечная перестановка блока, полученного в п. 3, который и является шифртекстом длиной также 64 бита.

Опишем их подробнее.

 

Подготовка преобразующих комбинаций.

1. В ключевой комбинации из 56 бит после каждых семи бит вставляется еще один, который дополняет предыдущие семь до нечетного количества единиц. Таким образом получается комбинация TK из 64 бит.

2. Комбинация TK подвергается перестановке для получения 56 бит:

 

57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

14 6 64 53 45 37 29

21 13 5 28 20 12 4

 

3. В полученной перестановке первые 28 бит объявляются как C0, а следующие 28 бит как D0.

4. Путем циклического сдвига влево соответствующих комбинаций с предыдущим номером генерируется по 16 комбинаций Ci и Di (i = 1 … 16). Так для получения C1 и D1 производят сдвиг C0 и D0, для C2 и D2 – C1 и D1 и т.д. Количество сдвигаемых разрядов n зависит от номера комбинации и указано в табл. 9.2.

Таблица 9.2

i
n

 

5. На основе следующей перестановки соответствующих блоков CiDi генерируется 16 ключевых комбинаций Ki (i = 1 … 16) по 48 бит, которые и будут непосредственно использоваться при шифровании:

 

14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

Начальная перестановка блока открытого текста.

1. Очередной шифруемый блок открытого текста W из 64 бит переставляется для получения комбинации W' следующим образом:

 

58 50 42 34 26 18 10 2

60 52 44 36 28 20 12 4

62 54 46 38 30 22 14 6

64 56 48 40 32 24 16 8

57 49 41 33 25 17 9 1

59 51 43 35 27 19 11 3

61 53 45 37 29 21 13 5

63 55 47 39 31 23 15 7

 

2. Полученная комбинация W' представляется как комбинация первых своих 32 бит, обозначаемых L0, и следующих 32 бит, обозначаемых R0.

 

16 проходов преобразования Фейстеля.

Последовательным образом вычисляется по 16 комбинаций Li и Ri (i = 1 … 16) исходя из следующих соотношений (здесь xor – побитное исключающее ИЛИ):

Li = Ri–1; Ri = Li–1 xor f(Ri–1, Ki)

 

Конечная перестановка.

Полученная комбинация из 64 бит R16L16 подвергается перестановке, которая является обратной к начальной перестановке (т.е. биты возвращаются на исходное место):

 

40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41 9 49 17 57 25

 

Полученный таким образом блок из 64 бит и является шифртекстом.

Расшифрование шифртекста происходит по такому же алгоритму, только 16 обратных преобразований Фейстеля начинаются с комбинации R16L16 и выполняются по соотношениям:

Ri–1 = Li; Li–1 = Ri xor f(Li, Ki)

пока не будет получена комбинация L0R0, которая подвергается конечной перестановке, являющейся открытым текстом.

 

Саму суть алгоритма DES представляет функция шифрования f(X32, Y48). Рассмотрим алгоритм ее вычисления.

1. На вход функции поступает 32-битная комбинация данных X и 48‑битная ключевая комбинация Y.

2. Комбинация данных X расширяется до 48 бит по следующей схеме:

 

32 1 2 3 4 5

4 5 6 7 8 9

8 9 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 1

 

3. Над расширенной комбинацией X48 и ключевой комбинацией Y48 производится операция побитного исключающего ИЛИ:

B = X48 xor Y48

4. Комбинация B делится на 8 комбинаций по 6 бит:

B = B1B2B3B4B5B6B7B8

5. Для каждой комбинации Bi существует специальная таблица Si, состоящая из 4-х строк и 16-ти столбцов, пронумерованных, начиная с нуля. Каждый элемент представляет собой число от 0 до 15 (т.е. в двоичном виде 4 бита). На основе этих таблиц каждая комбинация Bi из 6-ти бит преобразуется в комбинацию B'i из 4-х бит, являющуюся каким-либо элементом таблицы Si. Элемент выбирается по следующему правилу: номер строки в таблице образуют крайние биты (левый и правый) комбинации Bi, а номер столбца – внутренние четыре бита.

Например, B7 = 110010. Крайние биты здесь 10 (110010), значит номер строки равен 2. Внутренние биты 1001 (110010), значит номер столбца 9. Элемент выбирается из таблицы S7.

6. В результате получается комбинация из 32-х бит:

B' = B'1B'2B'3B'4B'5B'6B'7B'8

7. Комбинация B' подвергается следующей перестановке:

 

16 7 20 21

29 12 28 17

1 15 23 26

5 18 31 10

2 8 24 14

32 27 3 9

19 13 30 6

22 11 4 25

 

Эта перестановка и является блоком в 32 бита, который представляет результат работы функции шифрования.

Ниже приводятся все 8 таблиц перекодировки, которые не подлежат изменению при реализации алгоритма, поскольку именно они обеспечивают его нелинейность и высокую криптографическую стойкость.

 

S1

14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

 

S2

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10

3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5

0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15

13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

 

S3

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8

13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1

13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7

1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

 

S4

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15

13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9

10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4

3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

 

S5

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9

14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6

4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14

11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

 

S6

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11

10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8

9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6

4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

 

S7

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1

13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6

1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2

6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

 

S8

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7

1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2

7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8

2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

 

 



<== предыдущая лекция | следующая лекция ==>
Шифрование с закрытым ключом | Алгоритм шифрования AES


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.44 сек.