我的任务是使用 cron (或任何与 Ubuntu Server 兼容的作业调度工具)自动执行 gpg 解密。由于它必须是自动化的,所以我使用了它,--passphrase
但它最终出现在 shell 历史记录中,因此它在进程列表中可见。
如何在保持良好(最好是优秀)安全标准的同时实现自动解密?
一个例子将受到高度赞赏。
答案1
将密码存储在只有 cron 作业的用户可读的文件中,并使用选项--passphrase-file
告诉gpg
读取那里的密码。
这将确保密码在内存中的进程信息中不可见。安全级别将取决于对存储密码的文件的访问级别(以及对包含密钥的文件的访问级别),包括其内容最终复制到的任何位置(因此请注意备份),和离线可访问性(将磁盘从服务器中拉出)。此安全级别是否足够将取决于您对保存文件的服务器的物理和软件访问控制,以及您试图缓解的情况。
如果您想要出色的安全标准,您需要使用硬件安全模块而不是在本地存储您的密钥(和密码)。这不会阻止密钥被使用就地,但它会阻止它被复制并在其他地方使用。
答案2
自动解密意味着您必须将密码存储在某处,或者不使用密码(除非您使用我在输入我的内容时斯蒂芬提交的其他答案中指出的其他选项)!这些都不符合您对良好或良好安全标准的要求。
即您的要求与其安全性不兼容。
你可以依赖这样的东西 - 你必须是 root,我给存储我的密码的文件起了一个非常令人困惑的名称,我已经加密了底层文件系统等等,但它们都是层一旦你一开始扎根,这些问题就很容易规避。
阻止密码出现在进程列表中的选项是--passphrase-file <file-name>
。
然而,这并不比一开始就删除密码更安全。