Криптография является широко принятой технологией для обеспечения конфиденциальности. Не рассматривая недостатки реализации, он имеет одну критическую точку: хранилище секретных ключей. Если секретный ключ украден, вся система будет скомпрометирована.
EDIT:
Позвольте мне указать контекст, чтобы сделать вопрос менее широким:
- здесь адресовано веб-приложение java
- более конкретно используется фреймворк версии spring 3
- spring security 3.1 используется для защиты приложения
- доступна база данных mysql5
- сервер приложений - tomcat6 или tomcat7
- серверный сервер не под моим контролем
Возможно, вопросы могут быть сфокусированы на этом сценарии, но, как уже отмечалось, проблема хранения секретных ключей трансверсальна к принятым технологиям. Однако некоторые библиотеки могут предлагать особые функции, которые могут каким-то образом облегчить работу. Ясно, что между безопасностью и необходимостью делать практические вещи необходимо найти компромисс. Для завершения анализа очевидно, что необходимый уровень безопасности зависит от ценности информации для обеспечения безопасности. Бессмысленно переворачивать наши умы, чтобы обеспечить супер-безопасные стратегии (требующие очень больших усилий), чтобы держать в тайне размер обуви клиента.
Здесь я должен защитить пароль электронной почты (который будет храниться в db). Я считаю эту информацию средней критичной.
То, что я ищу здесь, - лучшее решение с разумными усилиями.
Итак, вопрос очень ясен: , где вы будете хранить эту информацию?
- Вы сохраняете его в базе данных? Поэтому он должен быть зашифрован, и для этого требуется другой ключ (и где вы храните этот второй ключ?)
- Вы сохраняете его внутри пакета
.war
? Как предотвратить несанкционированный доступ к источникам? - Вы принимаете другую стратегию?
мотивы вашей стратегии будут оценены. спасибо