Программа для преобразования рисунков в другие форматы. Мультиконвертер изображений с поддержкой RAW онлайн. Free Image Convert and Resize от DVDVideoSoft

Data Encryption Standard (DES) - это стандарт шифрования данных, изобретенный в США в 80-х годах ХХ века. Среди шифров он по праву считается "пенсионером", при этом оставаясь рабочей лошадкой криптографии. DES перестал быть пригодным в условиях сверхбыстрой техники и больших объемов данных из-за ограничений в 56 бит на ключ и 64 бит на данные. Однако он все еще используется.

Что такое блочные шифры?

DES - алгоритм блочного шифрования. За последние 20-30 лет было создано множество блочных шифров, но создать хороший шифр, который был бы безопасным, задача достаточно сложная. Важно, чтобы шифр обладал характеристиками, которые позволят ему функционировать во многих сферах и отраслях.

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

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

Использование DES

Хотя DES признан устаревшим и не удовлетворяющим современным требованиям, он может быть использован, например, в виде 3DES, когда шифр применяется три раза подряд. Такой подход снимает ограничение в размере ключа, но блок шифруемых данных остается прежним. В свое время DES был достаточно быстрым и криптоустойчивым шифром. Сейчас это не так, а 3DES и вовсе работает втрое медленнее. Несмотря на это DES по-прежнему используется в ряде систем, но его применение в новых проектах запрещено.

Официально алгоритм шифра DES был стандартом в США до 1998 года. В 1997 году началось создание нового стандарта, который был назван System), и хотя криптоанализ показывает, что попытка взломать DES приводит к множеству систем нелинейных уравнений, аналитические методы не способны помочь решить задачу - его слабым местом является малое множество возможных ключей. Их количество равно 2 56 и все варианты можно перебрать при помощи современных технологий за относительно короткий срок.

Один раунд в алгоритме

Для ясности изложения и описания алгоритма DES используем рисунок (линейную диаграмму вычислений) 4.1, показывающий структуру одного раунда.

Каждый прямоугольник в линейной диаграмме представляет собой некие вычисления, а исходящая из него стрелка указывает, куда будут переданы результаты работы блока. Знаком плюс, обведенным в кружок, обозначается операция "исключающего или", называемая в программирование XOR. Операция еще носит имя "побитовое сложение" или "сложение без переноса". В сети можно найти алгоритм DES на C и изучить его для лучшего понимания.

DES принимает текстовый блок, размером 64 бита. Он проходит через начальную перестановку по определенному принципу. При анализе алгоритма выяснилось, что смысла в этой перестановке мало, т. к. она не дает какого-либо криптографического эффекта. Текстовый блок разбивается на 2 равные части: правая (R) и левая (L). Затем шифрованные части меняются местами и объединяются, а в конце раунда получается 64-битовый блок данных, только зашифрованный.

Общий алгоритм

Алгоритм DES включает в себя 16 раундов, совершаемых по схеме, описанной выше. Все раунды пронумерованы через i, где i = (1; 16). Каждый i-ый раунд из пары (Li-1, Ri-1) получает новую пару (Li, Ri), используя ключ Ki. Основные преобразования происходят внутри функции F.

Алгоритм работы функции F

Как видно из рисунка 4.1, R проходит через операцию "Расширение". Данный блок дублирует ряд битов из R и дополняет его ими, получая 48-битное значение. Полученный результат проходит через побитовое сложение с 48-битным ключом Ki. И результат этой операции передается в блок S. Блок S содержит 8 маленьких матриц-подстановок, которые подобраны особым образом.

Каждая матрица получает на входе 6 битов информации и выдает 4-битовое значение. В итоге на входе блок S получает данные размером 48 бит, а на выходе представляет результат в виде 32-битового значения.

Данное 32-битное значение проходит через еще одну операцию перестановки, после чего суммируется операцией xor с L. Наконец правая и левая часть меняются местами и раунд завершается. Как уже говорилось ранее, таких раундов алгоритм совершает 16 штук.

Здесь мы не будем перегружать статью примерами, которые занимают много места. Работу DES и примеры можно посмотреть в сети.

Шифр Фейстеля

