Рейтинг:2

В чем основная проблема с заполнением нулями для ключа AES?

флаг cn

Я пытаюсь понять логику некоторых основных принципов заполнения клавиш AES. Почему мы используем различные схемы заполнения клавиш AES вместо простейшего заполнения нулями? Возьмем, к примеру, AES-128, если мой ключ «ключ шифрования». Как работает заполнение и в чем проблема?

Извините, если вопрос слишком элементарный, но я не могу найти ему хорошего объяснения.

флаг cn
На самом деле да, и я прочитал ваш ответ, спасибо. Но я хотел бы получить более фундаментальное объяснение этого... есть ли короткий пример, который вы можете показать о том, как данные теряются или неправильно интерпретируются в процессе шифрования/дешифрования?
kelalaka avatar
флаг in
Короткие пароли никогда не бывают безопасными [Легко ли взломать хешированный номер телефона?](https://crypto.stackexchange.com/a/81652/18298) и [Насколько небезопасны контейнеры VeraCrypt, зашифрованные короткими паролями?](https ://crypto.stackexchange.com/a/81020/18298) всегда выбирайте хорошую генерацию пароля, например dicewire.
Рейтинг:4
флаг ng

В этом вопросе рассматривается добавление запоминающегося текста, такого как «ключ шифрования», в ключ AES путем добавления нулевых байтов к выражению (UTF-8) этого текста в виде байтов до достижения 16, 24 или 32 байтов для AES-128, AES-192, или АЕС-256.

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

Я думаю, что словарь из миллиона наиболее распространенных английских слов (для некоторого расширенного определения слова) будет содержать «ключ шифрования». По крайней мере, поиск в Google обнаружил 78 400 вхождений, и он есть в списке зарегистрированных доменов в трех распространенных TLD. С известной парой открытый текст/зашифрованный текст или зашифрованным текстом для открытого текста с некоторой структурой это займет несколько секунд, чтобы взломать его для кого-то с правильными инструментами.

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

При превращении чего-либо запоминающегося (пароль, кодовая фраза...) в ключ, один должен используйте функцию получения ключа, предназначенную для паролей, то есть функцию с параметром workfactor, позволяющим настроить стоимость получения ключа. Если эта стоимость составляет 0,5 секунды времени мощного компьютера, а не 20 наносекунд для предлагаемого метода, это станет узким местом для взлома пароля и, вероятно, заставит их по крайней мере попотеть. С парольной фразой а-ля XKCD или же посуда, это может быть вполне безопасно.

Следует использовать соль, что предотвратит вычисление производных ключей заранее и предотвратит амортизацию стоимости таких производных для нескольких пар пароль/ключ. это еще один вторичный проблема.

Важно, чтобы функция получения ключа требовательна к памяти, то есть использовала значительный объем памяти во время своих вычислений, поскольку это значительно увеличивает денежные затраты на атаку при небольших затратах для законных пользователей. Рекомендуемые функции включают Аргон2 и скрипт. Общие, но не рекомендуемые функции включают ПБКДФ2, который не требует больших объемов памяти и является одним из худших возможных вариантов использования процессорного времени для получения пароля к ключу: он максимизирует преимущество злоумышленников, использующих ASIC, FPGA и даже графические процессоры по сравнению с другими. законные пользователи, использующие процессоры. я нахожу Рекомендация NIST для PBKDF2 в соответствии с их прежним стремлением к Dual_EC_DRBG:

Хотя PBKDF2 требовательна ко времени, но не к памяти, она настолько широко распространена, что нецелесообразно (во всяком случае, в настоящее время) вводить требование для функции получения ключей, требующей памяти.

Maarten Bodewes avatar
флаг in
Обратите внимание, что сам AES не затронут, проблема заключается в ключе/пароле с низкой энтропией. Если пароль имеет слишком маленькую энтропию, то функция получения ключа на основе пароля также не спасет вас; это только добавляет постоянную степень безопасности, например. ~ 20 бит для миллиона итераций PBKDF2.
kelalaka avatar
флаг in
Вы должны посоветовать; Каким бы ни был механизм хеширования паролей, заранее нужен хороший пароль. это должен быть первый совет. dicewire или Bip39 и т. д.
fgrieu avatar
флаг ng
@kelalaka: я согласен с тем, что нужен лучший пароль, и добавил этот совет. Однако я не вижу в плохом выборе пароля проблему _main_. Я думаю, что довольно сложно взломать пароль средней сложности, такой как «шифроключ» (или был до этого вопроса) с 0,1 с жесткого памяти KDF, особенно с солью, чем взломать самые запоминающиеся пароли практически без KDF и прямого использовать в качестве ключа AES.
kelalaka avatar
флаг in
Что ж, это все еще можно распараллелить в процессорах, и я бы сначала пошел [~ 600 000 pwned password list] (https://haveibeenpwned.com/Passwords), хотя список дается с SHA-1 для тестирования. Можно найти нехешированный в какой-нибудь глубокой сети.
kelalaka avatar
флаг in
Кроме того, я всегда советовал использовать менеджер паролей, например password1, keepass и т. д. С ними пользователям нужно использовать только хороший пароль для защиты хранилища, они могут сгенерировать хороший случайный ключ для других паролей. Они есть в Firefox, Opera, и это становится все более стандартным.

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

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