linux - Linux 用户帐户中是否有一段 secret 数据?

标签 linux security encryption posix shared-hosting

我希望我的应用程序(PHP,但这无关紧要)将一些数据存储在共享存储库(APC 用户缓存,但同样无关紧要)中。为了防止用户读取彼此的数据,我想对每个用户进行加密。

我可以让用户在他的应用程序配置文件中指定 key ,但我宁愿自动生成它,这样用户就不必费心了。

为此,我需要系统上的一段数据(几乎)永远不会改变,并且只能由当前用户读取。然后我可以散列它或其他东西来生成 key 。 Linux 系统的默认用户帐户中是否存在类似的东西?

最佳答案

将 key 存储在 ~/.yourApp 中将有效,前提是您将 key 文件的权限设置为 0600 以及 ~/.yourApp 目录的权限到 0700。

当然,您依赖于那些不能/不愿意使用 root 访问权限来访问其他用户的 key 文件的人。如果这是一个问题,您将需要使用某种 keystore ,其中访问由主密码控制。

EDIT :回答 OP 的以下后续问题:

Even then the master passphrase must be stored on the system, or users will have to enter it manually for every request (I assume even storing it in memory is unsafe if you don't trust root).

这都是相对的。如果您真的很偏执,就不会将 key 存储在您不能完全控制的任何机器上。另一方面,大多数人都准备相信 root 没有受到损害,并且(作为后备)具有 root 访问权限的人需要付出一些努力才能破坏 keystore 。内存中 keystore 的解锁副本可能算作“足够安全”。当然,许多用户 keystore 软件似乎都基于该假设。

Why should the directory be set to 0700? Even if it was 0777, a file inside it with 0600 would still be unreadable to others, right?

一部分是普遍的偏执狂,一部分是腰带和牙套,一部分是向其他用户发出“别管我的隐私”的信号,一部分是通过替换您的 key 文件来防止他人入侵.最后一点可能很关键……也可能不重要……具体取决于您的应用程序如何使用 key 。

关于linux - Linux 用户帐户中是否有一段 secret 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2288808/

相关文章:

android - 如果私钥被盗,我使用 3rd 方 API 的移动应用程序会做什么?

java - AES CBC 算法如何检查密码转换 key 是否正确?

encryption - Web 存储本地数据加密或访问阻止

ssl - 使用 PyShark 解密 SSL 数据包

linux - bash 中的错误 - 预期存在 -e 的一元运算符

python - 如何在 Raspberry Pi 终端中获取用户输入

python - 简单(但具体)的监听器和发送器 Python 3 DBus 示例

php - 为什么隐藏元素中有这个奇怪的符号

c - 缓冲区溢出 shellcode 覆盖了错误的地址

c++ - 盈透证券 C++ POS API 示例?