Q — блочный шифр с прямой структурой SP-сети c S-блоками. Q-шифр берет происхождение от шифров Rijndael и Serpent. Впервые он был представлен Лесли МакБрайд (англ.Leslie McBride) на конкурсе, проводившимся проектом NESSIE. Алгоритм использует 128-битный блок данных в виде байтового массива , над которым и проводятся операции[1].
Теоретически алгоритм не имеет ограничения на размер используемых ключей шифрования. В рамках конкурса NESSIE рассматривалось только три фиксированных размера: 128, 192 и 256 битов[2].
Алгоритм подвержен как дифференциальному, так и линейному криптоанализу[3].
Q использует три различных s-блока. Первый s-блок, называющийся S, и два блока , A и B (A взят из алгоритма Serpent, B — «Serpent-подобный»). Каждая стадия подстановки использует многократные копии s-блоков параллельно для обработки 128-битного входа (16 копий S и 32 копии A и B).[1]
В шифре используются три линейные трансформации. Перестановка работает на 128-битном блоке, представленном в виде четырёх 32-битных слов следующим образом: не изменяется; поворачиваются на один байт, два байта и три байта соответственно. Другие две линейные трансформации назовём и , так как они применяются до и после блоков A и B. отправляет биты в первые биты 32-битных идентичных копий s-блока , биты — во вторые биты s-блоков и т. д. — просто инверсия [1]
Q-шифр может иметь различные размеры ключей. Рассмотрим шифр с 128-битным ключом и с 8 полными раундами. Для усиленной защиты применяются 9 раундов. Алгоритм «key-scheduling algorithm» или «KSA» генерирует 12 128-битных подключ Каждый раунд () состоит из:
— первое наложение ключа . Выполняется побитовое исключающее «или» (XOR), применяющееся к каждому биту обрабатываемого блока и соответствующему биту расширенного ключа.
Подстановка S () — взята из алгоритма Rijndael.
— второе наложение ключа .
— операция унаследована от алгоритма Serpent.
— третье наложение ключа Подключ уникален для каждого раунда.
Перестановка .
.
Полный алгоритм состоит из .
Расшифровывание происходит аналогично шифрованию с небольшими изменениями[2]:
В работе[1] показано, что шифр неустойчив к линейному криптоанализу, с вероятностью 98,4 % 128-битный ключ будет восстановлен из известных пар открытого текста — шифротекста.
↑ 1234L. Keliher, H. Meijer, and Stafford Tavares (12 September 2001). High probability linear hulls in Q. Proceedings of Second Open NESSIE Workshop. Surrey, England. Архивировано14 сентября 2018. Дата обращения: 13 сентября 2018.{{cite conference}}: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка)Источник (неопр.). Дата обращения: 29 октября 2018. Архивировано 14 сентября 2018 года.
↑ 12Сергей Панасенко. Алгоритмы шифрования. Специальный справочник. — Санкт-Петербург: БХВ-Петербург, 2009. — С. 374—375. — 576 с. — ISBN 978-5-9775-0319-8.