Как можно безопасно хранить объект криптографического ключа типа javax.crypto.SecretKey
во время сеанса пользователя в веб-приложении Java?Я должен управлять таким ключом, потому что я могу создать этот ключ только после входа в систему, но мне может понадобиться этот ключ позже для некоторой расшифровки конфиденциальных пользовательских данных.
SecretKey сам по себе выводится из пароля пользователя функциями, основанными на пароле (в настоящее время "PBKDF2WithHmacSHA1").Используемая соль и количество итераций сохраняются в базе данных.С этими параметрами - пароль, соль и итерации - я могу воссоздать этот пароль сразу после входа в систему, когда пароль будет доступен.После этого я хотел бы сохранить сгенерированный ключ в памяти, в отличие от того, чтобы постоянно сохранять простой пароль.
Поскольку я использую Spring / Hibernate, безопасно ли помещать этот ключевой объект вбин с областью действия сеанса?Такой объект существует только в памяти и должен быть безопасным, не так ли?
Общий вопрос: возможно ли создать безопасную среду, если время, в течение которого секретный ключ доступен, отличается от времени, в течение которого этот ключ долженИспользуется даже на несколько минут?