在 SSD 上加密系统的最佳方法

在 SSD 上加密系统的最佳方法

我考虑为我的笔记本电脑购买固态硬盘(例如三星 830 或 840),以使系统响应更快。我希望我的系统(至少是我的主分区)被加密。不过,我知道有传言称 SSD 上的加密可能存在问题,尽管有关此问题的声明随着时间的推移而变化得很快。特别是我不想有很大的性能下降(如上所述,我希望SSD使系统的响应速度显着提高)并且我不想缩短SSD的使用寿命。

考虑到这一点,在 SSD 上加密系统的最佳方法是什么?

如果重要的话,您可以假设 SSD 是三星 830、840 或 840 pro。

编辑

我的 CPU 是相当旧的 Core2 Duo P8700,频率为 2.53 GHz,没有 AES-NI,并且只有 SATA II。所以我想补充一个问题:升级到三星 830 并使用 dm-crypt/luks 或 ecryptfs 是否有意义?或者 CPU 和 SATA 端口是否会降低 SSD 的速度?我不想赢得任何基准竞赛,只是想明显提高我的系统响应能力。

我不确定以下内容是否可以很好地表明系统的速度,因此如果有人可以发表评论,那就太好了:

目前我正在使用 ecryptfs 来加密我的主分区。

一个

LC_ALL=C dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc在我的加密主分区上显示:

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 56.4674 s, 19.0 MB/s

CPU 工作在 40% 到 60% 之间。

在未加密的分区上同样给出

LC_ALL=C dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 29.6554 s, 36.2 MB/s

CPU 工作在 0% 到 20% 之间。

我的/tmp文件夹是通过tempfsie 安装的,它位于 RAM 中。做同样的事情/tmp给出:

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.941708 s, 1.1 GB/s

然后我在下面创建了一个新ecryptfs目录/tmp并在那里再次执行。

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 10.1884 s, 105 MB/s

一个核心工作在 100%,另一个核心工作在 20%。

ecryptfs 目录的创建如下:

sudo mount -t ecryptfs /tmp/encrypted/ /tmp/decrypted

作为选项,我选择了默认选项(ubuntu 系统):AES、16 位、无明文直通、无文件名加密。

考虑到这个结果,我预计当用三星 830 SSD 替换旧的 WD-scorpion black 7200 并使用 ecryptfs 时,写入速率将从 19.0 MB/s 增加到 105 MB/s。这似乎是一个明显的性能改进。我猜 dm-crypt 甚至会更快一些。

任何建议进行更可靠的测试,以预测 SSD 是否会带来明显的性能提升。

编辑2 这是在德国 debian wiki 中使用 dm-crypt 进行的类似测试: http://wiki.debianforum.de/Benchmark_f%C3%BCr_Festplattenverschl%C3%BCsselung

我这样做了,速度达到了约 95 MB/s。

答案1

您提到的 SSD(三星 830、840 或 840 Pro)具有加密硬件。我相信您应该使用它以获得最佳性能。请注意,有很多文章批评大多数基于消费者的加密驱动器固件的早期版本。安全大道还有另一篇文章,标题为:“Crucial 和 Samsung 的 SSD 加密并不安全,导致数据泄露“。有一些方法可以避免其中一些问题,看我的另一个答案在 Crypto.SE 上。

硬件是你花钱购买的东西,因为与使用硬件或购买价格较低的 SSD 所带来的软件加密相比,启用加密不会带来任何损失。

您可以使用带有必要软件的可启动 USB 驱动器启用加密并设置新密码。 Puget Systems 网页上提供了一个示例:“自加密驱动器 (SED) 简介“它提供了一个可启动的 DVD 映像,包括高清参数,您可以使用的另一个程序是sedutil适用于 Linux 和 Windows。另请参阅 VxLabs 文章:“将 TCG Opal SSD 的基于硬件的全磁盘加密与 msed 结合使用以及文章底部链接的更新。这篇文章具体提到三星 840 Pro和 hdparm。

除了驱动器上的硬件加密之外,您还可以通过使用软件加密来提高安全性,这很有用,因为硬件加密驱动器仅在断电时才安全。供电系统中未锁定的硬件加密驱动器(例如处于睡眠模式的笔记本电脑)不是安全。

由于您使用的是“相当旧的 Core2 Duo P8700,频率为 2.53 GHz,没有 AES-NI”,您应该考虑 AES 256 以外的软件

谷歌最新的算法是铁线蕨正在被添加到Linux内核v5.0Android 通用内核 v4.9 及更高版本。在存在 AES 硬件支持的情况下,AES 比 Adiantum 更快。对于低端处理器,ARM Cortex-A7 处理器上的 Adiantum(快速哈希 (NH + Poly1305) 和快速流密码 (XChaCha12))比 AES-256-XTS 快五倍以上。有一个GitHub 上的参考实现以及论文标题为:“Adiantum:适用于入门级处理器的长度保留加密”。注:铁线蕨是不是与 AES 一样安全,但 AES 在低端处理器上速度相当慢;如此无用。

查看有关 Caesar(认证加密竞争:安全性、适用性和鲁棒性)条目的各个网页,其中一些条目比 AES 更快,并且据称可以提供比 AES 更高的安全性:

您可能对 GitHub 网页感兴趣:“MORUS-1280-256 验证密码”。

答案2

在 Linux 上,使用dm 密码,这是Linux原生的块设备加密机制。许多发行版的安装程序都支持 Dm-crypt(您可能必须使用“高级”或“服务器”安装介质)。这cryptsetup实用程序管理加密卷。您确实需要最新版本来支持 TRIM:内核 ≥3.1 且 cryptsetup ≥1.4

相关内容