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