S-DES на пальцах
S-DES — учебная версия DES: блок 8 бит, ключ 10 бит, два раунда. Реального шифрования он не даёт, зато на нём видно всю структуру сети Фейстеля целиком.
Генерация подключей
- Ключ проходит перестановку P10.
- Делим на две половины по 5 бит и сдвигаем каждую циклически влево на 1 (LS-1).
- Перестановка со сжатием P8 даёт K1.
- Ещё раз сдвигаем половины, теперь на 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.