Interested Article - Speck

Speck — семейство простых для реализации блочных шифров, опубликованное АНБ США в июне 2013 . Шифры Speck оптимизированы для программных реализаций, тогда как опубликованный вместе с ним Simon оптимизирован для аппаратных реализаций. Speck относится к семейству ARX ( англ. add-rotate-xor ).

Варианты

Speck поддерживает несколько размеров блока и ключа. Блок представляет собой два слова, при этом слово может иметь размер 16, 24, 32, 48 или 64 бита. Ключ имеет размер 2, 3 или 4 слова. Раундовая функция состоит из нескольких стадий:

  1. Циклический сдвиг первого слова вправо на 8 бит;
  2. Сложение второго слова с первым по модулю 2 в степени длины слова;
  3. Операция XOR ключа и результата сложения;
  4. Циклический сдвиг второго слова влево на 3 бита;
  5. Операция XOR второго слова и результата предыдущего XOR.

Количество раундов зависит от выбранных размеров слова и ключа:

Размер блока (бит) Размер ключа (бит) Раундов
2×16 = 32 4×16 = 64 22
2×24 = 48 3×24 = 72 22
4×24 = 96 23
2×32 = 64 3×32 = 96 26
4×32 = 128 27
2×48 = 96 2×48 = 96 28
3×48 = 144 29
2×64 = 128 2×64 = 128 32
3×64 = 192 33
4×64 = 256 34

Для выработки ключей ( ( англ. )) используется та же раундовая функция.

Реализация

Разработчиками шифра в IACR ePrint была опубликована эталонная реализация Speck с 128-битным блоком и ключом. Ключ обозначен как key = (K[1], K[0]).

#include <stdint.h>

#define ROR(x, r) ((x >> r) | (x << (64 - r)))
#define ROL(x, r) ((x << r) | (x >> (64 - r)))
#define R(x, y, k) (x = ROR(x, 8), x += y, x ^= k, y = ROL(y, 3), y ^= x)
#define ROUNDS 32

void encrypt(uint64_t const pt[static 2],
             uint64_t ct[static 2],
             uint64_t const K[static 2])
{
   uint64_t y = pt[0], x = pt[1], b = K[0], a = K[1];

   R(x, y, b);
   for (int i = 0; i < ROUNDS - 1; i++) {
      R(a, b, i);
      R(x, y, b);
   }

   ct[0] = y;
   ct[1] = x;
}

При реализации с 16-битными словами, вращения используют 7-битный циклический сдвиг вправо и 2-битный влево. Для остальных размеров слова, как показано в примере используются сдвиги 8 и 3 соответственно.

Эффективность

Согласно сравнительным тестам «легковесных» шифров, Speck является одним из самых быстрых доступных шифров, однако производительность сильно зависит от архитектуры. Некоторые усредненные показатели для 64-битной версии блока и ключа размером 128: Tmote(18 бит MSP) - 9780 циклов, Raspberry Pi (32 бит ARM) - 35 циклов, что гораздо меньше в сравнении с результатами AES: Tmote(18 бит MSP) - 25350 циклов, Raspberry Pi (32 бит ARM) - 254 цикла. При реализации на Arduino Uno(8 бит AVR) AES занимает 62208 циклов, а Speck - 64768.

При реализации на 8-битном микроконтроллере AVR, Speck с 64-битными блоками и 128-битным ключом потребляет 192 байта Flash, временные переменные занимают 112 байтов ОЗУ и требуется 164 цикла для шифрования каждого байта в блоке.

Salsa20 - это потоковый шифр с сопоставимой производительностью. Однако, часто возникают трудности с безопасным использованием потоковых шифров в некоторых приложениях, в то время как блочные шифры, такие как Speck, работают хорошо. Это привело к тому, что Google добавил реализацию Speck в ядро Linux версии 4.17, планируя предложить ее в качестве варианта для шифрования диска на тех устройствах Android , которые в противном случае были бы незашифрованы из-за низкой производительности AES на процессорах, в которых отсутствует расширение системы команд AES . Speck был позже удален из ядра Linux и вместо этого Google переключился на алгоритм Adiantum.

Безопасность

Криптоанализ

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

По состоянию на 2018 год, не известно ни одной успешной атаки на варианты Speck с полным числом раундов. Из-за интереса к шифрам Simon и Speck было опубликовано около 70 работ по криптоанализу. Как и для итеративных шифров, атаки на варианты с уменьшенным числом раундов были проведены успешно. Лучшими опубликованными атаками на Speck в стандартной модели атак являются атаки дифференциального криптоанализа ; они перехватывают примерно 70–75% раундов большинства вариаций шифров, хотя эти лучшие атаки лишь незначительно быстрее, чем полный перебор . Команда разработчиков подбирала соответствующее количество раундов для фиксированной длины ключа так, чтобы при дифференциальных атаках сохранить запас прочности, аналогичный AES-128 , примерно 30%.

Лучшие опубликованные дифференциальные атаки на Speck в стандартной модели атак
Вариант Взломано раундов Сложность по времени Необходимые данные Байты памяти
Speck128/256 25/34 (74%) 2 253.35 2 125.35 2 22
Speck128/192 24/33 (73%) 2 189.35 2 125.35 2 22
Speck128/128 23/32 (72%) 2 125.35 2 125.35 2 22
Speck96/144 21/29 (72%) 2 143.94 2 95.94 2 22
Speck96/96 20/28 (71%) 2 95.94 2 95.94 2 22
Speck64/128 20/27 (74%) 2 125.56 2 61.56 2 22
Speck64/96 19/26 (73%) 2 93.56 2 61.56 2 22
Speck48/96 17/23 (74%) 2 95.8 2 47.8 2 22
Speck48/72 16/22 (73%) 2 71.8 2 47.8 2 22
Speck32/64 15/22 (68%) 2 63.39 2 31.39 2 22

