I am LAZY bones? AN ancient AND boring SITE

cryptsetup – 分区加密工具

cryptsetup是linux下的一个分区加密工具,和之前介绍过的eCryptfs不同的是:eCryptfs是文件系统级别的加密,而cryptsetup是分区级别的,比文件系统级别工作在更底层的位置,是在经过加密的块设备上,再创建文件系统,再挂载使用。这应该是纯软件能达到的最底层的加密了吧。
我折腾这玩意,是因为上篇文章说到,我要把/home的数据备份到另一个硬盘,而那个硬盘的物理安全性并不能得到充分地保证,所以只有通过加密来确保数据的安全了。如果当年陈老师也用这玩意的话,想必不会捅出这么大的篓子,呵呵。

废话不说,简单说说安装和使用的方法。
如果你是用ubuntu这类发行版的话,安装部分就很简单了,基本就是直接安装cryptsetup这个包,就完事了。
但是如果你和我一样也是用自己编译内核的发行版,比如gentoo的话,使用中可能会出现以下错误:

/proc/misc: No entry for device-mapper found
Is device-mapper driver missing from kernel?
Failure to communicate with kernel device-mapper driver.
Cannot initialize device-mapper. Is dm_mod kernel module loaded?
Command failed with code 22: Cannot initialize device-mapper. Is dm_mod kernel module loaded?

这时候你不要急着去安装 device-mapper ,因为现在 device-mapper 已经并入到更强大的 lvm2 里面了,所以你要确保装了 lvm2 和在内核选项里选择了CONFIG_DM_CRYPT,如下:

-> Device Drivers
  -> Multiple devices driver support
    -> Device mapper support
      -> Crypt target support

另外,还建议选取大文件支持的CONFIG_LBDAF和CONFIG_CRYPTO_AES两个内核选项,我这边不选取前者,会无法打开加密分区(虽然说LBDAF是2T+的单文件支持,而我的硬盘一共只有80G);后者是一个内核里的加密算法API,我们就用这个算法来加密(也可以用其他的算法)。

说说怎么使用:
建立一个加密的分区,很简单,执行下面的命令:

sudo cryptsetup --verbose --verify-passphrase -c aes-cbc-plain luksFormat /dev/sdb1

我的外接硬盘在 /dev/sdb1 ,因为这个命令会摧毁这个分区的所有数据,所以程序会让你确认,输入大写的YES,回车,就会让你输入两次密码,输完就搞定了。
话外音:其实cryptsetup不仅支持用密码加密,还支持用文件来加密,可以是任意类型的文件,不过解密的时候,要确保文件一个字节都不差,用这个特性可以方便地构建解密U盘。

好了,加密完分区以后,要使用的话,可以这样:

sudo cryptsetup luksOpen /dev/sdb1 back

其中最后的“back”,可以是任意字符串,程序会提示输入之前设置的密码,输对密码以后,文件系统里就会多出一个 /dev/mapper/back ,接下来就可以像使用 /dev/sdXX 一样地使用这个 /dev/mapper/back 了。
比如,建立一个ext4文件系统,挂载,复制文件之类:

sudo mkfs.ext4 /dev/mapper/back
sudo mount /dev/mapper/back /mnt/back/
sudo cp XXX /mnt/back/
....

使用完以后,可以这样显式地关闭加密分区:

sudo cryptsetup luksClose /dev/mapper/back

看看如果别人偷你加密后的硬盘,想挂载看你的艳照时,会怎么样?哈哈:

$ sudo mount /dev/sdb1 /mnt/back/
mount: unknown filesystem type 'crypto_LUKS'

PS: 现在ubuntu的易用性确实越来越好了,ubuntu里插入加密的硬盘后会自动判断,并直接弹出输入密码的窗口,输完自动挂载分区。

最后修改时间: 2010年06月26日 17:58

本文章发表于: 2010年06月26日 17:58 | 所属分类:CLI软件. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

