【发布时间】:2012-12-21 13:30:58
【问题描述】:
密码学是一种广泛采用的技术来确保机密性。不考虑实现缺陷,它有一个关键点:密钥存储。如果密钥被盗,整个系统都会受到威胁。
编辑:
让我指定上下文以使问题不那么广泛:
- 这里解决了一个 java web 应用程序
- 更具体地说,它使用的是 spring 框架版本 3
- spring security 3.1 用于保护应用程序
- mysql5 数据库可用
- 应用服务器是tomcat6或者tomcat7
- 服务器计算机不在我的控制之下
也许问题可以集中在这种情况下,但正如所指出的,密钥存储问题与所采用的技术是横向的。然而,一些库可能会提供可以以某种方式促进工作的特殊功能。 一个明确的观点是,必须在安全性和做实际事情的需要之间找到一个权衡。为了完成分析,很明显,所需的安全级别取决于要保护的信息的价值。想方设法实施超级安全的策略(需要付出很多努力)来保密客户的鞋码是毫无意义的。
在这里,我必须保护电子邮件密码(将存储在数据库中)。我认为这些信息很重要。
我在这里寻找的是合理努力的最佳解决方案。
所以问题很明确:您会将这些信息存储在哪里?
- 您是否将其存储在数据库中?所以它应该被加密,这需要另一个密钥(你将第二个密钥存储在哪里?)
- 您是否将其存储在
.war包中?您如何防止未经授权访问源? - 您是否采用不同的策略?
我们将不胜感激您制定策略的动机。 谢谢
【问题讨论】:
-
另请参阅“在哪里可以安全地存储源可见的系统的密钥?” security.stackexchange.com/questions/5994/…,和“密码保护密钥的最佳实践”security.stackexchange.com/questions/20076/…,
-
这在很大程度上取决于用例和环境,以至于无法以任何有意义的方式回答;不如买一本关于密钥管理的书。
标签: java web-applications encryption