FEAL

FEAL
Создатель Акихиро Симидзу и Сёдзи Миягути (NTT)
Опубликован FEAL-4 в 1987; FEAL-N/NX в 1990
Размер ключа 64 бит (FEAL), 128 бит (FEAL-NX)
Размер блока 64 бит
Число раундов изначально 4, потом 8 и потом переменное количество (рекомендуемое — 32)
Тип Сеть Фейстеля

FEAL (англ. Fast data Encipherment ALgorithm) — блочный шифр, разработанный Акихиро Симидзу и Сёдзи Миягути — сотрудниками компании NTT.

В нём используются 64-битовый блок и 64-битовый ключ. Его идея состоит и в том, чтобы создать алгоритм, подобный DES, но с более сильной функцией этапа. Используя меньше этапов, этот алгоритм мог бы работать быстрее. К тому же, в отличие от DES, функция этапа для FEAL не использует S-блоки, поэтому реализация алгоритма не требует дополнительной памяти для хранения таблиц замены[1].

История

Опубликованный в 1987 году Акихиро Симидзу и Сёдзи Миягути блочный шифр FEAL был разработан с целью повысить скорость шифрования без ухудшения надежности шифра, по сравнению с DES. Первоначально алгоритм использовал блоки размером 64 бита, ключ размером 64 бита и 4 раунда шифрования. Однако, уже в 1988 году была опубликована работа Берта ден Боера (англ. Bert Den-Boer) , доказывающая достаточность владения 10000 шифротекстов для проведения успешной атаки на основе подобранного открытого текста[2]. К шифру FEAL одному из первых был применен линейный криптоанализ. В том числе в 1992 году Митсуру Мацуи и Ацухиро Ямагиси доказали, что достаточно узнать 5 шифротекстов для проведения успешной атаки[3].

Для борьбы с обнаруженными уязвимостями создатели удвоили число раундов шифрования, опубликовав стандарт FEAL-8. Однако, уже в 1990 году Генри Гилберт (англ. Henri Gilbert) обнаружил уязвимость и этого шифра перед атакой на основе подобранного открытого текста[4]. Далее в 1992 году Мицуру Мацуи и Ацухиро Ямагиси (Mitsuru Matsui and Atsuhiro Yamagishi) описали атаку на основе открытых текстов, требующую 2 15 {\displaystyle 2^{15}} известных шифротекстов[3].

В связи с большим числом успешных атак, разработчиками было принято решение еще усложнить шифр. А именно, в 1990 году был представлен FEAL-N, где N — произвольное четное число раундов шифрования, и представлен FEAL-NX, где X (от англ. extended) обозначает использование расширенного до 128 бит ключа шифрования. Однако данное нововведение помогло лишь частично. В 1991 году Эли Бихам и Ади Шамир, используя методы дифференциального криптоанализа, показали возможность взлома шифра с числом раундов N 31 {\displaystyle N\leq 31} быстрее, чем полным перебором[5].

Тем не менее, благодаря интенсивности исследования алгоритма шифрования сообществом, были доказаны границы уязвимости шифра перед линейным и дифференциальным криптоанализом. Устойчивость алгоритма с числом раундов большим 26 к линейному криптоанализу показали в своей работе Сихо Мораи, Кадзумаро Аоки и Кадзуо Ота[6], а в работе Казумаро Аоки, Кунио Кобаяси и Шихо Мораи была доказана невозможность применить дифференциальный криптоанализ к алгоритму, использующему больше 32 раундов шифрования[7].

Описание

В качестве входа процесса шифрования в алгоритме FEAL-NX используется 64-битовый блок открытого текста[1][8]. Процесс шифрования разбит на 3 стадии.

  1. Предобработка
  2. Итеративное вычисление
  3. Постобработка

Кроме того, описан процесс генерации раундовых ключей, с которого и начинается шифрование, а также функции S 0 , S 1 , F , F k {\displaystyle S_{0},\;S_{1},\;F,\;F_{k}} , с помощью которых и производятся преобразования.

Определим (A,B) — операцию конкатенации двух последовательностей бит.

Определим ϕ {\displaystyle \phi }  — нулевой блок длины 32 бита.

Функция S

