我最近在 Linux 桌面上经历了这个小菜鸟冒险:
- 获取包含敏感信息的文本文件
- PGP 加密(例如使用 Seahorse)
- 备份
- 重新安装操作系统、删除硬盘驱动器、将计算机丢入游泳池等
- 从备份中检索加密文件,惊恐地发现你无法解密它,即使你知道密码,因为你没有备份存储 key 的 ~/.gnupg。
为什么我会爱上这个?因为我曾经是 Mac 用户,我会在其中创建一个加密的稀疏磁盘镜像,将我的文件放入其中,然后卸载。我可以把这个文件到处移动,把它放到任何 Mac 上,安装,输入密码,然后 ta-da!只要我记得密码,就万事大吉。
有人知道如何用 Linux 做这样的事情吗?
(我希望这与 SOF 编程有足够的相关性......无论如何它对我的编程工作很重要!)
总结:当你想这样做时,加密时使用--symmetric
选项。
让我们看看这里到底发生了什么的细节;在尝试正确做事时,一点点了解通常会有所帮助。
当您使用 GnuPG 加密文件时,它使用“对称”加密。也就是说,它使用一个 key 来加密明文和解密密文。为什么要这样做?因为对称算法比公钥/私钥算法(使用单独的 key 来加密和解密)快得多,其他原因我们稍后会看到。
它从哪里获得用于加密文件的 key ?它构成了一个随机的。不,我不是在跟你开玩笑。
此时您可能认为我们遇到了一些小问题。该文件使用随 secret 钥加密,没有人(除了那个特定的 GnuPG 进程)知道它是什么。那么接下来会发生什么?
诀窍是:该随 secret 钥然后用其他 key 加密,并存储在文件中。这就是我们允许多个用户能够解密文件的方式。例如,我公司的备份是加密的,这样我和我的业务合作伙伴都可以解密它们:GnuPG 使用我的公钥和我合作伙伴的公钥分别加密文件加密 key ,并将这两者与加密数据一起存储。现在,我可以使用我的私钥解密用我的公钥加密的副本(或者我的合作伙伴可以用他的副本做同样的事情),检索用于加密数据的对称 key ,然后解密。
那么 --symmetric
有什么作用呢?它只是使用对称算法本身加密该随机加密 key ,这次使用基于提供的密码的 key 。现在任何知道密码的人都可以解密该文件。
这对一个文件来说很好,但是当你有很多文件时,这很快就会变得不方便,用不同的密码加密,以便不同的人群可以访问它们,这就是我们通常使用公钥的原因之一系统代替。
但不幸的是,现在您已经学会了一个非常宝贵的教训:您的私钥很重要!如果你丢失了它,你将无法访问任何人使用你的公钥加密过的任何东西。生成一次,确保安全,并在多个地方备份。
您想要做的是添加 --symmetric
选项以允许仅使用密码短语解密文件。
问题是您使用公钥加密了文件,当您这样做时,您需要您的私钥(存储在 ~/.gnupg
中)来解密它。