Спек (шифр)

редактировать
Speck
Блочный шифр Speck 0 indexing.svg 3 раунда Speck с расписанием клавиш из 2 слов
Генерал
ДизайнерыРэй Болье, Дуглас Шорс, Джейсон Смит, Стефан Тритман-Кларк, Брайан Уикс, Луис Уингерс АНБ
Впервые опубликовано2013
Относится кСаймон, Threefish
Деталь шифра
Размеры ключей 64, 72, 96, 128, 144, 192 или 256 бит
Размеры блока 32, 48, 64, 96 или 128 бит
СтруктураARX
Округляет22–34 (в зависимости от блока и размера ключа)
Скорость2,6 cpb (5,7 без SSE ) на Intel Xeon 5640 (Speck128 / 128)
Лучший общедоступный криптоанализ
Атаки на полные шифры не известны, но атакованы версии с сокращенным циклом. Дифференциальный криптоанализ может сломать около 70–75% раундов большинства вариантов немного быстрее, чем полный перебор; см. #Cryptanalysis.

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

АНБ начало работу над шифрами Саймона и Спека в 2011 году. Агентство ожидало, что некоторым агентствам в федеральном правительстве США понадобится шифр, который будет хорошо работать с разнообразным набором Интернета вещей устройств с сохранением приемлемого уровня безопасности.

Содержание
  • 1 Описание шифра
  • 2 Справочный код
    • 2.1 Конечность
  • 3 Производительность
  • 4 Безопасность
    • 4.1 Криптоанализ
    • 4.2 Атаки по побочным каналам
    • 4.3 Размеры блоков и ключей
  • 5 Попытки стандартизации и противоречия
  • 6 Ссылки
Описание шифра

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

Размер блока (биты)Размер ключа (биты)Раунды
2 × 16 = 324 × 16 = 6422
2 × 24 = 483 × 24 = 7222
4 × 24 = 9623
2 × 32 = 643 × 32 = 9626
4 × 32 = 12827
2 × 48 = 962 × 48 = 9628
3 × 48 = 14429
2 × 64 = 1282 × 64 = 12832
3 × 64 = 19233
4 × 64 = 25634

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

Эталонный код

Ниже приведена эталонная реализация разработчиками, написанная на C, варианта Speck со 128-битным размером блока и ключом, где key = (К [1], К [0]). Он адаптирован из их IACR ePrint.

#include #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 ct [2], uint64_t const pt [2], uint64_t const K [2]) {uint64_t y = pt [0], x = pt [1], b = K [0], a = K [1] ]; R (х, у, Ь); for (int i = 0; i < ROUNDS - 1; i++) { R(a, b, i); R(x, y, b); } ct[0] = y; ct[1] = x; }

Обратите внимание, что этот код вычисляет ключи раунда (расписание ключей ) по запросу. На практике, как и в случае с другими блочными шифрами, реализации обычно вычисляют раунд ключей только один раз и кэшировать их, а не пересчитывать их для каждого зашифрованного или дешифрованного блока. Хотя, как отмечают авторы, «Учитывая, что небольшой размер кода был основной целью дизайна, имело смысл повторно использовать функцию раунда для раунда. генерация ключей. Этот подход позволяет на лету генерировать циклические ключи для реализаций микроконтроллеров, используя только код циклической функции, очень мало ПЗУ и не ОЗУ сверх того, что требуется для хранения ключа и открытого текста. "

Для 16-битных слов (Speck32) ротация составляет 7 бит вправо и 2 бита влево; для всех других размеров слова, как показано здесь, они равны 8 и 3.

Если длина ключа превышает 2 слова, есть 2 или 3 значения a, которые используются поочередно.

Endianness

Исходная бумага Speck не скрепляет потребляет порядок байтов байтов, когда блок открытого текста интерпретируется как два слова, используемые в алгоритме шифрования. Тестовые векторы, приведенные в статье, предполагают прямой порядок байтов. Однако авторы алгоритма посоветовали некоторым разработчикам использовать порядок байтов с прямым порядком байтов для ключей, открытого текста и зашифрованного текста, и эта практика была принята другими.

Производительность

Согласно тестам потокового шифрования (eBASC) ECRYPT, Speck - один из самых быстрых доступных шифров, как для длинных, так и для коротких сообщений. Некоторые медианные характеристики для длинных сообщений (128-битная версия с размером 128 блоков): 1,99 циклов на байт (cpb) на AMD Ryzen 7 1700; 1,27 cpb на Intel Core i5-6600; 15.96 cpb на Broadcom BCM2836 Cortex A7. Например, на платформе ARMv7 Speck примерно в 3 раза быстрее, чем AES.

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

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

Security

Cryptanalysis

дизайнеры утверждают, что Speck, хотя и является «легким» шифром, предназначен для обеспечения полной безопасности, возможной для каждого блока и размера ключа, по сравнению со стандартным selected-plaintext (CPA) и selected-ciphertext (CCA) атаки. Устойчивость к атакам с использованием связанных ключей также была заявлена ​​как цель, хотя и менее важная, поскольку атаки в этой модели не актуальны для типичных случаев использования. Не было предпринято никаких усилий, чтобы противостоять атакам в модели атаки с распознаванием известного ключа, а также разработчики не оценили Speck для использования в качестве хэш-функции .

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

Наиболее известные атаки на Speck (в стандартной модели атаки)
ВариантАтакованные раундыСложность времениСложность данныхСложность пространстваТип атаки
Speck128 / 25625/34 (74%)222дифференциал
Speck128 / 19224/33 (73%)222дифференциал
Speck128 / 12823/32 ( 72%)222дифференциал
Speck96 / 14421/29 (72%)222дифференциал
Speck96 / 9620/28 (71%)222дифференциал
Speck64 / 12820/27 (74%)222дифференциал
Speck64 / 9619/26 (73%)222дифференциал
Speck48 / 9617/23 (74%)222дифференциал
Speck48 / 7216/22 (73%)222дифференциал
Speck32 / 6415/22 (68%)222дифференциал

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

Speck включает счетчик раундов в ключевую таблицу. Разработчики заявляют, что это было включено для блокирования атак слайдов и ротационного криптоанализа. Тем не менее, криптоанализ с вращением XOR использовался для поиска отличительных признаков от версий Speck с уменьшенным числом раундов. Хотя авторы не описывают стандартные атаки с восстановлением ключа на основе их отличительных признаков, их лучшие отличители на Speck32 и Speck48 в модели атаки с распознаванием ключа для определенных классов слабого ключа проходят несколько больше раундов, чем лучшие отличительные отличия. Один из авторов сказал, что его исследование было ограниченным в ресурсах и что, вероятно, возможны отличия с помощью ротационного XOR на большем количестве раундов. Однако этот тип криптоанализа предполагает использование связанных ключей или даже моделей атак с известным ключом, которые не являются проблемой в типичных криптографических протоколах и решениях. Разработчики также заявляют, что Speck не был разработан для защиты от атак с распознаванием известного ключа (которые не ставят под угрозу конфиденциальность шифров напрямую).

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

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

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

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

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

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

Попытки стандартизации и разногласия

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

В ответ на озабоченность АНБ заявило, что более 70 работ по анализу безопасности от некоторых ведущих криптографов мира подтверждают вывод АНБ о том, что алгоритмы безопасны, и АНБ подтвердило, что ему не известны какие-либо криптоаналитические методы, которые позволили бы им или кто-либо еще может использовать Саймона или Спека

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

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

Ссылки
Последняя правка сделана 2021-06-09 02:09:21
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте