В криптографии раунд или раундовая функция — это базовое преобразование, которое повторяется ( итерируется ) много раз внутри алгоритма. Разделение большой алгоритмической функции на раунды упрощает как реализацию, так и криптоанализ . [ 1]
Например, шифрование с использованием упрощенного трехраундового шифра можно записать как , где C — это шифротекст , а P — открытый текст . Обычно раунды реализуются с использованием одной и той же функции, параметризованной константой раунда и, для блочных шифров , ключом раунда из ключевого расписания . Параметризация необходима для уменьшения самоподобия шифра, что может привести к атакам со скольжением . [1]
Увеличение числа раундов "почти всегда" [2] защищает от дифференциального и линейного криптоанализа , так как для этих инструментов усилия растут экспоненциально с числом раундов. Однако увеличение числа раундов не всегда превращает слабые шифры в сильные, так как некоторые атаки не зависят от числа раундов. [3]
Идея итеративного шифра , использующего повторное применение простых некоммутирующих операций, производящих диффузию и путаницу, восходит к 1945 году, к тогда еще секретной версии работы CE Шеннона « Теория связи секретных систем »; [4] Шеннон был вдохновлен смешивающими преобразованиями, используемыми в области теории динамических систем (ср. подковообразная карта ). Большинство современных шифров используют итеративную конструкцию с числом раундов, обычно выбираемым между 8 и 32 (с 64 и даже 80, используемыми в криптографических хэшах ). [5]
Для некоторых описаний шифров, подобных Фейстелю , в частности, для RC5 , термин « полуцикл » используется для определения преобразования части данных (отличительная черта дизайна Фейстеля). Эта операция соответствует полному циклу в традиционных описаниях шифров Фейстеля (например, DES ). [6]
Вставка констант, зависящих от раунда, в процесс шифрования нарушает симметрию между раундами и, таким образом, препятствует самым очевидным атакам с использованием скольжения. [3] Этот метод является стандартной функцией большинства современных блочных шифров. Однако неудачный выбор констант раунда или непреднамеренные взаимосвязи между константами и другими компонентами шифра все еще могут позволить проводить атаки с использованием скольжения (например, атакуя начальную версию режима шифрования с сохранением формата FF3). [7]
Многие легкие шифры используют очень простое планирование ключей: раундовые ключи получаются путем добавления раундовых констант к ключу шифрования . Неудачный выбор раундовых констант в этом случае может сделать шифр уязвимым для инвариантных атак; шифры, взломанные таким образом, включают SCREAM и Midori64. [8]
Дэймен и Раймен утверждают, что одной из целей оптимизации шифра является снижение общей рабочей нагрузки, произведения сложности раунда и количества раундов. Существует два подхода к достижению этой цели: [2]
Методы криптоанализа включают использование версий шифров с меньшим количеством раундов, чем указано их разработчиками. Поскольку один раунд обычно криптографически слаб, многие атаки, которые не работают против полной версии шифров, будут работать против таких вариантов с сокращенным количеством раундов . Результат такой атаки дает ценную информацию о стойкости алгоритма, [9] типичный взлом полного шифра начинается как успех против шифра с сокращенным количеством раундов. [10]