使用 TrueCrypt 设置整个磁盘加密时,需要重新启动一次以测试 TrueCrypt 引导加载程序的操作。 在此重新启动之后,系统就会进行实际加密。加密过程在操作系统运行时进行(实际上,其他应用程序也可以同时使用),不需要重新启动即可完成。
这是怎么做到的?对于任何其他应用程序来处理系统文件,通常需要应用程序具有某种预启动实用程序(本质上需要重新启动),以便在操作系统加载和锁定系统之前执行操作文件。TrueCrypt 有何不同之处在于它可以绕过此要求而不会导致系统不稳定?
使用 TrueCrypt 设置整个磁盘加密时,需要重新启动一次以测试 TrueCrypt 引导加载程序的操作。 在此重新启动之后,系统就会进行实际加密。加密过程在操作系统运行时进行(实际上,其他应用程序也可以同时使用),不需要重新启动即可完成。
这是怎么做到的?对于任何其他应用程序来处理系统文件,通常需要应用程序具有某种预启动实用程序(本质上需要重新启动),以便在操作系统加载和锁定系统之前执行操作文件。TrueCrypt 有何不同之处在于它可以绕过此要求而不会导致系统不稳定?
所有应用程序(甚至操作系统本身)都通过模块(称为驱动程序)与任何硬件进行通信,在 Windows 中,这称为硬件抽象层(或 HAL)。所以任何请求都是
Software making the request -> Hard Drive API in OS -> HAL for Hard Drive type -> Controller board on Hard Drive -> Bits on physical media.
TrueCrypt 所做的是它添加了一个新的 HAL 驱动程序,所以现在请求
Software making the request -> Hard Drive API in OS -> TrueCrypt Encryption driver -> HAL for Hard Drive type -> Controller board on Hard Drive -> Bits on physical media.
因此,对任何向硬盘发出请求的东西都没有改变,它看到与驱动器对话的相同 API,但在该层下,您添加了加密 shim。
TrueCrypt 的引导加载程序在 windows 或 linux 首次启动时加载驱动程序,然后操作系统从那里接管,通过加密驱动程序传递信息。
附言
对于支持基于硬件的加密的驱动器,它使用截然不同的模型。
Software making the request -> Hard Drive API in OS -> HAL for Hard Drive Type -> Controller board on Hard drive -> Encryption firmware -> Bits on physical media.
Truecrypt 有自己的引导程序。它启动到足以加载磁盘驱动程序和解密服务,然后链式加载操作系统的引导加载程序。
请参阅How to chain GRUB2 for Ubuntu 10.04 from Truecrypt 及其引导加载程序(与 Windows XP 分区一起多引导)?