Алгоритм DES основан на шифре Фейстеля. Его идея весьма изящна. На каждом раунде часть L складывается со значением F(R, Ki) и L меняется позицией с R. Ключевой особенностью алгоритма Фейстеля является то, что дешифрирование и шифрование состоят из одинаковых шагов: части L и R меняются местами, а затем выполняется операция сложения L и F (R, Ki). Это позволяет сделать процедуры шифрования и расшифровки простыми и понятными.

В шифрах Фейстеля зачастую вводится одно интересное изменение - отмена перестановки L и R в последней итерации. Это делает алгоритмы шифрования и дешифрирования полностью симметричными. Разница заключается только в порядке использования ключей Ki. Этот принцип оказался крайне удобным для использования на программном уровне, так как шифрование и расшифровка происходит средствами одной функции. Например, лаконичная реализация алгоритма шифрования DES на C.

Ключи шифрования

Для шифрования данных в DES используется шестнадцать 48-битовых ключей. По одному ключу на раунд. Каждый ключ создается выборкой 48 бит из 56-битового основного ключа. Создание ключей для того или иного раунда определяется механизмом, подробно описанным в документации DES.

Вкратце алгоритм выборки i ключа выглядит следующим образом. В основной ключ на позиции 8, 16, 24, 32, 40, 48, 56, 64 добавляются биты. Делается это таким образом, чтобы каждый байт содержал нечетное количество единиц. Соблюдение правила помогает обнаруживать ошибки при обмене ключей. После этого, используя специальные таблицы, дополненный ключ подвергается перестановке и сдвигам, за исключением битов, которые были добавлены. Таким образом получается требуемый ключ.

Компоненты DES

Каждый компонент алгоритма DES решает определенную задачу:

  1. Алгоритм Фейстеля упрощает шифрование и расшифровку, гарантируя при этом смешивание обеих половин текста.
  2. Побитовое суммирование частей текста с ключами перемешивает открытые данные с ключом и шифрует их.
  3. S-блок и таблицы соответствий делают алгоритм нелинейным, повышая его устойчивость к различным атакам.
  4. Расширение, S-блок и перестановки обеспечивают диффузию алгоритма - лавинный эффект. Другими словами, если во входных данных функции F изменится хоть 1 бит, то это вызовет изменение сразу множества битов. Если лавинный эффект в шифре не наблюдается, то изменения открытых данных будут приводить к равноценным изменениям в шифрованном виде, которые можно отследить и использовать для взлома. В криптографии существует критерий лавинного эффекта. Алгоритм удовлетворяет ему, если при изменении 1 бита открытых данных изменяется не менее половины шифрованных данных. Алгоритм DES удовлетворяет ему, начиная с 4 раунда. Итог - при изменении 1 бита открытых данных в шифре DES изменятся 29 битов.

Проблемы безопасности в DES

Очевидной проблемой DES является выборка ключей шифрования из общего ключа. Что будет, если в качестве ключа выбрать нулевое значение (все биты ключа равны 0)? Это приведет к тому, что выборка всех ключей для шифрования на каждом раунде будет одинаковой, а все ключи будут равны нулю. Мало того, что 16 шифрований пройдут с одним ключом, так из-за того, что алгоритмы шифрования и расшифровки DES отличаются только порядком применения ключей, они будут абсолютно одинаковыми. Потеряется весь смысл шифрования.

DES обладает 4 ключами, которые называются слабыми, приводящими к описанному эффекту. В DES есть 12 полуслабых и 48 псевдослабых ключей, которые приводят к ограничению вариаций генерируемых ключей в раундах. Иными словами, есть вероятность, что в ходе шифрования в 16 раундах будет использовано не 16 различных ключей, а 8, 4 или даже 2.

Менее очевидным недостатком DES является свойство комплементарности. Оно означает, что если при шифровании использовать дополнение открытого текста и дополнение ключа, то в итоге получится значение, являющееся дополнением шифрованного текста. Это нелепое свойство может приводить к успешным атакам на проекты, использующие DES для обеспечения безопасности.

Проблема ключа шифрования

Является основополагающей для DES и считается главной причиной, почему стоит отказаться от этого алгоритма. Так как размер ключа в DES составляет 56 бит, то для перебора всех ключей понадобится просмотреть 2 56 вариантов. Так ли это много?

Если осуществлять по 10 миллионов проверок ключей в секунду, то на проверку уйдет порядка 2000 лет. Кажется, что алгоритм весьма устойчив. Он был таковым в прошлом веке, когда создание компьютера подобной мощности было почти невозможной задачей как с технической, так и с финансовой точки зрения.

