Введение

Алгоритм, вычисляющий все раундовые ключи из ключа.

В криптографии так называемые шифры на основе итераций – это определенный тип шифра, где шифрование (и расшифровка) данных обычно выполняется как последовательность раундов. Настройка для каждого раунда обычно одинакова, за исключением специфичных для раунда фиксированных значений, называемых раундовой константой, и специфичных для раунда данных, производных от ключа шифрования, называемых раундовым ключом. Алгоритм формирования ключей – это алгоритм, вычисляющий все раундовые ключи из исходного ключа.

Некоторые типы ключевых графиков

Некоторые шифры имеют простые схемы формирования ключей. Например, блочный шифр TEA разделяет 128-битный ключ на четыре 32-битные части и многократно использует их в последовательных раундах. DES имеет схему формирования ключа, в которой 56-битный ключ разделяется на две 28-битные половины; каждая половина затем обрабатывается независимо. В последовательных раундах обе половины циклически сдвигаются влево на один или два бита (определяемых для каждого раунда), после чего 48 битов ключевого раунда выбираются с помощью Permuted Choice 2 (PC 2) – 24 бита из левой половины и 24 из правой. Циклические сдвиги обеспечивают использование различного набора битов в каждом ключевом раунде; каждый бит используется примерно в 14 из 16 ключевых раундов. Чтобы избежать простых взаимосвязей между ключом шифра и ключевыми раундами, и противостоять таким методам криптоанализа, как связанные атаки по ключу и скользящие атаки, многие современные шифры используют более сложные схемы формирования ключей для генерации "расширенного ключа", из которого затем извлекаются ключевые раунды. Некоторые шифры, такие как Rijndael (AES) и Blowfish, используют те же операции, что и в тракте данных алгоритма шифрования, для расширения ключа, иногда инициализируемые некоторыми "числами, скрытыми в рукаве". Другие шифры, такие как RC5, расширяют ключи с помощью функций, которые в некоторой степени или полностью отличаются от функций шифрования.