2010-08-18 4 views
0

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

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

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

Я читал различные сообщения о сохранении паролей в db (ответ всегда «не».), Но в этом случае я не вижу альтернативы. (предложения приветствуются, хотя)

ответ

0

Проясним что-то здесь: Сервер должен иметь возможность восстановить пароль открытого текста.

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

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

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

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

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

Смежные вопросы