Стандарт шифрования данных (des)

Одним из наиболее распространенных криптографических стандартов на шифрование данных, применяемых в США, является DЕS (Dаtа Еnсгtурtion Stаndаrt). Стандарт шифрования DES был опубликован в 1977 году. Первоначально метод, лежащий в основе данного стандарта, был разработан фирмой IВМ для своих целей. Он был проверен Агентством Национальной Безопасности США, которое не обнаружило в нем статистических или математических изъянов. Это означало, что дешифрация данных, защищенных с помощью DЕS, не могла быть выполнена статистическими (например, с помощью частотного словаря) или математическими ("прокручивание" в обратном направлении) методами.

После этого метод фирмы IВМ был принят в качестве федерального стандарта. Стандарт DЕS используется федеральными департаментами и агентствами для защиты всех достаточно важных данных в ЭВМ (исключая некоторые данные, методы защиты которых определяются специальными актами). Его применяют многие негосударственные институты, в том числе большинство банков и служб обращения денег. Оговоренный в стандарте алгоритм криптографической защиты данных опубликован для того, чтобы большинство пользователей могли использовать проверенный и апробированный алгоритм с хорошей криптостойкостью. Заметим, что, одной стороны, публикация алгоритма нежелательна, поскольку может привести к дешифрации закрытой информации. Но, с другой стороны, это не столь существенно (если стандарт сильный) по сравнению со слабыми методами защиты данных, используемыми государственными институтами. Иначе говоря, потери от публикации алгоритма криптографической защиты намного меньше, чем потеря от применения методов защиты с низкой криптостойкостью. Разумеется, стандартный алгоритм шифрования данных должен обладать такими характеристиками, чтобы его опубликование не сказалось на криптостойкости.

К настоящему времени DES является наиболее распро­страненным алгоритмом, используемым в системах защиты ком­мерческой информации. Более того, реализация алгоритма DES в таких системах становится признаком хорошего тона. Основные достоинства алгоритма DES:

используется только один ключ длиной 56 бит;

зашифровав сообщение с помощью одного пакета программ, для расшифровки можно использовать любой другой пакет про­грамм, соответствующий стандарту DES;

относительная простота алгоритма обеспечивает высокую ско­рость обработки;

достаточно высокая стойкость алгоритма.

Алгоритм DES также использует комбинацию подстановок и перестановок. DES осуществляет шифрование 64-битовых бло­ков данных с помощью 64-битового ключа, в котором значащими являются 56 бит (остальные 8 бит - проверочные биты для кон­троля на четность). Дешифрование в DES является операцией, обратной шифрованию, и выполняется путем повторения опера­ций шифрования в обратной последовательности. Обобщенная схема процесса шифрования в алгоритме DES показана на рис. 15.

Следует сразу отметить, что все приводимые таблицы яв­ляются стандартными и должны включаться в реализацию алго­ритма DES в неизменном виде.

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

L и R - последовательности битов (левая (left) и правая (right));

LR - конкатенация последовательностей L и R, т.е. такая последовательность битов, длина которой равна сумме длин L R; в последовательности LR биты последовательности R следуют за битами последовательности L;

+ - операция побитового сложения по модулю 2.

 
  стандарт шифрования данных (des) - student2.ru

Рис.15. Обобщенная схема шифрования в алгоритме DES

Подробнее процесс шифрования данных поясняет рис. 16.

1. Первоначально каждые 64 бита входной последовательности перестанавливаются в соответствии с табл. 4.1. Таким образом, бит 58 входной последовательности становится битом 1; бит 59 - битом 2 и т.д.

Таблица 4.1

Матрица начальной перестановки

2. Полученная последовательность битов Т0 разделяется на две последовательности: L0 - левые или старшие биты, R0- правые или младшие биты, каждая из которых содер­жит 32 бита.

Затем выполняется итеративный процесс шифрования, состоящий из 16 шагов (циклов). Пусть Тi- результат i-й итерации:

Ti = LiRi,

