Как одна конструкция решила старую проблему шифрования — и легла в основу DES, российской Магмы и десятков других алгоритмов
Чтобы расшифровать блочный шифр, нужно каким-то образом отменить то перемешивание, которым его зашифровали. Придумать одну хорошую перемешивающую функцию — уже непростая задача. А придумать вдобавок к ней чистую математическую обратную функцию и реализовать обе — вдвое больше работы, и вдвое больше шансов ошибиться.
В начале 1970-х в IBM Хорст Фейстель предложил структурный трюк: разрезать блок данных пополам на L и R, прогнать одну половину — вместе с подключом раунда — через функцию F, которая может быть сколь угодно сложной и необратимой, сложить результат с другой половиной, а затем поменять половины местами. Повторить несколько раз.
Если разобрать раунд на шаги, вся конструкция окажется на удивление простой:
Блок данных делится пополам на левую половину L и правую R. В DES это 32 и 32 бита от 64-битного блока, в игре Ludus Lab — 4 и 4 бита от одного байта.
Правая половина R складывается с подключом этого раунда и проходит через функцию F — в DES и Магме это набор S-блоков, таблиц замен, которые и дают шифру нелинейность.
Результат F складывается по модулю 2 с левой половиной L — так получается новая правая половина. После этого половины меняются местами.
Всё повторяется снова и снова, каждый раз с новым подключом: 16 раз в DES, 32 раза в Магме. Чем больше раундов, тем труднее найти закономерность между открытым текстом и шифротекстом.
После последнего раунда половины меняются местами ещё раз — это и даёт главное свойство сети Фейстеля: чтобы расшифровать, Боб запускает точно такой же алгоритм, но подаёт подключи в обратном порядке.
F может быть какой угодно сложной и необратимой — обратима сама схема «раздели, перемешай, поменяй местами».
Идея Фейстеля не осталась теорией — на ней построена значительная часть симметричной криптографии XX века:
Первый шифр на структуре Фейстеля, созданный самим Хорстом Фейстелем и его командой в IBM.
Прямой предок DES
Доработанный Lucifer стал стандартом США на четверть века — 64-битный блок, 56-битный ключ, 16 раундов.
Ключ: 56 бит — сегодня этого мало
Независимая советская разработка на той же идее: 64-битный блок, но ключ 256 бит и 32 раунда.
Сегодня — ГОСТ Р 34.12-2015
Схема Фейстеля оказалась настолько удачной, что легла в основу ещё нескольких поколений шифров:
В интерактивной демонстрации Ludus Lab вы сможете:
Оба алгоритма — сети Фейстеля, но с разным масштабом и разной судьбой:
| Параметр | DES | Магма (ГОСТ 28147-89) |
|---|---|---|
| Страна разработки | США | СССР / Россия |
| Год принятия | 1977 | 1989 (сегодня — ГОСТ Р 34.12-2015) |
| Архитектура | Сеть Фейстеля | Сеть Фейстеля |
| Размер блока | 64 бита | 64 бита |
| Длина ключа | 56 бит | 256 бит |
| Число раундов | 16 | 32 |
| S-блоки | Зафиксированы стандартом с 1977 года | Изначально ведомственный секрет; единый набор закреплён лишь в 2015-м |
| Регулятор | NIST (США) | ФСБ России |
В 1990 году криптографы Эли Бихам и Ади Шамир опубликовали дифференциальный криптоанализ — мощную атаку на блочные шифры. Публика была поражена: оказалось, что S-блоки DES на удивление хорошо устойчивы именно к этой атаке.
Ответ нашёлся позже: по словам одного из инженеров IBM, Дона Копперсмита, команда IBM знала о дифференциальном криптоанализе ещё в начале 1970-х и намеренно спроектировала S-блоки DES так, чтобы противостоять ему — но по требованию АНБ держала это в секрете почти два десятилетия.
56-битный ключ DES даёт около 7×1016 вариантов — в 1977 году этого хватало. К 1998 году фонд Electronic Frontier Foundation построил специализированную машину «Deep Crack» стоимостью около 250 000 долларов, которая перебрала ключ примерно за 56 часов.
Это публично доказало, что 56 бит недостаточно. На замену пришёл переходный 3DES (тройное применение DES), а затем, в 2001 году, — AES, выбранный по итогам открытого международного конкурса.
Открытые альтернативы DES без патентных ограничений, разработанные Брюсом Шнайером в 1990-х
Совместная разработка японских компаний, международный стандарт ISO/IEC, используется в TLS
Сеть Фейстеля в основе алгоритмов конфиденциальности сетей 3G/UMTS
Теперь вы понимаете, почему функция F не обязана быть обратимой, и как из этой идеи выросли DES, Магма и десятки других шифров
В демонстрации вы на одном байте пройдёте весь путь от открытого текста до шифротекста и обратно — и увидите, почему эта структура работает