Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java web应用程序中用于加密的密钥存储_Java_Spring_Security_Cryptography - Fatal编程技术网

Java web应用程序中用于加密的密钥存储

Java web应用程序中用于加密的密钥存储,java,spring,security,cryptography,Java,Spring,Security,Cryptography,我正在构建一个web应用程序,到目前为止,它只收集和存储低灵敏度的数据,在接下来的几个月里,web应用程序将需要开始收集更敏感的数据,因此我决定需要确保数据在存储在数据库中时进行加密,以便即使数据库受到破坏也无法访问 我已经读了很多书,其中大部分都很有道理,但是有一点我想不通 规则-如果未加密的密钥 与数据一起存储,则数据的任何泄露都将很容易发生 把钥匙也放进去。未加密的密钥不应驻留在 与数据相同的计算机或群集 可能的解决方案: 将未加密的密钥存储为root,通过环境变量将密钥加载到启动时作为权

我正在构建一个web应用程序,到目前为止,它只收集和存储低灵敏度的数据,在接下来的几个月里,web应用程序将需要开始收集更敏感的数据,因此我决定需要确保数据在存储在数据库中时进行加密,以便即使数据库受到破坏也无法访问

我已经读了很多书,其中大部分都很有道理,但是有一点我想不通

规则-如果未加密的密钥 与数据一起存储,则数据的任何泄露都将很容易发生 把钥匙也放进去。未加密的密钥不应驻留在 与数据相同的计算机或群集

可能的解决方案:

  • 将未加密的密钥存储为
    root
    ,通过环境变量将密钥加载到启动时作为权限较低的用户运行的应用程序中,因此该密钥仅存储为root用户。--这不符合OWASP规则,因为密钥仍位于服务器上

  • 加密文件系统上的密钥,并需要第二个密钥,如密码,以便在启动时解密由人类用户输入的密钥。--虽然这满足OWASP规则,但在应用程序启动时要求人工用户在场是不切实际的


  • 是否有建议或公认的解决方案来解决此问题

    虽然问题与技术无关,但欢迎使用特定于技术的解决方案,我目前正在使用:

    • 爪哇
    • 弹簧
    • 冬眠
    • MySQL
    • 森托斯

    只要未加密数据在不同的机器上,您是否已经将未加密密钥(在服务器上)存储在远离未加密数据(在数据库中)的地方?@Glains是的,我想这是正确的,但我认为,如果有人能够获得访问加密密钥的权限,那么他们也可以获得db访问凭据,这意味着他们拥有访问敏感数据所需的一切。问题是,要求root用户访问web服务器上的密钥就足够了吗?amazon有他们的服务,声称可以帮助解决这类问题。这就是说,我不想看到他们的服务实际上有什么帮助,例如,一旦攻击者进入您的web服务器,他们大概可以很容易地获得AWS API密钥(短暂的或不短暂的),从而解密他们想要的任何东西。可能会记录一些事情,但不确定它还能做什么。也许其他人可以指出我错在哪里?只要未加密的数据在不同的机器上,你不是已经将未加密的密钥(在服务器上)存储在远离未加密数据(在数据库中)的地方了吗?@Glains是的,我想这是对的,但我认为,如果有人能够获得访问加密密钥的权限,那么他们也可以获得db访问凭据,这意味着他们拥有访问敏感数据所需的一切。问题是,要求root用户访问web服务器上的密钥就足够了吗?amazon有他们的服务,声称可以帮助解决这类问题。这就是说,我不想看到他们的服务实际上有什么帮助,例如,一旦攻击者进入您的web服务器,他们大概可以很容易地获得AWS API密钥(短暂的或不短暂的),从而解密他们想要的任何东西。可能会记录一些事情,但不确定它还能做什么。也许其他人可以指出我错在哪里