Как бы вы реализовали соленые пароли в Tomcat 5.5
-
03-07-2019 - |
Вопрос
Мое веб-приложение полагается на безопасность, управляемую контейнерами, и мне интересно, возможно ли вообще использовать соленые пароли.Насколько я могу судить, достаточно легко хранить переваренные пароли в базе данных, просто настроив область JDBC или DataSource, но нет способа добавить соль в эти переваренные пароли.
Есть какие-нибудь предложения?
Редактировать: кажется, мне просто нужно еще немного подумать, прежде чем задавать вопросы ;-)
Это просто вопрос выбора того, кто выполняет вычисление дайджеста (клиент или сервер), и соответствующей настройки Tomcat.
Решение
Если вы создаете и храните дайджесты, вы можете создавать и хранить соли одновременно.
Ваша таблица аутентификации будет содержать ....pwdDigest используйте varchar(64), -- или int256, если он у вас есть Хэшируйте значение int64, ....
Затем, в зависимости от используемого вами протокола аутентификации, вы либо отправляете hashSalt клиенту, когда получаете имя пользователя для шифрования на стороне клиента, либо используете его для хэширования пароля, если получаете его в чистом виде.
Я не знаком с технологиями доступа к базе данных, о которых вы говорите, поэтому приношу извинения, если я упустил суть и слишком упростил ответ.
Другие советы
Tomcat 5.5 и 6.0 не поддерживают соленые пароли в JDBCRealms и DataSourceRealms.Это известная ошибка, и предложенный патч, кажется, работает нормально, но он еще не был принят.
Если вы не хотите применять исправление, вы можете, по крайней мере, использовать его в качестве примера реализации:
Ошибка 45871 - Поддержка соленых и переваренных патчей в DataSourceRealm
Шифрование на основе Passord в JCE использует salt в соответствии с PKCS # 5.Видишь http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#PBEEx для примера.