Зима. Время валяться в сугробах и играть в снежки. Или почитать статью о поточных шифрах. Кому что больше нравится.
Данная статья является обзорной. Мы поговорим о принципе работы 1 версии SNOW 1.0, вкратце о различных, совершенных на шифр атаках и о применении его модификаций.
Основная информация
И самая важная, на мой взгляд.
Шифр SNOW относится к словоориентированным поточным шифрам. Он работает с 32-битными словами и поддерживает как 128-, так и 256-битные ключи и состоит из комбинации регистра сдвига с линейной обратной связью (РСЛОС) и конечного автомата (КА).
У него есть 3 модификации. Причем одна из них — SNOW 3G, используется для передачи мобильных данных. Последняя версия SNOW-V была разработана для 5G сетей, но пока не используется.
Немного про историю
SNOW 1.0, первоначально просто SNOW, был разработан в 2000 году в Лундском университете (Швеция).
В первой версии были обнаружены слабые места, и в результате SNOW не был включен в набор алгоритмов NESSIE. В 2003 году авторы разработали новую версию шифра SNOW 2.0, в которой устранили недостатки и улучшили производительность. Во время оценки ETSI SAGE алгоритм шифрования был дополнительно изменён, чтобы повысить его устойчивость к алгебраическим атакам. Результатом таких улучшений в 2006 году стала модификация шифра SNOW 3G.
В 2019 году Ericsson Research совместно с Лундским университетом пересмотрели алгоритм SNOW 3G и обновили его до нового, более быстрого шифра под названием SNOW-V.
Схема работы SNOW
Принцип работы нарисован на картинке. Подробности описаны ниже.
Общая схема работы
Генератор состоит из регистра сдвига с линейной обратной связью длины 16 над полем . Выход регистра подается на вход конечного автомата. КА состоит из двух 32-битных регистров, называемых R1 и R2, а также некоторых операций для вычисления вывода и следующего состояния (следующего значения R1 и R2). Работа шифра выглядит следующим образом. Сначала выполняется инициализация ключа. Эта процедура обеспечивает начальные значения для РСЛОС, а также для регистров R1, R2 в конечном автомате. Затем первые 32 бита ключевого потока вычисляются путем поразрядного сложения выходных данных КА и последней записи РСЛОС. После этого весь процесс синхронизируется, и следующие 32 бита ключевого потока вычисляются путем ещё одного побитового сложения выходных данных конечного автомата и последней записи РСЛОС. Мы снова синхронизируемся и продолжаем в том же духе.
Детальная схема работы
В начальный момент времени t = 0 происходит инициализация регистра сдвига 32-битными значениями s(1), s(2),…, s(16) , которые задаются при помощи сгенерированного ключа.
Функция обратной связи для регистра задается многочленом
над полем , которое задаётся неприводимым многочленом
над , .
Выход КА назовем. Он рассчитывается по следующей формуле:
где целочисленное сложение по.
Выход конечного автоматасравнивается с s(16) модулю 2 для формирования потокового ключа, то есть
где сложение по mod 2.
Внутри конечного автомата новые значения для R1 и R2 присваиваются по следующим формулам:
где - циклический сдвиг влево,
Наконец, S-блок, обозначаемый S(x), cостоит из четырёх идентичных битовых S-блоков 8?8 и перестановки полученных битов. Входные данные разделены на 4 байта, каждый байт входит в нелинейное отображение от 8 бит до 8 бит. После этого отображения биты в результирующем слове переставляются, чтобы сформировать окончательный результат S-блока
Для конечного формирования шифртекста потоковый ключ сравнивается с открытым текстом по модулю 2.
Более подробно описан алгоритм шифрования здесь.
Известные атаки
В феврале 2002 года Филипп Хоукс и Грегори Роуз описали атаку «Guess and determine attack» на SNOW 1.0, в котором используются в основном два свойства, чтобы снизить сложность атаки ниже исчерпывающего поиска ключей. Во-первых, тот факт, что автомат имеет только один вход s(1). Это позволяет злоумышленнику инвертировать операции в конечном автомате и получать больше неизвестных только из нескольких предположений. Второе свойство — неудачный выбор полинома обратной связи в SNOW 1.0.
В августе 2003 года Ватанабе, Бирюков и Канньер описали атаку на SNOW 2.0 методом линейной маскировки. Эта атака использует битов потока и анализа, что быстрее, чем исчерпывающий поиск 256-битного ключа.
В 2010 году был описан механизм ресинхронизации SNOW 3G и аналогичного шифра SNOW 3G ? с использованием атак с коллизией нескольких наборов. В алгоритме описано полное восстановление ключа выбранных атак ресинхронизации IV для 18 из 33 раундов инициализации SNOW3G ? со сложностью для генерации данных и этапами анализа.
В 2020 Lin Jiao, Yongqiang Li и Yonglin Hao совершили атаку на SNOW-V под названием «Guess and determine attack». Хмм.. Такое же название атаки, как и на SNOW 1.0. Мы, кажется, зациклились. Или нет?
Теперь о применении
SNOW 2.0 — один из потоковых шифров, вошедших в стандарт шифрования ISO/IEC 18033-4, который определяет функции вывода для объединения ключевого потока с открытым текстом, генераторы ключевого потока для создания ключевого потока и идентификаторы объектов.
SNOW 3G выбран в качестве генератора потоковых ключей для алгоритмов шифрования 3GPP UEA2 и UIA3.
SNOW-V пока не используется, но всё возможно!
Еще есть шифр потоковый STRUMOK (стандартизирован в Украине: ДСТУ 8845:2019 "Струмок"), у которого генератор ключевого потока в своей концептуальной схеме подобен SNOW 2.0.
(Разница в длине секретного ключа и вектора инициализации. Так же SNOW 2.0 ориентирован на на использование в 32-разрядных вычислительных систем, а STRUMOK в 64-разрядных).
Небольшой итог
Данный шифр, конечно, не идеальный.. А кто идеален? Но он современный и, я думаю, у него есть будущее. Проблема безопасной передачи данных как была актуальной, так и является до сих пор!
anonymous
Касательно применения ещё можно добавить, что в Украине стандартизирована модификация SNOW 2 с 64-битными словами. (ДСТУ 8845:2019 "Струмок")
silent_rebel Автор
Благодарю! Информацию добавила!