linux - 如何在 Linux 上创建独立的加密文件?

标签 linux encryption pgp

<分区>

我最近在 Linux 桌面上经历了这个小菜鸟冒险:

  1. 获取包含敏感信息的文本文件
  2. PGP 加密(例如使用 Seahorse)
  3. 备份
  4. 重新安装操作系统、删除硬盘驱动器、将计算机丢入游泳池等
  5. 从备份中检索加密文件,惊恐地发现你无法解密它,即使你知道密码,因为你没有备份存储 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 中)来解密它。

关于linux - 如何在 Linux 上创建独立的加密文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890889/

相关文章:

linux - struct inode 中 i_blksize 成员的替换是什么?

linux - Centos 7无法访问文件目录和文件

Java:用 ASCII 0 (NULL) 将字符串填充为 16 字节的倍数

c++ - InDev 基于位的加密程序中未知的 C++ 堆损坏,C++ 编程的新手

java - 加密和解密两个系统之间的消息

qr-code - 使用 GPG 从私钥中删除公钥以存储私钥

linux - grep 两个字符串作为变量在脚本中使用

c - strerror_r 应该允许多大的尺寸?

php - 如何使用 GnuPG 加密字符串?

git - 如何通过哈希验证 Git 安装程序?