Команда разработчиков Speck утверждает, что излишне большие запасы прочности сопряжены с реальными издержками, особенно на «легких» устройствах. Также они утверждают, что криптоанализ на этапе проектирования позволил правильно установить необходимое количество раундов и что это значение удовлетворяет запасу безопасности AES, поэтому Speck можно считать безопасным, даже с небольшим запасом прочности.

Разработчики утверждают, что криптоанализ АНБ обнаружил, что алгоритм не имеет слабых мест и его безопасность соизмерима с длиной ключа. Авторы говорят, что их методы криптоанализа включали линейный и дифференциальный криптоанализ с использованием стандартных методов, таких как алгоритм Мацуи и SAT/SMT solvers, хотя полный список не приводится.

АНБ одобрило использование Simon128 / 256 и Speck128 / 256 в системах национальной безопасности США, хотя AES-256 по-прежнему рекомендуется для неограниченных применений.

Атаки по побочным каналам

Speck не использует S-блоки(блоки подстановок) или другие таблицы поиска, поэтому он, естественно, неуязвим к атакам по времени . Это отличает его от шифров, использующих таблицы поиска, такие как AES, которые, как было показано, уязвимы для таких видов атак. Однако, как и большинство блочных шифров (включая AES), Speck уязвим для атак по энергопотреблению , если не приняты аппаратные контрмеры.

Размеры блоков и ключей

Хотя семейство шифров Speck включает в себя варианты с теми же размерами блоков и ключей, что и AES (Speck128 / 128, Speck128 / 192 и Speck128 / 256), оно также включает варианты с размером блока до 32 бит и размером ключа до 64 бит. Эти небольшие размеры блоков и ключей небезопасны для общего использования, поскольку они могут быть уязвимы для атак «дней рождения» и атак методом полного перебора, независимо от формальной безопасности шифра. Разработчики утверждают, что эти размеры блоков и ключей были добавлены для устройств с ограниченными ресурсами, где нет иных вариантов, или когда шифруются только очень небольшие объемы данных, например в протоколах RFID . Только вариант с 128-битным размером блока и 256-битным размером ключа одобрен для использования в системах национальной безопасности США.

Усилия по стандартизации и противоречия

Первые попытки стандартизировать Simon и Speck не увенчались успехом, так как не было получено большинство голосов Международной организации по стандартизации , требуемое для этого решения. Эксперты-делегаты ISO из нескольких стран, включая Германию, Японию и Израиль, выступили против усилий АНБ по стандартизации шифров Simon и Speck, сославшись на то, что АНБ настаивает на их стандартизации, зная об уязвимых местах в шифрах. Позиция была основана на частичном подтверждении нахождения слабых мест в шифрах, отсутствия явной необходимости стандартизации новых шифров и предыдущего участия АНБ в создании и продвижении криптографического алгоритма Dual_EC_DRBG с резервным копированием .

После того, как первые попытки стандартизировать шифры потерпели неудачу, ISO стандартизировал Simon и Speck в других рабочих группах. По состоянию на октябрь 2018 года шифры Simon и Speck были стандартизированы ISO как часть стандарта радиоинтерфейса RFID, Международного стандарта ISO / 29167-21 (для Simon) и Международного стандарта ISO / 29167-22 (для Speck). Они стали доступны для использования коммерческими организациями.

7 августа 2018 года Speck был полностью удален из версии ядра Linux 4.20.

Примечания

  1. , с. 1.
  2. , с. 6.
  3. / Bjørner N., Virbitskaite I., Voronkov A.. — Springer International Publishing, 2019. — С. 249. — (Theoretical Computer Science and General Issues). — ISBN 978-3-030-37486-0 . 20 декабря 2019 года.
  4. Shin S., Kim M., Kwon T. (англ.) // International Journal of Distributed Sensor Networks. — 2017. — Vol. 13 , iss. 11 . — P. 8, 11 . — ISSN . — doi : .
  5. Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B.,Wingers L. // National Security Agency. — 2014. — С. 15 . 16 июня 2016 года.
  6. . Linux kernel source tree . git.kernel.org (2018). 17 мая 2019 года.
  7. , с. 2.
  8. , с. 7-8.
  9. , с. 10.
  10. , с. 12-13.
  11. , с. 6-7.
  12. , с. 2.
  13. NSA. [ Algorithms to Support the Evolution of Information Assurance Needs]. — 2016. — 1 ноября. — С. 6 . 13 декабря 2019 года.
  14. , с. 12.
  15. Bhargavan K., Leurent G. // ACM. — 2016. — Октябрь. — С. 2-4 . 24 апреля 2017 года.
  16. . Reuters . 2017-09-21. из оригинала 13 декабря 2019 . Дата обращения: 13 декабря 2019 .
  17. (англ.) . ISO/IEC 29167-21 . ISO (2018).
  18. (англ.) . ISO/IEC 29167-22 . ISO (2018).
  19. . Linux kernel source tree . git.kernel.org (2018). 21 октября 2020 года.

Литература

  • Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B., Wingers L. // National Security Agency. — 2013.
  • Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B., Wingers L. // IACR Cyptology. — 2018. — Январь.
  • Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B., Wingers L. // National Security Agency. — 2015.


Ссылки

  • KIWI BYRD, НОЯБРЬ 18, 2017
Источник —

Same as Speck