В криптографии, SP-сеть, или замещение-перестановка сети ( SPN ), представляет собой ряд связанных математических операций, используемых в блочного шифра алгоритмов, таких как AES (Rijndael), 3-Way, калина, Kuznyechik, НАСТОЯЩЕЕ, SAFER, SHARK, и площадь.
Такая сеть принимает блок открытого текста и ключ в качестве входных данных и применяет несколько чередующихся «раундов» или «слоев» блоков подстановки (S-блоков) и блоков перестановок (P-блоков) для создания блока зашифрованного текста. S-блоки и P-блоки преобразуют (под) блоки входных битов в выходные биты. Обычно эти преобразования представляют собой операции, которые эффективно выполнять аппаратно, например исключающее ИЛИ (XOR) и побитовое вращение. Ключ вводится в каждом раунде, обычно в форме полученных на его основе «ключей раунда». (В некоторых конструкциях сами S-блоки зависят от ключа.)
Расшифровка выполняется путем простого обращения процесса (используя инверсии S-блоков и P-блоков и применяя круглые ключи в обратном порядке).
S-коробка заменяет небольшой блок битов ( на вход S-блока) с помощью другого блока битов (выходной сигнал S-поле). Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость (следовательно, расшифровку). В частности, длина вывода должна быть такой же, как длина ввода (изображение справа имеет S-блоки с 4 входными и 4 выходными битами), что отличается от S-блоков в целом, которые также могут изменяться. длина, например, как в DES (стандарт шифрования данных). S-блок обычно не просто перестановка битов. Скорее, хороший S-блок будет обладать тем свойством, что изменение одного входного бита изменит примерно половину выходных битов (или лавинный эффект ). Он также будет иметь свойство, что каждый выходной бит будет зависеть от каждого входного бита.
P-бокс представляет собой перестановку всех бит: он принимает выходные сигналы всех S-блоки одного раунда, переставляют биты, и подают их в S-боксы следующего раунда. Хороший P-блок обладает тем свойством, что выходные биты любого S-блока распределяются по как можно большему количеству входов S-блока.
В каждом раунде ключ раунда (полученный из ключа с помощью некоторых простых операций, например, с использованием S-блоков и P-блоков) объединяется с использованием некоторой групповой операции, обычно XOR.
Один типичный S-блок или один P-блок сами по себе не обладают большой криптографической стойкостью: S-блок можно рассматривать как шифр замещения, а P-блок можно рассматривать как шифр транспозиции. Однако хорошо спроектированная сеть SP с несколькими чередующимися раундами S- и P-блоков уже удовлетворяет свойствам смешения и распространения Шеннона :
Хотя сеть Фейстеля, в которой используются S-блоки (такие как DES ), очень похожа на сети SP, есть некоторые отличия, которые делают то или иное более применимым в определенных ситуациях. При заданном количестве путаницы и распространения сеть SP имеет больше «присущего параллелизма», и поэтому - при наличии ЦП с множеством исполнительных блоков - может быть вычислена быстрее, чем сеть Фейстеля. ЦП с небольшим количеством исполнительных блоков, например, с большинством смарт-карт, не могут воспользоваться этим присущим параллелизмом. Также шифры SP требуют, чтобы S-блоки были обратимыми (для выполнения дешифрования); Внутренние функции Фейстеля не имеют такого ограничения и могут быть построены как односторонние функции.