Вы описываете так называемое значение проверки ключа .
"Верны ли эти предположения"
Да, но хотя MD5 не может бытьв ином случае лучше использовать более безопасный хеш, такой как SHA-256 или 512 (что, возможно, на удивление быстрее в большинстве сред выполнения).При необходимости вы можете использовать N левых байтов результата.
"Есть ли способ, которым такая строка может повлиять на безопасность шифрования?"
Ну, вродеиз;он дает злоумышленнику способ с почти 100% -ной уверенностью проверить, что пароль / ключ, если он найден, является правильным.Это также имеет место, если вы используете ключ для аутентифицированного шифрования (что рекомендуется в большинстве случаев).И вообще, вам не нужно шифровать все эти данные, чтобы злоумышленник мог проверить правильность ключа.
В противном случае нет, MD5, в конце концов, является односторонней функцией, и поэтому не должен предоставлять никакихбитов ключа.
Примечания:
Конечно, вы не захотите использовать ключ в качестве ввода в MD5 для шифрования чего-либо впоследствии.
Если сама функция MD5 пропускает данные бокового канала (обычно это не так), то она может раскрыть ключ для атакующего.
Использование защищенногохэш для создания значения проверки ключа, вероятно, лучше, чем использовать шифрование блока со всеми нулевыми байтами, что является методом генерации KCV по умолчанию для PKCS # 11.
Есть много способовдобавления безопасности: использование HMAC или KBKDF, сравнение с постоянным временем и т. д. Обычно хеширование безопасно.Я полагаю, что использование HMAC-SHA512 или даже HKDF-SHA512 с входной строкой, специфичной для приложения, и сравнение постоянной времени было бы алмазным стандартом.