Саймон (шифр)

редактировать
Семейство легких блочных шифров, публично выпущенных Агентством национальной безопасности (АНБ) в июне 2013 г.
Саймон
блок Саймона cipher.svg Один раунд Саймона
генерала
дизайнеровРэя Болье, Дугласа Шорса, Джейсона Смита, Стефана Тритмана-Кларка, Брайана Уикса, Луи Вингера АНБ
Впервые опубликовано2013
Относится кSpeck
Детали шифра
Размеры ключа 64, 72, 96, 128, 144, 192 или 256 бит
Размеры блоков 32, 48, 64, 96 или 128 бит
СтруктураСбалансированная Сеть Фейстеля
Раунды32, 36, 42, 44, 52, 54, 68, 69 или 72 (в зависимости от блока и размера ключа)
Скорость7,5 cpb (21,6 без SSE ) на Intel Xeon 5640 (Simon128 / 128)
Лучшее public криптоанализ
Дифференциальный криптоанализ может разбить 46 циклов Simon128 / 128 с 2 данными, 2 байтами памяти и временной сложностью 2 с вероятностью успеха 0,632.

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

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

Содержание
  • 1 Описание шифра
    • 1.1 Описание ключевого расписания
      • 1.1.1 Описание постоянной последовательности
  • 2 Криптоанализ
  • 3 Попытки стандартизации и противоречия
  • 4 См. Также
  • 5 Ссылки
Описание шифра

Блочный шифр Саймона - это сбалансированный шифр Фейстеля с n -битовое слово, поэтому длина блока равна 2n. Длина ключа кратна n на 2, 3 или 4, что является значением m. Поэтому реализация шифра Саймона обозначается как Simon2n / nm. Например, Simon64 / 128 относится к шифру, работающему с 64-битным блоком открытого текста (n = 32), который использует 128-битный ключ. Блочный компонент шифра одинаков для всех реализаций Simon; однако логика генерации ключей зависит от реализации 2, 3 или 4 ключей.

Simon поддерживает следующие комбинации размеров блоков, размеров ключей и количества раундов:

Размер блока (биты)Размер ключа (биты)Раунды
326432
487236
9636
649642
12844
969652
14454
12812868
19269
25672

Описание ключа schedule

Пусть S j {\ displaystyle S ^ {j}}{\ displaystyle S ^ {j}} обозначит левый круговой сдвиг на j {\ displaystyle j}j бит.

Ключевое расписание математически описывается как