Если создать компьютер с миллионом чипов, то перебор всего множества ключей DES займет 20 часов. Первый подобный компьютер для расшифровки по алгоритму DES появился еще в 1998 году, который справился с поставленной задачей за 56 часов. Современные технологии сетей и параллельных процессов позволяют сократить это время еще больше.

Криптоанализ и DES

Можно без преувеличения заявить, что DES стал причиной появления прикладной науки под названием "Криптографический анализ". С самого начала появления DES предпринимались попытки его взломать, проводились научные работы по его изучению. Все это привело к зарождению таких областей математики, как:

  • линейный криптоанализ - изучение и выявление зависимости между открытым текстом и шифрованным;
  • дифференциальный криптоанализ - изучение и анализ зависимостей между несколькими открытыми текстами и их шифрованными версиями;
  • криптоанализ на связанных ключах - изучение зависимостей между шифрованными текстами, полученными на первичном ключе, и ключах, связанных с первичным каким-либо образом.

DES выдержал 20 лет всемирного криптоанализа и атак, но остался стойким шифром. Но кто ищет - тот всегда найдет...

  1. Бихам и Шамир, ученые из Израиля, в 1991 году показали при помощи дифференциального криптоанализа, что на DES можно совершить атаку, при которой ключ вычислялся при условии, что у атакующего имеется 2 47 специально подобранных пар открытого и шифрованного текстов.
  2. Японский ученый Митсуру Мацуи в 1993 году показал, что вычислить ключ можно при помощи линейного криптоанализа. Для этого всего лишь нужно знать 2 47 пар открытого текста и соответствующего шифрованного варианта.

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

Самым распространенным и наиболее известным алгоритмом симметричного шифрования является DES (Data Encryption Standard). Алгоритм был разработан в 1977 году, в 1980 году был принят NIST (National Institute of Standards and Technology, США) в качестве стандарта.

DES является классической сетью Фейштеля с двумя ветвями. Данные шифруются 64-битными блоками, используя 56-битный ключ. Алгоритм преобразует за несколько раундов 64-битный вход в 64-битный выход. Длина ключа равна 56 битам. Процесс шифрования состоит из четырех этапов. На первом этапе выполняется начальная перестановка (IP) 64-битного исходного текста (забеливание), во время которой биты переупорядочиваются в соответствии со стандартной таблицей. Следующий этап состоит из 16 раундов одной и той же функции, которая использует операции сдвига и подстановки. На третьем этапе левая и правая половины выхода последней (16-й) итерации меняются местами. Наконец, на четвертом этапе выполняется перестановка IP-1 результата, полученного на третьем этапе. Перестановка IP-1 инверсна начальной перестановке.

Рис.4. Алгоритм DES

На рисунке показан способ, в котором используется 56-битный ключ. Первоначально ключ подается на вход функции перестановки. Затем для каждого из 16 раундов подключ K i является комбинацией левого циклического сдвига и перестановки. Функция перестановки одна и та же для каждого раунда, но подключи K i для каждого раунда получаются разные вследствие повторяющегося сдвига битов ключа.

Начальная перестановка и ее инверсия определяются стандартной таблицей. Если М - это произвольные 64 бита, то X = IP (M) - переставленные 64 бита. Если применить обратную функцию перестановки Y = IP-1 (X) = IP-1 (IP(M)), то получится первоначальная последовательность битов.

Описание раунда des

Рассмотрим последовательность преобразований, используемую в каждом раунде.

Рис.5. Иллюстрация раунда алгоритма DES

64-битный входной блок проходит через 16 раундов , при этом на каждой итерации получается промежуточное 64-битное значение. Левая и правая части каждого промежуточного значения трактуются как отдельные 32-битные значения, обозначенные L и R. Каждую итерацию можно описать следующим образом:

R i = L i -1 F(R i -1 , K i)

Таким образом, выход левой половины L i равен входу правой половины R i-1 . Выход правой половины R i является результатом применения операции XOR к L i-1 и функции F, зависящей от R i-1 и K i .

Рассмотрим функцию F более подробно. R i , которое подается на вход функции F, имеет длину 32 бита. Вначале R i расширяется до 48 битов, используя таблицу, которая определяет перестановку плюс расширение на 16 битов. Расширение происходит следующим образом. 32 бита разбиваются на группы по 4 бита и затем расширяются до 6 битов, присоединяя крайние биты из двух соседних групп. Например, если часть входного сообщения

