Введение

Информационные технологии необратимо проникли в повседневную деятельность каждого — жизнь обычного человека уже нельзя представить без различных гаджетов. Во многих домах используются устройства со встроенной операционной системой (помимо обычных персональных компьютеров), которые могут быть подключены к сети Интернет и даже объединены в беспроводную сеть. Везде люди окружены разнообразными терминалами, считывателями, датчиками и т. д.

Такое распространение интеллектуальных технологий резко поднимает проблему безопасности данных. Однако, сейчас невозможно предложить криптографический примитив, который можно было бы реализовать на всех типах целевых устройств. Можно утверждать, что AES (англ.: Advanced Encryption Standard) действительно сильный алгоритм с хорошей производительностью и желательно использовать AES в устройствах высокого класса, в большом количестве встроенных систем или в некоторых устройствах низкого уровня (с некоторыми ограничениями). Однако невозможно использовать обычные криптографические алгоритмы в устройствах с крайне ограниченными ресурсами. Примерами таких устройств являются:

  • RFID-считыватели (англ.: Radio Frequency Identification);

  • Смарт-карты (включая беспроводные);

  • Беспроводные сенсоры;

  • Индикаторы, датчики, контроллеры;

  • Интернет вещей и др.

Основные принципы и подходы к разработке алгоритмов, предназначенных для использования в устройствах с чрезвычайно низкими ресурсами, отличаются от критериев проектирования обычно используемых криптографических алгоритмов. Эта весьма специфическая область покрывается ветвью современной криптографии — малоресурсной криптографией (англ.: Lightweight cryptography). Стандарты малоресурсной криптографии, например, ISO/IEC 29192-2:2012 и ISO/IEC 29192-2:2019 не определяют строгих критериев для классификации криптографического алгоритма как “малоресурсного”, но общие черты таких алгоритмов — чрезвычайно низкие требования к основным ресурсам целевых устройств, включая следующее:

  • Размер, необходимый для аппаратной реализации;

  • Вычислительная мощность микропроцессоров или микроконтроллеров;

  • Оперативная память (RAM);

  • Постоянная память (ROM) и т. д.

Стандарт ISO/IEC 29192-2:2012 представляет блочные шифры PRESENT и CLEFIA, применимые на устройствах с крайне ограниченными ресурсами. Следующие версии данного стандарта включают в себя множество других малоресурсных блочных шифров [8].

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

DESL & DESXL

“As light as a feather and as hard as dragon scales”. Бильбо Бэггинс объясняет основную парадигму малоресурсной криптографии, Властелин Колец: Братство Кольца
“As light as a feather and as hard as dragon scales”. Бильбо Бэггинс объясняет основную парадигму малоресурсной криптографии, Властелин Колец: Братство Кольца

Шифры DESL (англ.: DES Lightweight)  и DESXL (англ.: DES-Xor Lightweight) создавались для использования в RFID-считывателях, но благодаря своей простоте стали широко популярны и в других приложениях, таких как датчики температуры, геолокационные устройства.

DESL был изначально основан на классическом алгоритме DES (англ.: Data Encryption Standard) — алгоритме с симметричным ключом шифрования, размер блока которого равен 64 битам. Алгоритм DES построен на восьми S-блоках — функциях в коде программы или части аппаратной системы, принимающих на вход n бит, преобразующих их по определённому алгоритму и возвращающих на выходе m бит. В отличие от DES, DESL использует всего один S-блок вместо восьми S-блоков в DES. Критерии проектирования одиночного S-блока делают DESL устойчивым к наиболее распространенным криптоаналитическим атакам.

DESXL — это облегченная версия алгоритма DESX (англ.: DES-Xor), который является одним из широко используемых вариантов DES. В отличие от DES, DESX выполняет отбеливание (см. key whitening) входных и выходных данных с помощью определенных “подключей”, что позволяет повысить безопасность повторяющегося блочного шифра. Как и DESL, DESXL использует тот же единственный S-блок вместо 8 S-блоков в DESX. Таким образом, DESXL объединяет в себе свойства DESX и DESL: от DESL наследуется упрощение в блочной части шифрования, а от DESX — отбеливание ключа.

