S-блок (информатика): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м papers and links
 
(не показано 37 промежуточных версий 24 участников)
Строка 1: Строка 1:
{{О|s-блоке химических элементов|s-элементы|п1=Об}}
[[Файл:S-block.svg|Сеть Фейстеля: шифрование|frame|<center>Принципиальная схема 3-разрядного S-блока</center>]]


'''S-блок''' (или ''блок подстановок'', {{lang-en|s-box}} от {{lang-en2|substitution-box}}) — [[Функция (программирование)|функция]] в коде [[Компьютерная программа|программы]] или аппаратная система, принимающая на входе {{nobr|''n'' [[бит]]}}, преобразующая их по определённому алгоритму и возвращающая на выходе {{nobr|''m'' [[бит]]}}. ''n'' и ''m'' не обязательно равны<ref name="chandra-516">{{книга
S-блок ('''S-box''') — Табличная подстановка, при которой группа битов отображается в другую группу битов.
| автор = {{nobr|Chandrasekaran, J. et al.}}
S-блок используется, как промежуточная операция в алгоритмах [[Симметричное шифрование|симметричного шифрования]].
| часть = A chaos based approach for improving non linearity in the s-box design of symmetric key cryptosystems
| editors = Meghanathan, N. et al.
| заглавие = 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
| isbn = 978-3-642-17877-1
| страницы = 516
| ссылка = https://books.google.com/books?id=pXOS4ZTUJLYC&pg=PA516
}}</ref>.


S-блоки используются в [[Блочное шифрование|блочных шифрах]].


