Последствия для безопасности хранения хэша пароля на зашифрованном ключе AES - PullRequest
4 голосов
/ 30 мая 2011

Я использую стандарт PKCS # 5 для генерации ключа с использованием случайной и уникальной соли и пароля пользователя при вводе.Рассматривайте этот ключ как ключ «шифрования».

Ключ «шифрования» используется для шифрования случайного ключа AES.Каждый пользователь имеет ключ AES, связанный с их профилем.

Итак, профиль пользователя будет содержать следующую информацию:

-> хэш пароля для аутентификации.

-> соль, используемая в алгоритме PKCS # 5,(Из документации PKCS # 5 V2.0 мы знаем, что эта информация не нуждается в защите).

-> зашифрованный ключ AES, сгенерированный случайным образом и зашифрованный с помощью ключа «encryption», сгенерированного PKCS # 5algo с солью и паролем пользователя

Я спрашивал себя, опасно ли обладать хэшем пароля, солью и зашифрованным ключом AES в то же время.Я на 99,9% уверен, что это не проблема, но может ли это облегчить работу злоумышленника, владеющего всеми этими деталями?

1 Ответ

3 голосов
/ 31 мая 2011

Для хэширования паролей также необходимо использовать соль, иначе возможны атаки по словарю, и два пользователя, выбравшие один и тот же пароль, будут иметь один и тот же хешированный пароль, хранящийся в БД.

Я бы предложил следующее:Просто используйте PKCS # 5 дважды;один раз, чтобы сгенерировать хешированный пароль (который вы храните в открытом виде), и один раз, чтобы сгенерировать ключ шифрования (который вы не делаете).

Убедитесь, что соли большие, случайные и независимые, а затемне будет обнаружимой связи между хэшем пароля и ключом шифрования.В конце концов, для этого и нужна соль.

[обновить, чтобы немного уточнить]

Выберите две соли s1 и s2.Убедитесь, что каждый из них содержит как минимум 64 бита, случайный и независимый.

Используйте пароль + s1 в качестве ввода для HCSAC PKCS # 5 в пустой строке.Это «хешированный пароль».

Используйте пароль + s2 в качестве входных данных для схемы шифрования PKCS # 5 для шифрования фактических данных.

Сохраните хешированный пароль, s1 и s2 вясно в базе данных.Готово.

...