TL;DR Потому что так они были разработаны. Вы можете использовать KDF для получения ключей, содержащих не более чем случайность, присутствующую во входном ключевом материале.
Я заметил, что ключи для аутентифицированных примитивов шифрования, таких как AES, должны быть непредсказуемыми и равномерно случайными, чтобы быть безопасными.
Что ж, им нужно иметь 128 бит, чтобы иметь ~ 128-битную безопасность, как обещает AES. В принципе, вы также можете сгенерировать, скажем, 112-битный случайный ключ, а затем использовать 16 нулевых битов для создания 128-битного ключа. Большинство API принимают только байты, то есть кратные 8 битам, поэтому для 16-байтового ключа будет 14 случайных байтов и 2 нулевых байта. АЭС в принципе не требует хорошо распределенных ключей.
Я удалил эту часть ответа это было указано в чате бокового канала что это не так. Тем не менее, известные связанные с ключом атаки на расписание ключей не будут работать напрямую, поскольку они предполагают, что конкретная атака требует определенного изменения в предоставленных ключах. Однако без дальнейшего анализа мы не можем сказать, что результат является надежным; больше информации можно найти здесь.
Значения IV и начальные числа для PRNG также должны быть непредсказуемыми и случайными.
Не обязательно. IV требования различны для каждого режима работы. Например, CBC требует непредсказуемого IV (что обычно приводит к рандомизированный IV). Для CFB требуется одноразовый номер того же размера, что и размер блока. Режим CTR может использовать одноразовый номер любого размера, если блок счетчика не повторяется. Режим GCM обычно использует 12-байтовый одноразовый номер. Nonces — числа, используемые один раз — могут быть рандомизированы, но они также могут быть, например, порядковым номером.
Мой вопрос: чем эти непредсказуемые и случайные значения отличаются от предсказуемых значений, которые содержат, например, целые английские слова (например, verysecretkey123456)?
Как правило, они генерируются надежным генератором случайных чисел (CSPRNG или DRBG). Или они получены из другой информации. Например, они могут быть созданы с использованием соглашения о ключах, за которым обычно следует функция получения ключей на основе ключей (KBKDF).
Ключи действительно могут быть сгенерированы из пароля с использованием PBKDF.Этим функциям также требуется соль и коэффициент работы (и, возможно, другие параметры), чтобы снизить риск подбора пароля злоумышленником. Если не принять других контрмер, схема все еще может быть небезопасной, поскольку пароли, как правило, легко подобрать.
«verysecretkey123456» обычно не считается ключом, он считается паролем или кодовой фразой. Тот факт, что это строка, а не двоичный файл, является достаточным намеком на это.
Я предполагаю, что с точки зрения алгоритма это не имеет значения (если длина ключа верна),
Правильно, хотя AES требует битовую строку в качестве ключа, поэтому, чтобы использовать ее вообще, вам сначала нужно закодировать пароль или фразу-пароль. Обратите внимание, что, например. Ключи DES имеют биты четности в закодированном ключе, поэтому не все ключи принимают только рандомизированные биты. Однако более современные шифры, чем DES, включая AES, обычно предназначены для использования полностью рандомизированных ключей.
но злоумышленники могут легче угадывать предсказуемые ключи/пароли, потому что они сначала пробуют слабые ключи/пароли. Я прав?
Да, это обычно называется атака по словарю когда они пробуют определенные слова. Конечно, они могут тестировать очень маленькие ключи по отдельности, а атаки по словарю можно дополнить другими приемами.
И равномерно случайный имеет смысл только тогда, когда ключи генерируются более одного раза? Если да, то что произойдет, когда мы будем использовать неравномерно случайные ключи?
Нет, как указано в другой ответ равномерно случайный говорит о процессе генерации, а не о результате как таковом. Если у вас есть неравномерно случайные ключи, то есть шанс, что злоумышленник сможет их угадать — по крайней мере, более вероятно, чем если бы ключи были равномерно случайными.
В соответствии с принципами Керкхоффа мы обычно предполагаем, что злоумышленники знают, как генерируются ключи или пароли, поэтому они могут угадать распределение.