Как бы вы реализовали соленые пароли в Tomcat 5.5

Мое веб-приложение полагается на безопасность, управляемую контейнером, и мне интересно, можно ли вообще использовать соленые пароли. Насколько я могу судить, достаточно просто сохранить переваренные пароли в базе данных, просто настроив JDBC или DataSource Realm, но добавить соль в этот дайджест невозможно.

Какие-либо предложения?

Изменить: кажется, мне просто нужно немного подумать, прежде чем задавать вопросы;-)

Это всего лишь вопрос выбора того, кто выполняет дайджест (клиент или сервер), и соответствующей настройки Tomcat.

3 ответа

Решение

Если вы создаете и храните дайджесты, вы можете создавать и хранить соли одновременно.

Ваша таблица аутентификации будет содержать.... pwdDigest varchar(64), - или int256, если у вас есть один hashSalt int64, ....

Затем, в зависимости от используемого вами протокола аутентификации, вы либо отправляете hashSalt клиенту, когда получаете имя пользователя для шифрования на стороне клиента, либо используете его для хеширования пароля, если вы получаете его в открытом виде.

Я не знаком с технологиями доступа к базам данных, о которых вы говорите, поэтому прошу прощения, если я упустил суть и упростил ответ.

Tomcat 5.5 и 6.0 не поддерживают соленые пароли в JDBCRealms и DataSourceRealms. Это известная ошибка, и предложенный патч работает нормально, но пока не был принят.

Если вы не хотите применять патч, вы можете по крайней мере использовать его в качестве примера реализации:

Ошибка 45871 - Поддержка засоленных и переваренных исправлений в DataSourceRealm

Шифрование на основе пароля в JCE использует соль согласно PKCS#5. См. Пример http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html.

Другие вопросы по тегам