密码术是一种被广泛采用的技术来确保机密性。不考虑执行缺陷,它有一个关键点:密钥存储。如果秘密密钥被盗,整个系统将受到威胁。你在哪里将密钥存储在Java Web应用程序中?
编辑:
让我指定的范围内,使这个问题不太广:
- 这里Java Web应用程序是针对
- 更具体地说,它使用了Spring框架的版本3
- spring security 3.1用于保护应用程序
- mysql5数据库可用
- 应用程序服务器的tomcat6或tomcat7
- 服务器机器是我的控制之下没有
或许这些问题可以集中在这种情况下,但正如指出的那样,密钥的问题存储横向于采用的技术。然而,一些图书馆可能提供可以以某种方式促进这项工作的独特功能。 明确的一点是,必须在安全和需要做实际事情之间找到权衡。为了完成分析,显然所需的安全级别取决于要保护的信息的价值。为了保护顾客的鞋子尺寸,推翻超级安全战略(需要付出很多努力)是毫无意义的。
在这里,我必须确保电子邮件密码(将存储在数据库中)。我认为这个信息平均至关重要。
我在这里寻找什么,是合理努力的最佳解决方案。
所以问题很明确:你会在哪里存储这些信息?
- 你把它存储在数据库中吗?所以它应该被加密,这需要另一个密钥(并且你在哪里存储这个第二个密钥?)
- 你是否将它存储在
.war
包内?你如何防止未经授权的访问来源? - 你采用不同的策略?
您的战略动机将不胜感激。 谢谢
另请参见“我可以在哪里安全地存储源可见系统的密钥?” http://security.stackexchange.com/questions/5994/where-do-i-securely-store-the-key-for-a-system-where-the-source-is-visible,以及“密码的最佳实践 - 保护密钥“http://security.stackexchange.com/questions/20076/best-practice-for-password-protecting-a-secret-key, –
这非常依赖于用例和环境,这是不可能以任何有意义的方式回答;改为购买关键管理书籍。 –