ScA*_*er2 20 java encryption keystore
我有一个java属性对象,其中包含Web服务的身份验证信息.我需要加密这些数据,但我不知道在哪里需要存储加密密钥才能保持安全.
有关加密此数据并以安全方式检索数据的最佳做法是什么?
使用密钥库有什么好处吗?
ws_user=username
ws_password=password
ws_url=https://www.whatever.com/myservice
Run Code Online (Sandbox Code Playgroud)
小智 8
你的问题很常见.在linux中,用户密码存储在纯文本文件中.虽然只存储了密码哈希值,但如果攻击者可以访问该文件,他就不会花很长时间使用离线字典攻击来发现一些密码.在这种情况下,操作系统依赖文件权限拒绝访问未授权用户.在你的情况下,它没有太大的不同.您必须正确配置密码文件权限并确保服务器的物理安全性.
这是一个先有鸡还是先有蛋的问题。
然后,您将需要找到存储密钥库密码的位置等等......
根据您的安全要求和需求,您可以使用对称加密对数据进行加密,并使用客户端证书身份验证通过远程服务器(您的服务器)检索密码。
或者,您可以使用对称加密对数据进行加密,并将密码硬编码在 jar 中,这并不安全,但需要付出一些努力才能找到它,并且您可以将责任委托给文件系统权限,决定谁可以访问您的文件。
最重要的是,某处需要以未加密的形式提供“链的根”密码。受操作系统保护的本地文件、受操作系统保护的远程文件、源代码中的硬编码等。
解决这个问题的唯一方法是要求人工在应用程序启动时输入初始密码,这对于需要自动启动的应用程序显然是不可能的。