S 0 ( a , b ) {\displaystyle S_{0}(a,b)} = циклический сдвиг влево на 2 бита ( ( a + b ) mod 256 ) {\displaystyle ((a+b)\mod {256})}

S 1 ( a , b ) {\displaystyle S_{1}(a,b)} = циклический сдвиг влево на 2 бита ( ( a + b + 1 ) mod 256 ) {\displaystyle ((a+b+1)\mod {256})}

Функция F

Схема функции F

Функция F берёт 32 бита данных и 16 битов ключа и смешивает их вместе.

  1. F = F ( α , β ) = ( F 0 , F 1 , F 2 , F 3 ) {\displaystyle F=F(\alpha ,\beta )=(F_{0},F_{1},F_{2},F_{3})}
  2. α = ( α 0 , α 1 , α 2 , α 3 ) ; β = ( β 0 , β 1 ) {\displaystyle \alpha =(\alpha _{0},\alpha _{1},\alpha _{2},\alpha _{3});\;\beta =(\beta _{0},\beta _{1})}
  3. F 1 = α 1 β 0 {\displaystyle F_{1}=\alpha _{1}\oplus \beta _{0}}
  4. F 2 = α 2 β 1 {\displaystyle F_{2}=\alpha _{2}\oplus \beta _{1}}
  5. F 1 = F 1 α 0 {\displaystyle F_{1}=F_{1}\oplus \alpha _{0}}
  6. F 2 = F 2 α 3 {\displaystyle F_{2}=F_{2}\oplus \alpha _{3}}
  7. F 1 = S 1 ( F 1 , F 2 ) {\displaystyle F_{1}=S_{1}(F_{1},F_{2})}
  8. F 2 = S 0 ( F 2 , F 1 ) {\displaystyle F_{2}=S_{0}(F_{2},F_{1})}
  9. F 0 = S 0 ( α 0 , F 1 ) {\displaystyle F_{0}=S_{0}(\alpha _{0},F_{1})}
  10. F 3 = S 1 ( α 3 , F 2 ) {\displaystyle F_{3}=S_{1}(\alpha _{3},F_{2})}

Функция F k {\displaystyle F_{k}}

Схема функции F k {\displaystyle F_{k}}

Функция F k {\displaystyle F_{k}} работает с двумя 32 битовыми словами.

  1. F k = F k ( α , β ) = ( F k 0 , F k 1 , F k 2 , F k 3 ) {\displaystyle F_{k}=F_{k}(\alpha ,\beta )=(F_{k_{0}},F_{k_{1}},F_{k_{2}},F_{k_{3}})}
  2. α = ( α 0 , α 1 , α 2 , α 3 ) ; β = ( β 0 , β 1 , β 2 , β 3 ) {\displaystyle \alpha =(\alpha _{0},\alpha _{1},\alpha _{2},\alpha _{3});\;\beta =(\beta _{0},\beta _{1},\beta _{2},\beta _{3})}
  3. F k 1 = α 1 α 0 {\displaystyle F_{k_{1}}=\alpha _{1}\oplus \alpha _{0}}
  4. F k 2 = α 2 α 3 {\displaystyle F_{k_{2}}=\alpha _{2}\oplus \alpha _{3}}
  5. F k 1 = S 1 ( F k 1 , ( F k 2 β 0 ) ) {\displaystyle F_{k_{1}}=S_{1}(F_{k_{1}},(F_{k_{2}}\oplus \beta _{0}))}
  6. F k 2 = S 0 ( F k 2 , ( F k 1 β 1 ) ) {\displaystyle F_{k_{2}}=S_{0}(F_{k_{2}},(F_{k_{1}}\oplus \beta _{1}))}
  7. F k 0 = S 0 ( α 0 , ( F k 1 β 2 ) ) {\displaystyle F_{k_{0}}=S_{0}(\alpha _{0},(F_{k_{1}}\oplus \beta _{2}))}
  8. F k 3 = S 1 ( α 3 , ( F k 2 β 3 ) ) {\displaystyle F_{k_{3}}=S_{1}(\alpha _{3},(F_{k_{2}}\oplus \beta _{3}))}

Генерация раундовых ключей

Схема генерации раундовых ключей

