Блочный шифр


Бло́чный шифр — разновидность симметричного шифра[1], оперирующего группами бит фиксированной длины — блоками, характерный размер которых меняется в пределах 64‒256 бит. Если исходный текст (или его остаток) меньше размера блока, перед шифрованием его дополняют. Фактически, блочный шифр представляет собой подстановку на алфавите блоков, которая, как следствие, может быть моно- или полиалфавитной.[2] Блочный шифр является важной компонентой многих криптографических протоколов и широко используется для защиты данных, передаваемых по сети.

В отличие от шифроблокнота, где длина ключа равна длине сообщения, блочный шифр способен зашифровать одним ключом одно или несколько сообщений суммарной длиной больше, чем длина ключа. Передача малого по сравнению с сообщением ключа по зашифрованному каналу — задача значительно более простая и быстрая, чем передача самого сообщения или ключа такой же длины, что делает возможным его повседневное использование. Однако, при этом шифр перестаёт быть невзламываемым. От поточных шифров работа блочного отличается обработкой бит группами, а не потоком. При этом блочные шифры медленнее поточных.[3] Симметричные системы обладают преимуществом над асимметричными в скорости шифрования, что позволяет им оставаться актуальными, несмотря на более слабый механизм передачи ключа (получатель должен знать секретный ключ, который необходимо передать по уже налаженному зашифрованному каналу. В то же время, в асимметричных шифрах открытый ключ, необходимый для шифрования, могут знать все, и нет необходимости в передаче ключа шифрования).

К достоинствам блочных шифров относят сходство процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и расшифрования. Гибкость блочных шифров позволяет использовать их для построения других криптографических примитивов: генератора псевдослучайной последовательности, поточного шифра, имитовставки и криптографических хешей.[4]

Современная модель блочных шифров основана на идее итеративных блочных шифров, предложенной в публикации 1949 года Клода Шеннона «Теория связи в секретных системах». Данная концепция позволяет достичь определённого уровня безопасности комбинированием простых в исполнении операций подстановки (англ. substitution) и перестановки (англ. permutation)[5].

До 1970-х годов криптография была уделом военных и разведчиков, в открытой печати практически не существовало каких-либо публикаций[6]. Первопроходцем явился шифр «Люцифер», разработанный в 1970 году компанией IBM и основанный на SP-сети. Идея шифра заключалась в использовании комбинаций простых, а следовательно, быстро вычисляемых как аппаратно, так и программно операций. Однако, схема получилась неудачной: она была слишком громоздкой, что привело к низкой скорости шифрования в программной реализации (около 8 кбайт/с) и в аппаратной (97 кбайт/с).