我如何在Linux上创build一个独立的encryption文件?

我最近在Linux桌面上经历了这个小小的冒险之旅:

  1. 带有敏感信息的文本文件
  2. PGPencryption(例如海马)
  3. 把它备份
  4. 重新安装操作系统,清除硬盘,将电脑放入池中等等
  5. 从备份中检索encryption的文件,然后惊恐地喘口气,即使知道密码也不能解密密码,因为你没有备份〜/ .gnupg文件。

我为什么要这么做? 因为我曾经是一个Mac用户,在那里我会创build一个encryption的稀疏磁盘映像,放下我的文件,并卸载。 我可以把这个文件移到任何地方,把它放到任何mac上,mount,input密码,然后ta-da! 只要我记得密码,一切都很好。

任何人都知道如何用Linux做这样的事情?

(我希望这与SOF的编程相关……对于我的编程工作来说这非常重要!)

总结:当你想要做到这一点时,在加密时使用--symmetric选项。

让我们看看这里真正发生的细节。 一些理解往往有助于正确地做事情。

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

它在哪里得到它用来加密文件的密钥? 它构成了一个随机的。 不,我不是在这里开玩笑。

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

这里的技巧是:随机密钥然后用其他密钥加密,并存储在文件中。 这是我们如何让多个用户能够解密文件。 例如,我公司的备份是经过加密的,因此我和我的业务合作伙伴都可以对其进行解密:GnuPG使用我的公钥对文件加密密钥进行加密,并将其与我的合作伙伴的公钥一起加密,并将这两者与加密数据一起存储。 现在我用我的私钥解密用我的公钥加密的拷贝(或者我的合伙人可以用他的拷贝做同样的事情),检索用于加密数据的对称密钥并解密。

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

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

但现在你已经学会了,不幸的是,这是一个非常宝贵的教训:你的私钥是重要的! 如果你失去了这一点,你将失去使用你的公钥加密的任何东西。 生成一次,保持安全,并保存在几个地方备份。

你想要做的是添加 – --symmetric选项来允许只用密码解密文件。

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

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

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

我使用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 US government as the Advanced Encryption Standard (AES, see http://www.nist.gov/aes/). This cipher is believed to provide very strong cryptographic security. 

Curt Sampson在解释这些概念方面表现出色。 我要提供一些细节。

不幸的是,Seahorse和朋友并没有给出对称加密的选择,尽管它可以处理对称加密文件的解密。 与此同时,如前所述,您可以从命令行进行加密,例如

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

如果你对gpg满意,但是真的想要一个gui,你可以使用我的gpg-frontend Pyrite 。 它不像海马一样与鹦鹉螺结合,但如果我可以这样说的话,它还是非常的甜美。 🙂

正如别人提到的,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的前身)。

我大多只有红帽,Fedora和朋友的经验,但在那些你可以使用可爱的磁盘管理gui palimpset来创建和修改加密的磁盘/分区,没有安装任何额外的东西。 当然这里有一个命令行工具: 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 

一旦你这样做,鹦鹉螺应该没有任何问题自动检测,然后你可以解锁它,并从那里做一个安全的用户安装。

编辑: 我感到无聊。 当我遇到这个问题时,我正在浏览gpg标签。 我没有注意到这是多少岁,直到我完成打字,并提交它。 好吧。 也许后代会派上用场。

我用mcrypt。 它支持多种现代加密算法,并且在Linux机器上是相当流行的(或者至少在大多数的失败者中获得预编译的软件包是很容易的)。

ecryptfs很容易设置和使用。

  • 上行:您不提前预留空间; 它作为文件系统之上的一层工作

  • 缺点:文件名不加密。 很明显,你可以通过压缩或者tar整个树来完成这个工作,让ecryptfs加密zip或者tar文件,但这是一个麻烦事。

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

你也可以使用openssl来加密文件。