Основы работы блочных шифров. Блочный шифр — разновидность симметричного шифра, оперирующего группами бит фиксированной длины — блоками, характерный размер которых меняется в пределах 64 — 256 бит. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют. Фактически, блочный шифр представляет собой подстановку на алфавите блоков, которая, как следствие, может быть моно- или полиалфавитной. Блочный шифр является важной компонентой многих криптографических протоколов и широко используется для защиты данных, передаваемых по сети. Алгоритмы симметричного шифрования могут обрабатывать исходный текст блоками или потоком. В зависимости от этого различают блочные алгоритмы симметричного шифрования и поточные. Блок текста рассматривается как неотрицательное целое число либо как несколько независимых неотрицательных целых чисел. Длина блока всегда выбирается равной степени двойки, например, 64, 128, 256 бит. Используемые в блочных шифрах механизмы: Побитовое сложение по модулю 2 (xor). Если в тексте и ключе содержатся 1 и 0, то результат будет равен 1, если 1+1 или 0+0, то результат – 0. Таким образом, можно запросто расшифровать текст, используя тот же ключ. Циклический сдвиг битов: все биты сдвигаются на определенное количетсво пунктов влево или вправо, как на ленте. Таким образом получается: 1 0 0 0 1 1 1 0 -> (3 влево) -> 01110100 Табличная подстановка: При этом методе одной группе битов сопоставляется другая. К примеру: 001 -> 101, 010 -> 001, 011 -> 110, 100 -> 010; Особенность блочного шифра в том, что исходный текст разбивается на блоке и над каждым блоком в определенной последовательности проводятся вышеперечисленный операции: xor, сдвиг, подстановка. Таких манипуляций может быть несколько, они могут происходить в цикле – тогда заходит речь о раундах или шагах. Самый распространенный пример: сеть Фейштеля. Входной блок делится на 2 равных части: так, если в тексте 64 бита, то он делится на 2 32битных ветви. Ветви обрабатываются по отдельности, после чего осуществляется циклический сдвиг всех ветвей влево. Чем больше происходит итераций обработки блоков, тем более устойчив становится шифр. ГОСТ 28147-89 и CAST-128 ГОСТ – блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа шифра – сеть Фейстеля. В алгоритме используются следующие методы: сложение слов по модулю 2^32, циклический сдвиг влево на указанное число бит, XOR, замена по таблице. Блок делится на 2 части, которые затем обрабатываются, как отдельне 32-битные целые числа без знака. Сначала правая часть блока складывается по модулю 2^32, затем происходит поблочная подстановка. 32-битное значение, полученное на прошлом шаге, интерпретируется как набор 4-битовых блоков кода (8 блоков). Затем каждый мини-блок заменяется на новый по принципу: выбирается элемент, с номером строки, равным номеру заменяемого блока и номером столбца, равным значению блока, как 4битового целого неотрицательного числа. После выполнения подстановки все 4-битовые блоки снова объединяются в 32-битовое слово, которое затем сдвигается на 11 битов влево. Затем, с помощью XOR, соединяется с левой половиной, вследствие чего получается новая правая половина. Есть следующие режимы шифрования: простая замена, гаммирование, гаммирование с обратной связью, режим выработки имитовставки. CAST-128 – западный шифр. Он состоит из 12 или 16 раундов Фейстеля с размером блока 64 бита и длиной ключа от 40 до 128 бит. В алгоритме используются S-блоки, которые генерируются для каждого приложения заново Процедура расширения ключа предполагает формирование 32 32-битных подключей, 16 из которых становятся маскирующими подключами Kmi (см. описание алгоритма CAST-256 в разд. 3.11), а остальные 16— под­ключами сдвига Krt (в которых используются только по 5 младших битов). Перед выполнением расширения ключа выполняется дополнение ключа, меньшего 128 битов, нулевыми битами до достижения 128-битного размера. Собственно процедура расширения ключа является достаточно сложной, ее полное описание можно найти в спецификации алгоритма [30]. Стоит отметить тот факт, что, в отличие от алгоритма CAST-256, CAST-128 имеет 8 (а не 4) таблиц замен, причем 4 из них используются только в процедуре расширения ключа. Это сильно увеличивает ресурсоемкость алгоритма в части требований к энергонезвисимой памяти. Таблицы замен алгоритма приведены в Приложении 1. Расшифровывание выполняется аналогично зашифровыванию, но с обрат­ным порядком использования ключей раундов.