Введение

Основной компонент алгоритмов симметричного шифрования, выполняющий подстановку. В криптографии S-блок (коробка подстановки) является основным компонентом алгоритмов симметричного шифрования, выполняющим подстановку. В блочных шифрах они обычно используются для маскировки связи между ключом и шифротекстом, тем самым обеспечивая свойство замешательства Шеннона. Математически, S-блок представляет собой нелинейную векторную булеву функцию. Как правило, S-блок принимает некоторое количество входных битов, m, и преобразует их в некоторое количество выходных битов, n, где n не обязательно равно m. S-блок размером m×n может быть реализован в виде таблицы поиска, содержащей 2<sup>m</sup> слов по n битов каждое. Обычно используются фиксированные таблицы, как в стандарте шифрования данных (DES), но в некоторых шифрах таблицы генерируются динамически из ключа (например, в алгоритмах шифрования Blowfish и Twofish).

Анализ и свойства

Когда DES был впервые опубликован в 1977 году, критерии проектирования его S-блоков держались в секрете, чтобы не скомпрометировать технику дифференциального криптоанализа (который тогда еще не был публично известен). В результате, исследования, посвященные определению характеристик хороших S-блоков, в то время были немногочисленны. Вместо этого, восемь S-блоков DES на протяжении многих лет подвергались интенсивному изучению из-за опасений, что в шифр мог быть внедрен бэкдор (уязвимость, известная только его создателям). Поскольку S-блоки являются единственной нелинейной частью шифра, их компрометация ставила под угрозу весь шифр. Критерии проектирования S-блоков были в конечном итоге опубликованы (в 2005 году) после повторного публичного открытия дифференциального криптоанализа, что показало, что они были тщательно настроены для повышения устойчивости к этой конкретной атаке, делая ее неэффективнее, чем метод грубой силы. Бихам и Шамир обнаружили, что даже незначительные изменения в S-блоке могут существенно ослабить DES. Любой S-блок, в котором любая линейная комбинация выходных битов является результатом работы изогнутой функции от входных битов, называется идеальным S-блоком. S-блоки можно анализировать с помощью линейного и дифференциального криптоанализа, используя таблицу линейных приближений (LAT) или преобразование Уолша и таблицу распределения разностей (DDT), а также таблицу автокорреляции и спектр. Их устойчивость можно оценить по нелинейности (изогнутой, почти изогнутой) и дифференциальной однородности (совершенно нелинейной, почти совершенно нелинейной).