我对加密技术还不熟悉,尤其是 GPG。我的用例是将个人文档存储在网络驱动器上。这些文档是扫描件(例如文凭、文件)。我使用 生成了一个 GPG 密钥gpg --gen-key
,然后使用 加密了一些图像gpg -e -r <name> <file>
。默认情况下,它似乎会输出以原始文件命名并以 为后缀的文件.gpg
,例如diploma.jpg
变成diploma.jpg.gpg
。
如果知道文档的类型,我是否会为已知明文攻击打开大门?
另外,我应该采取什么步骤来备份我的密钥(将其打印在纸上......)?
答案1
我不会担心文件名和可能知道的前几个字节。但如果您对此感到不安,请考虑这一点:
- 您可以使用带有 AES 加密的 .7z 或 .zip 容器
- 您可以使用诸如 truecrypt 之类的容器程序
记住:
gpg 以混合模式加密您的文件,这意味着:它使用非对称密钥加密“会话密钥”,然后使用该会话密钥加密实际数据。因此,使用非对称密钥加密只有您关心的内容实际上不会获得任何好处(请记住:非对称加密仅在数据量相对较少时才适用于密钥交换之类的操作)
没有理由不使用对称加密,因为无论如何你都想记住文件/容器的密码:
gpg --symmetric -e
由于您将自己描述为该主题的新手:请在 gnupg-manual 中阅读一些相关内容:
答案2
GPG 会在加密文件之前对其进行压缩,这样可以降低纯文本攻击的可能性,无论文件类型如何。此外,如果发生罕见的消息被泄露的情况,不是表明该消息的收件人的密钥已被泄露。
后一部分的原因与 GPG 加密消息和文件的过程有关。首先,通常使用 zlib 压缩内容。然后使用一次性密码(称为会话密钥)对压缩数据进行对称加密。然后使用收件人的公钥对会话密钥进行非对称加密。解密消息时,过程相反:收件人使用其密钥和密码解锁会话密钥,GPG 使用会话密钥解密对称加密的数据,最后解压缩数据。
对单个消息的攻击更有可能导致确定会话密钥,而不是泄露任何公钥。
如果您仍想隐藏文件类型,请执行以下操作:
gpg -ear $RECIPIENT_ID -o filename.asc filename.odt
要在解密时恢复原始文件名,请执行以下操作:
gpg --use-embedded-filename filename.asc
GPG 会将解密的数据写入存储在对称加密数据中的原始文件名,以及重建数据所需的其他信息。
注意:如果手动解密电子邮件程序中的密文,请勿使用上述嵌入文件名标志,尤其是使用 Thunderbird 和 Enigmail 时。许多电子邮件加密程序(包括 Thunderbird 和 Enigmail)不会从草稿中分配原始文件名,以这种方式解密可能会导致问题,例如尝试将数据写入空文件名。
答案3
据我所知,知道加密文件所含的数据类型对于破解来说毫无用处,因为加密并不关心数据的类型。对于加密来说,它们只是毫无意义的位(数字)。
关于您的密钥,最安全的选择是记住它,因为您的思想无法被访问;)
答案4
回答问题的第二部分:
另外,我应该采取什么步骤来备份我的密钥(将其打印在纸上......)?
首先我们来谈谈撤销证书。您绝对应该创建并备份主密钥的撤销证书。许多人会制作纸质副本(ASCII 编码或二维码)并将其存储在安全的地方,例如保险箱、带锁的防火箱或银行的保险箱。如果您的主密钥(认证密钥)被泄露,您将拥有一个备份,可以在撤销证书从您的设备中消失或设备丢失等情况下撤销它。
如果您没有撤销证书,请使用以下命令创建。“mykey”是密钥的名称,可以是指纹的最后 8 个字符。
gpg --output revoke.asc --gen-revoke mykey
撤销证书看起来就像这样,打印起来很容易。但你必须小心。打印可能会让它受到损害。
-----开始 PGP 公钥块-----
注释:这是一份撤销证书
iQG2BCABCAAgFiEEiz1thFzdqmEJkNsdNgBokN1gxcwFAlsrcOsCHQAACgkQNgBo kN1gxczZ1Qv/aUNZgG0Sjasbu2sDMcX+rjEUNpIGUB6zjcTsPwpXfFo11aM3yefb k0FgMohA8HUwmN4ka+P31jYuNuLNCqFdT8DKKuQk6XgKnX3NieahG/dFaVANXyHR ...........................................这只是一个撤销证书的示例................................................... =4lcB
-----结束 PGP 公钥块-----
现在,关于备份你的主密钥:
解决方案一:备份主密钥就像复制整个文件一样简单。解决方案二:拥有离线主密钥 (C) 确实可以增加您的安全性,并且可能值得这样做,具体取决于风险评估。如果您使用笔记本电脑或上网本存储密钥,将主密钥移至离线可能是一个特别好的主意。
有两种方法可以获取离线主密钥: 艰难之路和更简单的艰难之路。
从主密钥(C)中删除密钥并运行
gpg2-K
结果应如下所示:
注意#旁边秒——这表明密钥不再存在。