Efgh ijkl mnop . . .

то в результате расширения получается сообщение

Defghi hijklm lmnopq . . .

После этого для полученного 48-битного значения выполняется операция XOR с 48-битным подключом K i . Затем полученное 48-битное значение подается на вход функции подстановки, результатом которой является 32-битное значение.

Подстановка состоит из восьми S-boxes, каждый из которых на входе получает 6 бит, а на выходе создает 4 бита. Эти преобразования определяются специальными таблицами. Первый и последний биты входного значения S-box определяют номер строки в таблице, средние 4 бита определяют номер столбца. Пересечение строки и столбца определяет 4-битный выход. Например, если входом является 011011, то номер строки равен 01 (строка 1) и номер столбца равен 1101 (столбец 13). Значение в строке 1 и столбце 13 равно 5, т.е. выходом является 0101.

Далее полученное 32-битное значение обрабатывается с помощью перестановки Р, целью которой является максимальное переупорядочивание битов, чтобы в следующем раунде шифрования с большой вероятностью каждый бит обрабатывался другим S-box.

Ключ для отдельного раунда K i состоит из 48 битов. Ключи K i получаются по следующему алгоритму. Для 56-битного ключа, используемого на входе алгоритма, вначале выполняется перестановка в соответствии с таблицей Permuted Choice 1 (РС-1). Полученный 56-битный ключ разделяется на две 28-битные части, обозначаемые как C0 и D0 соответственно. На каждом раунде C i и D i независимо циклически сдвигаются влево на 1 или 2 бита, в зависимости от номера раунда. Полученные значения являются входом следующего раунда. Они также представляют собой вход в Permuted Choice 2 (РС-2), который создает 48-битное выходное значение, являющееся входом функции F(R i-1 , K i).

Процесс дешифрования аналогичен процессу шифрования. На входе алгоритма используется зашифрованный текст, но ключи K i используются в обратной последовательности. K 16 используется на первом раунде, K 1 используется на последнем раунде. Пусть выходом i-ого раунда шифрования будет L i ||R i . Тогда соответствующий вход (16-i)-ого раунда дешифрования будет R i ||L i .

После последнего раунда процесса расшифрования две половины выхода меняются местами так, чтобы вход заключительной перестановки IP-1 был R 16 ||L 16 . Выходом этой стадии является незашифрованный текст.

Алгоритм DES вполне подходит как для шифрования, так и для аутентификации данных. Он позволяет непосредственно преобразовывать 64-битовый входной открытый текст в 64-битовый выходной шифрованный текст, однако данные редко ограничиваются 64 разрядами.

Чтобы воспользоваться алгоритмом DES для решения разнообразных криптографических задач, разработаны четыре рабочих режима:

· электронная кодовая книга ECB(Electronic Code Book);

· сцепление блоков шифра CBC (Cipher Block Chaining);

· обратная связь по шифртексту CFB (Cipher Feed Back);

· обратная связь по выходу OFB (Output Feed Back).

Режим "Электронная кодовая книга"

Длинный файл разбивают на 64-битовые отрезки (блоки) по 8 байтов. Каждый из этих блоков шифруют независимо с использованием одного и того же ключа шифрования (рис.3.6).

Основное достоинство – простота реализации. Недостаток – относительно слабая устойчивость против квалифицированных криптоаналитиков. Из-за фиксированного характера шифрования при ограниченной длине блока 64 бита возможно проведение криптоанализа "со словарем". Блок такого размера может повториться в сообщении вследствие большой избыточности в тексте на естественном языке.

Рисунок 3.6 – Схема алгоритма DES в режиме электронной кодовой книги

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

Режим "Сцепление блоков шифра"

В этом режиме исходный файл М разбивается на 64-битовые блоки: М = М 1 М 2 ...М n . Первый блок М 1 складывается по модулю 2 с 64‑битовым начальным вектором IV, который меняется ежедневно и держится в секрете (рис.3.7). Полученная сумма затем шифруется с использованием ключа DES, известного и отправителю, и получателю информации. Полученный 64-битовый шифр С 1 складывается по модулю 2 со вторым блоком текста, результат шифруется и получается второй 64‑битовый шифр С 2 , и т.д. Процедура повторяется до тех пор, пока не будут обработаны все блоки текста.

