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