SP-сеть
![](https://upload.wikimedia.org/wikipedia/ru/4/48/Lucifer_v1.png)
SP-сеть (Substitution-Permutation network, подстановочно-перестановочная сеть) — разновидность блочного шифра, предложенная в 1971 году Хорстом Фейстелем. В простейшем варианте представляет собой «сэндвич» из слоёв двух типов, используемых многократно по очереди. Первый тип слоя — P-слой, состоящий из P-блока большой разрядности, за ним идёт второй тип слоя — S-слой, представляющий собой большое количество S-блоков малой разрядности, потом опять P-слой и т. д. Первым криптографическим алгоритмом на основе SP-сети был «Люцифер» (1971). В настоящее время из алгоритмов на основе SP-сетей широко используется AES (Rijndael). Альтернативой SP-сетям являются сети Фейстеля.
В современных алгоритмах вместо S- и P-блоков используются различные математические или логические функции. Любая двоичная функция может быть сведена к S-блоку, некоторые функции — к P-блоку. Например, к P-блоку сводится циклический сдвиг, сам P-блок является частным случаем S-блока. Такие функции, как правило, легко реализуются в аппаратуре, обеспечивая при этом хорошую криптостойкость..
Принцип работы
[править | править код]![](https://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/SubstitutionPermutationNetwork2.png/250px-SubstitutionPermutationNetwork2.png)
Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage) и стадий перестановки (англ. permutation stage)[1].
Для достижения безопасности достаточно одного S-блока, но такой блок будет требовать большого объёма памяти. Поэтому используются маленькие S-блоки, смешанные с P-блоками[2].
Нелинейная стадия подстановки перемешивает биты ключа с битами открытого текста, создавая конфузию Шеннона. Линейная стадия перестановки распределяет избыточность по всей структуре данных, порождая диффузию[3][4].
S-блок (англ. substitution box or S-box) замещает маленький блок входных бит на другой блок выходных бит. Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость. Назначение S-блока заключается в нелинейном преобразовании, что препятствует проведению линейного криптоанализа. Одним из свойств S-блока является лавинный эффект, то есть изменение одного бита на входе приводит к изменению всех бит на выходе[5].
P-блок (англ. permutation box or P-box) — перестановка всех бит: блок получает на вход вывод S-блока, меняет местами все биты и подает результат S-блоку следующего раунда. Важным качеством P-блока является возможность распределить вывод одного S-блока между входами как можно больших S-блоков.
Для каждого раунда используется свой, получаемый из первоначального, ключ. Подобный ключ называется раундовым. Он может быть получен как делением первоначального ключа на равные части, так и каким-либо преобразованием всего ключа.
Алгоритмы
[править | править код]Следующие алгоритмы используют SP-сеть:
- 3-Way
- ABC
- AES (Rijndael)
- Akelarre
- Anubis
- ARIA
- BaseKing
- BassOmatic
- BelT
- CRYPTON
- Diamond2
- Grand Cru
- Hierocrypt-L1
- Hierocrypt-3
- KHAZAD
- Lucifer (в первой версии)
- Present
- Rainbow
- SAFER
- SC2000 (также использует сеть Фейстеля)
- SHARK
- Serpent
- SQUARE
- Threefish
- Кузнечик
Примечания
[править | править код]- ↑ Keliher, Liam et al. Modeling Linear Characteristics of Substitution-Permutation Networks // Selected areas in cryptography: 6th annual international workshop, SAC'99, Kingston, Ontario, Canada, August 9-10, 1999: proceedings (англ.) / Hays, Howard & Carlisle, Adam. — Springer, 2000. — P. 79. — ISBN 9783540671855.
- ↑ Шнайер, 2002.
- ↑ Baigneres, Thomas & Finiasz, Matthieu. Dial 'C' for Cipher // Selected areas in cryptography: 13th international workshop, SAC 2006, Montreal, Canada, August 17-18, 2006: revised selected papers (англ.) / Biham, Eli & Yousseff, Amr. — Springer, 2007. — P. 77. — ISBN 9783540744610.
- ↑ Cusick, Thomas W. & Stanica, Pantelimon. Cryptographic Boolean functions and applications (англ.). — Academic Press, 2009. — P. 164. — ISBN 9780123748904.
- ↑ Katz, Jonathan; Lindell, Yehuda. Introduction to modern cryptography (неопр.). — CRC Press, 2008. — ISBN 9781584885511., pages 166—167
Литература
[править | править код]- Брюс Шнайер. "Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си". — М.: Триумф, 2002. — ISBN 5-89392-055-4.