【发布时间】:2012-06-08 08:22:43
【问题描述】:
我在 Windows 2003 服务器上,我需要编写一个批处理文件来使用 GnuPG 自动解密。 解密命令需要密码才能使用私钥。
这里有一些可行的选项,但我并不完全满意:
echo thisIsMyPassphrase|gpg.exe --passphrase-fd 0 --output %1 --decrypt %2这种硬编码的密码看起来不像是一种安全的方法!还有就是不方便修改(直接嵌入到.cmd文件中)。将密码存储在不同的文件中,并确保只有运行解密过程的 Windows 用户才能访问它(使用 NTFS 安全设置)。
gpg.exe --passphrase-file X:\passphrase.txt --output %1 --decrypt %2
我不太喜欢这里..是我们在某个地方有一个裸文件,其中只包含这些高度敏感的信息。奇怪的维护?容易找到 ? ..我不喜欢将密码短语存储在环境变量中听起来不错(看起来很暴露)..
echo %MY_PASSPHRASE%|gpg.exe --passphrase-fd 0 --output %1 --decrypt %2
那么,您对实现这一目标的最佳(或“最不差”)解决方案有何看法?
【问题讨论】:
-
关于#2,文件名实际上可以是另一个参数,并且可以保留文件,例如在 USB 闪存驱动器上。但是,当然,仍然必须处理错误消息(我对此无能为力)。
-
对于#2,我正在考虑将 Passphrase.txt 存储在网络的另一台服务器中.. 以便解密服务器上物理上的自动化内容不足以解密(如果服务器的物理窃贼)。就我而言,使用可移动驱动器并不能真正解决这个问题(因为它们物理连接到服务器),而且我们对服务器机房的物理访问非常有限。
-
然而,存储在单独的服务器上会打开一个新的攻击向量。能够嗅探网络流量的人可能能够通过这种方式获取密码。
标签: windows automation cmd gnupg passphrase