5.1.4 Стандарт шифрования данных DES — государственный стандарт США
Стандарты
по защите данных ЭВМ от несанкционированного доступа требовались в таких областях, как
шифрование, установление подлинности личности и данных (аутентификация),
контроль доступа, надежное хранение и передача данных. В результате сотрудничества трех
организаций США — Национального бюро стандартов (NBC),
Управления
национальной безопасности (NSA) и фирмы IBM подобный стандарт получивший название DES
(Data Encryption Standart) был разработан и
опубликован в
в специальном издании Federal Register. Его публикация вызвала полемику среди специалистов в области защиты информации. После двухлетних испытаний с целью поиска в алгоритме DES «тайной лазейки», а также по экономическим вопросам (в частотности, по установлению длины ключа) было принято решение оставить стандарт без изменений. В алгоритме не было обнаружено никаких «лазеек». Эффективная длина ключа в 56 бит вполне удовлетворяла потенциальных пользователей на ближайшие 15 ... 20 лет, так как общее число » ключей в этом случае оценивалось цифрой 7,6 -1016. Важно подчеркнуть, что стандарт DES стал одним из первых «открытых» шифроалгоритмов. Все схемы, используемые для его реализации, были опубликованы и тщательно проверены. Секретным был только ключ, с помощью которого осуществляется кодирование и декодирование информации.
Алгоритм DES базируется на научной работе Шеннона 1949г., связавшей криптографию с теорией информации. Шеннон выделил два общих принципа используемых в практических шифрах: рассеивание и перемешивание. Рассеиванием он, назвал распространение влияния одного знака открытого текста на множество знаков шифротекста, что позволяет скрыть статистические свойства открытого текста. Под перемешиванием Шеннон понимал использование взаимосвязи статистических свойств открытого и шифрованного текста. Однако шифр должен не только затруднять раскрытие, но и обеспечивать легкость шифрования и дешифрования при известном секретном ключе. Поэтому была принята идея использовать произведение простых шифров, каждый из которых вносит небольшой вклад в значительное суммарное рассеивание и перемешивание.
В составных шифрах в качестве элементарных составляющих чаще всего используются простые подстановки и перестановки.
Подстановка относится к простейшим методам шифрования. Ключом является переставленный алфавит, буквами которого заменяют буквы нормального алфавита. Так, если букву А заменить на Б, Б на В и т.д., то слово ОХРАНА будет выглядеть как ПЦСБОБ. Шифрование простой подстановкой на коротких алфавитах типа латинского и русского обеспечивает слабую защиту лежащего в основе открытого текста. Дело в том, что распределение частот появления отдельных символов в открытом тексте сохраняется неизменным в шифротексте.
Однако если подстановка делается в очень большом алфавите, а вероятность повторения каждого символа открытого текста в течение времени использования одного ключа мала, то стилистические свойства шифра дают очень мало информации криптоаналитику и шифр становится достаточно стойким.
В случае перестановки переставляются не буквы алфавита, а буквы в сообщении открытого текста. Распределение частот отдельных символов оказывается в шифрованном тексте таким же, что и в открытом тексте, однако распределения более высоких порядков оказываются перемешанными. В качестве примера рассмотрим перестановку, задаваемую таблицей:
1 |
2 |
3 |
4 |
5 |
6 |
6 |
4 |
2 |
1 |
3 |
5 |
При этом открытый текст разбивается на отдельные сообщения по 6 символов, и в каждом сообщении буквы переставляются следующим порядком: первый знак становится шестым, второй — четвертым и т.д. Тогда слово ОХРАНА преобразуется в ААХОРН. Если к результату перестановки применить описанную выше подстановку, получим ББЦПСО. При многократном чередовании простых перестановок и подстановок можно получить очень стойкий шифр (криптоалгоритм) с хорошим рассеиванием и перемешиванием.
Стандарт шифрованных данных DES — один из наиболее удачных примеров криптоалгоритма, разработанного в соответствии с принципами рассеивания и перемешивания. В нем открытый текст, криптограмма и ключ являются двоичными последовательностями длиной соответственно М — 64, N = 64, К = 56 бит. Криптоалгоритм
DES представляет собой суперпозицию элементарных шифров, состоящую из 16 последовательных шифроциклов, в каждом из которых довольно простые перестановки с подстановками в четырехбитовых группах. В каждом проходе используются лишь 48 бит ключа, однако они выбираются внешне случайным образом из полного 56-битового ключа.
Алгоритм DES используется как для шифрования, так и для установления подлинности (аутентификации) данных. Он способен функционировать в четырех основных режимах: электронной кодовой книги (ЕСВ), обратной связи по шифротексту (СРВ), сцепления блоков шифра (СВС) и обратной связи по выходу (OFB). Каждому режиму свойственны свои преимущества и недостатки: режим ЕСВ хорошо подходит для шифрования ключей; режим СЕВ обычно предназначается для шифрования отдельных символов; режим OFB нередко применяется для шифрования в спутниковых системах связи.
Режимы СВС и СРВ пригодны для аутентификации данных. Они позволяют использовать алгоритм DES при обмене данными между терминалом и главной ЭВМ, шифрования криптографического ключа в процедурах автоматизированного распределения ключей, шифрования файлов, почтовых отправлений, спутниковой информации и для ряда других практических задач.
Прошло уже более 20 лет с момента опубликования DES в открытой литературе. Несмотря на интенсивные и тщательные исследования алгоритма специалистами, сообщений об его уязвимых местах не поступало. Единственное средство для его «взлома» — полный перебор ключей. Как уже упоминалось, это сделать весьма непросто: для проведения подобной силовой атаки, последовательно использующей каждый из почти 1017 ключей, требуется специальная многопроцессорная ЭВМ.
5.1.5 ГОСТ 28147-89 — отечественный стандарт на шифрование данных
В нашей стране установлен единый алгоритм криптографического преобразования данных для систем обработки информации в сетях отдельных вычислительных комплексах и ЭВМ, который определяется ГОСТ 28147-89 .
Алгоритм криптографического преобразования данных предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и не накладывает ограничений на степень секретности защищаемых сообщений (информации). Из-за сложности алгоритма здесь будут приведены только основные его концепции, подробно изучить алгоритм криптографического преобразования, следует обратиться к ГОСТ 28147-89 . Приведенный ниже материал должен использоваться лишь как ознакомительный.
При описании алгоритма приняты следующие обозначения. Если /, // R — это последовательности бит, то LR будет обозначать конкатенацию последовательностей L и R, Под конкатенацией последовательной L и R понимается последовательность бит, размерность которой равна сумме размерностей L и R В этой последовательности биты последовательности R следуют за битами последовательности L. Конкатенация битовых строк является ассоциативной, т.е. запись ABCDE обозначает, что за битами последовательности/4 следуют биты последовательности В, затем С и т.д.
Символом (+) обозначается операция побитового сложения по модулю 2, символом [+] — операция сложения по модулю 232 двух 32-разрядных чисел. Числа суммируются по следующему правилу:
А [+1 ~В - А + В, если А + В 232;
Af+JB=A + В - 23~, если А + В > 23~.
Символом {+} обозначается операция сложения по модулю 232 - 1 двух : 32-разрядных чисел. Правила суммирования чисел следующие:
А{+}В=А + В, если А ! В < 232 - 1;
А {+) В -А + В - }232 - /;, ес.т А + В > 232 - 1.
Алгоритм криптографического преобразования предусматривает несколько режимов работы. Но в любом случае для шифрования данных используется ключ, который имеет размерность 256 бит и представляется в виде восьми 32-разрядных чисел ХО). Если обозначить ключ через W, то
W = X(7)X(6)X(5)X(4)X(3)X(2)X(1)X(0).
Расшифрование выполняется по тому же ключу, что и зашифрование, но этот процесс является инверсией процесса зашифрования данных.
Первый и самый простой режим — замена. Открытые данные, подлежащие зашифрованию, разбивают на блоки по 64 бит в каждом, которые можно обозначить TQ). Очередная последовательность бит T(j)' разделяется на две последовательности В(0) (левые или старшие биты) и А(0) (правые или младшие биты), каждая из которых содержит 32 бита. Затем выполняется итеративный процесс шифрования, который описывается следующими формулами:
при /=1,2,..., 24; / - (/- l)(modS)
b(D=f(A(i-W4X(i)(+)B(i-l));
B(i)-A(i-\); ,
при / = 25, 26,..., 31;/' = 32-/ А(/) =f(A(i
- \)fv]X(i)(+)B(i - 1));
B(i)=A(i-\); при / = 32
A(32)=A(31);
B(32) = f(A(3J)f-i-JX(0)(+)B(3/)),
где / обозначает номер итерации (/' = 1, 2,.... 32). Функция / называется функцией шифрования. Ее аргументом является сумма по модулю 232 числа А(/), полученного на предыдущем шаге итерации, и числа Хф ключа (размерность каждого из этих чисел равна 32 знакам).
Функция шифрования включает две операции над полученной 32-разрядной суммой. Первая операция называется подстановкой К. Блок подстановки К состоит из восьми узлов замены К(1) ... К(8) с памятью 64 бит каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены, представляющим собой таблицу из шестнадцати целых чисел в диапазоне 0 ... 15.
Входной вектор определяет адрес строки в таблице, число из которой является выходным вектором. Затем 4-разрядные выходные векторы последовательно объединяются в 32-разрядный вектор. Таблицы блока подстановки К содержат ключевые элементы, общие для сети ЭВМ и редко изменяемые.
Вторая операция — циклический сдвиг влево 32-разрядного вектора, полученного в результате подстановки К. 64-разрядный блок зашифрованных данных Тш, представляется в виде:
ТШ = А(32)В(32).
Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично. Следует иметь в виду, что режим простой замены допустимо использовать для шифрования данных только в ограниченных случаях.
К этим случаям относится выработка ключа и зашифрование его с обеспечением имитозащиты для передачи по каналам связи или хранения в памяти ЭВМ.
Следующий режим шифрования называется режимом гаммирования. Открытые данные, разбитые на 64-разрядные блоки T(i) (i ~ 1, 2, ..., m, где m определяется объемом шифруемых данных), зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит, т.е.
г,„ = (гтп2)... га)... пыу
Число двоичных разрядов в блоке Т(т) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Г(т) отбрасывается
Уравнение зашифрования данных в режиме гаммирования может быть представлено в следующем виде:
LLI(i) = A(Y(/ - 1)[+)С2, Z(i - 1){+}С,(+)Т(/)) - Г(/)(+)Т(/). .
В этом уравнении IJJ(i) обозначает 64-разрядный блок зашифрованного текста; А(-) — функцию шифрования в режиме простой замены (аргументами этой функции являются два 32-разрядных числа); С/ и С} константы, заданные в обязательном приложении 2 к ГОСТ
28147-89. Величины Y(-) и Z(-) определяются итерационно по мере формирования гаммы следующим образом:
(Y(0), Z(0)) = A(S), где S— 64-разрядная двоичная последовательность (синхропосылка);
(Y(i), 2(i)) = Y(i - l)[+]C2, Z{i
- 1){+}C,, где/= I, 2,..., m.
Расшифрование данных возможно только при наличии синхропосылки, которая не является секретным элементом шифра и может храниться в памяти ЭВМ или передаваться по каналам связи вместе с зашифрованными данными.
Режим гаммирования с обратной связью очень похож на режим гаммирования. Как и в режиме гаммирования, открытые данные, разбитые на 64-разрядные блоки Т(/) (/ = 1, 2,...,т, где т определяется объемом шифруемых данных), зашифровываются путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бит:
Гш=П1Щ2),...,Г(/),..,Г(т)).
Число двоичных разрядов в блоке Т(т) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Г(т) отбрасывается.
Уравнение зашифрования данных в режиме гаммирования с обратной связью для / = 2.3,..., т может быть представлено в следующем виде:
Ш(1) = А(8)(+)Т(1) = Г(1Х+)Т(1);
ш(о =лгя/г/-1)(+)Т(/)) = г(/)(+)Т(/),
где III(i) обозначает 64-разрядный блок зашифрованного текста; А(-) — функцию шифрования в режиме простой замены. Аргументом функции на первом шаге итеративного алгоритма является 64-разрядная синхропосылка, а на всех последующих — предыдущий блок зашифрованных данных Ul(i — I).
В ГОСТ 28147-89 определяется процесс выработки имитовставки, который , единообразен для любого из режимов шифрования данных. Имитовставка — это блок из р бит (имитовставка Ир), который вырабатывается либо перед шифрованием всего сообщения, либо параллельно с шифрованием по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (например, адресную часть, время, синхропосылку) и не зашифровываться. Значение параметра/; (число двоичных разрядов в имитовставке) определяется криптографическими требованиями с учетом того, что вероятность навязывания ложных помех равна \/2и.
Для получения имитовставки открытые данные представляются в виде 64-разрядных блоков Т(/') (/' = 1, 2, . , то, где т определяется объемом шифруемых данных). Первый блок открытых данных Т(1) подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены, причем в качестве ключа для выработки имитовставки используется ключ, по которому шифруются данные.
Полученное после 16 циклов работы 64-разрядное число суммируется по модулю 2 со вторым блоком открытых данных Т(2). Результат суммирования снова подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены.
Полученное 64-разрядное число суммируется по модулю 2 с третьим блоком открытых данных Т(3) и т.д. Последний блок Т(т), при необходимости дополненный до полного 64-разрядного блока нулями, суммируется по модулю 2 с результатом работы на шаге т — 1, после чего зашифровывается в режиме простой замены по первым 16 циклам работы алгоритма. Из полученного 64-разрядного числа выбирается отрезок Ир длиной/; бит.
Имитовставка Ир передается по каналу связи или в память ЭВМ после зашифрованных данных. Поступившие зашифрованные данные расшифровываются и из полученных блоков открытых данных Т(/) вырабатывается имитовставка Ир, которая затем сравнивается с имитовставкой Ир, полученной из канала связи или из памяти ЭВМ. В случае несовпадения имитовставок все расшифрованные данные считают ложными.