SP-сеть

SP-сеть (Substitution-Permutation network, подстановочно-перестановочная сеть) — разновидность блочного шифра, предложенная в 1971 году Хорстом Фейстелем. В простейшем варианте представляет собой «сэндвич» из слоёв двух типов, используемых многократно по очереди. Первый тип слоя — P-слой, состоящий из P-блока большой разрядности, за ним идёт второй тип слоя — S-слой, представляющий собой большое количество S-блоков малой разрядности, потом опять P-слой и т. д. Первым криптографическим алгоритмом на основе SP-сети был «Люцифер» (1971). В настоящее время из алгоритмов на основе SP-сетей широко используется AES (Rijndael). Альтернативой SP-сетям являются сети Фейстеля.

Упрощённая схема S- и P-слоёв в алгоритме «Люцифер» (июнь 1971)

В современных алгоритмах вместо S- и P-блоков используются различные математические или логические функции. Любая двоичная функция может быть сведена к S-блоку, некоторые функции — к P-блоку. Например, к P-блоку сводится циклический сдвиг, сам P-блок является частным случаем S-блока. Такие функции, как правило, легко реализуются в аппаратуре, обеспечивая при этом хорошую криптостойкость..

Принцип работы править

 
Пример SP-сети с 3 раундами

Шифр на основе 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-сеть:

Примечания править

  1. 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.
  2. Шнайер, 2002.
  3. 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.
  4. Cusick, Thomas W. & Stanica, Pantelimon. Cryptographic Boolean functions and applications (англ.). — Academic Press, 2009. — P. 164. — ISBN 9780123748904.
  5. Katz, Jonathan; Lindell, Yehuda. Introduction to modern cryptography (неопр.). — CRC Press, 2008. — ISBN 9781584885511., pages 166—167

Литература править

  • Брюс Шнайер. "Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си". — М.: Триумф, 2002. — ISBN 5-89392-055-4.