AES / Rijndael加密一般如何工作?
该页面有一个有趣的高级加密标准(AES)简笔画指南,虽然看起来是50多个图像,但看起来很容易理解,例如以下两个:
和
在这里复制所有内容实在太多了,但是如果您必须拥有一张全合一的图像,那就是这张图像:
或者,在http://www.password-depot.com/know-how/blowfish_and_rijndael.htm中有更紧凑的解释
Rijndael加密方法基于对字节的替换,更改和执行异或运算。该方法如下所示:
- Rijndael从128位密钥中生成10个每个128位的密钥。
- 这些密钥放置在4x4阵列中。
- 纯文本也分为4x4数组(每个128位)。
- 每个128位纯文本项都经过10轮处理(128位密钥为10轮,192为12轮,对于256为14轮)。
- 在第10轮之后,将生成代码。
- 每个单个字节都在S框中替换,并由GF上的倒数(2 8)代替。
- 然后应用按位模2矩阵,然后进行63的XOR运算。
- 矩阵的线周期性地排序。
- 矩阵乘法的列在GF(2 8)上互换。
- 每个回合的子项都要进行XOR操作。
如果使用不同的子密钥多次执行Rijndael,则此加密方法的安全性级别会提高。
Ubuntu的全盘加密如何工作?
我相信它可以通过使用LUKS(默认设置为AES)加密分区,然后使用LVM(如/
swap)在其上放置一些卷,然后在输入密码后将其解密并挂载在启动中来工作。并且有一个常规的(未加密的)引导分区,可以引导足以要求输入密码的引导分区。
the_simple_computer的《 Ubuntu全磁盘加密指南》(2015年6月28日更新)说这是默认安装程序加密的工作原理,并提到双重引导将无法使用(至少不是现成可用)驱动器必须使用MBR,因此“ 如果您的计算机具有UEFI,则发行版将以旧版BIOS模式安装,因此您将无法使用安全启动 ”和“ 还可以为您提供与系统RAM相同的交换大小(通常是不必要的),并且对于使用哪种加密别无选择。 ”
加密速度有多快?
如果运行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-550MB / s,因此您可能会注意到。但是,随机读取的速度可能会变慢,而且我读到SSD的速度在使用后可能会减慢(也许当驱动器完全装满并且必须开始“擦除”扇区时?)
计算机如何在短短几秒钟内完全加密/解密所有驱动器(启动或关闭不需要花费更长的时间)?
它不必先解密所有内容。加密(LUKS)适用于数据块,可以随机解密任何块,并且像驱动器的加密数据和文件系统所见之间的一层。
当文件系统想要查看任何数据块时,LUKS首先解密该块,然后将解密的数据提供给文件系统。您首先要等待驱动器读取数据块(就像不使用加密一样),并且对单个数据块(或几个数据块)的解密只有额外的延迟 -如果解密速度比驱动器快可以读取,解密可以在驱动器读取下一个数据块之前完成。
所以,就像一个普通的文件系统并不需要阅读整个驱动器读取文件,当添加加密并不需要或者读取整个驱动器,它不会使事情很多慢。
硬盘驱动器上的数据始终是加密的,因此在关闭时无需进行任何操作,除非忘记了密钥。