В результате генерации раундовых ключей, из полученного на вход ключа длиной 128 бит получается набор из N+8 раундовых ключей K i {\displaystyle K_{i}} , длиной 16 бит каждый. Данный результат получается в результате следующего алгоритма.

  1. Разделение входного ключа на левый и правый ключ: K = ( K L , K R ) {\displaystyle K=(K_{L},K_{R})} , они имеют длину 64 бита.
  2. Обработка ключа K R = ( K R 1 , K R 2 ) {\displaystyle K_{R}=(K_{R1},K_{R2})}
  3. Введение временной переменной Q r {\displaystyle Q_{r}} для 1 r N 2 + 4 {\displaystyle 1\leq r\leq {\frac {N}{2}}+4} :
    • Q r = K R 1 K R 2 , r = 3 i 2 , i N {\displaystyle Q_{r}=K_{R1}\oplus K_{R2},\;r=3i-2,\;i\in \mathbb {N} }
    • Q r = K R 1 , r = 3 i 1 , i N {\displaystyle Q_{r}=K_{R1},\;r=3i-1,\;i\in \mathbb {N} }
    • Q r = K R 2 , r = 3 i , i N {\displaystyle Q_{r}=K_{R2},\;r=3i,\;i\in \mathbb {N} }
  4. Обработка ключа K L = ( A 0 , B 0 ) {\displaystyle K_{L}=(A_{0},B_{0})}
  5. Введение временной переменной D 0 = ϕ {\displaystyle D_{0}=\phi }
  6. Последовательное вычисление K i {\displaystyle K_{i}}
    1. D r = A r 1 {\displaystyle D_{r}=A_{r-1}}
    2. A r = B r 1 {\displaystyle A_{r}=B_{r-1}}
    3. B r = F k ( A r 1 , ( B r 1 D r 1 ) Q r ) ) = ( B r 0 , B r 1 , B r 2 , B r 3 ) {\displaystyle B_{r}=F_{k}(A_{r-1},(B_{r-1}\oplus D_{r-1})\oplus Q_{r}))=(B_{r_{0}},B_{r_{1}},B_{r_{2}},B_{r_{3}})}
    4. K 2 ( r 1 ) = ( B r 0 , B r 1 ) {\displaystyle K_{2(r-1)}=(B_{r_{0}},B_{r_{1}})}
    5. K 2 ( r 1 ) + 1 = ( B r 2 , B r 3 ) {\displaystyle K_{2(r-1)+1}=(B_{r_{2}},B_{r_{3}})}

Предобработка

На начальной стадии блок данных P {\displaystyle P} готовится к итеративной процедуре шифрования.

  1. P = ( L 0 , R 0 ) {\displaystyle P=(L_{0},R_{0})}
  2. ( L 0 , R 0 ) = ( L 0 , R 0 ) ( K N , K N + 1 , K N + 2 , K N + 3 ) {\displaystyle (L_{0},R_{0})=(L_{0},R_{0})\oplus (K_{N},K_{N+1},K_{N+2},K_{N+3})}
  3. ( L 0 , R 0 ) = ( L 0 , R 0 ) ( ϕ , L 0 ) {\displaystyle (L_{0},R_{0})=(L_{0},R_{0})\oplus (\phi ,L_{0})}

Итеративная обработка

На этой стадии с блоком данных производится N раундов перемешивания битов по следующему алгоритму.

  1. R r = L r 1 F ( R r 1 , K r 1 ) {\displaystyle R_{r}=L_{r-1}\oplus F(R_{r-1},K_{r-1})}
  2. L r = R r 1 {\displaystyle L_{r}=R_{r-1}}

Постобработка

Задача этой стадии — подготовить почти готовый шифротекст к выдаче.

  1. P = ( R N , L N ) {\displaystyle P=(R_{N},L_{N})}
  2. P = P ( ϕ , R N ) {\displaystyle P=P\oplus (\phi ,R_{N})}
  3. P = P ( K N + 4 , K N + 5 , K N + 6 , K N + 7 ) {\displaystyle P=P\oplus (K_{N+4},K_{N+5},K_{N+6},K_{N+7})}

