7.2. Модель шифрования
Шифрование информации – это основной криптографический метод защиты информации, обеспечивающий ее конфиденциальность. При шифровании и расшифровке (дешифрировании) информации выполняется преобразование исходных (открытых) данных в зашифрованные и наоборот. Шифрование данных можно представить в виде следующих формул:
C = Ek1(M),
M’ = Dk2(C),
где M – открытая информация (открытый текст), C – полученный в результате зашифровывания шифротекст (криптограмма), E – функция зашифровывания, выполняющая криптографические преобразования над исходным текстом, k1 – параметр функции зашифрования, называемый ключом зашифровывания, M’ – информация, полученная в результате расшифровывания, k2 – параметр для расшифровывания информации, D – функция расшифровывания, выполняющая обратные относительно зашифровывания криптографические преобразования над шифротекстом.
В стандарте ГОСТ 28147-89 понятие «ключ» определено следующим образом: «Конкретное секретное состояние некоторых параметров алгоритма криптографического преобразования, обеспечивающее выбор одного преобразования из совокупности всевозможных для данного алгоритма преобразований». Другими словами, ключ является уникальным элементом, с помощью которого можно варьировать результат работы алгоритма шифрования: один и тот же открытый текст при использовании различных ключей будет зашифрован по-разному.
Для того чтобы результат последовательного выполнения операций зашифровывания и расшифровывания совпал с исходным сообщением, необходимо выполнение двух условий:
- функция D должна соответствовать функции E,
- ключ k2 должен соответствовать ключу k1.
При отсутствии верного ключа k2 получить исходное сообщение M’ = M невозможно, если для зашифровывания использовался криптографически стойкий алгоритм шифрования. Криптостойкость является количественной характеристикой алгоритма шифрования, определяемой требуемыми ресурсами для его вскрытия. Ресурсами являются:
- количество информации;
- время;
- память.
Совокупность этих трех величин характеризует конкретную атаку на конкретный алгоритм шифрования. А лучшая (с минимальным набором ресурсов) из возможных атак на алгоритм характеризует его криптостойкость. Кроме того, понятие криптостойкого алгоритма может быть определено следующим образом:
- алгоритм является криптографически стойким, если не существует каких-либо методов его вскрытия, кроме перебора всех возможных вариантов, и
- при этом размер ключа алгоритма является достаточно большим для того, чтобы перебор вариантов стал невозможным при текущем уровне вычислительной техники.
Алгоритмы шифрования можно разделить на две категории:
1) алгоритмы симметричного шифрования, в которых k2 = k1 = k;
2) алгоритмы асимметричного шифрования, в которых ключ зашифровывания k1 вычисляется из ключа k2 таким образом, что обратное вычисление невозможно, например, по формуле
k1 = ak2 mod p,
где a и p – параметры алгоритма.
8.3. Алгоритмы симметричного шифрования
Симметричное шифрование делится на два вида: блочное и потоковое. При блочном шифровании информация разбивается на блоки фиксированной длины, после чего они поочередно шифруются. Алгоритмы потокового шифрования обрабатывают данные побитно или посимвольно (можно считать, что данные разбиваются на блоки единичной длины).
Большинство симметричных алгоритмов работают следующим образом: над шифруемым текстом выполняется некоторое преобразование с участием ключа шифрования, которое повторяется определенное число раз (раундов). При этом по виду повторяющегося преобразования алгоритмы шифрования принято делить на несколько категорий.
1. Алгоритмы на основе сети Фейстеля. Сеть Фейстеля подразумевает разбиение обрабатываемого блока данных на несколько субблоков (частей), один из которых обрабатывается некоторой функцией f и накладывается на один или несколько остальных (рис. 8.1). Дополнительный аргумент функции f, обозначенный на рис. 8.1 как Ki, называется ключом раунда и является результатом обработки ключа шифрования процедурой расширения ключа. Задачей процедуры расширения ключа заключается в получении необходимого количества ключей раунда из исходного ключа шифрования (в простейших случаях процедура расширения ключа просто разбивает ключ на несколько фрагментов, которые поочередно используются в раундах шифрования).
2. Алгоритмы на основе подстановочно-перестановочных сетей. В отличие от алгоритмов, основанных на сети Фейстеля, данные алгоритмы обрабатывают за один раунд шифруемый блок целиком. Обработка данных сводится, в основном, к заменам и перестановкам, зависящим от ключа Ki (рис. 8.2).
3. Алгоритмы с квадратной структурой. Пример подобного алгоритма был приведен выше. Для алгоритмов квадратной структуры характерно представление шифруемого блока данных в виде двумерного массива байтов. Криптографические преобразования могут выполняться над отдельными байтами массива, а также над строками или столбцами.
4. Алгоритмы с нестандартной структурой, к которым можно все остальные существующие алгоритмы симметричного шифрования.
