2

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

  1. 获取包含敏感信息的文本文件
  2. PGP 加密它(例如使用 Seahorse)
  3. 把它备份
  4. 重新安装操作系统、擦除硬盘驱动器、将计算机放入池中等
  5. 从备份中检索加密文件,然后惊恐地发现即使您知道密码也无法解密它,因为您没有备份 ~/.gnupg 存储密钥的位置。

为什么我会为此而堕落?因为我曾经是 Mac 用户,我会创建一个加密的稀疏磁盘映像,将我的文件放入其中,然后卸载。我可以把这个文件到处移动,把它放到任何mac上,挂载,输入密码,然后ta-da!只要我记得密码,一切都很好。

有人知道如何用 Linux 做类似的事情吗?

(我希望这与 SOF 编程足够相关......无论如何,这对我的编程工作很重要!)

4

7 回答 7

9

摘要:当你想这样做时,--symmetric在加密时使用该选项。

让我们看看这里真正发生的事情的细节;尝试做正确的事情时,一点点理解通常会有所帮助。

当您使用 GnuPG 加密文件时,它使用“对称”加密。也就是说,它使用一个密钥来加密明文和解密密文。为什么这样做?因为对称算法比公钥/私钥算法(使用单独的密钥来加密和解密)快得多,还有其他原因我们稍后会看到。

它从哪里获得用于加密文件的密钥?它组成了一个随机的。不,我不是在跟你开玩笑。

现在在这一点上,您可能会认为我们有一个小问题。该文件是用随机密钥加密的,没有人(除了那个特定的 GnuPG 进程)知道它是什么。那么接下来会发生什么?

诀窍是:该随机密钥然后用其他密钥加密,并存储在文件中。这就是我们允许多个用户解密文件的方式。例如,我公司的备份是加密的,因此我和我的业务合作伙伴都可以解密它们:GnuPG 使用我的公钥和我的合作伙伴的公钥分别加密文件加密密钥,并将这两者与加密数据一起存储。现在,我可以使用我的私钥解密用我的公钥加密的副本(或者我的伙伴可以对他的副本做同样的事情),检索用于加密数据的对称密钥,然后解密它。

那么做--symmetric什么呢?它只是使用对称算法本身加密该随机加密密钥,这次使用基于提供的密码短语的密钥。现在任何知道密码的人也可以解密文件。

这对一个文件来说很好,但是当你有很多文件时,这很快就会变得不方便,用不同的密码加密,以便不同的人可以访问它们,这就是我们通常使用公钥系统的原因之一。

但是,不幸的是,现在您已经学到了非常宝贵的一课:您的私钥很重要!如果您丢失了它,您将无法访问任何人使用您的公钥加密过的任何内容。生成一次,保持安全,并在多个地方备份。

您想要做的是添加--symmetric选项以允许仅使用密码来解密文件。

问题是你用你的公钥加密了文件,当你这样做时,你需要你的密钥(存储在 中~/.gnupg)来解密它。

于 2009-05-21T00:57:15.973 回答
3

Curt Sampson 很好地解释了这些概念。我会提供一些细节。

可悲的是,Seahorse & friends 还没有提供进行对称加密的选项,尽管它可以处理解密对称加密的文件。同时,如前所述,您可以从命令行进行加密,例如

gpg --symmetric --force-mdc --cipher-algo aes256 -o outfile infile

如果你对 gpg 很满意但真的想要一个 gui,你可以使用我的gpg-frontend Pyrite。它不像海马插件那样与 Nautilus 集成,但如果我可以这么说的话,它仍然很可爱。:)

正如其他人所提到的,eCryptfs 是一个很好的选择,它属于同一个领域,提供每个文件的加密,尽管它以一种更方便的方式进行,基本上为您提供一个文件夹,可以透明地加密/解密所有写入和读取到/从中。起初它看起来像是一个加密的容器解决方案,但实际上它是单独加密文件——一旦你卸载文件夹,你最终会得到一堆单独加密的文件。LJ上的这篇文章对 eCryptfs 与其他一些选项进行了很好的比较和对比概述。以下是让 eCryptfs 运行的简单方法:

$ mkdir ~/vault
$ sudo mount -t ecryptfs ~/vault ~/vault
Select key type to use for newly created files: 
 1) openssl
 2) passphrase
 3) pkcs11-helper
 4) tspi
Selection: 2
....... (truncated)
$ echo hello > ~/vault/encfile
$ sudo umount ~/vault
$ ls -a ~/vault
.  ..  encfile
$ cat ~/vault/encfile
稖��)!x�"3DUfw`��ȿ_���E�����_CONSOLE�W�v0�+�'�hV���Q��VZ��eP�����l⟮j%����?O��V
....... (truncated)

如果您对此感兴趣,还可以查看该ecryptfs-setup-private命令,该命令消除了对 sudo 的需求并允许一切自动化。继续。

其他最好的选择是 pts 提到的:TrueCrypt(跨平台)和dm-crypt,它允许你加密任何块设备(例如分区、逻辑卷、单个文件),然后当然你会抛出一个fs 最重要的是。不要使用 Cryptoloop(dm-crypt 的前身)。

我大多只有 Red Hat、Fedora 和朋友的经验,但在那些你可以使用可爱的磁盘管理 guipalimpset来创建和修改加密磁盘/分区,而无需安装任何额外的东西。当然有一个命令行工具:cryptsetup...这里有一个简单的例子,让您了解 dm-crypt 的可能性,使用 cryptsetup 从可扩展的逻辑卷中创建加密文件系统:

lvcreate -L 2G -n mybox volgroup
cryptsetup luksFormat /dev/volgroup/mybox
cryptsetup luksOpen /dev/volgroup/mybox mybox
mkfs.ext4 /dev/mapper/mybox
cryptsetup luksClose mybox

完成此操作后,Nautilus 应该可以毫无问题地自动检测它,然后您可以解锁它并从那里进行安全的用户安装。

编辑: 我觉得很傻。当我遇到这个问题时,我正在浏览 gpg 标签。直到我完成输入所有内容并即将提交时,我才注意到这是多大年纪。那好吧。也许它会为后代派上用场。

于 2012-03-05T05:38:48.303 回答
2

TrueCrypt是一种用户友好的磁盘加密解决方案,适用于 Linux(以及其他系统)。

仅限 Linux 的较低级别的解决方案是 dm-crypt 和 crpytoloop。

于 2009-05-21T00:37:51.037 回答
2

我使用 ccrypt,它在 Cygwin 中也可用。

   ccrypt is a utility for encrypting and decrypting files and streams. It
   was designed to replace the standard unix crypt utility, which is noto‐
   rious  for  using a very weak encryption algorithm.  ccrypt is based on
   the Rijndael block cipher, which was also chosen by the U.S. government
   as      the      Advanced     Encryption     Standard     (AES,     see
   http://www.nist.gov/aes/). This cipher  is  believed  to  provide  very
   strong cryptographic security.
于 2009-05-21T00:39:48.863 回答
1

我用过mcrypt。它支持几种现代加密算法,并且在 linux 机器上很常见(或者至少在大多数 distors 上很容易获得预编译包)。

于 2009-05-21T00:50:51.930 回答
1

ecryptfs 易于设置和使用。

  • 好处:您不提前预订空间;它作为文件系统之上的一层

  • 缺点:文件名未加密。显然,您可以通过压缩或压缩整个树并让 ecryptfs 加密 zip 或 tar 文件来解决此问题,但这很麻烦。

    更新截至 2012 年 3 月,这个问题已经解决(并且已经解决了一段时间):ecryptfs 加密文件名。我无法轻松找到引入此功能的版本号或日期。

于 2009-05-21T01:25:55.340 回答
0

您还可以使用openssl加密文件。

于 2012-07-30T07:54:12.403 回答