我在Windows 2003服务器上,我需要编写一个batch file来使用GnuPG自动解密。 解密命令需要密码才能使用私钥。
以下是一些可行的选项,并不能完全满足我:
echo thisIsMyPassphrase|gpg.exe --passphrase-fd 0 --output %1 --decrypt %2
这样的硬编码密码看起来不像一个安全的方法! 另外,更改不方便(直接embedded到.cmd文件中)。
将密码存储在不同的文件中,并确保只有运行解密过程的Windows用户才能访问它(使用NTFS安全设置)。
gpg.exe --passphrase-file X:\passphrase.txt --output %1 --decrypt %2
我在这里不太喜欢的是,我们会在某个地方有一个裸体文件,只是包含这个高度敏感的信息。 奇数维护? 容易find ? ..
我不觉得存储在一个环境variables听起来不错(看起来相当暴露)密码短语..
echo %MY_PASSPHRASE%|gpg.exe --passphrase-fd 0 --output %1 --decrypt %2
那么,对于实现这一目标,最好的(或“最坏的”)解决scheme有什么看法?
我认为你的第二个(密码文件)选项似乎是对大多数用例相当合理的方法。 而使用Windows 2003加密文件系统可能会减轻物理服务器盗窃的一些担忧。 你当然可以跳过这个圈子来进一步混淆密码,但这只是模糊处理而已。 您的真正安全在于NTFS文件系统的安全性。
这几乎是可笑的提及,但是“解决方案成本”和“数据价值”之间的“适当的”安全实施是一个平衡的行为,如果数据足够敏感,并且您愿意投入一些现金来解决问题,那么硬件安全模块(nCipher想到) 可能能够帮助解决这类问题。
如果您有兴趣,可以通过以下链接找到类似的SO讨论: 为批处理作业存储密码