+ xPKQ90ht2zqmFz / sNF / sycDi6hYTYvF8Fcg9x -

OpenZFS原生加密的快速入门指南

通过这个简短的指南了解OpenZFS加密的方法、原因和内容。

挂锁的特写照片。
放大 /磁盘加密是一个复杂的主题,但本文应该能让您对OpenZFS的实现有一个可靠的了解。

OpenZFS带来的众多特性之一是ZFS原生加密。本机加密首先在OpenZFS 0.8中引入,它允许系统管理员在ZFS本身内部透明地加密数据。这样就不需要像VeraCrypt,或磁盘加密

OpenZFS的加密算法默认为两者之一AES-256-CCM(0.8.4之前)或aes - 256 gcm(> = 0.8.4)时加密上=是集。但是也可以直接指定。目前支持的算法有:

  • AES-128-CCM
  • aes - 192 - ccm
  • AES-256-CCM(默认在OpenZFS < 0.8.4)
  • aes - 128 gcm
  • AES-192-GCM
  • aes - 256 gcm(OpenZFS的默认值>= 0.8.4)

不过,OpenZFS原生加密除了所使用的算法之外还有更多的内容——因此,我们将试图从系统管理员的角度为您提供关于“为什么”和“什么”以及简单的“如何”的简要而坚实的基础。

为什么(或者为什么不)OpenZFS原生加密?

显然,希望提供静态加密的聪明系统管理员实际上并不需要OpenZFS原生加密。正如引言中提到的,VeraCrypt,还有许多其他方案可用,可以在OpenZFS本身的下面或上面分层。

首先,“为什么不呢?”

比如LinuxOpenZFS有一个优势——使用整个磁盘加密后,恶意攻击者将不能再看到ZFS的名称、大小或属性数据集zvols没有钥匙。事实上,攻击者根本无法看到ZFS正在被使用!

但这也有明显的缺点(或类似)OpenZFS下面。每个GNARL最重要的是个人必须加密将成为池一部分的磁盘,在ZFS池之前加载和解密每个卷进口阶段。对于有许多磁盘(在某些情况下是许多磁盘)的ZFS系统来说,这可能是一个值得注意的挑战数以千万计的磁盘。ZFS之下的加密的另一个问题是,额外的层会出问题,而且它可以撤销所有ZFS的正常完整性保证。

或者类似的OpenZFS解决了前面提到的问题—a加密zvol不管涉及多少磁盘,只需要一个密钥,并且层不能从这里撤销OpenZFS的完整性保证。不幸的是,加密-顶层zfs引入了一个新的问题——它有效地削弱了OpenZFS内嵌压缩,因为加密的数据通常是不可压缩的。这种方法也需要一个的使用zvol每个加密的文件系统,以及一个客户文件系统(例如,ext4),以格式化体积本身。

现在,“为什么”

OpenZFS原生加密解决了这一问题:它运行在普通ZFS存储层之上,因此不会削弱ZFS自身的完整性保证。但是它也不会干扰ZFS压缩——数据在被保存到加密之前被压缩数据集zvol

还有一个更令人信服的理由选择OpenZFS原生加密——称为“原始发送”。ZFS复制非常快速和高效——通常比文件系统无关的工具快几个数量级rsync-原始发送不仅可以复制加密数据集年代和zvolS,但不向远程系统公开密钥。

这意味着您可以使用ZFS复制将您的数据备份到不可信的位置,无需担心您的私人数据被读取。使用原始发送,复制数据无需解密——备份目标根本无法解密数据。这意味着你可以复制你的离线备份到一个朋友的家里或在一个商业服务,如rsync.netzfs.rent不损害您的隐私,即使服务(或朋友)本身受到损害。

如果您需要恢复离线备份,您可以简单地复制它回来到你自己的位置,然后只有然后,加载解密密钥以实际访问数据。这既适用于完整复制(在线路上移动每个单独的块),也适用于异步增量复制(从一个常用的快照开始,只移动自该快照以来发生更改的块)。

什么是加密的,什么不是?

