Алгоритм C # AES - где и как хранить ключ и IV - PullRequest
4 голосов
/ 31 января 2012

Я использую алгоритм AES для шифрования и дешифрования пароля , когда PasswordFormat зашифровано для системы членства asp.net.Если бы формат был Hashed, я бы сгенерировал уникальное соленое значение для каждого пароля и сохранил бы его в столбце таблицы, где хранится пароль.Но для шифрования это другое, о чем я беспокоюсь ниже

1

Если я генерирую уникальные IV, Key для каждого пароля, то я должен где-то их хранить.Это правильный подход с точки зрения безопасности?

2

Если я HardCode IV и Key в файле конфигурации приложения ( web.config ), то там яПридется ли беспокоиться о том, что произойдет, если какая-либо из вышеперечисленных пар изменится?Как мне справиться с этой ситуацией?

3

Дайте мне ваши идеи о том, что я должен делать.я поставлю их здесь:)

1 Ответ

2 голосов
/ 16 февраля 2012

Ответы:

  1. Нет, нет необходимости в уникальном ключе для каждого пароля - и это не будет полезно, поскольку ваш ключ должен где-то храниться. Вы также можете хранить пароль в этой безопасной системе.

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

Вам гораздо лучше выбрать такую ​​функцию, как PBKDF2, и сохранить результат. Управление ключами - сложная задача, и ее нельзя выбирать без хорошей идеи о том, как действовать (нанять профессионала, если вы идете по этому пути).

Наконец, вся идея IV заключается в том, что он защищает простой текст, когда используется тот же ключ . Вы можете установить IV на все нули, если у вас есть ключ для каждой пары простой текст / зашифрованный текст. Однако идея заключается в том, что вы используете один ключ, сохраненный где-то, кроме сохранения, и случайный IV, сохраненный с зашифрованным текстом.

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

PS У Microsoft есть несколько способов надежного хранения ключей в системе, для этого вам может потребоваться поиск в стеке. Однако я не эксперт по MS API.

...