我最近在Linux桌面上经历了这个小小的冒险之旅:
我为什么要这么做? 因为我曾经是一个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来加密文件。