2014-10-04 linux 信息安全 加密

啊,是这样的,前几天需要加密存储一些文件,于是想到创建一个加密的分区。以前有一个著名的跨平台磁盘加密软件 TrueCrypt,这款软件大概已经流行了十年了,但是,就在前段时间,它的开发者警告用户,称其不再安全,要求用户转移使用其它加密软件。所以我尝试寻找一个在 linux 平台上类似的软件,然后找到了 LUKS。好吧,其实 LUKS 应该是一种协议,它能够在不同的 linux 发行版上使用,而且它还支持多口令。在 linux 上可以使用 cryptsetup。

先来讲一下大概流程,使用 cryptsetup 加密一个分区,然后这个分区将不能够直接被挂载,需要在认证之后使用 cryptsetup 映射到一个虚拟磁盘,然后这个虚拟磁盘才是能够直接使用的。

格式化 LUKS 分区

# cryptsetup luksFormat /dev/sda1

这里需要输入一个大写的 YES,然后输入密码。

映射

# cryptsetup luksOpen /dev/sda1 luks

这里就需要输入密码了。

格式化以及挂载

# mkfs.ext4 /dev/mapper/luks
# mount /dev/mapper/luks /mnt

这个 /dev/mapper/luks 就能像普通的磁盘分区一样使用了。

关闭映射

关闭映射前需要先卸载分区。

# umount /mnt
# cryptsetup luksClose luks

开机自动挂载 LUKS 分区

# vim /etc/crypttab
  # target name    source device    key file    options

打开 /etc/crypttab,文件有四列。第一列就是映射的虚拟磁盘名。第二列是加密的磁盘的文件名,如 "/dev/sda1" 或者是 "UUID=..."。第三列是密码文件,如果希望开机手动输入密码可以填 "-" 或者留空,如果希望自动挂载可以填一个包含密码的文件的绝对路径。第四列是一些选项。然后在 /etc/fstab 里加入挂载项。

添加、删除、更改 LUKS 分区密码

# cryptsetup luksAddKey /dev/sda1        //添加密码,LUKS 能使用多个密码
# cryptsetup luksRemoveKey /dev/sda1        //删除密码

大概就是这样,后面我还希望能够在 Windows 读写 LUKS 分区,网上有人说有一款免费的软件 FreeOTFE 可以用,但是我好像没有安装成功...