Алгоритм шифрования DES — это блочный алгоритм, в котором при выполнении шифрования исходное сообщение должно переводиться в двоичный код, а далее разбиваться на блоки, и каждый блок должен отдельно зашифровываться (расшифровываться).
Введение
В 1977-ом году Национальное бюро Стандартов Соединенных Штатов выпустило стандарт шифрования данных Data Encryptίon Standard (DES), который предназначался для применения в государственных и правительственных учреждениях, для того чтобы защитить от несанкционированного доступа важную, но несекретную информацию. Алгоритм, который был положен в основу стандарта, получил достаточно быстрое распространение, и уже в 1980-м году получил одобрение ANSI.
С этого момента DES превратился в стандарт не только по названию (Data Encryptίon Standard), но и по факту использования. Появилось специальное программное обеспечение, а также и специализированные микро ЭВМ, которые были предназначены для шифровки и расшифровки информации в сетях передачи данных, а также и на магнитных носителях.
На сегодняшний день DES может считаться самым распространенным алгоритмом, который используется в системах защиты коммерческой информации. Кроме того использование алгоритма DES в подобных системах стало уже просто признаком хорошего тона. В качестве примера можно привести программу DISKREET из пакета Norton Utίlities, которая предназначена для формирования шифрованных разделов на диске и которая применяет именно алгоритм DES.
Алгоритм шифрования DES
К числу основных достоинств алгоритма DES необходимо отнести следующие моменты:
- Использование лишь одного ключа, который имеет размер в 56 бит.
- Если шифрование сообщения было выполнено при помощи одного пакета, то для его расшифровки получатель может пользоваться любым другим пакетом.
- Наличие относительной простоты алгоритма способно обеспечить высокую скорость информационной обработки.
- Алгоритм обладает достаточно высокой стойкостью.
DES способен осуществлять шифрование 64-битовых информационных блоков при помощи 56-битового ключа. Расшифровка в DES выступает как операция, обратная шифрованию, то есть, она может быть выполнена путем повторения операций шифрования в обратной очередности. Необходимо подчеркнуть, что, несмотря на кажущуюся очевидность, такой порядок действий применяется далеко не всегда.
Процесс шифрования состоит в изначальной перестановке битов 64-битового блока, шестнадцати циклах шифрования и, в заключении, обратной перестановки битов, как показано на рисунке ниже.
Рисунок 1. Процесс шифрования. Автор24 — интернет-биржа студенческих работ
Весь набор перестановок и кодов в таблицах определены проектировщиками таким образом, чтобы сделать максимально трудным процесс расшифровки путем подбора ключа. Структура алгоритма DES изображена на рисунке ниже.
Рисунок 2. Структура алгоритма DES. Автор24 — интернет-биржа студенческих работ
Предположим, что из файла выполнено считывание очередного восьми байтового блока T, который должен быть преобразован при помощи матрицы начальной перестановки IP следующим образом:
- Бит 58-го блока T станет битом один.
- Бит 50-го блока T станет битом два и так далее.
- В итоговом результате получаем T(0) = IP(T).
Сформированную последовательность битов T(0) необходимо разделить на две последовательности по 32 бита каждая, а именно, L(0) представляет левые или старшие биты, а R(0) представляет правые или младшие биты. Далее осуществляется шифрование, которое состоит из шестнадцати итераций. Результат ί-ой итерации может быть описан при помощи следующих формул:
L(ί) = R(ί-1)
R(ί) = L(ί-1) xor f(R(ί-1), K(ί)).
Здесь xor является операцией «ИСКЛЮЧАЮЩЕЕ ИЛИ».
Функция f представляет собой функцию шифрования. Ее аргументами является 32-х битовая последовательность R(ί-1), которая получена на (ί-1)-ой итерации, и 48-битовый ключ K(ί), являющийся результатом трансформации 64-битового ключа K. На шестнадцатой итерации получаются последовательности R(16) и L(16) (без перестановки), которые должны конкатенировать в 64-битовую последовательность R(16)L(16).
Далее позиции битов данной последовательности следует переставить в соответствии с матрицей IP-1, которая может иметь, к примеру, следующие значения:
40 08 47 15 57 25 63 31
38 06 46 16 53 22 61 32
37 05 44 13 56 26 60 34
32 03 41 14 59 22 68 27
35 03 43 18 51 23 67 21
31 04 49 17 52 16 58 26
33 01 41 11 59 17 57 25
34 02 42 08 48 18 58 29
Матрицы IP-1 и IP должны соотноситься следующим образом:
- Значение первого компонента матрицы IP-1 равняется 40.
- Значение сорокового компонента матрицы IP должно равняться единице.
- Значение второго компонента матрицы IP-1 равняется восьми.
- Значение восьмого компонента матрицы IP должно равняться двум и так далее.
Процедура расшифровки информации выступает как инверсная по отношению к процедуре шифровки, то есть, весь набор действий должен быть выполнен в обратной очередности. Это значит, что расшифровываемая информация вначале должна быть переставлена согласно матрице IP-1, а далее над очередностью бит R(16)L(16) должны быть выполнены те же операции, что и при шифровании, но в обратном порядке.
Итеративный процесс расшифровки можно представить при помощи следующих формул:
R(ί-1) = L(ί), ί = 1, 2, ..., 16;
L(ί-1) = R(ί) xor f(L(ί), K(ί)), ί = 1, 2, ..., 16 .
На шестнадцатой итерации должны быть получены последовательности L(0) и R(0), которые должны конкатенировать в 64-битовую последовательность L(0)R(0). Далее позиции битов этой последовательности следует переставить согласно матрице IP. Результатом данной перестановки должна стать исходная 64-битовая последовательность.
Функция шифрования f(R(ί-1),K(ί)) схематически может быть представлена следующим образом:
Рисунок 3. Функция шифрования. Автор24 — интернет-биржа студенческих работ
Для того чтобы вычислить значения функции f, должны использоваться следующие функции-матрицы:
- Функция Е, которая выполняет расширение 32-битной последовательности до 48-битной.
- S1, S2, ... , S8 является преобразованием шести битового блока в четырех битовый.
- Функция Р, которая выполняет перестановку бит в 32-битовой последовательности.