Относительно низкие требования к ресурсам DESL / DESXL — всего лишь результат восьмикратного сокращения требований к ПЗУ для хранения таблиц (поскольку это единственное отличие DESL / DESXL от классических алгоритмов). Если говорить о использовании DESL и DESXL на практике, то авторы DESL / DESXL утверждают в [1], что такого снижения требований достаточно для использования предложенных алгоритмов в устройствах с ограниченными ресурсами на примере пассивных RFID-считывателей.

Curupira

Curupira создавался для использования в приложении геолокации, например в сенсорных датчиках.  Кроме того, он представляет собой инволюционную структуру (это означает, что процессы шифрования и дешифрования идентичны) и очень гибок с точки зрения реализации. Таким образом, шифр хорошо адаптирован к сценариям с ограниченными ресурсами. Данный шифр — вариант семейства алгоритмов, использующих стратегию Wide Trail — метод увеличения диффузии особым образом для противостояния дифференциальному и линейному криптоанализу. Другими примерами алгоритмов, использующих стратегию Wide Trail, являются AES, Anubis и Khazad. Относительно низкие потребности Curupira в ресурсах определяются следующим набором факторов:

  • Размер внутреннего состояния алгоритма относительно невелик (96 бит; по сравнению со 128 битами внутреннего состояния AES);

  • Возможность реализовать 8 X 8-битный S-блок Curupira S () как композицию двух 4 X 4-битных S-блоков P () и Q (), полностью унаследованных от Anubis и Khazad. Эта возможность позволяет снизить требования к ПЗУ для хранения S-блоков.

Размер блока Curupira составляет 96 бит; он принимает несколько фиксированных длин ключей: 96, 144 или 192 бита. Блок данных представлен в виде массива размером 3 X 4 байта (внутреннее состояние алгоритма); каждый раунд Curupira изменяет внутреннее состояние с помощью следующих операций:

  1. Нелинейный слой γ; состоит из параллельного применения S-блока S () ко всем байтам внутреннего состояния;

  2. Слой перестановки π; меняет местами каждый столбец состояния в соответствии с предопределенным правилом;

  3. Линейный диффузионный слой θ; выполняет умножение состояния на заранее заданную матрицу D;

  4. Ключевой дополнительный слой σ (Kr); выполняет поразрядное сложение r-раундового ключа Kr;

  5. Количество раундов строго не определяется: алгоритм определяет минимальное и максимальное количество раундов для каждой разрешенной длины ключа (от 10 раундов для 96-битного ключа до 23 раундов для 192-битного). Отбеливание на входе выполняется перед первым раундом путем добавления подключа K0. В последнем раунде операция θ не выполняется.

KATAN & KTANTAN

KATAN — это семейство блочных шифров: KATAN32, KATAN48 и KATAN64. Число в названии алгоритма представляет размер блока алгоритма в битах. Все шифры используют 80-битные ключи.

Рис. 1 Структура KATAN / KTANTAN
Рис. 1 Структура KATAN / KTANTAN

Самый маленький шифр из всего семейства, KTANTAN32, может быть реализован в 462 GE (англ.: Gate Equivalent, единица измерения, которая позволяет определять сложность цифровых электронных схем, не зависящую от технологии производства) при достижении скорости шифрования 12,5 Кбит / с (при 100 кГц). KTANTAN48, версия, рекомендуемая для RFID-меток, использует 588 GE, тогда как KATAN64, самый большой и самый гибкий шифр в семействе, использует 1054 GE и имеет пропускную способность 25,1 Кбит / с (на 100 кГц). Данный шифр используется в огромном количестве low-end устройств, например, в датчиках геолокации и метеодатчиках.

