S-блок (информатика): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Нет описания правки |
|||
Строка 20: | Строка 20: | ||
== Программная реализация == |
== Программная реализация == |
||
Программная реализация |
Программная реализация s‑блока работает следующим образом: |
||
* читается значение на входе (аргумент [[Функция (программирование)|функции]]); |
* читается значение на входе (аргумент [[Функция (программирование)|функции]]); |
||
* выполняется поиск прочитанного значения по [[Таблица поиска|таблице]]; |
* выполняется поиск прочитанного значения по [[Таблица поиска|таблице]]; |
||
Строка 30: | Строка 30: | ||
Например, для шифра [[DES]] используется фиксированная таблица, а для шифров [[Blowfish]] и [[Twofish]] таблица создаётся на основе ключа. |
Например, для шифра [[DES]] используется фиксированная таблица, а для шифров [[Blowfish]] и [[Twofish]] таблица создаётся на основе ключа. |
||
[[File:DES S-box.jpg|thumb|Таблицы замен |
[[File:DES S-box.jpg|thumb|Таблицы замен s‑блоков шифра [[DES]]|300px]] |
||
'''Пример'''<ref>{{книга |
|||
| автор = Buchmann Johannes A. |
|||
| заглавие = Introduction to cryptography |
|||
| часть = 5. DES |
|||
| год = 2001 |
|||
| издательство = Springer |
|||
| место = New York, NY [u.a.] |
|||
| isbn = 0-387-95034-6 |
|||
| страницы = 119-120 |
|||
| издание = Corr. 2. print. |
|||
}}</ref>. Рассмотрим работу с таблицей пятого s‑блока (<math>S_5</math>) шифра [[DES]]. Пятый s‑блок принимает на входе 6 [[бит]] (<math>n=6</math>), а на выходе возвращает 4 [[бит]]а (<math>m=4</math>). Пронумеруем входные биты слева направо от 1 до 6. Таблица подстановок имеет следующий вид: |
|||
{| class="wikitable" align="center" |
|||
! rowspan="2" colspan="2" | S<sub>5</sub> || colspan="16" align="center" | Значения 2‑го, 3‑го, 4‑го и 5‑го бит на входе |
|||
|- |
|||
! 0000 !! 0001 !! 0010 !! 0011 !! 0100 !! 0101 !! 0110 !! 0111 !! 1000 !! 1001 !! 1010 !! 1011 !! 1100 !! style="background:#ffdead;" | 1101 !! 1110 !! 1111 |
|||
|- |
|||
! rowspan="4" | Значения 1‑го и 6‑го бит на входе |
|||
! 00 |
|||
| 0010 || 1100 || 0100 || 0001 || 0111 || 1010 || 1011 || 0110 || 1000 || 0101 || 0011 || 1111 || 1101 || style="background:#ffdead;" | 0000 || 1110 || 1001 |
|||
|- |
|||
! style="background:#deffad;" | 01 |
|||
| style="background:#deffad;" | 1110 || style="background:#deffad;" | 1011 || style="background:#deffad;" | 0010 || style="background:#deffad;" | 1100 || style="background:#deffad;" | 0100 || style="background:#deffad;" | 0111 || style="background:#deffad;" | 1101 || style="background:#deffad;" | 0001 || style="background:#deffad;" | 0101 || style="background:#deffad;" | 0000 || style="background:#deffad;" | 1111 || style="background:#deffad;" | 1010 || style="background:#deffad;" | 0011 || style="background:#fefe2d;" | 1001 || style="background:#deffad;" | 1000 || style="background:#deffad;" | 0110 |
|||
|- |
|||
! 10 |
|||
| 0100 || 0010 || 0001 || 1011 || 1010 || 1101 || 0111 || 1000 || 1111 || 1001 || 1100 || 0101 || 0110 || style="background:#ffdead;" | 0011 || 0000 || 1110 |
|||
|- |
|||
! 11 |
|||
| 1011 || 1000 || 1100 || 0111 || 0001 || 1110 || 0010 || 1101 || 0110 || 1111 || 0000 || 1001 || 1010 || style="background:#ffdead;" | 0100 || 0101 || 0011 |
|||
|} |
|||
Пусть на вход подаются биты "'''0'''1101'''1'''". Найдём биты на выходе. |
|||
* 1‑й и 6‑й биты на входе равны "01". |
|||
* 2‑й, 3‑й, 4‑й и 5‑й биты на входе равны "1101". |
|||
* На пересечении строки "01" со столбцом "1101" находим "1001" — значения бит на выходе. |
|||
== Аппаратная реализация == |
== Аппаратная реализация == |
Версия от 21:36, 4 апреля 2015
Эту страницу предлагается переименовать в «S-блок». |
S-блок (англ. s-box от substitution-box), «блок подстановок» — функция в коде программы или аппаратная система, принимающая на входе n бит, преобразующая их по определённому алгоритму и возвращающая на выходе m бит. n и m не обязательно равны[1].
S-блоки используются в блочных шифрах.
В электронике можно непосредственно применять схему, приведённую на рисунке. В программировании же создают таблицы замены (подстановочные таблицы, таблицы подстановки). Оба этих подхода являются эквивалентными, то есть файл, зашифрованный на компьютере, можно расшифровать на электронном устройстве и наоборот.
Программная реализация
Программная реализация s‑блока работает следующим образом:
- читается значение на входе (аргумент функции);
- выполняется поиск прочитанного значения по таблице;
- по определённому правилу выбирается ячейка таблицы; из ячейки читается выходное значение; выходное значение возвращается из функции.
Используемая таблица называется «таблицей замен» или «таблицей подстановок». Таблица может:
Например, для шифра DES используется фиксированная таблица, а для шифров Blowfish и Twofish таблица создаётся на основе ключа.
Пример[2]. Рассмотрим работу с таблицей пятого s‑блока () шифра DES. Пятый s‑блок принимает на входе 6 бит (), а на выходе возвращает 4 бита (). Пронумеруем входные биты слева направо от 1 до 6. Таблица подстановок имеет следующий вид:
S5 | Значения 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 |
Пусть на вход подаются биты "011011". Найдём биты на выходе.
- 1‑й и 6‑й биты на входе равны "01".
- 2‑й, 3‑й, 4‑й и 5‑й биты на входе равны "1101".
- На пересечении строки "01" со столбцом "1101" находим "1001" — значения бит на выходе.
Аппаратная реализация
Аппаратная реализация s-блока (см. рис.) состоит из следующих устройств:
- дешифратор;
- система коммутаторов;
- шифратор.
Дешифратор — устройство, преобразующее n-разрядный двоичный сигнал в одноразрядный сигнал по основанию .
Например, для s-блока, изображённого на рисунке, дешифратор выполняет преобразование трёхразрядного сигнала () в 8-и разрядный ().
Система коммутаторов — внутренние соединения, выполняющие перестановку бит. Если m=n, количество соединений равно . Каждый входной бит отображается в выходной бит, расположенный в том же или ином разряде. Если число входов n и выходов m не равно, от каждого выхода дешифратора может идти ноль, одно, два или более соединений. Это же справедливо и для входов шифратора.
Для s-блока, изображённого на рисунке, , число соединений равно .
Шифратор — устройство, переводящее сигнал из одноразрядного -ричного в n-разрядный двоичный.
Для s-блока, изображённого на рисунке, можно составить следующую таблицу замен (таблицу подстановок).
№ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Значения бит на входе | 000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 |
Значения бит на выходе | 011 | 000 | 001 | 100 | 110 | 111 | 010 | 101 |
Применение
S-блоки используются в блочных шифрах при выполнении симметричного шифрования для сокрытия статистической связи между открытым текстом и шифротекстом.
Анализ n-разрядного s-блока при большом n крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений крайне велико (). На практике «блок подстановок» используется как элемент более сложных систем.
S-блоки используются в следующих шифрах:
- AES (англ. advanced encryption standard) — шифр, являющийся стандартным на территории США;
- ГОСТ 28147-89 — отечественный стандарт шифрования данных;
- DES (англ. data encryption standard) — шифр, являвшийся стандартным на территории США до принятия AES;
- Blowfish;
- Twofish.
Примечания
- ↑ Chandrasekaran, J. et al. A chaos based approach for improving non linearity in the s-box design of symmetric key cryptosystems // Advances in networks and communications: first international conference on computer science and information technology, CCSIT 2011, Bangalore, Индия, 2-4 января 2011 года. Proceedings, part 2. — Springer, 2011. — С. 516. — ISBN 978-3-642-17877-1.
- ↑ Buchmann Johannes A. 5. DES // Introduction to cryptography. — Corr. 2. print.. — New York, NY [u.a.]: Springer, 2001. — С. 119-120. — ISBN 0-387-95034-6.
Литература
- Kaisa Nyberg (1991). "Perfect nonlinear s-boxes" (PDF). Advances in cryptology - EUROCRYPT '91. Brighton. pp. 378—386. Дата обращения: 20 февраля 2007.
{{cite conference}}
: Неизвестный параметр|booktitle=
игнорируется (|book-title=
предлагается) (справка) - S. Mister and C. Adams (1996). "Practical S-Box Design" (PostScript). Workshop on Selected Areas in Cryptography (SAC '96) Workshop Record. Queens University. pp. 61—76. Дата обращения: 20 февраля 2007.
{{cite conference}}
: Неизвестный параметр|booktitle=
игнорируется (|book-title=
предлагается) (справка) - Schneier, Bruce. Applied Cryptography, Second Edition. — John Wiley & Sons, 1996. — P. 296–298, 349. — ISBN 0-471-11709-9.
Ссылки
- John Savard's "Questions of S-Box Design"
- Gargiulo's "S-Box Modifications and Their Effect in DES-like Encryption Systems"
Для улучшения этой статьи желательно:
|