Таким образом, для всех i = 1…n (n – число блоков) результат шифрования С i определяется следующим образом: С i =

DES (М i  C i –1), где С 0 = IV – начальное значение шифра, равное начальному вектору (вектору инициализации).

Очевидно, что последний 64-битовый блок шифртекста является функцией секретного ключа, начального вектора и каждого бита

Рисунок 3.7 – Схема алгоритма DES в режиме сцепления блоков шифра

открытого текста независимо от его длины. Этот блок шифртекста называют кодом аутентификации сообщения (КАС).


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

Достоинство данного режима в том, что он не позволяет накапливаться ошибкам при передаче.

Блок М i является функцией только С i –1 и С i . Поэтому ошибка при передаче приведет к потере только двух блоков исходно-го текста.

Режим "Обратная связь по шифру"

В этом режиме размер блока может отличаться от 64 бит (рис.3.8). Файл, подлежащий шифрованию (расшифрованию), считывается последовательными блоками длиной k битов (k=1…64).

Входной блок (64-битовый регистр сдвига) вначале содержит вектор инициализации, выровненный по правому краю.

Предположим, что в результате разбиения на блоки мы получили n блоков длинойk битов каждый (остаток дописывается нулями или пробелами). Тогда для любого i=1…n блок шифр-текста

С i = M i  P i –1 ,

где Р i–1 обозначает k старших битов предыдущего зашифрованного блока.

Обновление сдвигового регистра осуществляется путем удаления его старших k битов и записи С i в регистр. Восстановление зашифрованных данных также выполняется относительно просто: Р i –1 и С i вычисляются аналогичным образом и

М i = С i  Р i –1 .


Рисунок 3.8 – Схема алгоритма DES в режиме обратной связи по шифртексту

Режим "Обратная связь по выходу"

Этот режим тоже использует переменный размер блока и сдвиговый регистр, инициализируемый так же, как в режиме СFB, а именно – входной блок вначале содержит вектор инициализации IV, выровненный по правому краю (рис.3.9). При этом для каждого сеанса шифрования данных необходимо использовать новое начальное состояние регистра, которое должно пересылаться по каналу открытым текстом.

М = М 1 М 2 ... M n .

Для всех i = 1… n

С i = M i  P i ,

где Р i – старшие k битов операции DES (С i –1).

Отличие от режима обратной связи по шифртексту состоит в методе обновления сдвигового регистра.

Это осуществляется путем отбрасывания старших k битов и дописывания справа Р i .

Рисунок 3.9 – Схема алгоритма DES в режиме обратной связи по выходу

3.3. ОбластипримененияалгоритмаDES

Каждому из рассмотренных режимов (ЕСВ, СВС, CFB, OFB) свойственны свои достоинства и недостатки, что обусловливает области их применения.

Режим ЕСВ хорошо подходит для шифрования ключей: режим CFB, как правило, предназначается для шифрования отдельных символов, а режим OFB нередко применяется для шифрования в спутниковых системах связи.

Режимы СВС и CFB пригодны для аутентификации данных. Эти режимы позволяют использовать алгоритм DES для:

· интерактивного шифрования при обмене данными между терминалом и главной ЭВМ;

· шифрования криптографического ключа в практике автоматизированного распространения ключей;

· шифрования файлов, почтовых отправлений, данных спутников и других практических задач.

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

В системах автоматической обработки данных человек не в состоянии просмотреть данные, чтобы установить, не внесены ли в них какие-либо изменения. При огромных объемах данных, проходящих в современных системах обработки, просмотр занял бы слишком много времени. К тому же избыточность данных может оказаться недостаточной для обнаружения ошибок. Даже в тех случаях, когда просмотр человеком возможен, данные могут быть изменены таким образом, что обнаружить эти изменения человеку очень трудно. Например, "do" может быть заменено на "do not", "$1900" – на "$9100". Без дополнительной информации человек при просмотре может легко принять измененные данные за подлинные. Такие опасности могут существовать даже при использовании шифрования данных. Поэтому желательно иметь автоматическое средство обнаружения преднамеренных и непреднамеренных изменений данных.

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