Семейство KTANTAN также содержит три алгоритма с одинаковыми размерами блоков и длиной ключа. KTANTAN более компактен в аппаратном обеспечении — он предполагает, что ключ записан в целевое устройство и не может быть изменен, кроме того, key schedule KTANTAN намного проще по сравнению с KATAN. Сам key schedule — это алгоритм, который расширяет относительно короткий главный ключ (обычно длиной от 40 до 256 бит) до относительно большого расширенного ключа (обычно несколько сотен или тысяч бит) для последующего использования в алгоритме шифрования и дешифрования. Остальные процедуры шифров KATAN и KTANTAN эквивалентны. Структура алгоритмов основана на структуре потокового шифра (вариант с двумя регистрами). Размер внутреннего состояния эквивалентен размеру блока алгоритма. Каждый из алгоритмов KATAN загружает блок данных в два внутренних регистра сдвига L1 и L2. Выполняет 254 раунда; каждый из которых использует нелинейные функции, которые формируют обратную связь регистров (Рис. 1). Размеры регистров и конкретные биты, используемые функциями нелинейной обратной связи, фиксированы для каждого алгоритма KATAN и KTANTAN и определены в [2]. Одна из нелинейных функций использует определенное нерегулярное значение (IR) в дополнение к нескольким битам регистра. Это значение зависит от номера раунда. KATAN48 и KATAN64 имеют те же нелинейные функции, что и KATAN32, но они используют другие биты внутренних регистров для формирования обратной связи. KATAN48 и KATAN64 также используют регистры большего размера в соответствии с размерами блоков. KATAN32 обновляет регистры один раз за раунд; KATAN48 и KATAN64 используют нелинейные функции два или три раза соответственно.

Key schedule в KATAN основан на регистре сдвига с линейной обратной связью (англ.: LFSR). Другой LFSR используется для подсчета раундов и остановки шифрования при необходимости. Самый старший бит последнего LFSR формирует вышеупомянутое нерегулярное значение.

Требования к ресурсам KATAN и KTANTAN чрезвычайно низкие из-за следующего набора факторов:

  • Использование регистров сдвига, которые очень легко могут быть реализованы аппаратно; функции обратной связи также очень просты, хотя и обеспечивают необходимую нелинейность;

  • Обработка небольших блоков данных: от 32 до 64 бит;

  • Размер внутреннего состояния невелик и его размер равен размеру блока (+ дополнительно LSFR для подсчета раундов);

  • Key schedule в KTANTAN предельно прост.

PRESENT

PRESENT —  пример шифра-сети замещения-перестановки. Данный блочный шифр изначально создан для замены относительно тяжелого шифра AES в таких устройствах как RFID-считыватели и сенсорные сети. PRESENT выполняет 31 раунд на 64-битном блоке данных и позволяет использовать 80- или 128-битные ключи. Каждый раунд состоит из следующих операций:

  • Добавление раундового ключа операцией XOR;

  • Использование диффузионного слоя (S-слой);

  • Использование слоя трансформации смешения (P-слой).

PRESENT основан на слоях преобразования Serpent [3] и DES [4], которые были подробно проанализированы. Диффузионный слой выполняет нелинейную замену 16 4-битных подблоков текущего состояния, используя параллельный S-блок Serpent 4 X 4.

Слой преобразования перемешивания выполняет предварительно определенную перестановку битового уровня. Он основан на слое преобразования смешивания DES и кажется наиболее простым для реализации. В программном обеспечении P-уровень может быть реализован как битовые операции или с использованием соответствующей таблицы «P-блок». Также PRESENT выполняет отбеливание выходных данных после финального раунда.

Hummingbird

Hummingbird может обеспечить необходимую безопасность с блоком небольшого размера и устойчив к наиболее распространенным атакам, таким как линейный и дифференциальный криптоанализ. Кроме того, в исходном исследовании предлагается эффективная программная реализация Hummingbird на 8-битном микроконтроллере ATmega128L от Atmel и 16-битном микроконтроллере MSP430 [7].

Hummingbird шифрует 16-битные блоки данных с помощью 256-битного ключа.

