Какая кодировка для хранения декодируемых паролей? - PullRequest
0 голосов
/ 18 августа 2010

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

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

Как хранить эти пароли?

Я читал различные посты в SO о хранении паролей в БД (ответ всегда "не '.), но в этом случае я не вижу альтернативы.(хотя предложения приветствуются)

1 Ответ

0 голосов
/ 21 августа 2010

Давайте уточним кое-что здесь: Сервер должен иметь возможность восстановить незашифрованный пароль.

Рассмотрим некоторые вещи, которые вы можете сделать:

  • Зашифруйте паролис ключом.Сохраните ключ в файле конфигурации.
  • Зашифруйте пароли с помощью смарт-карты / черного ящика.
  • Зашифруйте / расшифруйте пароли с помощью другого сервера, отправив запросы HTTPS.
  • Зашифруйте ключ ключом в оперативной памяти.Используйте mlock (), чтобы предотвратить его замену на диск.Надеюсь, что вам не нужно перезапускать.

Ни один из них не поможет вам, если у атакующего есть root (но ничего нет).Большинство из них не помогут вам, если злоумышленник отключит питание и украдет коробки (оперативная память не такая энергонезависимая, как вам хотелось бы для этой цели).

От каких атак вы пытаетесь защищаться?Какие атаки вы игнорируете?

Одной из возможностей является шифрование паролей с помощью ключа, полученного из пароля пользователя (например, связка ключей OSX и эквивалентное хранилище паролей Windows, которое никто не использует).Когда пользователь вошел в ваш веб-сервис, вы можете сохранить ключ в сеансе (или XOR его с помощью одноразовой панели и сохранить панель в файле cookie, и восстанавливать ключ только тогда, когда пользователь отправляет запрос).Это делает кражу внешних паролей из резервной копии базы данных как минимум такой же трудной, как взлом пароля пользователя.Хотя это не очень помогает против других.

...