Введение

Самые ранние гражданские блочные шифры

В криптографии название «Люцифер» было дано нескольким из самых ранних гражданских блочных шифров, разработанных Хорстом Файстелем и его коллегами в IBM. Люцифер был прямым предшественником стандарта шифрования данных. Одна из версий, также известная как DTD 1, использовалась в коммерческих целях в 1970-х годах для электронных банковских операций.

Обзор

Люцифер использует комбинацию перестановки и подстановки в качестве отправной точки при дешифровании шифров. Один из вариантов, описанный Файстелем в 1971 году, использует 48-битный ключ и работает с 48-битными блоками. Шифр представляет собой сеть подстановок и перестановок и использует два 4-битных S-блока. Ключ определяет, какие S-блоки используются. В патенте описывается выполнение шифра, обрабатывающего 24 бита за раз, а также последовательная версия, обрабатывающая 8 бит за раз. Другой вариант, разработанный Джоном Л. Смитом в том же году, использует 64-битный ключ, работающий с 32-битным блоком, с использованием одного сложения по модулю 4 и единственного 4-битного S-блока. Конструкция предназначена для обработки 4 бит за такт. Это может быть одна из самых компактных известных реализаций блочного шифра. Позже Файстель описал более надежный вариант, использующий 128-битный ключ и работающий с 128-битными блоками. Более поздняя версия Люцифера была описана как 16-раундовая сеть Фейстеля, также на 128-битных блоках и с 128-битными ключами. Эта версия уязвима для дифференциального криптоанализа; примерно для половины ключей шифр может быть взломан с использованием 236 выбранных открытых текстов и временной сложностью 236. IBM представила версию сети Фейстеля "Люцифер" в качестве кандидата на стандарт шифрования данных (сравните с более поздним процессом AES). Он стал DES после того, как Агентство национальной безопасности уменьшило размер ключа шифра до 56 бит, размер блока до 64 бит и сделало шифр устойчивым к дифференциальному криптоанализу, который в то время был известен только IBM и АНБ. Название "Люцифер", по-видимому, было игрой слов на основе "Демона". Это, в свою очередь, было сокращением от "Демонстрация" – названия системы защиты конфиденциальности, над которой работал Файстель. Используемая операционная система не могла обрабатывать более длинное название.

Описание варианта Соркина

Вариант, описанный в работе, имеет 16 раундов Фейстеля, как и DES, но не содержит начальных или конечных перестановок. Размеры ключа и блока составляют 128 бит. Функция Фейстеля оперирует 64-битным полублоком данных вместе с 64-битным подключом и 8 "битами управления обменом" (ICB). ICB управляют операцией обмена. 64-битный блок данных рассматривается как последовательность из восьми 8-битных байтов, и если ICB, соответствующий конкретному байту, равен нулю, левая и правая 4-битные половины (нибблы) меняются местами. Если ICB равен единице, байт остается без изменений. Затем каждый байт обрабатывается двумя S-блоками размером 4×4 бита, обозначенными S0 и S1 — S0 оперирует левым 4-битным нибблом, а S1 — правым. Полученные результаты конкатенируются и затем объединяются с подключом с использованием исключающего ИЛИ (XOR); это называется "прерыванием ключа". Далее следует операция перестановки в два этапа: первый этап переставляет каждый байт согласно фиксированной перестановке, а второй этап перемешивает биты между байтами. Алгоритм формирования ключей относительно прост. Изначально 128 ключевых бит загружаются в сдвиговый регистр. На каждом раунде левые 64 бита регистра формируют подключ, а правые восемь битов — биты ICB. После каждого раунда регистр сдвигается влево на 56 бит.