Pull to refresh

Comments 14

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

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

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

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

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

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

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

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

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, например).

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

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

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

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

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

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

Sign up to leave a comment.

Articles