Interested Article - F-FCSR

F-FCSR — семейство поточных шифров , основанное на использовании регистра сдвига с обратной связью по переносу (FCSR) с линейным фильтром на выходе. Идея шифра была предложена Терри Бергером, Франсуа Арно и Седриком Лараду. F-FCSR был представлен на конкурсе eSTREAM , был включен в список победителей конкурса в апреле 2008, но в дальнейшем была выявлена криптографическая слабость и в сентябре 2008 F-FCSR был исключён из списка eSTREAM.

F-FCSR-H

История

Впервые идея использования регистра сдвига с обратной связью по переносу (FCSR) для создания поточного фильтра была предложена Клаппером и Горески в 1994 году . Позднее ими был разработан алгоритм такого шифра . Один FCSR без подключения линейного компонента не может быть использован в качестве поточного шифра, так как легко дешифруется.

В 2002 году был предложен самосинхронизующийся поточный шифр, основанный на совместном использовании FCSR и LFSR . Позднее он был подвергнут атаке с выбором шифротекста .

В 2005 году Арно и Бергер предложили идею совместного использования FCSR и линейного фильтра для создания поточного шифра, который получил название F-FCSR (Filtered FCSR) . Позже ими были предложены 4 алгоритма, реализующих эту идею: F-FCSR-SF1, F-FCSR-SF, F-FCSR-DF1 и F-FCSR-DF8 . Первые два использовали статические фильтры, последние — фильтры, зависящие от ключа. Позже была выявлена слабость всех этих алгоритмов перед различными видами атак .

В 2005 Терри Бергер, Франсуа Арноль и Седрик Лараду предложили два шифра на основе F-FCSR для участия в конкурсе eSTREAM: F-FCSR-H для аппаратной реализации и F-FCSR-8 для программной. В результате последующих испытаний у первоначальных версий F-FCSR-H и F-FCSR-8 были найдены уязвимости , которые позже были исправлены в версиях F-FCSR-H v.2 и F-FCSR-16 . Улучшенный вариант F-FCSR-H v.2 стал финалистом eSTREAM . Но после обнаружения уязвимости был исключен из eSTREAM Portfolio (rev.1) .

Характеристики версий

Название Длина главного
регистра
Инициализация Фильтр Число бит
на выходе фильтра
F-FCSR-8 128 64/128 тактов
(в зависимости от IV)
Зависит от ключа 8
F-FCSR-H 160 160 тактов Статический 8
F-FCSR-8.2 256 258 тактов Зависит от ключа 16
F-FCSR-16 256 16 + 258 тактов Статический 16
F-FCSR-H v.2 160 20 + 162 такта Статический 8

Описание алгоритма

FCSR

FCSR реализуется в двух конфигурациях: Галуа и Фиббоначи. В F-FCSR используется конфигурация Галуа, так как она эффективней. Вводятся следующие обозначения:

  1. q — целостность соединения (connection integer) — отрицательное нечетное целое число, удовлетворяющее следующим условиям:
    • 2 | q | 1 = 1 mod q {\displaystyle 2^{|q|-1}=1\mod {q}}
    • T = (|q| − 1)/2 — простое, 2T — период битовой последовательности p/q
    • Число единиц в двоичном представлении числа (1 − q)/2 порядка n/2
  2. p — параметр, зависящий от ключа, такое, что 0 < p < |q|
  3. n — размер главного регистра FCSR, |q| в двоичной записи имеет n + 1 знаков: 2 n < −q < 2 n+1
  4. d : d = (1 − q)/2, в двоичной записи i = 0 n 1 d i 2 i {\displaystyle \sum _{i=0}^{n-1}d_{i}\cdot 2^{i}} , d i = {0, 1}, d n-1 = 1
  5. M — n-разрядный главный регистр, значения его i-го разряда, m ( t ) = i = 0 n 1 m i ( t ) 2 i {\displaystyle m(t)=\sum _{i=0}^{n-1}m_{i}(t)\cdot 2^{i}} .
  6. C — l-разрядный регистр сдвига, l + 1 — число единиц в двоичной записи d, c ( t ) = i = 0 l 1 c i ( t ) 2 i {\displaystyle c(t)=\sum _{i=0}^{l-1}c_{i}(t)\cdot 2^{i}} .
  7. (m, c) — состояние FCSR