где Li = t1t2 ... t32 (первые 32 бита); Rj = t33134... t64 (последние 32 бита). Тогда результат i-й итерации описывается следующими формулами:

Li = Ri-1, i = 1,2, ..., 16;

Ri = Li-1+f(Ri-1,Ki), i= 1,2, ..., 16.

 
  стандарт шифрования данных (des) - student2.ru

Рис. 16. Структура алгоритма DES

Функция f называется функцией шифрования. Ее аргумен­тами являются последовательность Ri-1, получаемая на предыду­щем шаге итерации, и 48-битовый ключ Ki, который является ре­зультатом преобразования 64-битового ключа шифра К. (Подроб­нее функция шифрования f и алгоритм получения ключа Кi, описаны ниже.)

На последнем шаге итерации получают последовательно­сти R16 и L16 (без перестановки местами), которые конкатенируются в 64-битовую последовательность R16 L16.

3. По окончании шифрования осуществляется восстановле­ние позиций битов с помощью матрицы обратной перестановки IP-1 (табл.4.2).

Таблица 4.2

Матрица обратной перестановки

Процесс расшифровки данных является инверсным по отношению к процессу шифрования. Все действия должны быть выполнены в обратном порядке. Это означает, что расшифровы­ваемые данные сначала переставляются в соответствии с матри­цей обратной перестановки, а затем над последовательностью битов R16L16 выпол­няются те же действия, что и в процессе шифрования, но в обрат­ном порядке.

Итеративный процесс расшифровки может быть описан следующими формулами:

Ri-1 = Li, i = 1,2,…,16;

Li-1 = Ri + f (Li, Ki), i=1,2,…, 16.

Таким образом, для процесса расшифровки перестав­ленным входным блоком R16L16 на первой итерации используется ключ K16, на второй итерации – K15 и т.д. На 16-й итерации ис­пользуется ключ К1. На последнем шаге итерации будут получены последовательности L0 и R0, которые конкатенируются в 64-битовую последовательность L0R0. Затем в этой последователь­ности 64 бита переставляются в соответствии с матрицей IP. Результат такого преобразования - исходная последовательность битов (расшифрованное 64-битовое значение).

Рассмотрим, что скрывается под преобразованием, обозначенным буквой f. Схема вычисления функции шифрования f (Ri-1 ,Ki) показана на рис. 17.

 
  стандарт шифрования данных (des) - student2.ru

Рис.17. Схема вычисления функции шифрования f

Для вычисления значения функции f используются:

функция Е (расширение 32 бит до 48);

функции S1, S2, ..., S8 (преобразование 6-битового числа в 4-битовое);

функция Р (перестановка битов в 32-битовой последователь­ности).

Рассмотрим определения этих функций.

Аргументами функции шифрования f являются Ri-1 (32 би­та) и Кi (48 бит).

Результат функции Е (Ri-1) есть 48-битовое число. Функция расширения Е, выполняющая расширение 32 бит до 48 (принимает блок из 32 бит и порождает блок из 48 бит), опре­деляется табл. 4.3.

Таблица 4.3

Функция расширения Е

Как видно из табл. 4.3 часть бит (например, 1, 32 и т.д.) повторяются несколько раз; за счет этого 32 бита расширяются до 48 бит.

Полученный результат (обозначим его E(Ri-1)) складывается по модулю 2 (операция XOR) с текущим значением ключа Ki (который состоит из 48 бит) и затем разбивается на восемь 6-битовых блоков Bi, B2, ..., В8:

E(Ri-1)+Ki = B1B2 ... В8.

Далее каждый из этих блоков используется как номер эле­мента в функциях-матрицах S1, S2, ..., S8, содержащих 4-битовые значения.

Следует отметить, что выбор элемента в матрице Sj осу­ществляется достаточно оригинальным образом.

Пусть на вход матрицы Sj, поступает 6-битовый блок Bj = b1 b2 b3 b4 b5 b6, тогда двух битовое число b1b6 указывает номер строки матрицы, а четырех битовое число Ь2 Ь3 b4 b5 - номер столбца.

