S-блок (информатика): различия между версиями
[непроверенная версия] | [непроверенная версия] |
м →Применение: Уточнение ссылки. |
Нет описания правки |
||
Строка 2: | Строка 2: | ||
{{О|s-блоке химических элементов|s-элементы|п1=Об}} |
{{О|s-блоке химических элементов|s-элементы|п1=Об}} |
||
'''S-блок''' ({{lang-en|s-box}} от {{lang-en2|substitution-box}}), «блок подстановок» — [[Функция (программирование)|функция]] в коде [[Компьютерная программа|программы]] или аппаратная система, принимающая на входе ''n'' [[бит]], преобразующая их по определённому алгоритму и возвращающая на выходе ''m'' бит. ''n'' и ''m'' не обязательно равны<ref name="chandra-516">{{книга |
'''S-блок''' ({{lang-en|s-box}} от {{lang-en2|substitution-box}}), «блок подстановок» — [[Функция (программирование)|функция]] в коде [[Компьютерная программа|программы]] или аппаратная система, принимающая на входе {{nobr|''n'' [[бит]]}}, преобразующая их по определённому алгоритму и возвращающая на выходе {{nobr|''m'' [[бит]]}}. ''n'' и ''m'' не обязательно равны<ref name="chandra-516">{{книга |
||
| автор = {{nobr|Chandrasekaran, J. et al.}} |
| автор = {{nobr|Chandrasekaran, J. et al.}} |
||
| часть = A chaos based approach for improving non linearity in the s-box design of symmetric key cryptosystems |
| часть = A chaos based approach for improving non linearity in the s-box design of symmetric key cryptosystems |
||
Строка 16: | Строка 16: | ||
S-блоки используются в [[Блочное шифрование|блочных шифрах]]. |
S-блоки используются в [[Блочное шифрование|блочных шифрах]]. |
||
В электронике можно непосредственно применять схему, приведённую на [[#Принципиальная схема 3-разрядного s-блока|рисунке]]. В программировании же создают [[Таблица поиска|таблицы]] замен (подстановочные таблицы, таблицы |
В электронике можно непосредственно применять схему, приведённую на [[#Принципиальная схема 3-разрядного s-блока|рисунке]]. В программировании же создают [[Таблица поиска|таблицы]] замен (подстановочные таблицы, таблицы подстановок). Оба этих подхода являются эквивалентными, то есть [[Открытый текст|данные]], зашифрованные на компьютере, можно расшифровать на электронном устройстве и наоборот. |
||
S-блок называется '''идеальным''' ({{lang-en|perfect s‑box}})<ref>RFC 4086. Section 5.3 "Using s‑boxes for mixing"</ref>, если значения выходных бит вычисляются [[Бент-функция|бент-функцией]] на основе значений входных бит и любая [[Линейная комбинация|линейная комбинация]] выходных бит является [[Бент-функция|бент-функцией]] от входных бит. |
S-блок называется '''идеальным''' ({{lang-en|perfect s‑box}})<ref>RFC 4086. Section 5.3 "Using s‑boxes for mixing"</ref>, если значения выходных бит вычисляются [[Бент-функция|бент-функцией]] на основе значений входных бит и любая [[Линейная комбинация|линейная комбинация]] выходных бит является [[Бент-функция|бент-функцией]] от входных бит. |
||
Строка 31: | Строка 31: | ||
* генерироваться на основе [[Ключ (криптография)|ключа]] ({{lang-en|dynamic}}). |
* генерироваться на основе [[Ключ (криптография)|ключа]] ({{lang-en|dynamic}}). |
||
Например, для шифра [[DES]] используется фиксированная таблица, а для шифров [[Blowfish]] и [[Twofish]] таблица создаётся на основе ключа. |
Например, для шифра (алгоритма) [[DES]] используется фиксированная таблица, а для шифров [[Blowfish]] и [[Twofish]] таблица создаётся на основе ключа. |
||
[[File:DES S-box.jpg|thumb|Таблицы замен s‑блоков шифра [[DES]]|300px]] |
[[File:DES S-box.jpg|thumb|Таблицы замен s‑блоков шифра [[DES]]|300px]] |
||
Строка 44: | Строка 45: | ||
| страницы = 119-120 |
| страницы = 119-120 |
||
| издание = Corr. 2. print. |
| издание = Corr. 2. print. |
||
}}</ref>. Рассмотрим работу с таблицей пятого s‑блока (<math>S_5</math>) шифра [[DES]]. Пятый s‑блок принимает на входе 6 [[бит]] (<math>n=6</math>), а на выходе возвращает 4 [[бит]]а (<math>m=4</math>). Пронумеруем входные биты слева направо от 1 до 6. Таблица подстановок имеет следующий вид: |
}}</ref>. Рассмотрим работу с таблицей пятого s‑блока (<math>S_5</math>) шифра [[DES]]. Пятый s‑блок принимает на входе {{nobr|6 [[бит]]}} (<math>n=6</math>), а на выходе возвращает {{nobr|4 [[бит]]а}} (<math>m=4</math>). Пронумеруем входные биты слева направо от 1 до 6. Таблица подстановок имеет следующий вид: |
||
{| class="wikitable" align="center" |
{| class="wikitable" align="center" |
||
! rowspan="2" colspan="2" | S<sub>5</sub> || colspan="16" align="center" | Значения 2‑го, 3‑го, 4‑го и 5‑го бит на входе |
! 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 |
! 0000 !! 0001 !! 0010 !! 0011 !! 0100 !! 0101 !! 0110 !! 0111 !! 1000 !! 1001 !! 1010 !! 1011 !! 1100 !! style="background:#ffdead;" | 1101 !! 1110 !! 1111 |
||
|- |
|- |
||
! rowspan="4" | Значения 1‑го и 6‑го бит на входе |
! rowspan="4" | Значения 1‑го и 6‑го [[бит]] на входе |
||
! 00 |
! 00 |
||
| 0010 || 1100 || 0100 || 0001 || 0111 || 1010 || 1011 || 0110 || 1000 || 0101 || 0011 || 1111 || 1101 || style="background:#ffdead;" | 0000 || 1110 || 1001 |
| 0010 || 1100 || 0100 || 0001 || 0111 || 1010 || 1011 || 0110 || 1000 || 0101 || 0011 || 1111 || 1101 || style="background:#ffdead;" | 0000 || 1110 || 1001 |
||
Строка 65: | Строка 66: | ||
|} |
|} |
||
Пусть на вход подаются |
Пусть на вход подаются [[бит]]ы "'''0'''1101'''1'''". Найдём [[бит]]ы на выходе. |
||
* 1‑й и 6‑й биты на входе равны |
* 1‑й и 6‑й биты на входе равны «01». |
||
* 2‑й, 3‑й, 4‑й и 5‑й биты на входе равны |
* 2‑й, 3‑й, 4‑й и 5‑й биты на входе равны «1101». |
||
* На пересечении строки |
* На пересечении строки «01» и столбца «1101» находим ячейку «1001» — значения бит на выходе. |
||
== Аппаратная реализация == |
== Аппаратная реализация == |
||
{{anchor|Принципиальная схема 3-разрядного s-блока}} |
{{anchor|Принципиальная схема 3-разрядного s-блока}} |
||
[[Файл:S-block.svg| |
[[Файл:S-block.svg|thumb|[[Принципиальная схема]] трёхразрядного (<math>n=3</math>) s-блока]] |
||
Аппаратная реализация s‑блока (см. [[#Принципиальная схема 3-разрядного s-блока|рис.]]) состоит из следующих устройств: |
Аппаратная реализация s‑блока (см. [[#Принципиальная схема 3-разрядного s-блока|рис.]]) состоит из следующих устройств: |
||
Строка 96: | Строка 97: | ||
! № || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 |
! № || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 |
||
|- |
|- |
||
! Значения бит на входе |
! Значения [[бит]] на входе |
||
| 000 || 001 || 010 || 011 || 100 || 101 ||110 || 111 |
| 000 || 001 || 010 || 011 || 100 || 101 ||110 || 111 |
||
|- |
|- |
||
! Значения бит на выходе |
! Значения [[бит]] на выходе |
||
| 011 || 000 || 001 || 100 || 110 || 111 || 010 || 101 |
| 011 || 000 || 001 || 100 || 110 || 111 || 010 || 101 |
||
|} |
|} |
||
'''Пример'''. Пусть на входы [[шифратор]]а, изображённого на [[#Принципиальная схема 3-разрядного s-блока|рисунке]], подаётся число 110<sub>[[Двоичная система счисления|2]]</sub> (см. [[#Принципиальная схема 3-разрядного s-блока|рисунок]]). Так как [[Десятичная система счисления|десятичное]] представление [[Двоичная система счисления|двоичного]] числа 110<sub>[[Двоичная система счисления|2]]</sub> равно '''6'''<sub>[[Десятичная система счисления|10]]</sub>, на '''6'''‑м выходе [[шифратор]]а будет значение 1, а на других выходах — значение 0 (см. [[#Принципиальная схема 3-разрядного s-блока|рисунок]]). С помощью системы коммутаторов значение 1 будет передано на '''2'''‑й вход [[дешифратор]]а (перестановка бит). Так как [[Двоичная система счисления|двоичное]] представление [[Десятичная система счисления|десятичного]] числа '''2'''<sub>[[Десятичная система счисления|10]]</sub> равно 010<sub>[[Двоичная система счисления|2]]</sub>, на выходах [[дешифратор]]а будет число 010<sub>[[Двоичная система счисления|2]]</sub> (см. [[#Принципиальная схема 3-разрядного s-блока|рисунок]]). |
|||
== Применение == |
== Применение == |
||
Строка 110: | Строка 113: | ||
S-блоки используются в следующих шифрах: |
S-блоки используются в следующих шифрах: |
||
* [[Advanced Encryption Standard|AES]] ({{lang-en|'''a'''dvanced '''e'''ncryption '''s'''tandard}}) — шифр, являющийся стандартным на территории США; |
* [[Advanced Encryption Standard|AES]] ({{lang-en|'''a'''dvanced '''e'''ncryption '''s'''tandard}}) — шифр, являющийся стандартным на территории [[США]]; |
||
* [[ГОСТ 28147-89]] — отечественный стандарт шифрования данных; |
* [[ГОСТ 28147-89]] — отечественный стандарт шифрования данных; |
||
* [[DES]] ({{lang-en|'''d'''ata '''e'''ncryption '''s'''tandard}}) — шифр, являвшийся стандартным на территории США до принятия [[Advanced Encryption Standard|AES]]; |
* [[DES]] ({{lang-en|'''d'''ata '''e'''ncryption '''s'''tandard}}) — шифр, являвшийся стандартным на территории [[США]] до принятия [[Advanced Encryption Standard|AES]]; |
||
* [[Blowfish]]; |
* [[Blowfish]]; |
||
* [[Twofish]]. |
* [[Twofish]]. |
||
Строка 118: | Строка 121: | ||
== Безопасность == |
== Безопасность == |
||
При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали [[Бэкдор|закладки]] (уязвимости, известные только создателям) в восьми |
При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали [[Бэкдор|закладки]] (уязвимости, известные только создателям) в таблицах подстановок восьми s‑блоков шифра [[DES]]. Авторы DES рассказали<ref>{{cite journal |
||
| ref = CITEREFCoppersmith1994 |
| ref = CITEREFCoppersmith1994 |
||
| authorlink = Don Coppersmith |
| authorlink = Don Coppersmith |
||
Строка 142: | Строка 145: | ||
* {{cite conference |
* {{cite conference |
||
| author = [[:en:Kaisa Nyberg|Kaisa Nyberg]]{{ref-en}} |
|||
| title = Perfect nonlinear s-boxes |
|||
| booktitle = Advances in cryptology - [[:en:Eurocrypt|Eurocrypt]]{{ref-en}} 1991 |
|||
| pages = 378–386 |
|||
| date = 1991 |
|||
| location = [[Брайтон|Brighton]] |
|||
| url = ftp://ftp.zedz.net/pub/mirrors/Advances%20in%20Cryptology/HTML/PDF/E91/378.PDF |
|||
| format = [[PDF]] |
|||
| accessdate = 2007-02-20 |
|||
}} |
|||
* {{cite conference |
* {{cite conference |
||
| author = S. Mister and [[:en:Carlisle Adams|C. Adams]]{{ref-en}} |
|||
| title = Practical s-box design |
|||
| booktitle = Workshop on [[:en:Selected Areas in Cryptography|Selected areas in cryptography]]{{ref-en}} (SAC 1996). Workshop record |
|||
| pages = 61–76 |
|||
| date = 1996 |
|||
| location = [[Университет Квинс]] |
|||
| url = http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.7715 |
|||
| format = [[PostScript]] |
|||
| accessdate = 2007-02-20 |
|||
}} |
|||
* {{cite book |
* {{cite book |
||
| ref = CITEREFSchneier1994 |
|||
| last = Schneier |
|||
| first = Bruce |
|||
| authorlink = Bruce Schneier |
|||
| title = Applied cryptography. Second edition |
|||
| publisher = [[John Wiley & Sons]] |
|||
| year = 1996 |
|||
| pages = 296–298, 349 |
|||
| isbn = 0-471-11709-9 |
|||
}} |
|||
* {{cite paper |
* {{cite paper |
||
| ref = CITEREFEasttom2014 |
|||
| last = Easttom |
|||
| first = Chuck |
|||
| authorlink = Chuck Easttom |
|||
| title = A guideline for creating cryptographic s-boxes |
|||
| publisher = https://www.academia.edu/9192148/CREATING_CRYPTOGRAPHIC_S-BOXES_A_Guideline_for_Designing_Cryptographic_S-Boxes_by_Chuck_Easttom |
|||
| year = 2014 |
|||
}} |
|||
== См. также == |
== См. также == |
Версия от 12:54, 28 августа 2015
Эту страницу предлагается переименовать в «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. Таблица подстановок имеет следующий вид:
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-блока, изображённого на рисунке, дешифратор выполняет преобразование трёхразрядного сигнала () в восьмиразрядный ().
Система коммутаторов — внутренние соединения, выполняющие перестановку бит. Если 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 |
Пример. Пусть на входы шифратора, изображённого на рисунке, подаётся число 1102 (см. рисунок). Так как десятичное представление двоичного числа 1102 равно 610, на 6‑м выходе шифратора будет значение 1, а на других выходах — значение 0 (см. рисунок). С помощью системы коммутаторов значение 1 будет передано на 2‑й вход дешифратора (перестановка бит). Так как двоичное представление десятичного числа 210 равно 0102, на выходах дешифратора будет число 0102 (см. рисунок).
Применение
S-блоки используются в блочных шифрах при выполнении симметричного шифрования для сокрытия статистической связи между открытым текстом и шифротекстом.
Анализ n-разрядного s-блока при большом n крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений велико (). На практике «блок подстановок» используется как элемент более сложных систем.
S-блоки используются в следующих шифрах:
- AES (англ. advanced encryption standard) — шифр, являющийся стандартным на территории США;
- ГОСТ 28147-89 — отечественный стандарт шифрования данных;
- DES (англ. data encryption standard) — шифр, являвшийся стандартным на территории США до принятия AES;
- Blowfish;
- Twofish.
Безопасность
При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали закладки (уязвимости, известные только создателям) в таблицах подстановок восьми s‑блоков шифра DES. Авторы DES рассказали[4] о том, чем руководствовались при составлении таблиц подстановок. Результаты дифференциального криптоанализа шифра DES показали, что числа в таблицах подстановок были тщательно подобраны так, чтобы увеличить стойкость DES к определённым видам атак. Бихам и Шамир обнаружили, что даже небольшие изменения в таблицах могут значительно ослабить DES[5].
Примечания
- ↑ 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.
- ↑ RFC 4086. Section 5.3 "Using s‑boxes for mixing"
- ↑ 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.
- ↑ Coppersmith, Don (1994). "The Data Encryption Standard (DES) and its strength against attacks" (PDF). IBM Journal of Research and Development. 38 (3): 243—250. doi:10.1147/rd.383.0243. Дата обращения: 20 февраля 2007.
- ↑ Gargiulo's "S-Box modifications and their effect in DES-like encryption systems". С. 9.
Литература
- Kaisa Nyberg (англ.) [in английский] (1991). "Perfect nonlinear s-boxes" (PDF). Advances in cryptology - Eurocrypt (англ.) 1991. Brighton. pp. 378—386. Дата обращения: 20 февраля 2007.
{{cite conference}}
: Неизвестный параметр|booktitle=
игнорируется (|book-title=
предлагается) (справка)Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
- S. Mister and C. Adams (англ.) (1996). "Practical s-box design" (PostScript). Workshop on Selected areas in cryptography (англ.) (SAC 1996). Workshop record. Университет Квинс. pp. 61—76. Дата обращения: 20 февраля 2007.
{{cite conference}}
: Неизвестный параметр|booktitle=
игнорируется (|book-title=
предлагается) (справка); Проверьте значение|author=
(справка)Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)
- Schneier, Bruce. Applied cryptography. Second edition. — John Wiley & Sons, 1996. — P. 296–298, 349. — ISBN 0-471-11709-9.
- Easttom, Chuck (2014). "A guideline for creating cryptographic s-boxes". https://www.academia.edu/9192148/CREATING_CRYPTOGRAPHIC_S-BOXES_A_Guideline_for_Designing_Cryptographic_S-Boxes_by_Chuck_Easttom.
{{cite journal}}
: Cite journal требует|journal=
(справка); Внешняя ссылка в
(справка)|publisher=
См. также
- Rijndael s-box (англ.)
- Биекция
- Булева функция
- Nothing up my sleeve number
- Шифр подстановки
- Permutation box (англ.) (англ. p-box)
Ссылки
- John Savard's "Questions of S-Box Design"
- Gargiulo's "S-Box Modifications and Their Effect in DES-like Encryption Systems"
Для улучшения этой статьи желательно:
|