首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSD的RAID6数组的加密是否安全?

SSD的RAID6数组的加密是否安全?
EN

Security用户
提问于 2014-01-20 02:05:49
回答 2查看 1.2K关注 0票数 3

考虑到数据的不确定性,在需要全磁盘加密的情况下,我对使用SSD犹豫不决。虽然有些SSD使用硬件加密,但是它们非常昂贵,而且还有执行透明度不足

我一直在想,SSD的RAID6数组是否可以使用encrypted /LUKS进行安全加密。根据维基百科的说法,RAID6“使用块级条带,两个奇偶校验块分布在所有成员磁盘上”。虽然有些数据可能会在每个成员的SSD上留下清晰的信息,但似乎不太可能正确地组装和解密这些剩余数据。这是一个合理的假设吗?

编辑:我将使用encrypting /LUKS加密RAID6卷,其中包含除引导之外的所有内容。加密的RAID6卷用于LVM2,卷用于交换,/和home。一个小的(未加密的) RAID6卷包含引导。

编辑:在密码设置常见问题中,我发现SSDs和dm-crypt/LUKS的关键问题是SSD可能会将持有密钥槽和LUKS头的扇区移动到丢弃扇区池中,并且这些丢弃扇区在删除之前可能会无限期地保留。这可以模拟禁用受损的密钥槽(密码),或者通过用随机数据覆盖LUKS头使整个卷不可用。

但是,显然不存在直接泄漏加密数据的风险,因为明文只存在于RAM中。只有加密的扇区才会被丢弃(除了密钥槽和LUKS报头,它们显然不是加密的)。

编辑:经过思考,我几乎回到了原来的问题。考虑到键槽和LUKS报头驻留在RAID6卷上,只有其中的一条可以保留在任何一个成员磁盘上的丢弃扇区中。除非这种情况持续发生在N-2成员国身上,这似乎不太可能,否则什么都无法恢复。对吗?

EN

回答 2

Security用户

发布于 2014-01-20 12:05:06

没有在RAID6中实现的安全性。从我在你的问题中收集到的信息来看,你是在暗示,磁盘之间的数据排列可能会使获取有意义的数据变得困难,但并非完全不可能。如果这是一个健康的数组,那么这是完全可能的。

对SSD加密的主要误解是人们认为没有“数据泄漏”是不可能实现的。这是因为,与HDD不同的是,操作系统通常不能直接为读/写处理SSD的扇区。这是因为SSD上的固件实现了一种磨损级别算法,该算法选择在哪里真正存储闪存块已经或尚未写入的数据,以便尽可能均匀地将写入到所有闪存块(从而延长SSD MTBF)。不管操作系统在哪里通过LBA请求它,都会执行这一操作。

这最终意味着,如果您选择在SSD上已经存储了纯文本的数据之后对它进行加密,那么作为SSD固件的局外人,您无法确保存储在原始闪存块上的数据不具有敏感信息。但是,如果没有明文数据写入SSD,就不会有敏感信息泄漏,因为SSD从未看到明文。因此,由于所有的数据都是安全的,所以磨损水准算法提取真实的数据位置信息是无关紧要的。

我相信对SSD的其他攻击已经写过了,比如在虚拟环境中从其他VM客户机中检索数据的能力,但是如果VM容器正在使用全磁盘加密(FDE),那么如果没有解密密钥,其他客户只会看到垃圾。

票数 1
EN

Security用户

发布于 2015-01-21 18:25:54

在对02392‘S回答的某种响应中,有一些方法可以解决这些问题,但这在很大程度上取决于如何设置数组。我完全同意RAID-6本身是绝对不安全的,人们希望能够从RAID阵列中添加和删除驱动器,并且希望在驱动器死后恢复,所以如果可能的话,您可以放心,一个拥有物理访问磁盘的对手一旦知道驱动器的顺序,就可以得到他想要的。

如果我要设置RAID-5,RAID-6,(或1,10,50,或60 ),并且我重视数据机密性,下面是我要做的。

发布安全擦除

接收到设备后,立即在所有驱动器上发出SATA安全擦除命令。不要在驱动器上写任何东西。如果你毫无必要的偏执,dd if=/dev/zero of=/path/to/device。记住在你所有的设备上都要这样做。

设置RAID阵列

在这里,你的过程会有很多不同的可能性。

硬件RAID

如果您使用的是硬件RAID,则需要在向它们发出SATA安全擦除命令(并写入零,这非常不必要,只会使您感到更安全)并将它们插入RAID控制器后,拔掉所有驱动器。进入您的RAID BIOS或从您选择的操作系统配置RAID设置,尽管通常RAID BIOS比运行一系列看起来令人困惑的命令更容易操作。设置您的RAID级别,然后重新引导到一个安全的Linux,如果你疑神疑鬼,也许卡利。

软件RAID

这更复杂,你在这里有很多选择。LVM?ZFS?BTRFS?安装软件RAID有很多种方法,所以我在这里帮不了什么忙,自己搜索一下吧。只需确保在所有设置结束时,您都有一个设备(可能是虚拟的),您可以将其正确地跨出数组的长度。

随机化阵列

的整个跨度

此步骤是可选的,但强烈推荐。它可以防止某些可否认性的担忧,我将在下面解释。如果你被迫为某个人解密数组,它不会保护你。最简单的方法是使用/dev/urandom另一个安全密码dd一起覆盖所有内容:

代码语言:javascript
复制
dd if=/dev/urandom of=/dev/mapper/raid6blockdevice bs=SECTOR_SIZE

使用parted /dev/mapper/raid6blockdevice print确定SECTOR_SIZE。这可能需要很长时间才能完成。

这个步骤的结果是,在SSD上存在的数组中的每一个位实际上都是随机的。有人无法判断您的文件系统“有多满”,因为整个文件系统都是随机位的,如一个好密码的输出应该与随机数据无法区分。

设置LUKS/TrueCrypt/VeraCrypt/选中

的磁盘加密

使用你选择的磁盘加密武器,加密你的块设备,然后在里面安装一个文件系统。

为了回应您对SSD内部秘密存储LUKS卷头的担忧,您是正确的,这是可能的。购买一个5美元的USB闪存设备,并存储在那里的LUKS头,而不是在SSD阵列上。我相信有办法可以做到的。

否则,请注意,如果您必须烧毁房子(摧毁一切!),您将必须有物理访问,使所有的SSD出服务器,连接到SATA,并确保擦除。即使这么说,也很难完全确定一切都被抹去了。开始在数据恢复字段中工作,并找到可靠地确保擦除安全的SSD,或者至少询问该领域的朋友。在没有保证和绑定的情况下,我可能只会编写一个循环,它将永远用随机数据重写LUKS头,希望SSD通过所有这些写入最终将任何隔离的数据替换为来自随机性的新数据。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/48995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档