Crypt加密Linux文件系统?

如何使用DM-Crypt加密Linux文件系统?

读者经常询问我们的一个常见问题是,如何为 Linux 实施一种文件系统加密方法。在深入探讨这个话题之前,我想要阐明两点:

首先,很难在网上找到这方面足够多的信息。于是,我会向大家介绍几个好不容易找到的确实很棒的资源(实际上是几篇教程)。

其次,明白这个问题的技术细节很重要。这也是我在本文中所要探讨的,之后我会介绍如何实现加密,然后介绍其他资源。

人们时常说想要加密数据,但是他们常常忽视了一个根本的方面:他们到底想对什么进行加密?他们是想从软件包里面对数据进行加密,然后将该数据存储到硬驱上的单个文件中?比如说,他们是想让 LibreOffice 创建整个 .odt 文字处理文档,对它进行加密,然后将加密的结果作为单个文件写入到文件系统,就像下图那样?还是说他们想让 Linux 在文件系统层面自行处理加密?

如何使用DM-Crypt加密Linux文件系统?

一种方法就是从软件包里面加密数据,然后将该数据存储到硬驱上的单个文件中。或者 Linux 会在文件系统层面自行处理加密。

Linux 处理加密事务为例, LibreOffice 除了读取和写入文件外,什么也不做,就像它目前所做的那样。 Linux 会加密文件,然后将文件实际写入到磁盘上,解密后回过头来读取文件。这是我在这里采取的方法,但是你还要提出另外许多问题。想要提出合适的问题,你就要明白块存储的工作原理。不妨先看一下块存储。

Linux块设备加密之dm-crypt分析 

教你如何利用dm-crypt给Ubuntu系统文件加密

块级存储

操作系统处理本地驱动器时,操作系统使用 filesystem 软件来格式化驱动器,然后读取并写入单个扇区。保存文件时, filesystem 软件弄清楚需要写入的扇区。读取文件时, filesystem 会弄清楚数据在哪些扇区上,然后读取那些扇区,为你重构文件。想管理文件, filesystem 使用不同类型的索引,它将这些索引也存储在磁盘上。不同的 filesystem 软件使用不同的方式来组织数据,还包括不同的安全机制;最终结果就是有了不同的文件系统,比如 ext4 NTFS

底层细节

我们已交待清楚了块级设备的工作原因,不妨考虑这个:操作系统使用其 filesystem 软件,将数据扇区写入到驱动器。 filesystem 软件确定将数据扇区写入到何处、如何组织它们,包括创建描述文件名称、组织方式等信息的元数据。但是 filesystem 软件为了执行实际读取并写入到驱动器的操作,就需要有设备驱动程序来做实际控制设备本身的工作,如下图的左边所示(驱动程序在 /dev 目录里面的文件系统层次结构中已有表示)。

如何使用DM-Crypt加密Linux文件系统?

filesystem 软件能够在写入数据之前进行加密。或者,位于 filesystem 软件与设备驱动程序之间的某个软件能进行加密。

就在 filesystem 软件与设备驱动程序之间的这个点,加密方面需要做出选择:你是想让 filesystem 软件进行加密,然后写入数据呢?还是说,我们实际上将一个软件嵌入到 filesystem 软件与设备驱动程序之间怎么样?这样一来, filesystem 会像平常那样运转,但是当它试图访问设备时,其调用改而由加密软件来处理,如上图的右边所示。我们在本文中要采用这种方法。不过先不妨谈论另外几个问题。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/16135.html