Безопасно ли хранить хеш MD5 ключа шифрования? - PullRequest
0 голосов
/ 25 мая 2018

Вот сценарий:

  • пользователь вводит пароль
  • ключ AES генерируется с помощью алгоритма деривации ключа на основе пароля (занимает сто мс или около того)
  • MD5 сгенерированного ключа открыт (где-то хранится)

Повлияет ли предоставление MD5 сгенерированного ключа на его безопасность как-то?Если я правильно понимаю:

  • для взлома пароля - вам все равно придется взломать пароли, сначала сгенерировав из них ключ с медленным PBKDF, применив MD5, а затем проверив,это соответствует?

  • поиск конфликтующей строки MD5 будет бесполезным, поскольку строка все равно не будет соответствовать ключу шифрования?

Верны ли эти предположенияи есть ли способ раскрытия такой строки повлиять на безопасность шифрования?

1 Ответ

0 голосов
/ 26 мая 2018

Вы описываете так называемое значение проверки ключа .

"Верны ли эти предположения"

Да, но хотя MD5 не может бытьв ином случае лучше использовать более безопасный хеш, такой как SHA-256 или 512 (что, возможно, на удивление быстрее в большинстве сред выполнения).При необходимости вы можете использовать N левых байтов результата.

"Есть ли способ, которым такая строка может повлиять на безопасность шифрования?"

Ну, вродеиз;он дает злоумышленнику способ с почти 100% -ной уверенностью проверить, что пароль / ключ, если он найден, является правильным.Это также имеет место, если вы используете ключ для аутентифицированного шифрования (что рекомендуется в большинстве случаев).И вообще, вам не нужно шифровать все эти данные, чтобы злоумышленник мог проверить правильность ключа.

В противном случае нет, MD5, в конце концов, является односторонней функцией, и поэтому не должен предоставлять никакихбитов ключа.


Примечания:

  • Конечно, вы не захотите использовать ключ в качестве ввода в MD5 для шифрования чего-либо впоследствии.

  • Если сама функция MD5 пропускает данные бокового канала (обычно это не так), то она может раскрыть ключ для атакующего.

  • Использование защищенногохэш для создания значения проверки ключа, вероятно, лучше, чем использовать шифрование блока со всеми нулевыми байтами, что является методом генерации KCV по умолчанию для PKCS # 11.

  • Есть много способовдобавления безопасности: использование HMAC или KBKDF, сравнение с постоянным временем и т. д. Обычно хеширование безопасно.Я полагаю, что использование HMAC-SHA512 или даже HKDF-SHA512 с входной строкой, специфичной для приложения, и сравнение постоянной времени было бы алмазным стандартом.

...