Как выбрать соль для хеш-функции, предназначенной для защиты паролей?

Я (почти полный) новичок, и это мой первый набег на шифрование - на самом деле, это, наверное, первый раз, когда я использую word.

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

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

Преимущество соли просто в том, чтобы сделать pw «более случайным» и, следовательно, победить стандартную систему на основе словаря радужные таблицы?

Будет ли какая-либо из следующих хороших и практических идей:

  1. Хранить соль в отдельной базе данных - возможно, в отдельной системе, определенно с другим хостом, именем, паролем и т. д.
  2. Сгенерировать соль на основе хэша имени пользователя (или имени + фамилии, или даты регистрации), предположительно с использованием другой хеш-функции? Тогда сама соль не будет храниться в базе данных - только данные, используемые для ее вычисления ...
  3. Сохранять в базе данных значение, которое неочевидным образом объединяет хешированный pw и соль (например, соль - это 10 случайных ключей, и они вводятся внутри хешированного pw между буквенными номерами 1 и 2, 4 и 5, 8 и 9 и т. д.).

В качестве побочного вопроса, насколько легко изменить алгоритм хеширования с солью при обновлении программного обеспечения интернет сайт? Сейчас это кажется кошмаром.

17
задан Jonathan Leffler 23 September 2010 в 21:26
поделиться