如何在保密的情况下自动执行使用密码短语的gpg解密?


13

我的任务是使用cron(或任何与Ubuntu Server兼容的作业调度工具)自动进行gpg解密。因为它必须是自动化的,所以我使用了--passphrase它,但是它最终出现在外壳程序历史记录中,因此在进程列表中可见。

如何在保持良好(最好是极好的)安全性标准的同时实现自动解密?

一个例子将不胜感激。


ps除非hidepid启用了on /proc,否则类似的参数在etc中都是可见的,但是运行脚本(从cron或其他方式)的shell是非交互式的,除非配置错误,否则不应写入历史记录。
dave_thompson_085

Answers:


23

将密码短语存储在cron作业的用户只能读取的文件中,然后使用--passphrase-file选项告诉gpg在那里读取密码短语。

这将确保密码在内存中的过程信息中不可见。安全级别取决于对存储密码短语的文件的访问级别(以及对包含密钥的文件的访问级别),包括其内容最终复制到的任何位置(因此请注意备份),和离线可访问性(将磁盘拉出服务器)。此安全级别是否足够,将取决于您对物理上和软件上保存该文件的服务器的访问控制,以及您要缓解的方案。

如果您需要出色的安全性标准,则需要使用硬件安全性模块,而不是在本地存储密钥(和密码)。这不会阻止在原位使用密钥,但是会阻止密钥其他地方复制和使用。


+1表示硬件安全模块,这是解决这个难题的唯一解决方案。
MariusMatutiae

Stephen感谢您提到的硬件安全模块,我将做一些研究。感谢您指出正确的方向。
Zakk Coetzee

@StephenKitt工作时,硬件键很棒。如果他们不这样做, ...
佐藤桂

@SatōKatsura是对的,尽管我会指出Yubikey不是HSM。(当然这并不意味着HSM 并不容易受到攻击。)
Stephen Kitt,

“如果您想要出色的安全性标准”,那么您将无法进行自动作业解密或签名。
JimmyB

5

自动解密意味着您必须将密码短语存储在某个地方,或者不使用密码短语(除非您使用我在键入我的斯蒂芬提交的其他答案中所指出的其他选项)!这些都不符合您对良好或出色的安全标准的要求。

即您的要求与安全性不兼容。

您可以依靠类似的东西-您必须是root用户,我已经给存储密码短语的文件指定了一个非常混乱的名称,我已经加密了底层文件系统,等等,等等,但是它们都是层次一旦您扎根就可以轻而易举地绕开。

防止密码短语显示在进程列表中的选项是--passphrase-file <file-name>

但是,这不仅仅只是删除密码短语,还没有什么安全性。


感谢您向Tony解释,您对此事有更好的看法。Stephen提到的硬件安全模块将是主要目标。
Zakk Coetzee

@ZakkCoetzee:正如我在另一个答案中所述,如果攻击者是root用户,那么是什么阻止了攻击者使用HSM?
马丁·邦纳

@MartinBonner正如斯蒂芬·基特(Stephen Kitt)所说,这阻止了他们获得钥匙,这绝对比获得钥匙要好。
Zakk Coetzee

是的,但不是很好。询问Diginotar(谁将其密钥放在HSM中,但将HSM保持连接并与插槽中的相关智能卡相连-以便攻击者可以签署许多攻击者的证书。)
Martin Bonner支持Monica
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.