我读了很多关于使用 gpg 加密电子邮件的文章,但我想用它来加密一些文件 - 主要是一堆 *.isos。我将描述我认为我会做的事情,这样你就可以向我射击或者只是添加一些建议。
我打算去做
tar -cvjf myiso.iso.tar.bz2 myiso.iso
我计划使用 gpg 生成的密钥加密这个 myisio.tar.bz2 (不知道具体如何做到这一点。我将阅读手册页)。他们,我将把用于加密的生成的 gpg 密钥保存在闪存驱动器中,并使用对称密钥对该密钥本身进行编码。
难道是为了疯狂的?
答案1
您可以使用 GPG 使用密码 ( ) 对文件进行对称加密gpg -c
。如果密码短语具有足够的熵,则不需要生成密钥的额外步骤。 “足够的熵”是什么意思?您的加密需要承受离线攻击,攻击者可以在其硬件允许的范围内尽可能快地进行破解尝试。对于小型 PC 场,攻击者可能每秒可以进行数千亿次尝试,大约每十年 2^69 次。因此,熵为 2^70 时你就安全了。这意味着如果您的密码由完全随机的字母(小写或大写)和数字组成,则其长度应为 12 个字符。
现在要存储该密码,您可以使用 GPG 及其常用密钥对。用于gpg --gen-key
生成密钥对,并对gpg -e
用于加密一个或多个密钥对的大文件的密码进行加密。
以下是有关如何进行加密的草图(请注意,我避免将密码放在命令行或环境中,以确保其他用户无法通过ps
在命令运行时查看输出来找到它):
passphrase=$(pwgen -s 12 -1)
echo "The passphrase for myiso.iso.gpg is: $passphrase" |
gpg -e -r somebody -r somebodyelse >passphrase.gpg
echo "$passphrase" | gpg -c --passphrase-fd 3 3<&0 <myiso.iso >myiso.iso.gpg
以及如何解密:
passphrase=$(gpg -d <passphrase.gpg)
echo "$passphrase" | gpg -d --passphrase-fd 3 3<&0 <myiso.iso.gpg >myiso.iso
使用密码(共享秘密)而不是直接加密的原因是它允许在多人之间共享文件。如果您想要添加收件人,则仅需要重新加密小密码(仅当您知道收件人无权访问明文并且无论如何都需要重新编码密文时,删除收件人才有意义)。