我的任务是使用cron(或任何与Ubuntu Server兼容的作业调度工具)自动进行gpg解密。因为它必须是自动化的,所以我使用了--passphrase
它,但是它最终出现在外壳程序历史记录中,因此在进程列表中可见。
如何在保持良好(最好是极好的)安全性标准的同时实现自动解密?
一个例子将不胜感激。
我的任务是使用cron(或任何与Ubuntu Server兼容的作业调度工具)自动进行gpg解密。因为它必须是自动化的,所以我使用了--passphrase
它,但是它最终出现在外壳程序历史记录中,因此在进程列表中可见。
如何在保持良好(最好是极好的)安全性标准的同时实现自动解密?
一个例子将不胜感激。
Answers:
将密码短语存储在cron作业的用户只能读取的文件中,然后使用--passphrase-file
选项告诉gpg
在那里读取密码短语。
这将确保密码在内存中的过程信息中不可见。安全级别取决于对存储密码短语的文件的访问级别(以及对包含密钥的文件的访问级别),包括其内容最终复制到的任何位置(因此请注意备份),和离线可访问性(将磁盘拉出服务器)。此安全级别是否足够,将取决于您对物理上和软件上保存该文件的服务器的访问控制,以及您要缓解的方案。
如果您需要出色的安全性标准,则需要使用硬件安全性模块,而不是在本地存储密钥(和密码)。这不会阻止在原位使用密钥,但是会阻止密钥在其他地方复制和使用。
自动解密意味着您必须将密码短语存储在某个地方,或者不使用密码短语(除非您使用我在键入我的斯蒂芬提交的其他答案中所指出的其他选项)!这些都不符合您对良好或出色的安全标准的要求。
即您的要求与安全性不兼容。
您可以依靠类似的东西-您必须是root用户,我已经给存储密码短语的文件指定了一个非常混乱的名称,我已经加密了底层文件系统,等等,等等,但是它们都是层次一旦您扎根就可以轻而易举地绕开。
防止密码短语显示在进程列表中的选项是--passphrase-file <file-name>
。
但是,这不仅仅只是删除密码短语,还没有什么安全性。
ps
除非hidepid
启用了on/proc
,否则类似的参数在etc中都是可见的,但是运行脚本(从cron或其他方式)的shell是非交互式的,除非配置错误,否则不应写入历史记录。