QARMA (от Qualcomm ARM A uthenticator [1] ) — это легковесный настраиваемый блочный шифр, в первую очередь известный по использованию в архитектуре ARMv8 для защиты программного обеспечения в качестве криптографического хеша для кода аутентификации указателя. [2] Шифр был предложен Роберто Аванци в 2016 году . [2] [3] Определены две версии QARMA: QARMA-64 (64-битный размер блока с 128-битным ключом шифрования ) и QARMA-128 (128-битный размер блока с 256-битным ключом). На конструкцию QARMA повлияли PRINCE и MANTIS. [3] Шифр предназначен для полностью развернутых аппаратных реализаций с низкой задержкой (например, шифрование памяти). В отличие от режима XTS , адрес можно напрямую использовать в качестве настройки, и его не нужно предварительно отбеливать с помощью блочного шифрования.
перестановка F использует основной ключ k 0 и параметризуется настройкой T. Она имеет r раундов внутри (r = 7 для QARMA-64, r = 11 для QARMA-128);
«центральная» перестановка C использует ключ k 1 и разработана так, чтобы быть обратимой посредством простого преобразования ключа (содержит два центральных раунда );
третья перестановка является обратной первой ( еще r раундов).
Все ключи выводятся из главного ключа шифрования K с использованием специализации :
K делится на половины как w 0 Конкатенация k 0 , каждая будет иметь половинный размер битов;
для шифрования w 1 = (w 0 >>> 1) + (w 0 >> (halfsize-1));
для шифрования k 1 = k 0 ;
для расшифровки можно использовать ту же конструкцию, пока k 0 +α используется в качестве основного ключа, k 1 = Q•k 0 , w 1 и w 0 меняются местами. α здесь — специальная константа, а Q — специальная инволютивная матрица . Эта конструкция похожа на альфа-отражение в PRINCE.
Данные разделены на 16 ячеек (4-битные полубайты для QARMA-64, 8-битные байты для QARMA-128). Внутреннее состояние также содержит 16 ячеек, организованных в матрицу 4x4, и инициализируется открытым текстом (XOR с w 0 ). В каждом раунде состояние преобразуется с помощью операций :
MixColumns : каждый столбец умножается на фиксированную матрицу M ;
SubCells : каждая ячейка преобразуется с использованием S - box .
Настройка для каждого раунда обновляется с помощью :
представляет собой перестановку ячеек из MANTIS ([6, 5, 14, 15, 0, 1, 2, 3, 7, 12, 13, 4, 8, 9, 10, 11]);
— это LFSR, применяемый к каждой из ячеек с номерами [0, 1, 3, 4, 8, 11, 13]. Для QARMA-64 LFSR равен (b3, b2, b1, b0) ⇒ (b0 + b1, b3, b2, b1), для QARMA-128 — (b7, b6, ..., b0) ⇒ (b0 + b2, b7, b6, ..., b1),
Раунды состоят из обратных операций . Центральные раунды, в дополнение к двум раундам ( и ), включают умножение состояния на инволютивную матрицу Q .
Ссылки
^ Qameleon v. 1.0: Представление в процесс стандартизации облегченной криптографии NIST
^ ab Зонг и Донг 2016.
^ ab Avanzi 2016.
Источники
Avanzi, Roberto (2016). Семейство блочных шифров QARMA (PDF) . Труды IACR по симметричной криптологии (ToSC). Том 17 (опубликовано 8 марта 2017 г.). стр. 4–44. doi :10.13154/tosc.v2017.i1.4-44. Архивировано из оригинала (PDF) 13 мая 2020 г.
Цзун, Руй; Дун, Сяоян (2016). «Атака Meet-in-the-Middle на блочный шифр QARMA» (PDF) . iacr.org . IACR . Получено 10 июня 2022 г. .
Каур, Жасмин; Кермани, Мехран Мозаффари; Азардерахш, Реза (1 января 2022 г.). «Аппаратные конструкции для легкого криптографического блочного шифра QARMA с механизмами обнаружения ошибок». Труды IEEE по новым темам в области вычислений . 10 (1): 514–519. doi : 10.1109/TETC.2020.3027789 . eISSN 2376-4562. S2CID 226665710.
Ли, Ронгцзя; Цзинь, Чэньхуэй (4 мая 2018 г.). «Атаки Meet-in-the-Middle на QARMA-64/128 с сокращенным раундом». The Computer Journal . 61 (8): 1158–1165. doi :10.1093/comjnl/bxy045. eISSN 1460-2067. ISSN 0010-4620.
Ян, Дун; Ци, Вэнь-фэн; Чэнь, Хуа-цзинь (2018). «Невозможная дифференциальная атака на семейство блочных шифров QARMA». Архив Cryptology ePrint .
Внешние ссылки
Реализация QARMA-64 на языке Python, находящаяся в открытом доступе
Реализация QARMA-64 на языке C с открытым исходным кодом (лицензия MIT)