Как выбрать пароль для AES с помощью cryptoJS или криптографии узла по умолчанию?

Я не уверен в первоначальной настройке AES, но я понимаю, как работает сам алгоритм, когда мы начинаем раунды 2–14 (subBytes, shiftRows, mixColumns, addRounKey), в зависимости от размера ключа.

Чего я не следую, так это начального пароля и настроек. Выбираем ли мы пароль любой длины или создаем собственный 128, 192 или 256-битный пароль, который затем используется во всем приложении?

например, в этом примере использования AES с cryptojs:

var myString   = "attack at dawn";
var myPassword = "superSecretPassword";
var encrypted = CryptoJS.AES.encrypt(myString, myPassword);

выполняется ли переменная myPassword через хеш для создания 128, 192 или 256-битного ключа? Для лучшей безопасности мы должны сделать уже myPassword 256 бит?


person VDog    schedule 28.09.2017    source источник


Ответы (1)


Ваше замешательство на 100% связано с плохим API в crypto-js.

В реальном мире шифрование выполняется с помощью ключей, а не паролей. Если у кого-то есть только пароль, они должны преобразовать его в ключ с помощью функции получения ключа на основе пароля, такой как pbkdf2, scrypt, bcrypt или argon2.

В crypto-js шифрование может выполняться с помощью ключей или паролей (два разных вызова API). Шифрование базы паролей в crypto-is нестандартно и использует небезопасную функцию получения ключа на основе пароля.

Вывод: не используйте API шифрования на основе паролей crypto-js. Вместо этого используйте API, который принимает ключ и IV, где ключ может быть 128-битным, 192-битным или 256-битным.

Использованная литература:

person TheGreatContini    schedule 28.09.2017
comment
Спасибо вам за публикацию! Я нашел эту функцию, которая генерирует 256-битный ключ, iv и соль. openssl enc -aes-256-cbc -k secret -P -md sha1. Не могли бы вы немного объяснить, если возможно, как работает IV? Я новичок в безопасности и криптографии и хочу убедиться, что все делаю правильно. Я также не смог увидеть в Crypto-JS api, как принудительно использовать 256-битное шифрование или как указать ключ + iv, но сейчас начну поиск. - person VDog; 28.09.2017