Базовая архитектура Hummingbird оригинальна и гибридна (с элементами блочного и потокового шифров). Процедуру шифрования можно представить, как непрерывно работающую роторную машину. Четыре идентичных внутренних блочных шифра играют роль виртуальных роторов. Они выполняют набор операций с короткими 16-битными блоками данных.

Рис. 2 Высокоуровневая структура Hummingbird
Рис. 2 Высокоуровневая структура Hummingbird

Hummingbird использует сложение по модулю 216 для смешивания регистров внутреннего состояния с блоком данных, который нужно обработать. В качестве альтернативы высокоуровневая структура алгоритма может быть представлена как 4-раундовый блочный шифр с операциями обратной связи, которые позволяют использовать внутреннее объединение блоков шифра в качестве дополнительного преимущества структуры алгоритма (Рис. 2). Относительно низкие требования к ресурсам Hummingbird достигаются за счет простых арифметических и логических операций и использования чрезвычайно коротких блоков данных.

Основные подходы к проектированию малоресурсных алгоритмов шифрования

Одна из тенденций криптографии в общем предполагает, что криптографические примитивы должны быть как можно сложнее и «тяжелее». В связи с этим, основные параметры блочных шифров (размер блока, длина ключа, размер внутреннего состояния и т. д.) постоянно увеличиваются. Это компенсирует непрерывное увеличение вычислительной мощности компьютерных систем и лавинообразный рост объемов обрабатываемых данных. Следовательно, требования к ресурсам (и сложность их реализации) для блочных шифров неизбежно растут, чтобы сделать блочные шифры более криптоустойчивыми и эффективными.

Этот подход в принципе не подходит для встраиваемых систем, особенно для систем с крайне ограниченными ресурсами. Малоресурсная криптография делает стоимость внедрения наиболее важным критерием. Уровень безопасности и производительность алгоритмов также должны быть адекватными, т.е. очень желательно найти компромисс между этими тремя характеристиками; и такой компромисс сильно зависит от ресурсов целевых устройств.

На примере рассмотренных выше алгоритмов можно попытаться обобщить основные методы, которые используют авторы облегченных алгоритмов для поиска необходимого баланса:

  • Уменьшение основных параметров алгоритма: размера блока, длины ключа (естественно, в разумных пределах) и внутреннего состояния алгоритма;

  • Попытка основывать малоресурсные алгоритмы на элементах (арифметических и логических операциях, линейных или нелинейных преобразованиях и т. д.), которые широко используются и тщательно анализируются; это может компенсировать некоторое вынужденное снижение криптографической стойкости облегченных алгоритмов;

  • Упрощение слоев преобразований, например, снижение требований к ПЗУ за счет использования S-блоков 4 X 4 (в идеале — одного S-блока 4 X 4) или использования их состава для замены более крупных подблоков;

  • Использование недорогих (с точки зрения реализации), но эффективных элементов, таких как зависящие от данных перестановки битов, регистры сдвига и т. д.;

  • Разработка алгоритмов key schedule, которые могут выводить подключи на месте (т. е. подключи не нужно предварительно вычислять).

  • Использование операций, которые допускают компромиссы при реализации в соответствии с ресурсами, доступными на целевой платформе.

Ограничения и компромиссы

Как было сказано выше, цель разработки малоресурсного алгоритма шифрования — найти компромисс между низкими требованиями к ресурсам, производительностью и криптографической стойкостью алгоритма (включая безопасное использование целевого устройства с алгоритмом внутри). Ограничения ресурсов вынуждают криптографов разрабатывать облегченные алгоритмы с небольшим или относительно небольшим размером блока и длиной ключа. В частности, это позволяет злоумышленнику атаковать облегченный алгоритм, используя атаку сопоставления зашифрованного текста: для m-битового блочного шифра равные блоки зашифрованного текста могут ожидаться после шифрования 2m/2 блоков данных (см. “Атака Дней рождения”); это может быть связано с утечкой информации о блоках открытого текста. Злоумышленник может составить исчерпывающий словарь блоков для текущего ключа после шифрования 2m блоков данных. Таким образом, атака по совпадению шифротекста эффективна, например, против 16-, 32- и 48-битных блочных шифров. Поэтому очень небезопасно использовать алгоритмы с небольшими размерами блоков в таких режимах, как ECB (англ.: Electronic Codebook) — необходимо предусмотреть некоторые ограничения для использования таких алгоритмов: использовать их в сложных режимах, регулярно менять ключ и т.д. К сожалению, такие ограничения или рекомендации создают дополнительную нагрузку на целевое устройство; соблюдение рекомендаций может быть невозможно для конкретного алгоритма (например, семейство алгоритмов KTANTAN не позволяет изменять ключ).

