我目前正在开展一个项目,我需要对用户的文件进行加密。这部分我通过使用Java的内置加密库轻松实现。从磁盘加载文件是通过从附加文件读取salt,让用户输入密码,然后生成盐渍和散列密钥来完成的,然后快速处理。但是当将文件保存回磁盘时,会出现问题,因为我需要在整个运行时将密钥保存在内存中,或者每次将文件写入磁盘时让用户输入密码。为了保证我的应用程序尽可能安全,您会建议什么?
答案 0 :(得分:4)
为了尽可能安全,您的用户应该再次输入密码。但实际上你需要查看用例并决定你在防范什么。
例如,如果他们必须再次输入密码,那么对于肩上冲浪或关键记录器等人来说,它们更容易受到攻击,但风险增加的风险非常小。
内存中保存的密码仅容易受到运行该软件的计算机上已运行的进程的影响。这又是一个相当小的风险,因为它们可能更容易让他们放上一个关键的记录器。
所以在这种情况下,主要的风险因素是人。有人可以欺骗输入密码的人透露它(即钓鱼,假登录提示,键盘记录器,肩膀冲浪)。减轻大部分风险是关于培训,而不是技术问题。
有太多人认为技术性的银弹可以解决他们所有的安全问题。它真的不能,系统只有最薄弱的环节才能安全,你需要考虑大局以及小局面。