S-DES на пальцах

  криптография

S-DES — учебная версия DES: блок 8 бит, ключ 10 бит, два раунда. Реального шифрования он не даёт, зато на нём видно всю структуру сети Фейстеля целиком.

Генерация подключей

  1. Ключ проходит перестановку P10.
  2. Делим на две половины по 5 бит и сдвигаем каждую циклически влево на 1 (LS-1).
  3. Перестановка со сжатием P8 даёт K1.
  4. Ещё раз сдвигаем половины, теперь на 2 бита (LS-2), и снова P8 — это K2.

Классический пример из учебника Столлингса: ключ 1010000010 даёт K1 = 10100100 и K2 = 01000011.

Схема шифрования

шифротекст = IP⁻¹( fK2( SW( fK1( IP(открытый текст) ) ) ) )

Функция fK берёт правую половину, расширяет её до 8 бит (E/P), складывает по XOR с подключом, прогоняет через S-блоки S0 и S1, переставляет P4 и результат XOR-ит с левой половиной. Правая половина при этом не меняется, поэтому между раундами половины меняют местами (SW).

Расшифрование

Та же схема, только подключи идут в обратном порядке: сначала K2, потом K1. Это и есть главное удобство сети Фейстеля: одна и та же функция и для шифрования, и для расшифрования.

Типичная ошибка при ручном расчёте: забыть, что LS-2 применяется к результату LS-1, а не к исходному ключу после P10.