最佳 PGP/GPG 加密/解密脚本

最佳 PGP/GPG 加密/解密脚本

是否有好的默认 python 或简单的 shell 脚本可用于通过 PGP/GPG 加密和解密文件?我将每 5 分钟运行一次此脚本。

答案1

你不需要对称密码

如果你需要自动运行加密,你不想使用带有密码的对称密码(这就是gpg-ac确实如此)。将密码存储在脚本或 cron 中是不可接受且毫无意义的(说真的,这听起来很刺耳,但您不妨将其 rot13。)

如果您使用加密,那么仅仅“更改脚本的权限”是不够的。如果是,您可以简单地更改要隐藏的数据的权限。此级别的加密显然是为了阻止已获得您帐户访问权限的人(很可能是恶意的)在获得访问权限后读取数据。

在这种情况下,您需要的是公钥加密。您生成一个私钥(使用带密码的对称密码再次加密)和一个公钥。公钥可以分发到任何地方。任何人都可以加密您可以使用私钥读取的数据。没有人应该有权访问您的私钥。因此,对于您需要的加密类型,它是完美的。您可以将公钥存储在服务器上并使用它加密所有数据。如果攻击者拥有您的公钥和加密数据,他就无能为力了。

您的私钥应该是潜在攻击者始终忽略的难题。您需要隐藏它。也就是说,加密您可以读取的数据很容易。解密它应该很难。使用对称密码,两者的难度是相同的(如果您想从这些方面考虑,这可能不是最好的类比。)

GPG 使公共加密变得相对轻松,但首先,您需要生成一个密钥对(这不是在您的服务器上完成的,而是在您的桌面或您乐意拥有私钥的安全地方完成的):

$ gpg --gen-key

回顾一下那里的问题。

然后您需要导出您的 GPG 公钥并将其复制并粘贴到您的服务器:

$ gpg --list-keys
$ gpg --armor --export [email protected] > pub.key

将 pub.key 复制到您的服务器,然后使用以下命令导入:

$ gpg --import pub.key

如果您首先考虑使用加密,那显然是因为您有敏感数据。我再次强调:您需要认真考虑加密这些数据的方式,因为如果您只是使用对称密码,密码很容易被访问,那么这将是徒劳无功的。

答案2

#!/bin/bash
gpg -ac passphrase="secret" < $1

然而,将其作为自己的脚本似乎有点没有必要。

答案3

以下crontab行将导致secretfile每 5 分钟使用指定的密码进行加密,而不会泄露密码ps aux和类似查询。当然,您可能还想对原始文件和加密结果进行一些操作,但这取决于您。

*/5 * * * * gpg -c --passphrase-fd 3 secretfile 3<<<"passphrase"

相关内容