S-блок (информатика)S-блок (или блок подстановок, англ. s-box от substitution-box) — функция в коде программы или аппаратная система, принимающая на входе n бит, преобразующая их по определённому алгоритму и возвращающая на выходе m бит. n и m не обязательно равны[1]. S-блоки используются в блочных шифрах. В электронике можно непосредственно применять схему, приведённую на рисунке. В программировании же создают таблицы замен (подстановочные таблицы, таблицы подстановок). Оба этих подхода являются эквивалентными, то есть данные, зашифрованные на компьютере, можно расшифровать на электронном устройстве и наоборот. S-блок называется идеальным (англ. perfect s‑box)[2], если значения выходных бит вычисляются бент-функцией на основе значений входных бит и любая линейная комбинация выходных бит является бент-функцией от входных бит. Программная реализацияПрограммная реализация s‑блока работает следующим образом:
Используемая таблица называется «таблицей замен» или «таблицей подстановок». Таблица может: Например, для шифра (алгоритма) DES используется фиксированная таблица, а для шифров Blowfish и Twofish таблица создаётся на основе ключа. Пример[3]. Рассмотрим работу с таблицей пятого s‑блока () шифра DES. Пятый s‑блок принимает на входе 6 бит (), а на выходе возвращает 4 бита (). Пронумеруем входные биты слева направо от 1 до 6. Таблица подстановок имеет следующий вид:
Пусть на вход подаются биты "011011". Найдём биты на выходе.
Аппаратная реализация
Аппаратная реализация s‑блока (см. рис.) состоит из следующих устройств:
Дешифратор — устройство, преобразующее n‑разрядный двоичный сигнал в одноразрядный сигнал по основанию . Например, для s-блока, изображённого на рисунке, дешифратор выполняет преобразование трёхразрядного сигнала () в восьмиразрядный (). Система коммутаторов — внутренние соединения, выполняющие перестановку бит. Если m=n, количество соединений равно . Каждый входной бит отображается в выходной бит, расположенный в том же или ином разряде. Если число входов n и выходов m не равно, от каждого выхода дешифратора может идти ноль, одно, два или более соединений. Это же справедливо и для входов шифратора. Для s-блока, изображённого на рисунке, , число соединений равно . Шифратор — устройство, переводящее сигнал из одноразрядного -ричного в n‑разрядный двоичный. Для s‑блока, изображённого на рисунке, можно составить следующую таблицу замен (таблицу подстановок).
Пример. Пусть на входы шифратора, изображённого на рисунке, подаётся число 1102 (см. рисунок). Так как десятичное представление двоичного числа 1102 равно 610, на 6‑м выходе шифратора будет значение 1, а на других выходах — значение 0 (см. рисунок). С помощью системы коммутаторов значение 1 будет передано на 2‑й вход дешифратора (перестановка бит). Так как двоичное представление десятичного числа 210 равно 0102, на выходах дешифратора будет число 0102 (см. рисунок). ПрименениеS-блоки используются в блочных шифрах при выполнении симметричного шифрования для сокрытия статистической связи между открытым текстом и шифротекстом. Анализ n-разрядного s-блока при большом n крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений велико (). На практике «блок подстановок» используется как элемент более сложных систем. S-блоки используются в следующих шифрах:
БезопасностьПри проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали закладки (уязвимости, известные только создателям) в таблицах подстановок восьми s‑блоков шифра DES. Авторы DES рассказали[4] о том, чем руководствовались при составлении таблиц подстановок. Результаты дифференциального криптоанализа шифра DES показали, что числа в таблицах подстановок были тщательно подобраны так, чтобы увеличить стойкость DES к определённым видам атак. Бихам и Шамир обнаружили, что даже небольшие изменения в таблицах могут значительно ослабить DES[5]. Примечания
Литература
См. также
Ссылки
|
Portal di Ensiklopedia Dunia