В электронике можно непосредственно применять схему, приведённую на [[#Принципиальная схема 3-разрядного s-блока|рисунке]]. В программировании же создают [[Таблица поиска|таблицы]] замен (подстановочные таблицы, таблицы подстановок). Оба этих подхода являются эквивалентными, то есть [[Открытый текст|данные]], зашифрованные на компьютере, можно расшифровать на электронном устройстве и наоборот.
Блок подстановок (S-блок) состоит из [[дешифратор]]а, преобразующего [[Числовой разряд|n-разрядный]] двоичный сигнал в одноразрядный сигнал по основанию <math>2^n</math>, системы [[коммутатор]]ов внутренних соединений (всего соединений <math>2^n!</math>) и [[Шифратор (электроника)|шифратора]], переводящего сигнал из одноразрядного <math>2^n</math>-ричного в n-разрядный двоичный. Анализ n-разрядного S-блока при большом n крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений крайне велико (<math>2^n!</math>). На практике блок подстановок используется как часть более сложных систем.


S-блок называется '''идеальным''' ({{lang-en|perfect s‑box}})<ref>RFC 4086. Section 5.3 "Using s‑boxes for mixing"</ref>, если значения выходных бит вычисляются [[Бент-функция|бент-функцией]] на основе значений входных бит и любая [[линейная комбинация]] выходных бит является [[Бент-функция|бент-функцией]] от входных бит.
В общем случае S-блок может иметь несовпадающее число входов/выходов, в этом случае в системе коммутации от каждого выхода дешифратора может идти не строго одно соединение, а 2 или более или не идти вовсе. То же самое справедливо и для входов шифратора.


== Программная реализация ==
В электронике можно непосредственно применять приведённую справа схему, в программировании же генерируют таблицы замены. Оба этих подхода являются эквивалентными, то есть файл, зашифрованный на компьютере, можно расшифровать на электронном устройстве и наоборот.

{| class="standard"
Программная реализация s‑блока работает следующим образом:
|+ Таблица замены для приведённого 3-разрядного S-блока
* читается значение на входе (аргумент [[Функция (программирование)|функции]]);
!№ комбинации ||0 ||1 ||2 ||3 ||4 ||5 ||6 ||7
* выполняется поиск прочитанного значения по [[Таблица поиска|таблице]];
* по определённому правилу выбирается ячейка таблицы; из ячейки читается выходное значение; выходное значение возвращается из функции.

Используемая таблица называется «таблицей замен» или «таблицей подстановок». Таблица может:
* быть неизменной (фиксированной) ({{lang-en|static}});
* генерироваться на основе [[Ключ (криптография)|ключа]] ({{lang-en|dynamic}}).

Например, для шифра (алгоритма) [[DES]] используется фиксированная таблица, а для шифров [[Blowfish]] и [[Twofish]] таблица создаётся на основе ключа.

[[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‑блок принимает на входе {{nobr|6 [[бит]]}} (<math>n=6</math>), а на выходе возвращает {{nobr|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
!Вход
|000 ||001 ||010 ||011 ||100 ||101 ||110 ||111
|-
|-
! rowspan="4" | Значения 1‑го и 6‑го [[бит]] на входе
!Выход
! 00
|011 ||000 ||001 ||100 ||110 ||111 ||010 ||101
| 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».
* [[Advanced Encryption Standard|AES]] ({{lang-en|Advanced Encryption Standard}}) — американский стандарт шифрования
* 2‑й, 3‑й, 4‑й и 5‑й биты на входе равны «1101».
* [[ГОСТ 28147-89]] — отечественный стандарт шифрования данных
* На пересечении строки «01» и столбца «1101» находим ячейку «1001» — значения бит на выходе.
* [[DES]] ({{lang-en|Data Encryption Standard}}) — стандарт шифрования данных в США до AES

* [[Twofish]]
== Аппаратная реализация ==
{{anchor|Принципиальная схема 3-разрядного s-блока}}
[[Файл:S-block.svg|thumb|[[Принципиальная схема]] трёхразрядного (<math>n=3</math>) s-блока]]

Аппаратная реализация s‑блока (см. [[#Принципиальная схема 3-разрядного s-блока|рис.]]) состоит из следующих устройств:
* [[дешифратор]];
* система коммутаторов;
* [[Шифратор (электроника)|шифратор]].

'''[[Дешифратор]]''' — устройство, преобразующее ''n''‑[[Числовой разряд|разрядный]] [[Двоичный код|двоичный]] [[сигнал]] в одноразрядный сигнал по [[Позиционная система счисления#Основание системы счисления|основанию]] <math>2^n</math>.

Например, для s-блока, изображённого на [[#Принципиальная схема 3‑разрядного s-блока|рисунке]], дешифратор выполняет преобразование трёхразрядного сигнала (<math>n=3</math>) в восьмиразрядный (<math>2^3=8</math>).

'''Система коммутаторов''' — внутренние соединения, выполняющие перестановку [[бит]]. Если ''m=n'', количество соединений равно <math>2^n</math>. Каждый входной [[бит]] отображается в выходной бит, расположенный в том же или ином [[Числовой разряд|разряде]]. Если число входов ''n'' и выходов ''m'' не равно, от каждого выхода дешифратора может идти ноль, одно, два или более соединений. Это же справедливо и для входов шифратора.

Для s-блока, изображённого на [[#Принципиальная схема 3-разрядного s-блока|рисунке]], <math>n=m=3</math>, число соединений равно <math>2^n=2^3=8</math>.

'''[[Шифратор (электроника)|Шифратор]]''' — устройство, переводящее сигнал из одноразрядного <math>2^n</math>-ричного в ''n''‑разрядный двоичный.

Для s‑блока, изображённого на [[#Принципиальная схема 3-разрядного s-блока|рисунке]], можно составить следующую таблицу замен (таблицу подстановок).

{| 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)
|| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7
|-
| Номер входа шифратора (по [[#Принципиальная схема 3-разрядного s-блока|рисунку]]), на котором установлено значение 1 (на других входах установлено значение 0)
|| 3 || 0 || 1 || 4 || 6 || 7 || 2 || 5
|-
! Значение на выходе шифратора
|| 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|статистической связи]] между [[открытый текст|открытым текстом]] и [[шифротекст]]ом.

Анализ ''n''-разрядного s-блока при большом ''n'' крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений велико (<math>2^n</math>). На практике «блок подстановок» используется как элемент более сложных систем.

S-блоки используются в следующих шифрах:
* [[Advanced Encryption Standard|AES]] ({{lang-en|'''a'''dvanced '''e'''ncryption '''s'''tandard}}) — шифр, являющийся стандартным на территории [[США]];
* [[ГОСТ 28147-89]] — отечественный стандарт шифрования данных;
* [[DES]] ({{lang-en|'''d'''ata '''e'''ncryption '''s'''tandard}}) — шифр, являвшийся стандартным на территории [[США]] до принятия [[Advanced Encryption Standard|AES]];
* [[Blowfish]];
* [[Twofish]].

== Безопасность ==

При проектировании s‑блока особое внимание следует уделять составлению «таблицы подстановок». Многие годы исследователи искали [[Бэкдор|закладки]] (уязвимости, известные только создателям) в таблицах подстановок восьми s‑блоков шифра [[DES]]. Авторы DES рассказали<ref>{{статья
|ref=CITEREFCoppersmith1994
|заглавие=The Data Encryption Standard (DES) and its strength against attacks
|издание={{Нп3|IBM Journal of Research and Development}}
|том=38
|номер=3
|страницы=243—250
|ссылка=https://dx.doi.org/10.1147/rd.383.0243
|accessdate=2007-02-20
|doi=10.1147/rd.383.0243
|язык=en
|тип=journal
|автор={{Нп3|Coppersmith, Don|Coppersmith, Don||Don Coppersmith}}
|год=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>.


== Примечания ==
== Примечания ==

{{примечания}}
{{примечания}}


== Литература ==
== Литература ==
* {{cite conference
* {{cite conference
| author = [[Kaisa Nyberg]]
|author = Kaisa Nyberg |author-link =:en:Kaisa Nyberg
| title = Perfect nonlinear S-boxes
|title = Perfect nonlinear s-boxes
| booktitle = Advances in Cryptology - [[EUROCRYPT]] '91
|book-title = Advances in cryptology - [[:en:Eurocrypt|Eurocrypt]]{{ref-en}} 1991
| pages = 378&ndash;386
|pages = 378–386
| date = 1991
|date = 1991
| location = [[Brighton]]
|location = [[Брайтон|Brighton]]
| url = ftp://ftp.zedz.net/pub/mirrors/Advances%20in%20Cryptology/HTML/PDF/E91/378.PDF
|url = ftp://ftp.zedz.net/pub/mirrors/Advances%20in%20Cryptology/HTML/PDF/E91/378.PDF
| format = [[PDF]]
|format = [[PDF]]
| accessdate = 2007-02-20 }}
|accessdate = 2007-02-20
}}{{Недоступная ссылка|date=2018-01|bot=InternetArchiveBot }}
* {{cite conference
* {{cite conference
| author = S. Mister and [[Carlisle Adams|C. Adams]]
| author1 = S. Mister | author2 = C. Adams | author2-link =:en:Carlisle Adams
| title = Practical S-Box Design
| title = Practical s-box design
| booktitle = Workshop on [[Selected Areas in Cryptography]] (SAC '96) Workshop Record
| book-title = Workshop on [[:en:Selected Areas in Cryptography|Selected areas in cryptography]]{{ref-en}} (SAC 1996). Workshop record
| pages = 61&ndash;76
| pages = 61–76
| date = 1996
| date = 1996
| location = [[Queens University]]
| location = [[Университет Куинс в Кингстоне|Queen's University at Kingston]]
| url = http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.7715
| url = http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.7715
| format = [[PostScript]]
| format = [[PostScript]]
| accessdate = 2007-02-20 }}
| accessdate = 2007-02-20
}}
* {{cite book
* {{книга
| ref = CITEREFSchneier1994
|ref=CITEREFSchneier1994
|заглавие=Applied cryptography. Second edition
| last = Schneier
|ссылка=https://archive.org/details/appliedcryptogra00schn
| first = Bruce
|издательство=[[John Wiley & Sons]]
| authorlink = Bruce Schneier
|год=1996
| title = Applied Cryptography, Second Edition
|страницы=[https://archive.org/details/appliedcryptogra00schn/page/n992 296]—298, 349
| publisher = [[John Wiley & Sons]]
|isbn=0-471-11709-9
| year = 1996
|язык=en
| pages = 296&ndash;298, 349
|автор=[[Bruce Schneier|Schneier, Bruce]]
| isbn = 0-471-11709-9 }}
}}
* {{статья
|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}})


== Ссылки ==
== Ссылки ==
Строка 69: Строка 203:


[[Категория:Криптография]]
[[Категория:Криптография]]
[[Категория:Блочные шифры]]

Текущая версия от 16:05, 17 июля 2024

S-блок (или блок подстановок, англ. s-box от substitution-box) — функция в коде программы или аппаратная система, принимающая на входе n бит, преобразующая их по определённому алгоритму и возвращающая на выходе m бит. n и m не обязательно равны[1].

S-блоки используются в блочных шифрах.

В электронике можно непосредственно применять схему, приведённую на рисунке. В программировании же создают таблицы замен (подстановочные таблицы, таблицы подстановок). Оба этих подхода являются эквивалентными, то есть данные, зашифрованные на компьютере, можно расшифровать на электронном устройстве и наоборот.

S-блок называется идеальным (англ. perfect s‑box)[2], если значения выходных бит вычисляются бент-функцией на основе значений входных бит и любая линейная комбинация выходных бит является бент-функцией от входных бит.

Программная реализация

[править | править код]

Программная реализация s‑блока работает следующим образом:

  • читается значение на входе (аргумент функции);
  • выполняется поиск прочитанного значения по таблице;
  • по определённому правилу выбирается ячейка таблицы; из ячейки читается выходное значение; выходное значение возвращается из функции.

Используемая таблица называется «таблицей замен» или «таблицей подстановок». Таблица может:

  • быть неизменной (фиксированной) (англ. static);
  • генерироваться на основе ключа (англ. dynamic).

Например, для шифра (алгоритма) DES используется фиксированная таблица, а для шифров Blowfish и Twofish таблица создаётся на основе ключа.

Таблицы замен s‑блоков шифра DES

Пример[3]. Рассмотрим работу с таблицей пятого s‑блока () шифра DES. Пятый s‑блок принимает на входе бит (), а на выходе возвращает бита (). Пронумеруем входные биты слева направо от 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-блока

Аппаратная реализация 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].

Примечания

[править | править код]
  1. 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.
  2. RFC 4086. Section 5.3 "Using s‑boxes for mixing"
  3. 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.
  4. 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.
  5. Gargiulo's "S-Box modifications and their effect in DES-like encryption systems" Архивная копия от 20 мая 2012 на Wayback Machine. С. 9.

Литература

[править | править код]