15 个评论 关于: “cryptsetup – 分区加密工具”

  1. delectate 在 2010年06月26日 18:14 说:回复

    ubuntu非常适合不喜欢折腾的linux用户,很多东西已经做得很出色了。

  2. vzomik 在 2010年06月26日 18:39 说:回复

    呃,那个,有没有加密文件夹的?就是双击文件夹的时候弹出对话框,输入正确的密码才能打开那种~

    • bones7456 在 2010年06月26日 18:53 说:回复

      那你不如打成rar或者7z的包好了,加个密码就是了。

  3. 丕子 在 2010年06月26日 22:33 说:回复

    很安全 不怕被盗用文件了

    • Blackdream1890 在 2010年06月26日 22:59 说:回复

      其实暴力破解也是可行的,看密码强弱性。

      • bones7456 在 2010年06月26日 23:17 说:回复

        你硬要说行就行吧,反正暴力破解理论上能解开一切加密,只是时间长短问题嘛~

        • Blackdream1890 在 2010年06月26日 23:36 说:回复

          也是。时间长短。但是ecryptfs随机生成的口令则不同了。“时间长短”的短字可以去掉。绝对够长。

        • Blackdream1890 在 2010年06月26日 23:50 说:回复

          顺便说一句,你文章开头所说的“系统级别”和“分区级别”的加密,表达没有错误,但是安全性来说,ecryptfs明显要比这个”分区级别“的加密要安全得多。因为ecryptfs除了需要login passphrase(人为输入的口令),还有一个可由系统随机生成的mount passphrase。基本上~/.ecryptfs/wrapped-passphrase丢失的话,恢复数据是不可能的事情。

          嗯。说了很多废话,希望博主不要见怪。

          • Blackdream1890 在 2010年06月27日 00:01 说:【 】

            反过来说。别人没有你的~/.ecryptfs/wrapped-passphrase。(当时系统随机生成的mount passphrase)。即使他知道了你的login passphrase,也绝对碰不到你的任何加密数据

          • bones7456 在 2010年06月27日 09:05 说:【 】

            我没有去研究过算法的代码,所以并没有对两者的安全做出评价。而且安全性往往是和易用性成反比的,好比你说的这个eCryptfs的算法,有个mount passphrase确实更安全,但是在我的理解里,像我这种备份的应用,这个mount passphrase是存在主硬盘里的,而当主硬盘丢失或者损坏的话,mount passphrase也就丢了。这时候你想从备份盘里恢复数据,估计就要傻眼了。。。

  4. oceanboo 在 2010年06月28日 09:42 说:回复

    有点意思。

  5. muxueqz 在 2010年06月28日 10:29 说:回复

    强烈要求骨头兄曝光艳照!

  6. weakish 在 2010年06月30日 17:18 说:回复

    ecryptfs的话,你可以把~/.ecryptfs/wrapped-passphrase备份到安全的地方,或者把unwrapped-passphrase背下来(比较考验记忆力哦)

    不过cryptsetup完全可以和ecryptfs一样安全的。归根到底,就是一个长密码而已。ecryptfs其实就是把一个随机生成的长密码用login passwd再加密成~/.ecryptfs/wrapped-passphrase而已。登录的时候靠login passwd解密wrapped-passphrase成mount passphrase,再用mount passphrase解密文件系统而已。

    cryptsetup完全也可以设一个长密码。也完全可以通过手动添加启动服务的方式,用login passwd来wrap这个长密码,实现登录时自动解密、挂载的。

    还有,其实仅仅作加密备份的话,duplicity(可以说是带加密的rsync)比较好用: http://www.nongnu.org/duplicity/

    顺便提一下,陈老师不用搞cryptsetup,因为陈老师用的水果本,可以直接在系统设置》安全里选择加密整个家目录(原理和ecryptfs类似,把家目录放到一个加密卷里,login时自动解密mount)。只能说陈老师太不小心了。

  7. iSingle 在 2010年07月09日 19:25 说:回复

    这个和TrueCrypt有啥不一样?我一直使用keepassX和TrueCrypt搭配,使用Dropbox同步keepassx的密码数据库,个人感觉很安全,因为连我自己都不知道密码是什么……
    另外,对于插入加密盘能够自动弹出密码这个功能很好奇,可惜TrueCrypt没有

  8. 凡尘飞扬 在 2010年11月04日 18:37 说:回复

    看上去就是key+pwd的双验证方式进行加解密的。文件系统级的加密?我理解是设备级的,直接加密不知道是不是key丢失的话就可能连设备都无法发现了,就类似于Nokia的手机对TF卡加密,直接加密底层的设备,任何host必须得要支持对底层设备加解密才能够发现设备,然后才能进行权限呢,只不过这个是双验证。不过话说回来,这样真的不适合加密备份用,危险系数太高了!除非是不太重要的特高级别的机密数据(貌似没有这种啊)。

发表评论