Шифрование паролем / Уровень базы данных AES или Уровень приложения AES - PullRequest
0 голосов
/ 18 мая 2009

Мне нужно зашифровать / расшифровать пароли для нового приложения. Спецификация требует от меня использовать AES; может кто-нибудь предложить вескую причину либо

  1. Сделать все мое шифрование на уровне базы данных, используя функции CLR или
  2. Делаете это на уровне приложений .Net?
  3. смесь БД и сервера

Буду проверять пароли; приложение n-уровневое, используя Telerik ORM. Единственными реальными функциями будут создание / обновление пароля и проверка введенного значения.

В моем кишечнике я думаю

  1. база данных лучше подходит для проверки введенного пользователем пароля по существующей записи; и
  2. интерфейс для создания / обновления паролей (поэтому пароль в виде простого текста никогда не передается)

Меня интересуют другие мысли и предложения относительно того, почему я могу сделать альтернативу. Если вы предлагаете мне сделать это во внешнем интерфейсе, что вы думаете о ключах шифрования? Один на пользователя в XML или один на приложение в файле конфигурации?

Спасибо за любые предложения:)

Ответы [ 2 ]

4 голосов
/ 18 мая 2009

Не храните пароли вообще - просто соленые их хэши.

Проблема с простым шифрованием пароля довольно очевидна - вам нужно где-то хранить ключ. Если вы выполняете шифрование на стороне клиента, я просто использую Reflector, чтобы найти ключ в коде, или присоединяю отладчик и жду, пока клиент получит ключ от сервера.

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

И перемещение шифрования на сервер базы данных не сильно изменится, и вам придется шифровать оба соединения - между клиентом и сервером и между сервером и сервером базы данных.

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

2 голосов
/ 18 мая 2009

Если вам нужно только подтвердить пароль, возможно, было бы лучше использовать одностороннее шифрование.

Здесь обсуждается некоторая тема: Шифрование / хеширование паролей в виде простого текста в базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...