是否有良好的默认python或简单的shell脚本,我可以用来通过PGP / GPGencryption和解密文件? 我会每5分钟运行一次这个脚本。
你不想要一个对称的密码
如果您需要自动运行encryption,则不需要使用对称密码和密码(这是gpg -ac的作用)。 将密码存储在脚本或cron中是不可接受和毫无意义的(严重的是,这听起来很刺耳,但是你也可以把它改掉)。
如果您使用encryption,只是“更改脚本的权限”是不够的。 如果是这样,你可以简单地改变你想隐藏的数据的权限。 这个级别的encryption显然意味着阻止某人访问您的帐户(很可能是恶意)在访问数据后才能读取数据。
在这种情况下,你想要的是公钥密码。 您生成一个私钥(使用密码对称密码再次encryption)和一个公钥。 公钥可以分布在任何地方。 任何人都可以encryption可以使用私钥读取的数据。 没人应该访问你的私钥。 所以对于你需要的encryptiontypes,这是完美的。 您可以将公钥存储在服务器上,并使用它encryption所有数据。 如果攻击者拥有你的公钥和你的encryption数据,他什么都不能做。
你的私钥应该是潜在的攻击者总是错过的难题。 你需要隐藏这个。 即encryption你可以阅读的数据很容易。 解密应该很难。 对于对称密码,两者的难度是相同的(如果你想用这些术语来思考它,这可能不是最好的比喻)。
GPG使得公共密码相对简单,但首先,你需要生成一个密钥对(这不是在你的服务器上完成的,而是在你的桌面上,
$ gpg --gen-key
运行那里的问题。
然后你想导出你的GPG公钥并复制并粘贴到你的服务器上:
$ gpg --list-keys $ gpg --armor --export [email protected] > pub.key
将pub.key复制到您的服务器,然后导入:
$ gpg --import pub.key
如果你首先考虑使用encryption,显然是因为你有敏感的数据。 我要再次强调一下:你需要认真考虑你对这些数据进行encryption的方式,因为如果你只是简单地使用一个对称密码,那么密码可以被简单地访问,这是一个不争的事实。
#!/bin/bash gpg -ac passphrase="secret" < $1
但是,似乎没有必要将它制作成自己的脚本。
以下crontab行将导致secretfile每隔5分钟使用指定的密码进行encryption,而不会向ps aux和类似查询泄露密码。 当然,你可能也想用原始文件和encryption结果做一些事情,但这取决于你。
*/5 * * * * gpg -c --passphrase-fd 3 secretfile 3<<<"passphrase"