Константы, используемые в блочном шифре, как и во многих других симметричных криптографических алгоритмах, зависят от того, что требуется алгоритму с точки зрения безопасности. Для блочных шифров в наиболее распространенных конструкциях используются S-блоки и константы округления.
Во многих случаях требования к константам минимальны: чтобы они содержали разумное сочетание нулей и единиц, чтобы в них не было какого-либо шаблона, который можно было бы использовать (например, в атаке скольжением или дифференциальной атаке), и чтобы они были вне подозрений ( которые мы называем ничего не значащие цифры). Распространенными типами шаблонов, которых следует избегать, являются такие вещи, как простые сдвиги, вращения и добавления более ранних констант, которые могут быть аннулированы определенными входными шаблонами, в зависимости от алгоритма и его основных операций.
Обычно, если не предоставлено объяснение, константы обычно генерируются из какой-то известной константы или шаблона. Например, MD5 использует $ грех (х) $, SHA-2 использует квадратные и кубические корни, а многочисленные алгоритмы используют $ \пи $, $ е $, или же $ \ фи $, и ожидается, что читатель узнает эти константы. (Ни MD5, ни SHA-2 не являются блочными шифрами, но применяется тот же принцип.) Например, SEED использует $ \ фи $.
В некоторых алгоритмах, таких как перестановка Sparkle (которая также не является блочным шифром), константы выбираются дополнительно, поскольку они обладают некоторым полезным свойством (в данном случае устойчивостью к дифференциальным атакам), и таким образом генерируются константы и те, которые не t удовлетворяют требованиям, отклоняются до тех пор, пока не будет найдено достаточное количество. Читатель статьи обычно имеет то же программное обеспечение, которое используется для проверки этих констант, и может убедиться, что выбранные константы действительно являются первыми, которые соответствуют критериям.
Для S-блоков все обычно аналогично, за исключением того, что в некоторых случаях может быть желательно избегать фиксированных точек или чтобы период орбиты был максимальным. Иногда полезно эффективно вычисляемое обратное (как в SAFER). Опять же, они обычно генерируются из какой-то известной константы, и если генерация нетривиальна, обычно включается программное обеспечение или алгоритм, чтобы продемонстрировать отсутствие лазеек.
Как правило, если существуют существенные требования, отличные от общих, перечисленных выше, в документе или в соседнем FAQ будет указано, почему они были выбраны, как это делается в документе Sparkle. Чтобы пользователи доверяли алгоритму, потребуется обширный криптоанализ, и обычно всем будет приятнее прочитать несколько абзацев о причинах, чем гадать.