0

我的电脑有一个名为Bit Locker的程序,它可以加密整个硬盘驱动器。硬盘驱动器约为 500 GB。但是,当执行相同的读取操作(例如,加载一个大文件)时,我根本没有注意到这台计算机和另一台(未加密)计算机之间有任何真正的延迟时间。

我很好奇这是怎么可能的。如果磁盘上的所有内容都经过高度加密,那么在您阅读或查看所有内容之前是否应该花费大量的时间来解密所有内容?显然,磁盘上的所有内容都不会在启动时自动解密,因为每次解密 500 GB 的数据会导致启动时的等待时间过长。我想某处可能有一个本地的、解密的缓存,但这不会破坏加密的目的吗?

注意:我不是在问这个特定的程序是如何完成它的;这只是一个例子。相反,我很好奇加密磁盘如何在没有太多(或任何)人类可察觉的延迟时间的情况下仍然有效地读写,因为显然这是可能的。

谢谢!

澄清:我知道单个数据块可以彼此分开加密/解密。但是,如果每次执行读取(通过打开 PDF 或 Word 文件或其他任何文件)时,您必须对正在读取的数据运行解密算法,那么这将产生明显的延迟时间(例如,更“慢”的计算机)。不过,情况似乎并非如此。为什么以及如何?

4

2 回答 2

3

当您从磁盘读取一个块时,CPU 会花费大量时间完全什么都不做,等待 I/O 完成。

假设 CPU 不忙于其他事情,您可以将前一个块的相当多的处理放入等待下一个块所花费的时间。只要解密速度足够快,读取合理数据量的总时间几乎不会受到解密的影响。“足够快”取决于 CPU 速度相对于 I/O 速度,以及 CPU 在读取期间有多少空闲内核。

我猜 BitLocker 的解密速度足够快 - 在打开 PDF 的情况下还有第二种可能性,即与渲染页面的成本相比,解密的成本可能微不足道。因此,即使增加了读取文件的总时间,您也不一定会注意到。

于 2012-08-28T15:26:27.083 回答
1

可以加密单个数据块,而不是将整个驱动器加密为单个流。这是有效的,因为加密不会改变数据的大小,而只会改变它的内容。然后可以单独读取这些块,然后即时解密。

于 2012-08-28T13:33:52.623 回答