Тот же алгоритм может быть использован для дешифрования. Единственным отличием является то, что при дешифровании порядок использования частей ключа меняется на обратный.

Применение

Хотя изначально алгоритм FEAL задумывался, как более быстродействующая замена DES, в том числе, для применения шифрования в смарт-картах, количество быстро найденных в нем уязвимостей поставило точку на перспективах использования данного алгоритма. К примеру, в работе Эли Бихама и Ади Шамира, опубликованной в 1991 году, доказана достаточность 8 выбранных открытых текстов для взлома шифра FEAL-4, 2000 — для взлома FEAL-8, 2 28 {\displaystyle 2^{28}}  — для FEAL-16[5]. Все эти числа значительно меньше необходимого числа выбранных открытых текстов для атаки на DES, а тот факт, что FEAL-32 достаточно надежен, достаточно бесполезен, так как DES добивается сравнимой надежности при значительно меньшем числе раундов, тем самым лишая FEAL преимущества, изначально задумывавшегося создателями.

На данный момент на официальном сайте авторов шифра — компании NTT, в описании шифра FEAL вывешено предупреждение, о том что компания NTT рекомендует не использовать шифр FEAL, а использовать шифр Camelia, также разработанный этой компанией ради надежности и скорости шифрования[9].

Вклад в развитие криптографии

Благодаря тому, что шифр FEAL был разработан достаточно рано, он послужил отличным объектом для тренировок для криптологов всего мира[10].

Кроме того, на его примере был открыт линейный криптоанализ. Мицуру Мацуи[англ.], изобретатель линейного криптоанализа, в первой своей работе на эту тему рассматривал как раз FEAL и DES.

Примечания

  1. 1 2 Панасенко, 2009.
  2. Boer, 1988.
  3. 1 2 Matsui, Yamagishi, 1992.
  4. Gilbert, Chassé, 1990.
  5. 1 2 Biham, Shamir, 1991.
  6. Kazuo Ohta, Shiho Moriai, Kazumaro Aoki. Improving the Search Algorithm for the Best Linear Expression // Proceedings of the 15th Annual International Cryptology Conference on Advances in Cryptology. — London, UK, UK: Springer-Verlag, 1995-01-01. — С. 157–170. — ISBN 3540602216.
  7. Aoki, Kobayashi, Moriai, 1997.
  8. Спецификация алгоритма шифрования FEAL-N(NX)  (неопр.). Дата обращения: 3 декабря 2016. Архивировано 23 января 2021 года.
  9. NTT Encryption Archive List  (неопр.). info.isl.ntt.co.jp. Дата обращения: 27 ноября 2016. Архивировано из оригинала 7 октября 2016 года.
  10. Шнайер Б. Курс самоподготовки по криптоанализу блочных шифров. — Пер. с англ.Быбин С.С.. Архивировано 2 апреля 2022 года.

