首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FDE (全磁盘加密)是如何快速工作的?

FDE (全磁盘加密)是如何快速工作的?
EN

Ask Ubuntu用户
提问于 2016-04-28 13:52:42
回答 4查看 8.4K关注 0票数 13

我很好奇Ubuntu的全磁盘加密是如何工作的。下面是一个例子:

将以下字符串视为磁盘的所有内容:

代码语言:javascript
复制
hello world

在应用某种加密方法之后,它看起来如下所示:

(我在本例中使用了移位为+1的凯撒密码,例如a→B;B→C.)

代码语言:javascript
复制
ifmmp xpsme

据我所知,当计算机关闭时,驱动器的内容将是上面的字符串。但是当它重新打开时,Ubuntu需要它的内容再次返回hello world才能成功引导。

我真正不明白的是,在现实世界中,磁盘的内容要多得多,加密算法要复杂得多,我发现计算机很难在几秒钟内完全加密/解密所有内容(启动或关闭不需要更长时间)。

这怎麽可能?

EN

回答 4

Ask Ubuntu用户

回答已采纳

发布于 2016-04-30 07:34:25

一般情况下AES / Rijndael加密是如何工作的?

这个页面有一个有趣的高级加密标准(AES)的棒形指南,看起来很容易理解,尽管它看起来是50+图像,例如这两个:

在这里复制实在是太过分了,但是如果你必须拥有一个完整的图像,那就是这个:

或者,在http://www.password-depot.com/know-how/blowfish_和_rijndael.htm有一个更简洁的解释

Rijndael加密方法基于替换、更改和执行字节上的xor操作。该方法如下所示:

  • 从128位键,Rijndael生成10键,每个128位.
  • 这些键被放入4x4数组中。
  • 纯文本也被划分为4x4数组(每个数组128位)。
  • 128位纯文本项中的每一项都分10轮处理(128位键10次,192次12次,256次14次)。
  • 在第10轮之后,生成代码。
  • 每个单个字节在S框中被替换为GF (2,8)上的倒数。
  • 然后应用一个按位方向的模-2矩阵,然后用63进行异或运算.
  • 矩阵的线是循环排序的。
  • 在GF (2,8)上交换矩阵乘法的列。
  • 每一轮的子项都要经过异或运算。

如果使用不同的子密钥多次执行Rijndael,则此加密方法的安全性级别会提高。

Ubuntu的全磁盘加密是如何工作的?

我相信它的工作方式是用LUKS加密一个分区(使用AES的默认设置),然后使用LVM (如/、交换)将一些卷放入其中,并在输入密码后在引导时解密和挂载它们。并且有一个普通的(而不是加密的)引导分区,它可以引导足够多的密码来请求密码。

这个_简单_Ubuntu全磁盘加密计算机指南(更新日期:2015年6月28日)说,这就是默认安装程序的加密工作方式,并提到双引导无法工作(至少不是开箱即用),驱动器必须使用MBR,因此“如果您的计算机有UEFI,发行版将安装在遗留的box模式中,因此您不能使用安全引导”,并且“还提供了一个与系统内存(通常是不必要的)相同的交换大小,并且您没有选择使用哪种加密。”

加密有多快?

如果您运行cryptsetup benchmark,它将运行测试并告诉您仅加密的速度,注意(当前)默认的aes-xts行:

代码语言:javascript
复制
#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

一个硬盘的平均读取速度可能是80-160 MB/s,所以你不会比常规读取长得多,而且当你还在等待硬盘读取更多信息时,刚刚读取的部分可能已经被解密了。

SSD可能更快,可能是200-550 it /S,所以您可能会注意到它。但是,随机读取可能会慢一些,我已经读到SSD速度在使用后可能会减慢(也许当驱动器完全填满,它必须开始“擦除”扇区?)

计算机如何在几秒钟内完全加密/解密所有驱动器(启动或关闭不需要更长时间)?

它不需要先解密所有的东西。加密(LUKS)工作在数据块上,可以随机解密任何块,在驱动器的加密数据与文件系统所看到的数据之间充当一个层。

当文件系统希望看到任何数据块时,LUKS首先对该块进行解密,然后将解密后的数据提供给文件系统。您首先等待驱动器读取数据块(就像不使用加密一样),并且只有额外的延迟来对该单个数据块(或几个块)进行解密--如果解密速度快于驱动器所能读取的速度,则可以在驱动器读取下一个数据块之前完成解密。

因此,就像普通的文件系统不需要读取整个驱动器来读取文件一样,当添加加密时,它也不需要读取整个驱动器,也不会使事情变得更慢。

硬盘上的数据总是加密的,所以在关机时除了忘记密钥之外没有什么可做的。

票数 13
EN

Ask Ubuntu用户

发布于 2016-04-30 19:16:25

这将是一个简化,但我将尝试通过访问加密文件系统上的文件的过程。

例如,假设加密文件系统的开头有一个文件表;假设我们想要读取/foo.bar。因此,我们做的第一件事是读取分区的开头,解密它,并查看它以查找我们想要的文件;假设它说该文件从0x10000000字节开始。因此,为了读取,我们从那个位置的磁盘开始读取并解密它;类似地,为了写入,我们可以加密新内容,并在那个新位置写入它们。

希望这有助于消除进程中的任何混乱。

票数 3
EN

Ask Ubuntu用户

发布于 2016-04-28 14:52:14

处理器使用专用指令集。这是可能的,AES-NI。它支持快速加密和解密,或者您可以说它减少了开销。它是快速的,因为它是硬件实现,正如这里所解释的。

您可以检查性能影响这里,它们在增加安全性方面是值得的。

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

https://askubuntu.com/questions/764339

复制
相关文章

相似问题

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