Генерацию криптографического ключа можно рассматривать как вычисление некоторой функции F от случайной величины Y, принимающей значения на множестве Y. В идеале распределение F(Y) должно быть равномерным на множестве К, состоящем из всех допустимых ключей используемого криптографического алгоритма.
Предположим, процедура генерации ключа осуществляется таким образом, что для некоторого Х, принадлежащего К вероятность P[F(Y) е X) > q. To есть вероятность того, что сгенерированный ключ будет принадлежать множеству X, являющемуся частью множества К, больше некоторого числа q. В этом случае, опробовав ключи из множества X, злоумышленник узнает сгенерированный ключ с вероятностью больше q. Например, если ключ вырабатывается на основе случайной последовательности из 8 символов, включая русские и английские буквы с учетом регистра, а также цифры, то общее число возможных ключей будет ограничено величиной 128 в степени 8 = 256 приблизительно равно 7,2 х 1016. Таким образом, если источником случайности при генерации ключей алгоритма ГОСТ 28147-89 служит последовательность из 8 букв и цифр, то число возможных ключей уменьшится в 2200 раз и не будет превосходить число ключей алгоритма DES. А, как известно, перебор всех ключей алгоритма DES для современной вычислительной техники уже не является непреодолимой задачей. Целью усечения ключевого множества является получение возможности несанкционированного использования криптографических ключей, что ведет к их компрометации с соответствующими последствиями. При генерации ключа обычно используют аппаратный или «биологический» датчик случайных чисел. В качестве биологического датчика выступает пользователь, которому предлагается нажать определенное количество случайных клавиш или подвигать мышкой. Полученная информация о нажатых клавишах, интервалах между их нажатием, траектории и скорости движения курсора может использоваться как исходные данные для функции генерации ключа. Другие источники случайности, такие как данные таймера, значения областей памяти, - менее надежны.
Соответственно имеются два варианта реализации рассматриваемой угрозы:
- или изменить распределение случайной величины У.
Для предотвращения подобных угроз необходимо контролировать исправность и невозможность подмены аппаратного и программного обеспечения, используемого для генерации криптографических ключей. Однако злоумышленнику не всегда необходимо предпринимать какие-либо активные действия по отношению к средствам генерации ключей.
Усечение ключевого множества может быть заложено производителем криптографических средств зашиты.
Это может быть сделано по причине низкой квалификации разработчиков либо умышленно. Например, на протяжении многих лет производители программного обеспечения, поставляемого из США на экспорт, были обязаны ограничивать множество возможных ключей величиной 2 в 40-ой степени, что примерно равно 10 в 12-ой степени.