Литература

  • Shimizu A., Miyaguchi S. Fast Data Encipherment Algorithm FEAL (англ.) // Advances in Cryptology — EUROCRYPT '87: Workshop on the Theory and Application of Cryptographic Techniques Amsterdam, The Netherlands, April 13–15, 1987 Proceedings / D. Chaum, W. L. Price — Springer Science+Business Media, 1988. — P. 267—278. — 316 p. — ISBN 978-3-540-19102-5 — doi:10.1007/3-540-39118-5_24
  • Boer B. d. Cryptanalysis of F.E.A.L. (англ.) // Advances in Cryptology — EUROCRYPT ’88: Workshop on the Theory and Application of Cryptographic Techniques, Davos, Switzerland, May 25-27, 1988. Proceedings / C. G. Günther — Springer Science+Business Media, 1988. — P. 293—299. — 383 p. — ISBN 978-3-540-45961-3 — doi:10.1007/3-540-45961-8_27
  • Miyaguchi S. The FEAL-8 Cryptosystem and a Call for Attack (англ.) // Advances in Cryptology — CRYPTO ’89: 9th Annual International Cryptology Conference, Santa Barbara, California, USA, August 20-24, 1989, Proceedings / G. Brassard — Berlin, Heidelberg, New York City, London: Springer New York, 1990. — P. 624—627. — (Lecture Notes in Computer Science; Vol. 435) — ISBN 978-0-387-97317-3 — ISSN 0302-9743; 1611-3349 — doi:10.1007/0-387-34805-0_59
  • Miyaguchi S. The FEAL Cipher Family (англ.) // Advances in Cryptology — CRYPTO ’90: 10th Annual International Cryptology Conference, Santa Barbara, California, USA, August 11-15, 1990, Proceedings / A. J. Menezes, S. A. Vanstone — Berlin, Heidelberg, New York City, London: Springer Berlin Heidelberg, 1991. — P. 628—638. — (Lecture Notes in Computer Science; Vol. 537) — ISBN 978-3-540-54508-8 — ISSN 0302-9743; 1611-3349 — doi:10.1007/3-540-38424-3_46
  • Murphy S. The cryptanalysis of FEAL-4 with 20 chosen plaintexts (англ.) // Journal of Cryptology / I. Damgård — Springer Science+Business Media, International Association for Cryptologic Research, 1990. — Vol. 2, Iss. 3. — P. 145—154. — ISSN 0933-2790; 1432-1378 — doi:10.1007/BF00190801
  • Gilbert H., Chassé G. A Statistical Attack of the FEAL-8 Cryptosystem (англ.) // Advances in Cryptology — CRYPTO ’90: 10th Annual International Cryptology Conference, Santa Barbara, California, USA, August 11-15, 1990, Proceedings / A. J. Menezes, S. A. Vanstone — Berlin, Heidelberg, New York City, London: Springer Berlin Heidelberg, 1991. — P. 22—33. — (Lecture Notes in Computer Science; Vol. 537) — ISBN 978-3-540-54508-8 — ISSN 0302-9743; 1611-3349 — doi:10.1007/3-540-38424-3_2
  • Biham E., Shamir A. Differential Cryptanalysis of Feal and N-Hash (англ.) // Advances in Cryptology — EUROCRYPT ’91: Workshop on the Theory and Application of Cryptographic Techniques Brighton, UK, April 8–11, 1991. Proceedings / D. W. Davies — Berlin: Springer Berlin Heidelberg, 1991. — P. 1—16. — ISBN 978-3-540-54620-7 — doi:10.1007/3-540-46416-6_1
  • Tardy-Corfdir A., Gilbert H. A Known Plaintext Attack of FEAL-4 and FEAL-6 (англ.) // Advances in Cryptology — CRYPTO’91: 11th Annual International Cryptology Conference, Santa Barbara, California, USA, 1991, Proceedings / J. Feigenbaum — Berlin, Heidelberg, New York City, London: Springer Science+Business Media, 1992. — 484 p. — (Lecture Notes in Computer Science; Vol. 576) — ISBN 978-3-540-55188-1 — ISSN 0302-9743; 1611-3349 — doi:10.1007/3-540-46766-1
  • Matsui M., Yamagishi A. A New Method for Known Plaintext Attack of FEAL Cipher (англ.) // Advances in Cryptology — EUROCRYPT '92: Workshop on the Theory and Application of Cryptographic Techniques, Balatonfüred, Hungary, May 24–28, 1992 Proceedings / R. A. Rueppel — Springer, Berlin, Heidelberg, 1993. — P. 81—91. — 491 p. — ISBN 978-3-540-56413-3 — doi:10.1007/3-540-47555-9
  • Aoki K., Kobayashi K., Moriai S. Best differential characteristic search of FEAL (англ.) // Fast Software Encryption: 4th International Workshop, FSE'97, Haifa, Israel, January 20-22, 1997, Proceedings / E. Biham — Berlin, Heidelberg, New York City, London: Springer Science+Business Media, 1997. — P. 41—53. — 299 p. — (Lecture Notes in Computer Science; Vol. 1267) — ISBN 978-3-540-63247-4 — ISSN 0302-9743; 1611-3349 — doi:10.1007/BFB0052333
  • Панасенко С. П. Алгоритмы шифрования. Специальный справочникСПб.: BHV-СПб, 2009. — С. 206—212. — 576 с. — ISBN 978-5-9775-0319-8
Перейти к шаблону «Симметричные криптосистемы»
Потоковые шифры
Сеть Фейстеля
SP-сеть
Другие