Следовательно, необходимо понимать, что малоресурсные криптографические примитивы могут быть использованы в системах с относительно низкими или средними требованиями к безопасности или в системах, которые могут учитывать специфику используемого алгоритма, что позволяет найти желаемый компромисс.

Внутреннее состояние малоресурсных алгоритмов также должно быть как можно меньше по размеру. Разработчики используют более простые (по сравнению с классическими алгоритмами) преобразования смешения и диффузии. Таким образом, внутренние структуры таких алгоритмов разработаны без достаточного запаса прочности. Это позволяет специалистам по криптографии публиковать множество статей с анализом малоресурсных алгоритмов и поиском возможных вариантов взлома.

Заключение

Мы рассмотрели некоторые примеры малоресурсных блочных шифров и выделили обобщенные подходы к разработке таких шифров. Кроме того, выделены ограничения и компромиссы, связанные с реализацией малоресурсных алгоритмов шифрования.

Список литературы

[1] G. Leander, C. Paar, A. Poschmann, and K. Schramm. New Lightweight DES Variants. FSE 2007, LNCS, vol. 4593, pp. 196-210. Springer, 2007.

[2] C. De Cannière, O. Dunkelman, M. Knežević. KATAN & KTANTAN – A Family of Small and Efficient Hardware-Oriented Block Ciphers. CHES’09, LNCS, vol. 5747, pp. 272-288. Springer, 2009

[3] R. J. Anderson, E. Biham, and L. R. Knudsen. Serpent: A Proposal for the Advanced Encryption Standard. Available at http://www.cl.cam.ac.uk

[4] FIPS Publication 46-3. Data Encryption Standard (DES). U. S. Department of Commerce / National Institute of Standards and Technology. Reaffirmed 1999 October 25.

[5] Sergey Panasenko and Sergey Smagin. Lightweight Cryptography: Underlying Principles and Approaches. International Journal of Computer Theory and Engineering, Vol. 3, No. 4, August 2011

[6] NIST Interagency Report 8114. Report on Lightweight Cryptography. March 2017

[7] D. Engels, X. Fan, G. Gong, H. Hu, and E. M. Smith. Hummingbird: Ultra-Lightweight Cryptography for Resource-Constrained Devices. FC 2010 Workshops, LNCS, vol. 6054, pp. 3-18.

[8] https://www.iso.org/standard/78477.html

