Блочный шифр — разновидность симметричного

advertisement
Основы работы блочных шифров.
Блочный шифр — разновидность симметричного шифра, оперирующего группами бит
фиксированной длины — блоками, характерный размер которых меняется в пределах
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.
Расшифровывание выполняется аналогично зашифровыванию, но с обрат­ным
порядком использования ключей раундов.
Download