Например, если на вход матрицы S1 поступает 6-битовый блок В1= Ь1 b2 b3 b4 b5 b6 = = 100110, то 2-битовое число b1 b6 = 10(2) = 210 указывает строку с номером 2 матрицы S1, а 4-битовое число b2 b3'b4 b5=0011(2)=3(10) указывает столбец с номером 3 матрицы S1.

Это означает, что в матрице S1 блок B1 = 100110 выбирает элемент на пересечении строки с номером 2 и столбца с номером 3, т.е. элемент 8(10) = =1000{2). Совокупность 6-битовых блоков B1, B2,..., В8 обеспечивает выбор четырех битового элемента в каждой из матриц S1, S2, ..., S8.

В результате получаем S1(B1) S2(B2) S3(B3) ... S8(B8), т.е. 32-битовый блок (поскольку матрицы Sj содержат 4-битовые элемен­ты). Этот 32-битовый блок преобразуется с помощью функции пе­рестановки битов Р (табл.4.4).

Таблица 4.4

Функция перестановки Р

Таким образом, функция шифрования

f(Ri_1,Ki) = P(S1(B1).............................. S8(B8)).

На каждой итерации (рис. 16) используется новое значение ключа Kj (длиной 48 бит). Новое значение ключа Kj вычисляется из начального ключа К (рис.18).

стандарт шифрования данных (des) - student2.ru

Рис. 18. Схема алгоритма вычисления ключей Кi

Ключ К представ­ляет собой 64-битовый блок с 8 битами контроля по четности, рас­положенными в позициях 8, 16, 24, 32, 40, 48, 56, 64. Для удаления контрольных битов и подготовки ключа к работе используется функция G первоначальной подготовки ключа (табл. 4.5).

Таблица 4.5

Функция G первоначальной подготовки ключа

Табл. 4.5 разделена на две части. Результат преобразования G(K) разбивается на две половины С0 и D0 по 28 бит каждая. Первые четыре строки матрицы G определяют, как выбираются биты последовательности С0 (первым битом С0 будет бит 57 ключа шифра, затем бит 49 и т.д., а последними битами - биты 44 и 36 ключа).

Следующие четыре строки матрицы G определяют, как
выбираются биты последовательности D0 (т.е. последовательность D0 будет состоять из битов 63, 55, 47 12, 4 ключа шифра).

Как видно из табл. 4.5, для генерации последовательно­стей Со и Do не используются биты 8, 16, 24, 32, 40, 48, 56 и 64 ключа шифра. Эти биты не влияют на шифрование и могут слу­жить для других целей (например, для контроля по четности). Та­ким образом, в действительности ключ шифра является 56-битовым.

После определения С0 и D0 рекурсивно определяются Сi и Di, i = 1, 2, …, 16. Для этого применяются операции циклического сдвига влево на один или два бита в зависимости от номера шага итерации, как показано в табл. 4.6.

Операции сдвига выполняются для последовательностей Сi и Di независимо. Например, последовательность С3 получается посредством циклического сдвига влево на две позиции последо­вательности С2, а последовательность D3 - посредством сдвига влево на две позиции последовательности D2, C16 и D16 получают­ся из C15 и D15 посредством сдвига влево на одну позицию.

Таблица 4.6

Таблица сдвигов Si для вычисления ключа

Номер итерации Количество Si сдвигов влево, бит Номер итерации Количество s, сдвигов влево, бит
9 1

Ключ Кj, определяемый на каждом шаге итерации, есть результат выбора конкретных битов из 56-битовой последователь­ности Сj , Dj и их перестановки. Другими словами, ключ Кj =Н(Сj Dj), где функция Н определяется матрицей, завершающей обработку ключа (табл. 4.7).

Таблица 4.7

Функция Н завершающей обработки ключа

Как следует из табл.4.7, первым битом ключа Кj будет 14-й бит последовательности Сj Dj, вторым - 17-й бит, 47-м битом клю­ча Кj будет 29-й бит СjDj а 48-м битом - 32-й бит СjDj.

Наши рекомендации