Interested Article - Speck
- 2020-01-15
- 1
Speck — семейство простых для реализации блочных шифров, опубликованное АНБ США в июне 2013 . Шифры Speck оптимизированы для программных реализаций, тогда как опубликованный вместе с ним Simon оптимизирован для аппаратных реализаций. Speck относится к семейству ARX ( англ. add-rotate-xor ).
Варианты
Speck поддерживает несколько размеров блока и ключа. Блок представляет собой два слова, при этом слово может иметь размер 16, 24, 32, 48 или 64 бита. Ключ имеет размер 2, 3 или 4 слова. Раундовая функция состоит из нескольких стадий:
- Циклический сдвиг первого слова вправо на 8 бит;
- Сложение второго слова с первым по модулю 2 в степени длины слова;
- Операция XOR ключа и результата сложения;
- Циклический сдвиг второго слова влево на 3 бита;
- Операция 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%.
Вариант | Взломано раундов | Сложность по времени | Необходимые данные | Байты памяти |
---|---|---|---|---|
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.
- , с. 6.
- / 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 года.
- Shin S., Kim M., Kwon T. (англ.) // International Journal of Distributed Sensor Networks. — 2017. — Vol. 13 , iss. 11 . — P. 8, 11 . — ISSN . — doi : .
- Beaulieu R., Shors D., Smith J., Treatman-Clark S., Weeks B.,Wingers L. // National Security Agency. — 2014. — С. 15 . 16 июня 2016 года.
- . Linux kernel source tree . git.kernel.org (2018). 17 мая 2019 года.
- , с. 2.
- , с. 7-8.
- ↑ , с. 10.
- , с. 12-13.
- , с. 6-7.
- , с. 2.
- ↑ NSA. [ Algorithms to Support the Evolution of Information Assurance Needs]. — 2016. — 1 ноября. — С. 6 . 13 декабря 2019 года.
- , с. 12.
- Bhargavan K., Leurent G. // ACM. — 2016. — Октябрь. — С. 2-4 . 24 апреля 2017 года.
- . Reuters . 2017-09-21. из оригинала 13 декабря 2019 . Дата обращения: 13 декабря 2019 .
- (англ.) . ISO/IEC 29167-21 . ISO (2018).
- (англ.) . ISO/IEC 29167-22 . ISO (2018).
- . 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
- 2020-01-15
- 1