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