bmw318mt Ответов: 1

Кодирование пароля в C#


Мне нужно реализовать шифрование паролей для паролей, хранящихся в конфигурационном файле.

Какой метод симметрии лучше всего использовать?

Что я уже пробовал:

Просто некоторые исследования, но не уверен, что лучше всего использовать

1 Ответов

Рейтинг:
1

Thomas Daniels

Первое важное замечание: если вы мочь вам следует избегать необходимости расшифровывать пароль. Например, если это просто сравнение пользовательского ввода с ранее сохраненным паролем, вы должны использовать не алгоритм шифрования/дешифрования, а алгоритм хэширования или алгоритм вывода ключа, чтобы кто-то не мог просто восстановить исходный пароль. Для этого загляните в bcrypt или PBKDF2.

Конечно, есть цели, где вам нужно расшифровать его - например, когда вам нужно передать его как часть веб-запроса. Для этой цели наилучший способ хранения пароля зависит от операционной системы:

Если речь идет о настольном приложении Windows, следует использовать API CryptProtectData, который хранит учетные данные в защищенных областях памяти и шифрует их с помощью ключа, являющегося частью профиля пользователя. Это стандартный механизм защиты для приложений Windows.

В Linux вы можете посмотреть, как использовать брелок GNOME или кошелек KDE, а OS X также имеет набор API для своего брелка. Это гарантирует, что параметры безопасности для связки ключей пользователя будут иметь преимущественное управление - они могут решить, как часто они хотят повторно вводить свой мастер-ключ.

Любая процедура, которую вы выберете, чтобы запутать пароли,-это упражнение в тщетности против любого наполовину определенного злоумышленника, поэтому в лучшем случае вы создаете иллюзию безопасности. Мое предложение состоит в том, чтобы включить параметр с надписью "запомнить мой пароль", но предупредить ваших пользователей, что пароль будет храниться локально в обратимом формате, который обеспечивает небольшую безопасность, чтобы они знали об этой проблеме.
Для Linux или Mac я не могу привести пример. Если вы используете Windows и хотите увидеть реализацию API CryptProtectData: у меня есть статья[^] частью которого является API CryptProtectData: вас заинтересует раздел статьи "EncryptDecryptData - для шифрования и дешифрования с использованием CryptProtectData".


ZurdoDev

+5 за то, что не прыгал на них, говоря им, что они никогда не должны шифровать пароли и всегда должны хэшировать.

bmw318mt

Спасибо за ваш комментарий, однако меня попросили выполнить какое-то шифрование, поэтому моя идея состояла в том, чтобы использовать Rijndael. Есть предложения?

Thomas Daniels

Хм, я не очень много знаю об этих алгоритмах, но взгляните на систему.Безопасность.Пространство имен криптографии, там есть несколько реализаций для симметричных алгоритмов.