java - 从 Java 程序中存储/读取敏感数据

标签 java database security encryption storage

我正在开发一个需要将数据永久存储在机器上某处的程序,这样当我关闭程序时数据不会消失。 数据是我无法散列的东西,因为程序需要检索它的值。

这个数据库需要 super 安全,这样只有程序本身才能访问这个存储,而不能访问其他任何东西。

现在,SQL 对我来说似乎很不安全,如果你有权访问 SQL,你就可以访问其中包含的每个数据库,唯一的办法就是加密我插入的一些数据,但这会导致为此存储另一个 key 。

这是我需要存储的结构:

FileName  |         Key         | GroupOwner
----------|---------------------|-----------
foo.txt   | $iv44dsfggsdvav523v | adminGroup
----------|---------------------|-----------
bar.txt   | %iihg9v8326h5798v93 | adminGroup

基本上,文件存储在服务器上并使用 key 加密,如果有人闯入服务器,他们应该无法读取 key 并因此解密文件,但只有程序才能做到这一点。

有什么方法可以存储只有我的程序可以读取和修改的数据?

最佳答案

关于 SO - this 有几个类似的问题是一个很好的概述(即使它适用于 Web 应用程序)。

简而言之 - 你无法解决这个问题,因为这是先有鸡还是先有蛋的问题。常见的解决方案是将 key 存储在文件系统上,并使用操作系统的安全性来确保只有授权用户才能读取它。

关于java - 从 Java 程序中存储/读取敏感数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42583178/

相关文章:

java - Spring Boot 。从 MySql 模式自动创建实体类

sql - 必须在存储过程中声明标量变量 "@bit"作为输出参数

JavaScript 安全问题

java - 如何使用Java通过Mac OS Terminal运行命令

java - 无法在我的 Activity 中显示 adMob 横幅

sql - 在 oracle 数据库语句中使用 ENABLE 关键字的原因/用处是什么

database - Apache Cassandra : Does the auto_bootstrap property allow new (non-seed) nodes to stream data from nodes in another DC?

c# - ASP.NET WebApi - 如何获得 "allow"而不是 "require"客户端证书?

java - SSL 握手失败 - Java 1.8

java - 将 JPanel 添加到 JFrame 中?