S-блок (информатика): различия между версиями
[непроверенная версия] | [непроверенная версия] |
Нет описания правки |
РобоСтася (обсуждение | вклад) |
||
(не показано 25 промежуточных версий 16 участников) | |||
Строка 1: | Строка 1: | ||
{{К переименованию|2015-03-22|S-блок}} |
|||
{{О|s-блоке химических элементов|s-элементы|п1=Об}} |
{{О|s-блоке химических элементов|s-элементы|п1=Об}} |
||
'''S-блок''' ({{lang-en|s-box}} от {{lang-en2|substitution-box}}) |
'''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 |
||
Строка 11: | Строка 10: | ||
| isbn = 978-3-642-17877-1 |
| isbn = 978-3-642-17877-1 |
||
| страницы = 516 |
| страницы = 516 |
||
| ссылка = |
| ссылка = https://books.google.com/books?id=pXOS4ZTUJLYC&pg=PA516 |
||
}}</ref>. |
}}</ref>. |
||
S-блоки используются в [[Блочное шифрование|блочных шифрах]]. |
S-блоки используются в [[Блочное шифрование|блочных шифрах]]. |
||
В электронике можно непосредственно применять схему, приведённую на [[#Принципиальная схема 3-разрядного s-блока|рисунке]]. В программировании же создают [[Таблица поиска|таблицы]] |
В электронике можно непосредственно применять схему, приведённую на [[#Принципиальная схема 3-разрядного s-блока|рисунке]]. В программировании же создают [[Таблица поиска|таблицы]] замен (подстановочные таблицы, таблицы подстановок). Оба этих подхода являются эквивалентными, то есть [[Открытый текст|данные]], зашифрованные на компьютере, можно расшифровать на электронном устройстве и наоборот. |
||
S-блок называется '''идеальным''' ({{lang-en|perfect |
S-блок называется '''идеальным''' ({{lang-en|perfect s‑box}})<ref>RFC 4086. Section 5.3 "Using s‑boxes for mixing"</ref>, если значения выходных бит вычисляются [[Бент-функция|бент-функцией]] на основе значений входных бит и любая [[линейная комбинация]] выходных бит является [[Бент-функция|бент-функцией]] от входных бит. |
||
== Программная реализация == |
== Программная реализация == |
||
Строка 31: | Строка 30: | ||
* генерироваться на основе [[Ключ (криптография)|ключа]] ({{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]] |
||
Строка 42: | Строка 42: | ||
| место = New York, NY [u.a.] |
| место = New York, NY [u.a.] |
||
| isbn = 0-387-95034-6 |
| isbn = 0-387-95034-6 |
||
| страницы = |
| страницы = 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: | Строка 65: | ||
|} |
|} |
||
Пусть на вход подаются |
Пусть на вход подаются [[бит]]ы "'''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-блока|рис.]]) состоит из следующих устройств: |
||
* [[дешифратор]]; |
* [[дешифратор]]; |
||
* система коммутаторов; |
* система коммутаторов; |
||
* [[Шифратор (электроника)|шифратор]]. |
* [[Шифратор (электроника)|шифратор]]. |
||
'''[[Дешифратор]]''' — устройство, преобразующее ''n'' |
'''[[Дешифратор]]''' — устройство, преобразующее ''n''‑[[Числовой разряд|разрядный]] [[Двоичный код|двоичный]] [[сигнал]] в одноразрядный сигнал по [[Позиционная система счисления#Основание системы счисления|основанию]] <math>2^n</math>. |
||
Например, для s-блока, изображённого на [[#Принципиальная схема |
Например, для s-блока, изображённого на [[#Принципиальная схема 3‑разрядного s-блока|рисунке]], дешифратор выполняет преобразование трёхразрядного сигнала (<math>n=3</math>) в восьмиразрядный (<math>2^3=8</math>). |
||
'''Система коммутаторов''' — внутренние соединения, выполняющие перестановку [[бит]]. Если ''m=n'', количество соединений равно <math>2^n</math>. Каждый входной [[бит]] отображается в выходной бит, расположенный в том же или ином [[Числовой разряд|разряде]]. Если число входов ''n'' и выходов ''m'' не равно, от каждого выхода дешифратора может идти ноль, одно, два или более соединений. Это же справедливо и для входов шифратора. |
'''Система коммутаторов''' — внутренние соединения, выполняющие перестановку [[бит]]. Если ''m=n'', количество соединений равно <math>2^n</math>. Каждый входной [[бит]] отображается в выходной бит, расположенный в том же или ином [[Числовой разряд|разряде]]. Если число входов ''n'' и выходов ''m'' не равно, от каждого выхода дешифратора может идти ноль, одно, два или более соединений. Это же справедливо и для входов шифратора. |
||
Строка 88: | Строка 87: | ||
Для s-блока, изображённого на [[#Принципиальная схема 3-разрядного s-блока|рисунке]], <math>n=m=3</math>, число соединений равно <math>2^n=2^3=8</math>. |
Для s-блока, изображённого на [[#Принципиальная схема 3-разрядного s-блока|рисунке]], <math>n=m=3</math>, число соединений равно <math>2^n=2^3=8</math>. |
||
'''[[Шифратор (электроника)|Шифратор]]''' — устройство, переводящее сигнал из одноразрядного <math>2^n</math>-ричного в ''n'' |
'''[[Шифратор (электроника)|Шифратор]]''' — устройство, переводящее сигнал из одноразрядного <math>2^n</math>-ричного в ''n''‑разрядный двоичный. |
||
Для |
Для s‑блока, изображённого на [[#Принципиальная схема 3-разрядного s-блока|рисунке]], можно составить следующую таблицу замен (таблицу подстановок). |
||
{| class=" |
{| class="wikitable" style="text-align:center;" |
||
|- |
|- |
||
! |
! || 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 |
||
|- |
|- |
||
! |
! Значение на входе дешифратора |
||
|| 000<sub>[[Двоичная система счисления|2]]</sub>=0<sub>[[Десятичная система счисления|10]]</sub> || 001<sub>[[Двоичная система счисления|2]]</sub>=1<sub>[[Десятичная система счисления|10]]</sub> || 010<sub>[[Двоичная система счисления|2]]</sub>=2<sub>[[Десятичная система счисления|10]]</sub> || 011<sub>[[Двоичная система счисления|2]]</sub>=3<sub>[[Десятичная система счисления|10]]</sub> || 100<sub>[[Двоичная система счисления|2]]</sub>=4<sub>[[Десятичная система счисления|10]]</sub> || 101<sub>[[Двоичная система счисления|2]]</sub>=5<sub>[[Десятичная система счисления|10]]</sub> || 110<sub>[[Двоичная система счисления|2]]</sub>=6<sub>[[Десятичная система счисления|10]]</sub> || 111<sub>[[Двоичная система счисления|2]]</sub>=7<sub>[[Десятичная система счисления|10]]</sub> |
|||
⚫ | |||
|- |
|||
| Номер выхода дешифратора (по [[#Принципиальная схема 3-разрядного s-блока|рисунку]]), на котором установлено значение 1 (на других выходах установлено значение 0) |
|||
⚫ | |||
|- |
|||
| Номер входа шифратора (по [[#Принципиальная схема 3-разрядного s-блока|рисунку]]), на котором установлено значение 1 (на других входах установлено значение 0) |
|||
⚫ | |||
|- |
|||
! Значение на выходе шифратора |
|||
|| 011<sub>[[Двоичная система счисления|2]]</sub>=3<sub>[[Десятичная система счисления|10]]</sub> || 000<sub>[[Двоичная система счисления|2]]</sub>=0<sub>[[Десятичная система счисления|10]]</sub> || 001<sub>[[Двоичная система счисления|2]]</sub>=1<sub>[[Десятичная система счисления|10]]</sub> || 100<sub>[[Двоичная система счисления|2]]</sub>=4<sub>[[Десятичная система счисления|10]]</sub> || 110<sub>[[Двоичная система счисления|2]]</sub>=6<sub>[[Десятичная система счисления|10]]</sub> || 111<sub>[[Двоичная система счисления|2]]</sub>=7<sub>[[Десятичная система счисления|10]]</sub> || 010<sub>[[Двоичная система счисления|2]]</sub>=2<sub>[[Десятичная система счисления|10]]</sub> || 101<sub>[[Двоичная система счисления|2]]</sub>=5<sub>[[Десятичная система счисления|10]]</sub> |
|||
|- |
|- |
||
! Значения бит на выходе |
|||
⚫ | |||
|} |
|} |
||
'''Пример'''. Пусть на входы шифратора, изображённого на [[#Принципиальная схема 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-блока|рисунок]]). |
|||
== Применение == |
== Применение == |
||
S-блоки используются в [[Блочное шифрование|блочных шифрах]] при выполнении [[Симметричное шифрование|симметричного шифрования]] для сокрытия [[:en:Confusion and diffusion#Confusion|статистической связи]] между [[открытый текст|открытым текстом]] и [[шифротекст |
S-блоки используются в [[Блочное шифрование|блочных шифрах]] при выполнении [[Симметричное шифрование|симметричного шифрования]] для сокрытия [[:en:Confusion and diffusion#Confusion|статистической связи]] между [[открытый текст|открытым текстом]] и [[шифротекст]]ом. |
||
Анализ ''n''-разрядного s-блока при большом ''n'' крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений велико (<math>2^n</math>). На практике «блок подстановок» используется как элемент более сложных систем. |
Анализ ''n''-разрядного s-блока при большом ''n'' крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений велико (<math>2^n</math>). На практике «блок подстановок» используется как элемент более сложных систем. |
||
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}}) — шифр, являвшийся стандартным на территории США до принятия [[AES]]; |
* [[DES]] ({{lang-en|'''d'''ata '''e'''ncryption '''s'''tandard}}) — шифр, являвшийся стандартным на территории [[США]] до принятия [[Advanced Encryption Standard|AES]]; |
||
* [[Blowfish]]; |
* [[Blowfish]]; |
||
* [[Twofish]]. |
* [[Twofish]]. |
||
Строка 118: | Строка 126: | ||
== Безопасность == |
== Безопасность == |
||
При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали [[Бэкдор|закладки]] (уязвимости, известные только создателям) в восьми |
При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали [[Бэкдор|закладки]] (уязвимости, известные только создателям) в таблицах подстановок восьми s‑блоков шифра [[DES]]. Авторы DES рассказали<ref>{{статья |
||
| |
|ref=CITEREFCoppersmith1994 |
||
⚫ | |||
| authorlink = Don Coppersmith |
|||
⚫ | |||
| first = Don |
|||
|том=38 |
|||
| last = Coppersmith |
|||
|номер=3 |
|||
⚫ | |||
|страницы=243—250 |
|||
⚫ | |||
⚫ | |||
| volume = 38 |
|||
⚫ | |||
| issue = 3 |
|||
⚫ | |||
| pages = 243–250 |
|||
|язык=en |
|||
| year = 1994 |
|||
|тип=journal |
|||
⚫ | |||
|автор={{Нп3|Coppersmith, Don|Coppersmith, Don||Don Coppersmith}} |
|||
| format = PDF |
|||
⚫ | |год=1994}}</ref> о том, чем руководствовались при составлении таблиц подстановок. Результаты [[Дифференциальный криптоанализ|дифференциального криптоанализа]] шифра DES показали, что числа в таблицах подстановок были тщательно подобраны так, чтобы увеличить стойкость DES к определённым видам атак. [[Бихам, Эли|Бихам]] и [[Шамир, Ади|Шамир]] обнаружили, что даже небольшие изменения в таблицах могут значительно ослабить DES<ref>[http://www.sans.org/reading_room/whitepapers/vpns/s-box-modifications-effect-des-like-encryption-systems_768 Gargiulo's "S-Box modifications and their effect in DES-like encryption systems"] {{Wayback|url=http://www.sans.org/reading_room/whitepapers/vpns/s-box-modifications-effect-des-like-encryption-systems_768 |date=20120520040808 }}. С. 9.</ref>. |
||
⚫ | |||
⚫ | |||
⚫ | }}</ref> о том, чем руководствовались при составлении таблиц подстановок. Результаты [[Дифференциальный криптоанализ|дифференциального криптоанализа]] шифра DES показали, что числа в таблицах подстановок были тщательно подобраны так, чтобы увеличить стойкость DES к определённым видам атак. [[Бихам, Эли|Бихам]] и [[Шамир, Ади|Шамир]] обнаружили, что даже небольшие изменения в таблицах могут значительно ослабить DES<ref>[http://www.sans.org/reading_room/whitepapers/vpns/s-box-modifications-effect-des-like-encryption-systems_768 Gargiulo's "S-Box modifications and their effect in DES-like encryption systems"]. С. 9.</ref>. |
||
== Примечания == |
== Примечания == |
||
Строка 140: | Строка 146: | ||
== Литература == |
== Литература == |
||
* {{cite conference |
* {{cite conference |
||
|author = Kaisa Nyberg |author-link =:en:Kaisa Nyberg |
|||
|title = Perfect nonlinear s-boxes |
|||
|book-title = 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 |
|||
}}{{Недоступная ссылка|date=2018-01|bot=InternetArchiveBot }} |
|||
* {{cite conference |
* {{cite conference |
||
| author1 = S. Mister | author2 = C. Adams | author2-link =:en:Carlisle Adams |
|||
| title = Practical s-box design |
|||
| book-title = Workshop on [[:en:Selected Areas in Cryptography|Selected areas in cryptography]]{{ref-en}} (SAC 1996). Workshop record |
|||
| pages = 61–76 |
|||
| date = 1996 |
|||
| location = [[Университет Куинс в Кингстоне|Queen's University at Kingston]] |
|||
| url = http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.7715 |
|||
| format = [[PostScript]] |
|||
| accessdate = 2007-02-20 |
|||
}} |
|||
* {{ |
* {{книга |
||
|ref=CITEREFSchneier1994 |
|||
|заглавие=Applied cryptography. Second edition |
|||
| last = Schneier |
|||
|ссылка=https://archive.org/details/appliedcryptogra00schn |
|||
| first = Bruce |
|||
⚫ | |||
| authorlink = Bruce Schneier |
|||
|год=1996 |
|||
| title = Applied Cryptography, Second Edition |
|||
|страницы=[https://archive.org/details/appliedcryptogra00schn/page/n992 296]—298, 349 |
|||
⚫ | |||
⚫ | |||
| year = 1996 |
|||
|язык=en |
|||
| pages = 296–298, 349 |
|||
|автор=[[Bruce Schneier|Schneier, Bruce]] |
|||
⚫ | |||
}} |
|||
* {{статья |
|||
|ref=CITEREFEasttom2014 |
|||
|заглавие=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 |
|||
|язык=und |
|||
|автор={{Нп3|Easttom, Chuck|Easttom, Chuck||Chuck Easttom}} |
|||
|год=2014}} |
|||
== |
== См. также == |
||
* [[:en:Rijndael S-box|Rijndael s-box]]{{ref-en}} |
|||
* [[Биекция]] |
|||
* [[Булева функция]] |
|||
* [[:en:Nothing up my sleeve number|Nothing up my sleeve number]] |
|||
* [[Шифр подстановки]] |
|||
* [[:en:Permutation box|Permutation box]]{{ref-en}} ({{lang-en|p-box}}) |
|||
== Ссылки == |
|||
* [http://www.quadibloc.com/crypto/co4513.htm John Savard's "Questions of S-Box Design"] |
* [http://www.quadibloc.com/crypto/co4513.htm John Savard's "Questions of S-Box Design"] |
||
* [http://www.sans.org/reading_room/whitepapers/vpns/s-box-modifications-effect-des-like-encryption-systems_768 Gargiulo's "S-Box Modifications and Their Effect in DES-like Encryption Systems"] |
* [http://www.sans.org/reading_room/whitepapers/vpns/s-box-modifications-effect-des-like-encryption-systems_768 Gargiulo's "S-Box Modifications and Their Effect in DES-like Encryption Systems"] |
||
Строка 180: | Строка 203: | ||
[[Категория:Криптография]] |
[[Категория:Криптография]] |
||
[[Категория:Блочные шифры]] |
Текущая версия от 16:05, 17 июля 2024
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 | |
---|---|---|---|---|---|---|---|---|
Значение на входе дешифратора | 0002=010 | 0012=110 | 0102=210 | 0112=310 | 1002=410 | 1012=510 | 1102=610 | 1112=710 |
Номер выхода дешифратора (по рисунку), на котором установлено значение 1 (на других выходах установлено значение 0) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Номер входа шифратора (по рисунку), на котором установлено значение 1 (на других входах установлено значение 0) | 3 | 0 | 1 | 4 | 6 | 7 | 2 | 5 |
Значение на выходе шифратора | 0112=310 | 0002=010 | 0012=110 | 1002=410 | 1102=610 | 1112=710 | 0102=210 | 1012=510 |
Пример. Пусть на входы шифратора, изображённого на рисунке, подаётся число 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[англ.]. The Data Encryption Standard (DES) and its strength against attacks (англ.) // IBM Journal of Research and Development[англ.] : journal. — 1994. — Vol. 38, no. 3. — P. 243—250. — doi:10.1147/rd.383.0243.
- ↑ Gargiulo's "S-Box modifications and their effect in DES-like encryption systems" Архивная копия от 20 мая 2012 на Wayback Machine. С. 9.
Литература
[править | править код]- Kaisa Nyberg [in английский] (1991). "Perfect nonlinear s-boxes" (PDF). Advances in cryptology - Eurocrypt (англ.) 1991. Brighton. pp. 378—386. Дата обращения: 20 февраля 2007. (недоступная ссылка)
- S. Mister; C. Adams [in английский] (1996). "Practical s-box design" (PostScript). Workshop on Selected areas in cryptography (англ.) (SAC 1996). Workshop record. Queen's University at Kingston. pp. 61—76. Дата обращения: 20 февраля 2007.
- Schneier, Bruce. Applied cryptography. Second edition (англ.). — John Wiley & Sons, 1996. — P. 296—298, 349. — ISBN 0-471-11709-9.
- Easttom, Chuck[англ.]. 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, 2014.
См. также
[править | править код]- 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"
Для улучшения этой статьи желательно:
|