Комментарии (14)


  1. VladSMR
    01.12.2021 09:15
    +3

    Спасибо автору, тема интересная и давно назревшая.


  1. Indemsys
    01.12.2021 11:03
    +3

    Однако судя по статье [7] алгоритмы Hummingbird и PRESENT очень медленные.
    В тех же микроконтроллерах MSP430, на которые портировались эти алгоритмы есть встроенные модули шифрования AES256, работающие на порядок быстрее.

    Вызывает беспокойство, что авторы базируются на симуляции работы Enigma, которая была взломана почти век назад. При этом они прямо пишут, что делали резистентность алгоритма только к двум типам распространенных атак.


  1. Sergey6661313
    01.12.2021 12:05

    Где найти информацию о коде Дарвина?


    1. Teofelts Автор
      01.12.2021 14:37

      А что вы понимаете под "Кодом Дарвина"?


  1. VelocidadAbsurda
    01.12.2021 12:35
    +4

    Небольшое примечание: малоресурсность малоресурсности рознь. Шифры, заявленные как «малоресурсные» без уточнений, чаще подразумевают под этим аппаратную реализацию, и далеко не факт, что в программном виде всё будет так же хорошо (вот и выше упомянута низкая производительность на MSP430). Некоторые примитивы отлично ложатся на аппаратуру, но не очень - на софт, пример: DES и его производные полны битовых перестановок, в софте в общем случае (таблица перестановок без удобных закономерностей) такое требует O(кол-во битов) времени (достаём каждый бит и вставляем на новое место), а в железе - ровно ноль (это просто «провода соединены крест-накрест»).

    «Малоресурсность в софте» - отдельный подкласс алгоритмов, основанных на операциях с байтами/словами, а не с битами, например LEA, Speck, основанные на сложении/сдвиге/xor (ARX, add/rotate/xor).


  1. drWhy
    01.12.2021 13:39
    +1

    “Легкая как перышко, и твердая как чешуя дракона”
    Мифриловая кольчужка

    Быстро, качественно, недорого
    Быстро, качественно, недорого

    Мифриловая кольчужка — это вряд ли про малоресурсность — мифрил редок, дорог и слишком близок к балрогу, к тому же его обработка требует «очень высоких температур» — намёк на не всем доступный уровень технологий. Тут напрашивается сравнение скорее с квантовыми технологиями — также дорогими, по крайней мере в период зарождения, но дающими надежды на некоторое превосходство для тех, кто вовремя спохватится. Но балрог уже пробуждается.


  1. mpa4b
    02.12.2021 00:46
    +3

    AES вполне себе малоресурсный, имеет байтовую структуру и требует на 8-битной машине минимум 1 лукап-табличку на 256 байт, а если таких табличек можно взять несколько, то производительность улучшается. Ему даже удавалось обогнать на 8-битке speck и blowfish (оба с 64-битными блоками).

    Ещё одна важная часть в статье совсем не рассмотрена: дело в том, что просто шифрование мало когда нужно, ещё требуется аутентификация, т.е. подтверждение того, что по пути сообщение никто не испортил. И тут в случае применения традиционных HMAC, основанных на хешах типа MD5 -- уже получается сильное снижение производительности на 8-битках, в разы от просто шифрования. CMAC, основанный на том же алгоритме, что и само шифрование -- в 2 раза.

    И тут-то возникает такая вещь, как https://en.wikipedia.org/wiki/Authenticated_encryption -- причём желательно в рамках одного алгоритма и быстро. На такую роль для 8-биток вполне может претендовать алгоритмы на базе 'криптографических губок', таких как например https://keccak.team/index.html (на чём сделан и SHA-3, например).


  1. emaxx
    02.12.2021 05:17

    Смарт-карты вполне себе поддерживают многие "стандартные" алгоритмы, например, спецификация PIV-карт SP 800-78-4 предусматривает AES-128, AES-192, AES-256.


  1. Alex-111
    02.12.2021 07:36
    +1

    Для слабых микроконтроллеров посмотрите еще в сторону TEA / XTEA
    Очень компактный код, работает на месте, никаких таблиц. Использую его в бутлоадерах на AVR, функция расшифровки компилируется в ~400 байт (память программ).


    1. mpa4b
      02.12.2021 18:06

      А что при этом вы используете для MAC, если не секрет?


      1. Alex-111
        02.12.2021 18:18

        Для чего, не понял? "MAC"?


        1. mpa4b
          03.12.2021 18:11

          1. Alex-111
            03.12.2021 20:22

            Проверки, что расшифровывался не мусор (или какая-то левая прошивка, но для этого же нужно знать ключ) - нет. Если юзер захочет убить устройство, то у него это получится.


  1. ptr128
    03.12.2021 00:15

    Чем ГОСТ 28147-89 не угодил? На 8-битных МК летает даже с гаммированием и имитовставками. Если памяти много (килобайты), то AES будет быстрее. Если же памяти мало (сотни байт) - ГОСТ 28147-89 выигрывает.