Это не официальный сайт wikipedia.org 01.01.2023

Q (шифр) — Википедия

Q (шифр)

Q — блочный шифр с прямой структурой SP-сети c S-блоками. Q-шифр основывается на шифрах Rijndael и Serpent. Шифр был представлен Лесли МакБрайд (англ. Leslie McBride) на конкурс, проводившийся проектом NESSIE. Алгоритм использует 128-битный блок данных в виде байтового массива 4 × 4 , над которым и проводятся операции[1].

Теоретически алгоритм не имеет ограничения на размер используемых ключей шифрования. В рамках же конкурса NESSIE рассматривалось только три фиксированных размера: 128, 192 и 256 битов[2].

Алгоритм подвержен как дифференциальному, так и линейному криптоанализу[3].

Общие сведенияПравить

Q использует три различных s-блока. Первый 8 × 8   s-блок, называющийся S, и два блока 4 × 4   A и B (A взят из алгоритма Serpent, B — «Serpent-подобный»). Каждая стадия подстановки использует многократные копии s-блоков параллельно для обработки 128-битного входа (16 копий S и 32 копии A и B).[1]

В шифре используются три линейные трансформации. Перестановка P   работает на 128-битном блоке, представленном в виде четырёх 32-битных слов W 0 , W 1 , W 2 , W 3   следующим образом: W 0   не изменяется; W 1 , W 2 , W 3   поворачиваются на один байт, два байта и три байта соответственно. Другие две линейные трансформации назовём P r e S e r p e n t ( )   и P o s t S e r p e n t ( )  , так как они применяются до и после блоков A и B. P r e S e r p e n t ( )   отправляет биты W 0   в первые биты 32-битных идентичных копий s-блока 4 × 4  , биты W 1   — во вторые биты s-блоков и т. д. P o s t S e r p e n t ( )   — просто инверсия P r e S e r p e n t ( ) .  [1]

АлгоритмПравить

Q-шифр может иметь различные размеры ключей. Рассмотрим шифр с 128-битным ключом и с 8 полными раундами. Для усиленной защиты применяются 9 раундов. Алгоритм «key-scheduling algorithm» или «KSA» генерирует 12 128-битных подключа K W 1 , K A , K B , K 0 , K 1 , . . . , K 7 , K W 2 .   Каждый раунд r   ( 0 r 7  ) состоит из:

  1. K A   — первое наложение ключа K A  . Выполняется побитовое исключающее «или» (XOR), применяющееся к каждому биту обрабатываемого блока и соответствующему биту расширенного ключа.
  2. Подстановка S ( S u b s t i t u t i o n ( S )  ) — взята из алгоритма Rijndael.
  3. K B   — второе наложение ключа K B  .
  4. P r e S e r p e n t ( ) , A , P o s t S e r p e n t ( )   — операция унаследована от алгоритма Serpent.
  5. K r   — третье наложение ключа K r .   Подключ K r   уникален для каждого раунда.
  6. Перестановка P  .
  7. P r e S e r p e n t ( ) , B , P o s t S e r p e n t ( )  .

Полный алгоритм состоит из K W 1 , R o u n d 0 , . . . , R o u n d 7 , K A , S u b s t i t u t i o n ( S ) , K B , K W 2  .

Расшифровывание происходит аналогично шифрованию с небольшими изменениями[2]:

  1. Меняются местами операции 5 и 6 в каждом раунде.
  2. Для 2, 4 и 6 — используются инверсные операции.
  3. Ключи K r   используются в обратной последовательности.

КриптоанализПравить

В работе[1] показано, что шифр не устойчив к линейному криптоанализу, с вероятностью 98,4 % 128-битный ключ будет восстановлен из 2 97   известных пар открытого текста — шифротекста.

ПримечанияПравить

  1. 1 2 3 4 L. Keliher, H. Meijer, and Stafford Tavares (12 September 2001). High probability linear hulls in Q. Proceedings of Second Open NESSIE Workshop. Surrey, England. Дата обращения 2018-09-13. Архивная копия от 14 сентября 2018 на Wayback Machine
  2. 1 2 Сергей Панасенко. Алгоритмы шифрования. Специальный справочник. — Санкт-Петербург: БХВ-Петербург, 2009. — С. 374—375. — 576 с. — ISBN 978-5-9775-0319-8.
  3. Vincent Rijmen, Michal Misztal, Vladimir Furman, Eli Biham. Differential Cryptanalysis of Q (англ.) // Fast Software Encryption. — Springer, Berlin, Heidelberg, 2001-04-02. — P. 174–186. — ISBN 9783540438694, 9783540454731. — doi:10.1007/3-540-45473-X_15. Архивировано 14 сентября 2018 года.

СсылкиПравить