我很好奇Ubuntu的全磁盘加密是如何工作的。下面是一个例子:
将以下字符串视为磁盘的所有内容:
hello world在应用某种加密方法之后,它看起来如下所示:
(我在本例中使用了移位为+1的凯撒密码,例如a→B;B→C.)
ifmmp xpsme据我所知,当计算机关闭时,驱动器的内容将是上面的字符串。但是当它重新打开时,Ubuntu需要它的内容再次返回hello world才能成功引导。
我真正不明白的是,在现实世界中,磁盘的内容要多得多,加密算法要复杂得多,我发现计算机很难在几秒钟内完全加密/解密所有内容(启动或关闭不需要更长时间)。
这怎麽可能?
发布于 2016-04-30 07:34:25
这个页面有一个有趣的高级加密标准(AES)的棒形指南,看起来很容易理解,尽管它看起来是50+图像,例如这两个:

和

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

或者,在http://www.password-depot.com/know-how/blowfish_和_rijndael.htm有一个更简洁的解释
Rijndael加密方法基于替换、更改和执行字节上的xor操作。该方法如下所示:
如果使用不同的子密钥多次执行Rijndael,则此加密方法的安全性级别会提高。
我相信它的工作方式是用LUKS加密一个分区(使用AES的默认设置),然后使用LVM (如/、交换)将一些卷放入其中,并在输入密码后在引导时解密和挂载它们。并且有一个普通的(而不是加密的)引导分区,它可以引导足够多的密码来请求密码。
这个_简单_Ubuntu全磁盘加密计算机指南(更新日期:2015年6月28日)说,这就是默认安装程序的加密工作方式,并提到双引导无法工作(至少不是开箱即用),驱动器必须使用MBR,因此“如果您的计算机有UEFI,发行版将安装在遗留的box模式中,因此您不能使用安全引导”,并且“还提供了一个与系统内存(通常是不必要的)相同的交换大小,并且您没有选择使用哪种加密。”
如果您运行cryptsetup benchmark,它将运行测试并告诉您仅加密的速度,注意(当前)默认的aes-xts行:
# 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首先对该块进行解密,然后将解密后的数据提供给文件系统。您首先等待驱动器读取数据块(就像不使用加密一样),并且只有额外的延迟来对该单个数据块(或几个块)进行解密--如果解密速度快于驱动器所能读取的速度,则可以在驱动器读取下一个数据块之前完成解密。
因此,就像普通的文件系统不需要读取整个驱动器来读取文件一样,当添加加密时,它也不需要读取整个驱动器,也不会使事情变得更慢。
硬盘上的数据总是加密的,所以在关机时除了忘记密钥之外没有什么可做的。
发布于 2016-04-30 19:16:25
这将是一个简化,但我将尝试通过访问加密文件系统上的文件的过程。
例如,假设加密文件系统的开头有一个文件表;假设我们想要读取/foo.bar。因此,我们做的第一件事是读取分区的开头,解密它,并查看它以查找我们想要的文件;假设它说该文件从0x10000000字节开始。因此,为了读取,我们从那个位置的磁盘开始读取并解密它;类似地,为了写入,我们可以加密新内容,并在那个新位置写入它们。
希望这有助于消除进程中的任何混乱。
https://askubuntu.com/questions/764339
复制相似问题