Полиморфизм (информатика)
- 1 year ago
- 0
- 0
S-блок (или блок подстановок , англ. s-box от substitution-box ) — функция в коде программы или аппаратная система, принимающая на входе n бит , преобразующая их по определённому алгоритму и возвращающая на выходе m бит . n и m не обязательно равны .
S-блоки используются в блочных шифрах .
В электронике можно непосредственно применять схему, приведённую на . В программировании же создают таблицы замен (подстановочные таблицы, таблицы подстановок). Оба этих подхода являются эквивалентными, то есть данные , зашифрованные на компьютере, можно расшифровать на электронном устройстве и наоборот.
S-блок называется идеальным ( англ. perfect s‑box ) , если значения выходных бит вычисляются бент-функцией на основе значений входных бит и любая линейная комбинация выходных бит является бент-функцией от входных бит.
Программная реализация s‑блока работает следующим образом:
Используемая таблица называется «таблицей замен» или «таблицей подстановок». Таблица может:
Например, для шифра (алгоритма) DES используется фиксированная таблица, а для шифров Blowfish и Twofish таблица создаётся на основе ключа.
Пример . Рассмотрим работу с таблицей пятого s‑блока ( ) шифра DES . Пятый s‑блок принимает на входе 6 бит ( ), а на выходе возвращает 4 бита ( ). Пронумеруем входные биты слева направо от 1 до 6. Таблица подстановок имеет следующий вид:
S 5 | Значения 2‑го, 3‑го, 4‑го и 5‑го бит на входе | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | ||
Значения 1‑го и 6‑го бит на входе | 00 | 0010 | 1100 | 0100 | 0001 | 0111 | 1010 | 1011 | 0110 | 1000 | 0101 | 0011 | 1111 | 1101 | 0000 | 1110 | 1001 |
01 | 1110 | 1011 | 0010 | 1100 | 0100 | 0111 | 1101 | 0001 | 0101 | 0000 | 1111 | 1010 | 0011 | 1001 | 1000 | 0110 | |
10 | 0100 | 0010 | 0001 | 1011 | 1010 | 1101 | 0111 | 1000 | 1111 | 1001 | 1100 | 0101 | 0110 | 0011 | 0000 | 1110 | |
11 | 1011 | 1000 | 1100 | 0111 | 0001 | 1110 | 0010 | 1101 | 0110 | 1111 | 0000 | 1001 | 1010 | 0100 | 0101 | 0011 |
Пусть на вход подаются биты " 0 1101 1 ". Найдём биты на выходе.
Аппаратная реализация s‑блока (см. ) состоит из следующих устройств:
Дешифратор — устройство, преобразующее n ‑ разрядный двоичный сигнал в одноразрядный сигнал по основанию .
Например, для s-блока, изображённого на , дешифратор выполняет преобразование трёхразрядного сигнала ( ) в восьмиразрядный ( ).
Система коммутаторов — внутренние соединения, выполняющие перестановку бит . Если m=n , количество соединений равно . Каждый входной бит отображается в выходной бит, расположенный в том же или ином разряде . Если число входов n и выходов m не равно, от каждого выхода дешифратора может идти ноль, одно, два или более соединений. Это же справедливо и для входов шифратора.
Для s-блока, изображённого на , , число соединений равно .
Шифратор — устройство, переводящее сигнал из одноразрядного -ричного в n ‑разрядный двоичный.
Для s‑блока, изображённого на , можно составить следующую таблицу замен (таблицу подстановок).
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
Значение на входе дешифратора | 000 2 =0 10 | 001 2 =1 10 | 010 2 =2 10 | 011 2 =3 10 | 100 2 =4 10 | 101 2 =5 10 | 110 2 =6 10 | 111 2 =7 10 |
Номер выхода дешифратора (по ), на котором установлено значение 1 (на других выходах установлено значение 0) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Номер входа шифратора (по ), на котором установлено значение 1 (на других входах установлено значение 0) | 3 | 0 | 1 | 4 | 6 | 7 | 2 | 5 |
Значение на выходе шифратора | 011 2 =3 10 | 000 2 =0 10 | 001 2 =1 10 | 100 2 =4 10 | 110 2 =6 10 | 111 2 =7 10 | 010 2 =2 10 | 101 2 =5 10 |
Пример . Пусть на входы шифратора, изображённого на , подаётся число 110 2 (см. ). Так как десятичное представление двоичного числа 110 2 равно 6 10 , на 6 ‑м выходе шифратора будет значение 1, а на других выходах — значение 0 (см. ). С помощью системы коммутаторов значение 1 будет передано на 2 ‑й вход дешифратора (перестановка бит). Так как двоичное представление десятичного числа 2 10 равно 010 2 , на выходах дешифратора будет число 010 2 (см. ).
S-блоки используются в блочных шифрах при выполнении симметричного шифрования для сокрытия между открытым текстом и шифротекстом .
Анализ n -разрядного s-блока при большом n крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений велико ( ). На практике «блок подстановок» используется как элемент более сложных систем.
S-блоки используются в следующих шифрах:
При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали закладки (уязвимости, известные только создателям) в таблицах подстановок восьми s‑блоков шифра DES . Авторы DES рассказали о том, чем руководствовались при составлении таблиц подстановок. Результаты дифференциального криптоанализа шифра DES показали, что числа в таблицах подстановок были тщательно подобраны так, чтобы увеличить стойкость DES к определённым видам атак. Бихам и Шамир обнаружили, что даже небольшие изменения в таблицах могут значительно ослабить DES .