+ 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本机加密?

一个聪明的sysadmin谁想提供静态加密实际上并不需要OpenZFS本机加密,显然。在介绍中提到的,,VeraCrypt和许多其他方案可用,可以分层下或在OpenZFS本身。

第一,“为什么不”

把类似Linux的OpenZFS下面有一个优势整个磁盘加密,一个进取的攻击者可以不再看名称,大小,或ZFS的属性数据集zvols没有访问的关键。事实上,攻击者不一定能看到,ZFS使用!

但将有显著的缺点OpenZFS下(或类似)。的一个多节是每个个人磁盘将池的一部分必须加密,每卷加载和解密ZFS前池进口阶段。ZFS系统这是一个明显的挑战与许多磁盘的某些情况下,很多数以千万计的磁盘。encryption-beneath-ZFS的另一个问题是,额外的层是一个额外的事情去——它能够撤销ZFS的正常完整性保证。

或类似在OpenZFS摆脱上述问题加密zvol只需要一个关键不管有多少磁盘,和从这里层不能撤销OpenZFS的完整性保证。不幸的是,encryption-atop-ZFS引入了一个新的计算有效削弱OpenZFS内联压缩,因为加密的数据通常是不可压缩的。这种方法也需要使用一个zvol每个加密文件系统,以及客人的文件系统(例如,ext4)格式体积本身。

现在,“为什么”

OpenZFS本机加密分裂的区别:它运行在正常的ZFS存储层,因此不会削弱ZFS的完整性保证。但也并不妨碍ZFS压缩数据被保存到一个加密之前被压缩数据集zvol

有一个更令人信服的理由去选择OpenZFS本机加密,有些被称为“原始发送。”ZFS replication is ridiculously fast and efficient—frequently several orders of magnitude faster than filesystem-neutral tools likersync——原始发送不仅可以复制加密数据集年代和zvol年代,但这样做没有暴露远程系统的关键。

这意味着您可以使用ZFS复制到一个备份你的数据不可信的位置,没有担心你的私人数据被读取。与原始发送、数据复制没有被解密和没有备份目标是否能够解密。这意味着您可以复制你的离线备份到一个朋友家或商业服务rsync.netzfs.rent在不影响你的隐私,即使服务(或朋友)本身就是妥协。

如果您需要恢复您的离线备份,您可以简单地复制它回来自己的location-then,只有然后,加载解密密钥来访问数据。这适用于完整的复制(移动每一块在丝)或异步增量复制(从普遍持有的快照,只有移动块之后修改过的快照)。

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

OpenZFS本机加密不是全盘加密的计划中,启用或禁用per-dataset / per-zvol基础上,和它不能打开整个池作为一个整体。加密的数据集的内容或zvols免受静态spying-but描述数据集的元数据/ zvols自己不是。

假设我们创建一个加密的数据集命名池/加密下面,我们创造更多的子数据集。的加密属性为孩子们默认继承的父数据集,我们可以看到以下几点:

root@banshee: ~ # zfs上创建加密= - o - o - o keyformat keylocation =提示=密码女妖/加密输入密码:输入密码:root@banshee: ~ # zfs创建女妖/加密/ child1 root@banshee: ~ # zfs创建女妖/加密/ child2 root@banshee: ~ # zfs创建女妖/加密/格root@banshee: ~ #效果参考使用zfs - r女妖/加密列表名称挂载点女妖/加密1.58米848克432 k /女妖/加密的女妖/加密/ child1 320 k 848克320 k /女妖/加密/ child1女妖/加密/ child2 320 k 848克320 k /女妖/加密/ child2女妖/加密/格320 k 848克320 k /女妖/加密/格root@banshee: ~ # zfs得到加密女妖/加密/女妖child1名称属性值来源/加密/ child1加密aes - 256 - gcm -

目前,我们的加密数据集都是安装。但即使我们卸载他们和卸载加密key-making inaccessible-we仍然可以看到他们存在,以及它们的属性:

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女妖山/加密不能挂载的女妖/加密:加密密钥不加载root@banshee: ~ # ls /女妖/加密/ child2 ls:不能访问“女妖/加密/ 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-encrypted树。我们还可以看到每一个加密的数据集的属性,包括但不限于使用,效果,请参考每个数据集。

值得注意的是,努力ls一个加密的数据集没有关键加载不一定会产生一个错误:

root@banshee: ~ # zfs keystatus女妖/加密的名称属性值来源女妖/加密keystatus不可用——root@banshee: ~ # ls /女妖/加密root@banshee: ~ #

这是因为一个裸体的目录存在于主机,即使实际的数据集是不安装。重载的关键并不自动重新安装数据集,:

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

为了访问我们的最新副本《哈克贝利·费恩历险记》实际上,我们还需要挂载新key-reloaded数据集:

root@banshee: ~ # zfs keystatus女妖/加密/ child2名称属性值来源女妖/加密/ child2 keystatus可用- root@banshee: ~ # ls - l /女妖/加密/ child2 ls:不能访问“女妖/加密/ child2”:没有这样的文件或目录root@banshee: ~ # zfs山——root@banshee: ~ # ls lh /女妖/加密/总401 k child2 -rw-r根554 k - r - 1根2002年6月13日HuckFinn.txt

现在我们已经都加载必要的关键安装的数据集,我们可以再次见到我们的加密数据。

读者评论(60)

查看评论论坛

加载评论……

通道Ars Technica