使用 gpg 加密文件(以及它们对密钥进行对称加密) - 在 *nix 世界中这是一件正常的事情吗?

Som*_*DOS 4 security backup encryption gpg

我阅读了很多关于使用 gpg 加密电子邮件的文章,但我想用它来加密一些文件——主要是一堆 *.iso。我将描述我认为我会做什么,所以你可以拍我或者只是添加一些建议。

我打算去做

tar -cvjf myiso.iso.tar.bz2 myiso.iso
Run Code Online (Sandbox Code Playgroud)

他们我计划使用 gpg 生成的密钥来加密这个 myisio.tar.bz2(不知道如何做到这一点。我将阅读手册页)。他们,我要将这个生成的 gpg 密钥保存在闪存驱动器中,并使用对称密钥对这个密钥本身进行编码。

是不是疯了

Gil*_*il' 8

您可以使用 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
Run Code Online (Sandbox Code Playgroud)

以及如何解密:

passphrase=$(gpg -d <passphrase.gpg)
echo "$passphrase" | gpg -d --passphrase-fd 3 3<&0 <myiso.iso.gpg >myiso.iso
Run Code Online (Sandbox Code Playgroud)

使用密码(共享秘密)而不是直接加密的原因是它允许文件在几个人之间共享。如果您想添加收件人,则只需要重新加密小密码短语(仅当您知道收件人无法访问明文并且无论如何都需要重新编码密文时,删除收件人才有意义)。