ki + m = {c ⊕ (zj) i ⊕ ki ⊕ (I ⊕ S - 1) (S - 3 ki + 1), m = 2 c ⊕ (zj) i ⊕ ki ⊕ (I ⊕ S - 1) (S - 3 ki + 2), m = 3 c ⊕ (zj) i ⊕ ki ⊕ (I ⊕ S - 1) (S - 3 ki + 3 ⊕ ки + 1), м знак равно 4 {\ displaystyle k_ {я + m} = \ left \ {{\ begin {array} {ll} c \ oplus \ left (z_ {j} \ right) _ {i} \ oplus k_ {i} \ oplus \ left (I \ oplus S ^ {- 1} \ right) \ left (S ^ {- 3} k_ {i + 1} \ right), m = 2 \\ c \ oplus \ left (z_ {j} \ right) _ {i} \ oplus k_ {i} \ oplus \ left (I \ oplus S ^ {- 1} \ right) \ left (S ^ {- 3} k_ {i + 2 } \ right), m = 3 \\ c \ oplus \ left (z_ {j} \ right) _ {i} \ oplus k_ {i} \ oplus \ left (I \ oplus S ^ {- 1} \ right) \ left (S ^ {- 3} k_ {i + 3} \ oplus k_ {i + 1} \ right), m = 4 \\\ end {array}} \ right.}{\ displaystyle k_ {i + m} = \ left \ {{\ begin {array} {ll} c \ oplus \ left ( z_ {j} \ right) _ {i} \ oplus k_ {i} \ oplus \ left (I \ oplus S ^ {- 1} \ right) \ left (S ^ {- 3} k_ {i + 1} \ справа), m = 2 \\ c \ oplus \ left (z_ {j} \ right) _ {i} \ oplus k_ {i} \ oplus \ left (I \ oplus S ^ {- 1} \ right) \ left (S ^ {- 3} k_ {i + 2} \ right), m = 3 \\ c \ oplus \ left (z_ {j} \ right) _ {i} \ oplus k_ {i} \ oplus \ left ( I \ oplus S ^ {- 1} \ right) \ left (S ^ {- 3} k_ {i + 3} \ oplus k_ {i + 1} \ right), m = 4 \\\ end {array}} \ справа.}

.

Структура ключевого расписания может или может не быть сбалансированным. Счетчик ключевых слов m {\ displaystyle m}m используется для определения структуры раскрытия ключа, в результате получается общая разрядность m ∗ n {\ displaystyle m * n }{\ displaystyle m * n} . Расширение ключевого слова состоит из сдвига вправо, XOR и постоянной последовательности, z x {\ displaystyle z_ {x}}_ {\ displaystyle>{\ displaystyle>} . Бит z x {\ displaystyle z_ {x}}_ {\ displaystyle>{\ displaystyle>} работает с младшим битом ключевого слова один раз за цикл.

Описание постоянной последовательности

Постоянная последовательность, zx {\ displaystyle z_ {x}}_ {\ displaystyle>{\ displaystyle>} , создается регистром сдвига линейной обратной связи (ЛФСР ). Логическая последовательность битовых констант задается размером ключа и блока. LFSR создается 5-битным полем. Постоянный бит воздействует на ключевой блок один раз за раунд на самом младшем бите, чтобы добавить неключевую энтропию к ключевому расписанию. LFSR имеет разную логику для каждой последовательности z x {\ displaystyle z_ {x}}_ {\ displaystyle>{\ displaystyle>} ; однако начальное условие для шифрования такое же. Начальное состояние LFSR для дешифрования меняется в зависимости от раунда.

последовательность константной
г 0 = 11111010001001010110000111001101111101000100101011000011100110 {\ displaystyle Z_ {0} = 11111010001001010110000111001101111101000100101011000011100110}{\ displaystyle z_ {0} = 11111010001001010110000111001101111101000100101011000011100110}
г 1 = 10001110111110010011000010110101000111011111001001100001011010 {\ displaystyle Z_ {1} = 10001110111110010011000010110101000111011111001001100001011010}{\displaystyle z_{1}=10001110111110010011000010110101000111011111001001100001011010}
г 2 = 10101111011100000011010010011000101000010001111110010110110011 {\ displaystyle z_ {2} = 10101111011100000011010010011000101000010001111110010110110011}{\ displaystyle z_ {2} = 10101111011100000011010010011000101000010001111110010110110011}
г 3 = 11011011101011000110010111100000010010001010011100110100001111 {\ displaystyle Z_ {3} = 11011011101011000110010111100000010010001010011100110100001111}{\ displaystyle z_ { 3} = 11011011101011000110010111100000010010001010011100110100001111}
г 4 = 11010001111001101011011000100000010111000011001010010011101111 {\ displaystyle Z_ {4} = 11010001111001101011011000100000010111000011001010010011101111}{\ displaystyle z_ {4} = 11010001111001101011011000100000010111000011001010010011101111}
Криптоанализ

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

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

Наиболее известные атаки на Саймона (в стандартной модели атаки)
ВариантАтакованные раундыСложность времениСложность данныхТип атаки
Simon128 / 25653/72 (74%)22Линейный корпус
Simon128 / 19251/69 (74%)22Линейный корпус
Simon128 / 12849/68 (72%)22Линейный корпус
Simon96 / 14438/54 (70%)22Линейный корпус
Simon96 / 9637/52 (71%)22Линейный корпус
Simon64 / 12831/44 (70%)22Линейный корпус
Simon64 / 9630/42 (71%)22Линейный корпус
Simon48 / 9625/36 (69%)22Линейный корпус
Simon48 / 7224/36 (67%)22Линейный корпус
Simon32 / 6424/32 (75%)22Интеграл

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

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

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

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

Попытки стандартизации и противоречия

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

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

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

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