Если (m, c) — состояние FCSR в момент времени t 0 , m = m ( t 0 ) {\displaystyle m=m(t_{0})} , c = c ( t 0 ) {\displaystyle c=c(t_{0})} , то ( m 0 ( t 0 + i ) ) i N {\displaystyle (m_{0}(t_{0}+i))_{i\in {N}}} — двоичное представление p/q, где p = m + 2c.

Пример FCSR

Пример FCSR

q = −347, d = 174 = (10101110) 2 , n = 8, l = 4.

Фильтрация

Фильтрующая линейная функция на выходе определяется маской ( f 0 , f 1 , . . . , f n 1 {\displaystyle {f}_{0,}{f}_{1,...,}{f}_{n-1}} ) Один бит на выходе определяется следующим образом: k = i = 0 n 1 f i m i {\displaystyle {k}=\bigoplus _{i=0}^{n-1}{f}_{i}\cdot {m}_{i}}

Инициализация

С учетом слабости предыдущих версий F-FCSR из-за слабого начального перемешивания битов в главном регистре процедура инициализации в F-FCSR-H v.2 и F-FCSR-16 проводится следующим образом:

  1. Главный регистр M инициализируется конкатенацией секретного ключа K и IV — (K, IV), в регистр переноса записываются нули.
  2. Проходит 16 тактов генератора для F-FCSR-16 и 20 для F-FCSR-H v.2
  3. Полученные на выходе 256 и 160 битов соответственно записываются в M
  4. Проходит n + 2 тактов генератора, биты на выходе при этом отбрасываются

Шифры на основе F-FCSR

F-FCSR-H v.2

  1. Длина ключа 80 бит, IV — 80 бит
  2. q = −1993524591318275015328041611344215036460140087963
  3. Длина регистра переноса l = 82
  4. d = (AE985DFF 26619FC5 8623DC8A AF46D590 3DD4254E) 16
  5. Последовательность битов на выходе S ( t ) = ( s 0 ( t ) , s 1 ( t ) , . . . s 7 ( t ) ) , s j ( t ) = i = 0 19 d 8 i + j m 8 i + j ( t ) {\displaystyle {S(t)}={(s}_{0}{(t),}{s}_{1}{(t),...}{s}_{7}{(t)),}s_{j}(t)=\bigoplus _{i=0}^{19}d_{8i+j}\cdot m_{8i+j}(t)} , то есть
z = (m 8 + m 24 + m 40 + m 56 + … + m 136 , m 1 + m 49 +… , … , m 23 + …)

F-FCSR-16

  1. Длина ключа 128 бит, IV — 128 бит
  2. q = −183971440845619471129869161809344131658298317655923135753017128462155618715019
  3. Длина регистра переноса l = 130
  4. d = (CB5E129F AD4F7E66 780CAA2E C8C9CEDB 2102F996 BAF08F39 EFB55A6E 390002C6) 16
  5. Последовательность битов на выходе S ( t ) = ( s 0 ( t ) , s 1 ( t ) , . . . s 15 ( t ) ) , s j ( t ) = i = 0 15 d 16 i + j m 16 i + j ( t ) {\displaystyle {S(t)}={(s}_{0}{(t),}{s}_{1}{(t),...}{s}_{15}{(t)),}s_{j}(t)=\bigoplus _{i=0}^{15}d_{16i+j}\cdot m_{16i+j}(t)}

Описание атаки

Первоначально найденные уязвимости F-FCSR-8 и F-FCSR-H, связанные с малым количеством тактов при инициализации, были исправлены в F-FCSR-16 и F-FCSR-H v.2. В 2008 году Мартин Хелл и Томас Джоанссон описали и осуществили атаку на F-FCSR, с помощью которой можно вскрыть состояние FCSR.

Фильтрующая функция линейна, поэтому криптостойкость F-FCSR определяется нелинейностью FCSR, которая возникает из-за наличия регистра переноса, таким образом систему требуется линеаризовать, максимльно увеличив число нулей в регистре переноса. Рассмотрим ситуацию, когда состояние регистра переноса на протяжении 20 тактов будет следующим:

C(t) = C(t + 1)= … = C(t + 19) = (С l-1 , …, С 0 ) = (0, 0, . . . , 0, 1) (*)

Если бит обратной связи 0, то биты регистра переноса, равные 0, остаются равны 0, а равные 1 с вероятностью ½ становятся равны 0. Тогда для возникновения (*), потребуется приблизительно log 2 82 + 19 26 {\displaystyle \log _{2}{82}+19\approx 26} последовательных нулей в бите обратной связи.

В силу предположения (*) состояния главного регистра M(t + 1), …, M(t + 19) линейно зависят от M(t) , и нам известна эта зависимость.

Обозначим байты на выходе z(t), z(t + 1), … , z(t + 19) .

Выразим z(t), z(t + 1), … , z(t + 19) через значения битов главного регистра в момент t: M(t) = (m 0 … m 159 ) .
Получим 20 уравнений с 20 неизвестными m i {\displaystyle m_{i}} , где i 0 mod 8 {\displaystyle i\equiv 0\mod 8} :

z 0 ( t ) = m 8 m 24 . . . m 136 {\displaystyle z_{0}(t)=m_{8}\bigoplus {m_{24}}\bigoplus {...}\bigoplus {m_{136}}}

z 7 ( t + 1 ) = m 24 m 40 . . . m 152 {\displaystyle z_{7}(t+1)=m_{24}\bigoplus {m_{40}}\bigoplus {...}\bigoplus {m_{152}}}

z 5 ( t + 19 ) = m 32 m 48 . . . m 152 {\displaystyle z_{5}(t+19)=m_{32}\bigoplus {m_{48}}\bigoplus {...}\bigoplus {m_{152}}}

Аналогично получим системы уравнений, зависящих от m i {\displaystyle m_{i}} , где i 1 mod 8 {\displaystyle i\equiv 1\mod 8} и т. д.
Итого 8 систем из 20 уравнений с 20 неизвестными.
Ведем следующие обозначения:
W 0 = ( z 0 ( t ) , z 7 ( t + 1 ) , . . . , z 5 ( t + 19 ) ) {\displaystyle W_{0}=(z_{0}(t),z_{7}(t+1),...,z_{5}(t+19))} ,
W 1 = ( z 1 ( t ) , z 0 ( t + 1 ) , . . . , z 6 ( t + 19 ) ) {\displaystyle W_{1}=(z_{1}(t),z_{0}(t+1),...,z_{6}(t+19))} ,

W 7 = ( z 7 ( t ) , z 6 ( t + 1 ) , . . . , z 4 ( t + 19 ) ) {\displaystyle W_{7}=(z_{7}(t),z_{6}(t+1),...,z_{4}(t+19))} .
Обозначим M ^ j {\displaystyle {\hat {M}}_{j}} вектор ( m j , m j + 8 , . . . , m j + 152 ) {\displaystyle (m_{j},m_{j+8},...,m_{j+152})}
Тогда системы сожно записать в виде W j = M ^ j P j {\displaystyle W_{j}={\hat {M}}_{j}P_{j}} , где P j {\displaystyle P_{j}} — известная матрица, определяемая фильтрующей функцией. Алгоритм нахождения состояния главного регистра в предположении(*) можно описать следующим образом:

  1. В момент времени t получаем на выходе байты: z(t), z(t +1), . . . , z(t + 19)
  2. for i = 0 to 7
    Решаем уравнение W j = M ^ j P j {\displaystyle W_{j}={\hat {M}}_{j}P_{j}}
    if (нет решений) goto 1
    else сохраняем возможные значения M ^ j {\displaystyle {\hat {M}}_{j}}
  3. for (каждый возможный набор M ^ 0 , M ^ 1 . . . M ^ 7 {\displaystyle {\hat {M}}_{0},{\hat {M}}_{1}...{\hat {M}}_{7}} )
    if (M из M ^ 0 , M ^ 1 . . . M ^ 7 {\displaystyle {\hat {M}}_{0},{\hat {M}}_{1}...{\hat {M}}_{7}} может дать на выходе z(t), z(t +1), . . . , z(t + 19) ) return ;
  4. goto 1

