AES - это блок-шифр. Вход блока блока - это ключ и блок открытого текста. Блочный шифр обычно используется в блочном шифре mode of operation. Во всех безопасных режимах работы используется вектор инициализации или IV. В противном случае идентичный открытый текст будет шифровать одинаковый зашифрованный текст (для одного и того же ключа), и это утечка информации.
Соль не используется AES или режимами работы. Он обычно используется как вход для функций деривации ключей (KDF), особенно для функций определения ключа на основе пароля (PBKDF). Dot NET's Rfc2898DeriveBytes
реализует функцию PBKDF2, как определено в: вы догадались бы - RFC 2898: "PKCS #5: Password-Based Cryptography Specification Version 2.0".
Если вы используете статическую соль в PBKDF2, вы получите тот же ключ, что и вывод (для того же числа итераций). Теперь, если вы когда-нибудь пропустите полученный ключ, тогда весь ваш зашифрованный текст будет уязвим. И если вы будете использовать несколько паролей, то злоумышленник сможет построить таблицу радуги; коэффициент PBKDF2 станет менее важным; злоумышленник может просто создать одну таблицу, а затем попробовать все полученные ключи на всех возможных зашифрованных текстах.
Так как соль на самом деле не используется для AES, это не имеет особого значения для безопасности. Однако это еще и ужасный грех, даже хуже, чем использование итерации по умолчанию для PBKDF2/Rfc2898DeriveBytes
.
Обратите внимание, что ужасные грехи безопасности совершаются большим количеством людей на ежедневной основе. То, что существует много многих людей, которые ошибаются, не говорит вам, что вы находитесь в «хорошей компании». Что есть 289 upvotes, просто говорит вам, что ответы SO о криптографии не следует доверять на основании подсчета голосов.
* «Обратите внимание, что ужасные грехи безопасности совершаются большим количеством людей на ежедневной основе. [...] Что есть 289 upvotes, просто говорит вам, что ответы SO о криптографии не должны доверяться на основе подсчета голосов». * - ДА.Пойдем, возьмем некоторые мастурбаторы, чтобы сгладить последствия таких дерьмовых ответов. Btw, другой downvote - мой. :) –
«Хорошая компания», я просто имел в виду, что существуют десятки проектов, доступных для поиска Google, которые используют тот же код без изменений (с идентичной солью). Это и тот факт, что у этого есть более чем 280 upvotes, я нахожу удивительным, узнав его очевидные недостатки безопасности. –
Это правда, что утечка ключа - это конец безопасности, но и утечка соли + секрет. Я не вижу причин предполагать, что это будет более или менее вероятным, чем другое. Поэтому я не вижу, как эта статическая соль вызывает ухудшение безопасности. – usr