Что произойдет, если пользователь потеряет ключ?
UPDATE:
Если вы действительно хотите, чтобы это было безопасно, пользователь может зашифровать данные на своей стороне, прежде чем они будут отправлены в приложение (с ограничениями на уровень битового уровня PKI и алгоритм). Тогда не имеет значения, что вы с ним делаете, потому что он будет зашифрован. Однако вы не сможете расшифровать его.
Если эта опция не работает для вас, потому что вам нужно ее прочитать, создайте вторую систему, которая подключена только к веб-серверам (а не к Интернету). Эта система требует строгой аутентификации от каждого веб-сервера и рассматривает каждый веб-сервер как ненадежный источник. Таким образом, вы обеспечите безопасность политикой. Веб-серверу не будет разрешено извлекать больше X записей пользователя в минуту (таким образом, защищая всю базу данных от взлома). Кроме того, вы можете обеспечить тщательный мониторинг и отчетность, и вам нужно будет часто поворачивать ключи авторизации для веб-сервера.
Не зная, в чем собственно проблема домена, нам трудно порекомендовать, оправдан ли какой-либо из этих методов. Я просто пытаюсь предоставить вам варианты, если вы считаете, что они оправданы.
Однако самая распространенная дыра в безопасности - это люди. У кого есть доступ к серверу? Какой уровень кодирования находится на сервере приложений? Проводятся ли регулярные аудиты безопасности в вашей системе надежной консалтинговой компанией, которая имеет опыт аудита исходного кода на вашем языке или в вашей среде?
Надеюсь, это поможет
UPDATE:
В отношении хеширования:
См:
http://www.codinghorror.com/blog/2007/09/rainbow-hash-cracking.html
http://chargen.matasano.com/chargen/2007/9/7/enough-with-the-rainbow-tables-what-you-need-to-know-about-s.html
http://www.md5decrypter.co.uk/sha1-decrypt.aspx
Хеширование должно быть сделано с осторожностью