Linux下的磁盘加密

Linux下的磁盘加密

由于审计,有必要对数据库中的数据进行加密(elasticsearch) 我在加密方面绝对是菜鸟,经过一番谷歌搜索后,我意识到磁盘级别有加密(当您需要输入主密码或使用加载操作系统时的 TPM 模块),然后整个磁盘被解密,第二种类型的加密存在于文件系统级别,这是每个文件或分区动态加密/解密数据的时候

还建议将 dm_crypt 与 LUKS 结合使用,但他们在某处写道 LUKS 在幕后使用 dm_crypt 并且仅用于加密整个磁盘(即,当操作系统启动时,所有数据都被解密),并且在某处他们写道写下 LUKS 是块设备级别的加密,dm_crypt 动态加密/解密文件

我需要这两种机制,或者至少需要 FS 级别的加密,我可以使用 LUKS 进行块级加密(启动后)并使用 dm_crypt 进行动态文件加密吗?

答案1

(当加载操作系统时需要输入主密码或使用TPM模块时)然后整个磁盘被解密

这实际上并不是它的工作原理。

全磁盘(或文件系统)加密实际上并不会立即解密整个磁盘:在大型 HDD 上这可能需要几个小时。相反,当您输入加密磁盘设备的密码(例如/dev/sda2)时,内核会设置第二个设备,例如/dev/mapper/crypt_sda2。通过第二设备可以访问第一设备的内容仿佛它们被解密,因为内核将拦截输入/输出操作,并将解密所有读取并加密所有动态写入。

如果有人在安装了此类加密磁盘的情况下侵入系统,则黑客将能够像访问常规的非加密磁盘一样访问该磁盘。但是,如果有人在系统运行时将磁盘从系统中拉出,并尝试读取它,那么可读的将是引导加载程序、内核、initramfs 和分区的 LUKS 标头sda2;分区内的其他所有内容基本上与随机数据无法区分。如果有人在计算机关闭时窃取计算机并尝试启动它,他们只会看到Please enter the passphrase for /dev/sda2:其他内容。

dm_crypt是内核的磁盘加密基础设施,LUKS 是加密分区或其他磁盘卷的标头格式:它们可以很好地协同工作。但是 LUKS 标头的存在将允许检查您计算机的人始终看到“这里有一个加密卷”。如果这不合需要,您可以使用dm_cryptTrueCrypt/VeraCrypt 兼容模式,因为这允许您拥有一个“可否认”的加密分区,可以使用两个单独的密码进行访问。一个密码将揭示一组内容(您可以将其设置为无害的诱饵),并且不会表明还有其他内容......但是通过使用不同的密码,您可以以不同的方式解锁同一卷并揭示真实内容。当然,如果诱饵模式下的“空”空间被写入100%满,“真实”数据将被覆盖。

答案2

当块设备处于离线状态时,它的全部内容看起来就像一大堆随机数据

磁盘上的数据总是看起来像一大堆随机数据。永远不会有将明文数据写入磁盘的情况(如果您使用全磁盘加密)。发生的情况是,如果您读取扇区 N,则会从该扇区读取加密数据,并将其解密到 RAM 中。您的应用程序在 RAM 中使用它。如果应用程序随后写入扇区 N,则 RAM 中的明文数据将作为写入磁盘的一部分进行加密。

相关内容