Рейтинг:2

Почему большинство аутентифицированных примитивов шифрования ожидают непредсказуемого и равномерно случайного ключа для обеспечения безопасности?

флаг cn

Я заметил, что ключи для аутентифицированных примитивов шифрования, таких как AES, должны быть непредсказуемыми и равномерно случайный чтобы быть в безопасности. Значения IV и начальные числа для PRNG также должны быть непредсказуемыми и случайными.

Мой вопрос: чем эти непредсказуемые и случайные значения отличаются от предсказуемых значений, которые содержат, например, целые английские слова (например, verysecretkey123456)?

Я предполагаю, что с точки зрения алгоритма это не имеет значения (если длина ключа правильная), но злоумышленникам легче угадывать предсказуемые ключи/пароли, потому что они сначала пробуют слабые ключи/пароли. Я прав?

И равномерно случайный имеет смысл только тогда, когда ключи генерируются более одного раза? Если да, то что произойдет, когда мы используем неравномерно случайный ключи?

kelalaka avatar
флаг in
[Атаки, основанные на плохой энтропии] (https://security.stackexchange.com/a/239397/86735)
Рейтинг:4
флаг tr

Я предполагаю, что с точки зрения алгоритма это не имеет значения (если длина ключа правильная), но злоумышленникам легче угадывать предсказуемые ключи/пароли, потому что они сначала пробуют слабые ключи/пароли. Я прав ?

Действительно, безопасность такой схемы исходит из секретности ключа. Следовательно, легкость прогнозирования означает, что схема не может быть безопасной.

Мой вопрос: чем эти непредсказуемые и случайные значения отличаются от предсказуемых значений, которые содержат, например, целые английские слова (например, verysecretkey123456)?

Нетрудно прямо ответить на этот вопрос (я расскажу о предостережении в конце). Чтобы лучше понять это, стоит внимательно изучить фактические требования к ключу. Когда мы говорим о «случайном» ключе, мы имеем в виду не то, как этот ключ «выглядит», а, скорее, мы говорим о свойстве процесс который генерирует этот ключ. Если сама обработка хорошая (будет определено позже), как, например, использование CSPRNG, то не имеет значения, что ключ б"ЖЕЛТАЯ ПОДВОДНАЯ ЛОДКА" или же б"\x84\x1cR\xc5X\x07\xd0\x07\xd9R'\xd1\xa2\xad\xbef" или же б"очень секретный ключ123456". Причина в том, что в идеальном сценарии они оба с одинаковой вероятностью будут сгенерированы в процессе генерации ключей. Другими словами, я не могу сказать, просто взглянув на значение б"очень секретный ключ123456" что это не безопасный ключ или нет; Я должен посмотреть, как это было сгенерировано.

предостережение: Так вот, мы живем на земле и можем делать некоторые предположения... Увидев ключ, похожий на б"очень секретный ключ123456", разумно предположить, что процесс не был настоящим CSPRNG, но, возможно, кто-то скопировал из Stackoverflow...

И равномерно случайный имеет смысл только тогда, когда ключи генерируются более одного раза? Если да, то что произойдет, когда мы будем использовать неравномерно случайные ключи?

Нет общих ограничений на количество раз, когда вы можете сгенерировать значение из такого процесса (если не указано иное и в зависимости от контекста). Например, вы можете без проблем запустить следующий код в Python. Обратите внимание, что мы не гарантируем Операционные системы модуль.

импорт ОС

ключи = [os.urandom (16) для _ в диапазоне (100)]
Eugene avatar
флаг cn
Спасибо за ответ. Я бы принял оба ответа, если бы мог)
Рейтинг:1
флаг in

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, обычно предназначены для использования полностью рандомизированных ключей.

но злоумышленники могут легче угадывать предсказуемые ключи/пароли, потому что они сначала пробуют слабые ключи/пароли. Я прав?

Да, это обычно называется атака по словарю когда они пробуют определенные слова. Конечно, они могут тестировать очень маленькие ключи по отдельности, а атаки по словарю можно дополнить другими приемами.

И равномерно случайный имеет смысл только тогда, когда ключи генерируются более одного раза? Если да, то что произойдет, когда мы будем использовать неравномерно случайные ключи?

Нет, как указано в другой ответ равномерно случайный говорит о процессе генерации, а не о результате как таковом. Если у вас есть неравномерно случайные ключи, то есть шанс, что злоумышленник сможет их угадать — по крайней мере, более вероятно, чем если бы ключи были равномерно случайными.

В соответствии с принципами Керкхоффа мы обычно предполагаем, что злоумышленники знают, как генерируются ключи или пароли, поэтому они могут угадать распределение.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.