Для осуществления описанной выше атаки требуется 2 26 байт шифротекста. Возможно улучшение атаки, требуюшее 2 24,3 байта. Аналогичная атака может быть применена к F-FCSR-16.

Примечания

  1. ↑ A. Klapper, M. Goresky, 2-adic shift registers, in Fast Software Encryption’93, ed. by R.J. Anderson. Lecture Notes in Computer Science, vol. 809 (Springer, Berlin, 1994), pp. 174—178
  2. F. Arnault, T. Berger, A. Necer, A new class of stream ciphers combining LFSR and FCSR architectures, in Progress in Cryptology—INDOCRYPT 2002, ed. by A. Menezes, P. Sarkar. Lecture Notes in Computer Science, vol. 2551/2002 (Springer, Berlin, 2002), pp. 22-33
  3. B. Zhang, H.Wu, D. Feng, F. Bao, Chosen ciphertext attack on a new class of self-synchronizing stream ciphers, in Progress in Cryptology—INDOCRYPT 2004, ed. by A. Canteaut, K. Viswanathan. Lecture Notes in Computer Science, vol. 3348/2004 (Springer, Berlin, 2004), pp. 73-83
  4. F. Arnault, T. Berger, Design and properties of a new pseudorandom generator based on a filtered FCSR automaton. IEEE Trans. Comput. 54, 1374—1383 (2005)
  5. F. Arnault, T. Berger, F-FCSR: Design of a new class of stream ciphers, in Fast Software Encryption 2005, ed. by H. Gilbert, H. Handschuh. Lecture Notes in Computer Science, vol. 3557 (Springer, Berlin, 2005), pp. 83-97
  6. E. Jaulmes, F. Muller, Cryptanalysis of the F-FCSR stream cipher family, in Selected Areas in Cryptography—SAC 2005, ed. by B. Preneel, S. Tavares. Lecture Notes in Computer Science, vol. 3897 (Springer, Berlin, 2005), pp. 36-50
  7. (неопр.) . Дата обращения: 23 ноября 2011. 27 мая 2011 года.
  8. (неопр.) . Дата обращения: 23 ноября 2011. 27 мая 2011 года.
  9. (неопр.) . Дата обращения: 23 ноября 2011. 27 мая 2011 года.
  10. (неопр.) . Дата обращения: 23 ноября 2011. 5 декабря 2011 года.
  11. M. Hell, T. Johansson, Breaking the F-FCSR-H stream cipher in real time, in Advances in Cryptology— ASIACRYPT 2008. Lecture Notes in Computer Science, vol. 5350/2008 (Springer, Berlin, 2008), pp. 557—569
  12. (неопр.) . Дата обращения: 23 ноября 2011. 13 августа 2012 года.

Литература

  1. M. Hell, T. Johansson, Breaking the F-FCSR-H stream cipher in real time, in Advances in Cryptology. ASIACRYPT 2008. Lecture Notes in Computer Science, vol. 5350/2008 (Springer, Berlin, 2008), pp.557-569
  2. F. Arnault and T.P. Berger. F-FCSR: design of a new class of stream ciphers. In Fast Software Encryption — FSE 2005, v. 3557 of Lecture Notes in Computer Science, p. 83-97. Springer-Verlag, 2005.
  3. F. Arnault, T. Berger, C. Lauradoux, Update on F-FCSR stream cipher. eSTREAM, ECRYPT Stream Cipher Project, Report 2006/025 (2006).

Ссылки

Same as F-FCSR