Соляное место, соляное укрытие
У меня есть вопрос относительно следующего сценария:
Я хочу использовать jasypt для шифрования моего пароля и использовать определенную соль для шифрования.
Имеет ли смысл (или есть какие-либо последствия для безопасности), если:
Я использую шифрование на основе пароля для шифрования соли с помощью пароля, который я получаю из переменной среды, таким образом, я могу получить зашифрованное значение соли в файле свойств, получить его оттуда, расшифровать его с помощью пароля, который я получаю из переменная окружения (на самом деле я собираюсь иметь объект EnvironmentStringPBEConfig, который, в свою очередь, получает переменную окружения из объекта EnvironmentStringPBEConfig и удаляет переменную окружения после создания EnvironmentStringPBEConfig) и, наконец, использует соль.
Спасибо.
Изменить: пожалуйста, обратите внимание, что я хотел бы знать, если "сокрытие" соли, как описано выше, является хорошей практикой, я не реализую такое решение прямо сейчас.
РЕДАКТИРОВАТЬ: Также обратите внимание на следующие рекомендации OWASP.
Рекомендация: затруднить кражу всей соли
Существует ряд дополнительных рекомендуемых улучшений основного механизма соления для рассмотрения:
Имейте дополнительную "системную" соль, которая является фиксированным значением для всей системы. Это должно быть где-то храниться в файле конфигурации. Это фиксированное значение не нужно будет включать в каждую резервную копию, что делает злоумышленнику еще сложнее скомпрометировать все элементы, необходимые для правильного вычисления значения хеш-функции. Встраивание части системной соли в исходный код. Это не было бы полезно для открытого исходного кода, но для пользовательских приложений наличие части вашей системной соли в коде было бы еще одним элементом, который требуется злоумышленнику для правильного вычисления значения хеш-функции. Создание новой соли для учетной записи при каждом изменении пароля пользователя.
Рекомендация: выделение соли
Дополнительный механизм защиты хранилища паролей предполагает хранение соли в другом месте, чем хеш пароля. Использование файловой системы сервера - это один из наиболее часто используемых механизмов для солевой изоляции, предполагая, что хэши паролей хранятся в разных местах, таких как база данных или сервер LDAP. Этот механизм защиты снижает риск кражи пароля при краже файла базы данных, поскольку соли не будут включены в данные базы данных. Следите за тем, чтобы хеши паролей и солей не создавались вместе, они также должны создаваться отдельно.
1 ответ
Почему вы хотите зашифровать соль? Соли, как правило, являются общедоступной информацией - они существуют только для предотвращения заранее вычисленных "автономных" атак на базы данных паролей. Я думаю, что вам нужно уточнить, что вы пытаетесь сделать и почему.