Этот процесс описывает стандарт для аутентификации данных ЭВМ (FIPS 113). Суть стандарта состоит в том, что данные зашифровываются в режиме обратной связи по шифртексту (режим CFB) или в режиме сцепления блоков шифра (режим СВС), в результате чего получается окончательный блок шифра, представляющий собой функцию всех разрядов открытого текста. После этого сообщение, которое содержит открытый текст, может быть передано с использованием вычисленного окончательного блока шифра, служащего в качестве криптографической контрольной суммы.

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

му тексту.

Шифрование и аутентификацию используют для защиты данных, хранящихся в ЭВМ. Во многих ЭВМ пароли зашифровывают необратимым образом и хранят в памяти машины. Когда пользователь обращается к ЭВМ и вводит пароль, последний зашифровывается и сравнивается с хранящимся значением. Если обе зашифрованные величины одинаковы, пользователь получает доступ к машине, в противном случае следует отказ.

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

С помощью алгоритма DES можно также зашифровать файлы ЭВМ для их хранения.

Одним из наиболее важных применений алгоритма DES является защита сообщений электронной системы платежей (ЭСП) при операциях с широкой клиентурой и между банками .

Алгоритм DES реализуется в банковских автоматах, терминалах в торговых точках, автоматизированных рабочих местах и главных ЭВМ. Диапазон защищаемых им данных весьма широк – от оплат $50 до переводов на многие миллионы долларов. Гибкость основного алгоритма DES позволяет использовать его в самых разнообразных областях применения электронной системы платежей.

Алгоритм DES

Основные достоинства алгоритма DES:

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

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

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

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

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

Процесс шифрования заключается в начальной перестановке битов 64-битового блока, шестнадцати циклах шифрования и, наконец, обратной перестановки битов (рис.1).

Необходимо сразу же отметить, что ВСЕ таблицы, приведенные в данной статье, являются СТАНДАРТНЫМИ, а следовательно должны включаться в вашу реализацию алгоритма в неизменном виде. Все перестановки и коды в таблицах подобраны разработчиками таким образом, чтобы максимально затруднить процесс расшифровки путем подбора ключа. Структура алгоритма DES приведена на рис.2.

Рис.2. Структура алгоритма шифрования DES

Пусть из файла считан очередной 8-байтовый блок T, который преобразуется с помощью матрицы начальной перестановки IP (табл.1) следующим образом: бит 58 блока T становится битом 1, бит 50 - битом 2 и т.д., что даст в результате: T(0) = IP(T).

Полученная последовательность битов T(0) разделяется на две последовательности по 32 бита каждая: L(0) - левые или старшие биты, R(0) - правые или младшие биты.

Таблица 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

Затем выполняется шифрование, состоящее из 16 итераций. Результат i-й итерации описывается следующими формулами:

R(i) = L(i-1) xor f(R(i-1), K(i)) ,

где xor - операция ИСКЛЮЧАЮЩЕЕ ИЛИ.

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

На 16-й итерации получают последовательности R(16) и L(16) (без перестановки), которые конкатенируют в 64-битовую последовательность R(16)L(16).

Затем позиции битов этой последовательности переставляют в соответствии с матрицей 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, а затем над последовательностью бит R(16)L(16) выполняются те же действия, что и в процессе шифрования, но в обратном порядке.

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

R(i-1) = L(i), i = 1, 2, ..., 16;

L(i-1) = R(i) xor f(L(i), K(i)), i = 1, 2, ..., 16 .

На 16-й итерации получают последовательности L(0) и R(0), которые конкатенируют в 64-битовую последовательность L(0)R(0).

Затем позиции битов этой последовательности переставляют в соответствии с матрицей IP. Результат такой перестановки - исходная 64-битовая последовательность.

Теперь рассмотрим функцию шифрования f(R(i-1),K(i)). Схематически она показана на рис. 3.


Рис.3. Вычисление функции f(R(i-1), K(i))

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

Е - расширение 32-битовой последовательности до 48-битовой,

S1, S2, ... , S8 - преобразование 6-битового блока в 4-битовый,

Р - перестановка бит в 32-битовой последовательности.

Функция расширения Е определяется табл.3. В соответствии с этой таблицей первые 3 бита Е(R(i-1)) - это биты 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