OpenZFS原生加密并不是一个全磁盘加密方案——它是在每个数据集/每个zvol的基础上启用或禁用的,并且不能为整个池启用它。加密数据集或zvols的内容受到保护,不受静止间谍的监视——但描述数据集/zvols本身的元数据却没有受到保护。

假设我们创建一个名为池/加密,在它下面,我们创建了更多的子数据集。的加密属性默认情况下继承自父数据集,因此我们可以看到以下内容:

root @ banshee:〜#zfs create -o encryption = on -o keylocation = charper -o keyformat = passphrase banshee /加密输入密码:重新输入密码:root @ banshee:〜#zfs创建banshee /加密/ child1根@ banshee:〜#zfs创建班晨/加密/ child2 root @ banshee:〜#zfs创建孤脸/加密/ child3 root @ banshee:〜#zfs list -r Banshee /加密名称使用的使用可用性盖板班晨/加密1.58m 848g 432k / banshee/加密banshee/encrypted/child1 320K 848G 320K /banshee/encrypted/child1 banshee/encrypted/child2 320K 848G 320K /banshee/encrypted/child2 banshee/encrypted/child3 320K 848G 320K /banshee/encrypted/child3 root@banshee:~# zfs get encryption banshee/encrypted/child1 NAME PROPERTY VALUE SOURCE banshee/encrypted/child1 encryption aes-256-gcm -

目前,我们的加密数据集都已经安装好了。但是,即使我们卸载它们并卸载加密密钥——使它们无法访问——我们仍然可以看到它们存在,以及它们的属性:

root@banshee: ~ # wget问:/女妖/加密/ child2 HuckFinn.txt http://textfiles.com/etext/AUTHORS/TWAIN/huck_finn root@banshee: ~ # zfs卸载女妖/加密root@banshee: ~ # zfs unload-key - r女妖/ 1/1密钥加密(s)成功地卸载root@banshee: ~ # zfs女妖山/加密不能挂载的女妖/加密:ls: cannot access '/banshee/encrypted/child2': /banshee/encrypted/child2没有这样的文件或目录root@banshee: ~ #效果参考使用zfs - r女妖/加密列表名称挂载点女妖/加密2.19米848克432 k /女妖/加密的女妖/加密/ child1 320 k 848克320 k /女妖/加密/ child1女妖/加密/ child2 944 k 848克720 k /女妖/加密/ child2女妖/加密/格320 k 848克320 k/女妖/加密/格

正如我们上面所看到的,在卸载加密密钥后,我们将无法再看到新下载的副本《哈克贝利·费恩历险记》/女妖/加密/ child2 /.我们可以仍然可以看到的是我们整个zfs加密树的存在和结构。我们还可以看到每个加密数据集的属性,包括但不限于使用效果,请参考每个数据集。

值得注意的是ls没有加载密钥的加密数据集不一定会产生错误:

root@banshee:~# zfs get keystatus banshee/encrypted NAME PROPERTY VALUE SOURCE banshee/encrypted keystatus unavailable - root@banshee:~# ls /banshee/encrypted root@banshee:~#

这是因为主机上存在裸目录,即使没有挂载实际的数据集。重新加载键值也不会自动重新加载数据集:

root@banshee: ~ # zfs装载键- r女妖/女妖/加密的加密的密码输入:1/1 (s)的关键成功加载root@banshee: ~ # zfs山| grep encr root@banshee: ~ # ls /女妖/加密root@banshee: ~ # ls /女妖/加密/ child2 ls:不能访问“女妖/加密/ child2”:没有这样的文件或目录

以便获得我们最新的《哈克贝利·费恩历险记》,我们也需要实际挂载新键重新加载的数据集:

root@banshee:~# zfs get keystatus banshee/encrypted/child2 NAME PROPERTY VALUE SOURCE banshee/encrypted/child2 keystatus available - root@banshee:~# ls -l /banshee/encrypted/child2 ls: cannot access '/banshee/encrypted/child2':没有这样的文件或目录root@banshee:~# zfs mount -a root@banshee:~# ls -lh /banshee/encrypted/child2 total 401K -rw-r——r——1 root root 554K Jun 13 2002 huckfin .txt

现在我们都加载了必要的密钥挂载数据集后,我们可以再次看到加密的数据。

你必须置评。

通道Ars Technica