Python 内存中的GPG签名(或可能使用临时密钥环)

Python 内存中的GPG签名(或可能使用临时密钥环),python,gnupg,in-memory,Python,Gnupg,In Memory,我正在开发一个web应用程序,需要为员工上传的文件创建GPG签名。但是,为了安全起见,我不想将签名密钥保留在Web服务器上,即使它受密码短语保护 我正在研究的一个解决方案是在webapp启动时提示输入私钥,并将其存储在内存中。然后,在签名时传入密钥的文本,而不是使用密钥环中的密钥 然而,我已经做了很多环顾四周,找不到任何方法来做到这一点。GPG希望钥匙在钥匙圈中。有什么建议或更好的主意吗?我使用的是Python,但是任何命令行工具/脚本都可以很好地工作 (我意识到我总是可以在非面向公众的机器上手

我正在开发一个web应用程序,需要为员工上传的文件创建GPG签名。但是,为了安全起见,我不想将签名密钥保留在Web服务器上,即使它受密码短语保护

我正在研究的一个解决方案是在webapp启动时提示输入私钥,并将其存储在内存中。然后,在签名时传入密钥的文本,而不是使用密钥环中的密钥

然而,我已经做了很多环顾四周,找不到任何方法来做到这一点。GPG希望钥匙在钥匙圈中。有什么建议或更好的主意吗?我使用的是Python,但是任何命令行工具/脚本都可以很好地工作


(我意识到我总是可以在非面向公众的机器上手动生成签名……但我想先研究一下,因为如果可能的话,它会更方便。)

关于superuser,可能会给你一些想法。它是为使用公钥加密而编写的,但它很容易适应。长与短:你可以使用
gpg--homedir-SOMEDIR
,其中SOMEDIR是tmpfs文件系统上的一个目录,就像传统的/dev/shm一样。

Hm。是的,这可以工作……理论上,入侵者仍然可以在保存在那里的简短窗口中截取密钥,如果他们已经进入并正在寻找它,但这似乎不太可能。“我会再看一看的。”胡椒种植者:我不确定我是否明白你说的是什么理论。。。你想阻止什么?假设密钥大部分时间都保存在内存中,我仍然需要将其短暂写入文件系统足够长的时间来进行签名,然后从文件系统中删除密钥。当密钥在文件系统上时,理论上有权限的人可以读取它。当然,考虑到<1s的窗口,这是不可能的。@peppergrower:事实上,很多事情都是可能的。我无法想象是否愿意将私钥上传到Web服务器,但Anwhoo。。。看起来一些自定义python功能可能是这里实现最高安全性的理想选择,但如果您不知道,它们在ram中。如果权限处于打开状态,这不会阻止其他用户访问此类文件系统上的文件(如
/dev/shm/
),但仍然。。。是的,我也不喜欢,我建议不要做这样的事情,尽管这样很方便(建议在另一台机器上签名)。希望客户理解安全性的需要。但如果我们不得不这样做,我认为你的答案将是最好的办法。