Результат функции Е(R(i-1)) есть 48-битовая последовательность, которая складывается по модулю 2 (операция xor) с 48-битовым ключом К(i). Получается 48-битовая последовательность, которая разбивается на восемь 6-битовых блоков B(1)B(2)B(3)B(4)B(5)B(6)B(7)B(8). То есть:

E(R(i-1)) xor K(i) = B(1)B(2)...B(8) .

Функции S1, S2, ... , S8 определяются табл.4.

Таблица 4

К табл.4. требуются дополнительные пояснения. Пусть на вход функции-матрицы Sj поступает 6-битовый блок B(j) = b1b2b3b4b5b6, тогда двухбитовое число b1b6 указывает номер строки матрицы, а b2b3b4b5 - номер столбца. Результатом Sj(B(j)) будет 4-битовый элемент, расположенный на пересечении указанных строки и столбца.

Например, В(1)=011011. Тогда S1(В(1)) расположен на пересечении строки 1 и столбца 13. В столбце 13 строки 1 задано значение 5. Значит, S1(011011)=0101.

Применив операцию выбора к каждому из 6-битовых блоков B(1), B(2), ..., B(8), получаем 32-битовую последовательность S1(B(1))S2(B(2))S3(B(3))...S8(B(8)).

Наконец, для получения результата функции шифрования надо переставить биты этой последовательности. Для этого применяется функция перестановки P (табл.5). Во входной последовательности биты перестанавливаются так, чтобы бит 16 стал битом 1, а бит 7 - битом 2 и т.д.

Таблица 5:Функция перестановки P

Такимобразом,

f(R(i-1), K(i)) = P(S1(B(1)),...S8(B(8)))

Чтобы завершить описание алгоритма шифрования данных, осталось привести алгоритм получения 48-битовых ключей К(i), i=1...16. На каждой итерации используется новое значение ключа K(i), которое вычисляется из начального ключа K. K представляет собой 64-битовый блок с восемью битами контроля по четности, расположенными в позициях 8,16,24,32,40,48,56,64.

Для удаления контрольных битов и перестановки остальных используется функция G первоначальной подготовки ключа (табл.6).

Таблица 6

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

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

Результат преобразования G(K) разбивается на два 28-битовых блока C(0) и D(0), причем C(0) будет состоять из битов 57, 49, ..., 44, 36 ключа K, а D(0) будет состоять из битов 63, 55, ..., 12, 4 ключа K. После определения C(0) и D(0) рекурсивно определяются C(i) и D(i), i=1...16. Для этого применяют циклический сдвиг влево на один или два бита в зависимости от номера итерации, как показано в табл.7.

Таблица 7

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

Номер итерации Сдвиг (бит)
01 1
02 1
03 2
04 2
05 2
06 2
07 2
08 2
09 1
10 2
11 2
12 2
13 2
14 2
15 2
16 1

Полученное значение вновь "перемешивается" в соответствии с матрицей H (табл.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

Ключ K(i) будет состоять из битов 14, 17, ..., 29, 32 последовательности C(i)D(i). Таким образом:

K(i) = H(C(i)D(i))

Блок-схема алгоритма вычисления ключа приведена на рис.4.

Рис.4. Блок-схема алгоритма вычисления ключа K(i)

Восстановление исходного текста осуществляется по этому алгоритму, но вначале вы используете ключ

K(15), затем - K(14) и так далее. Теперь вам должно быть понятно, почему автор настойчиво рекомендует использовать приведенные матрицы. Если вы начнете самовольничать, вы, должно быть, получите очень секретный шифр, но вы сами не сможете его потом раскрыть!

Режимы работы алгоритма DES

Для наиболее полного удовлетворения всем требованиям, предъявляемым к коммерческим системам шифрования, реализованы несколько режимов работы алгоритма DES. Наиболее широкое распространение получили режимы:

· электронный шифроблокнот (Electronic Codebook) - ECB;

· цепочкацифровыхблоков (Cipher Block Chaining) - CBC;

· цифровая обратная связь (Cipher Feedback) - CFB;

· внешняя обратная связь (Output Feedback) - OFB.

В этом режиме исходный файл M разбивается на 64-битовые блоки (по 8 байтов): M = M(1)M(2)...M(n). Каждый из этих блоков кодируется независимо с использованием одного и того же ключа шифрования (рис.5). Основное достоинство этого алгоритма - простота реализации. Недостаток - относительно слабая устойчивость против квалифицированных криптоаналитиков.




Top