AES加密算法, 不说了。
block cipher的各种工作模式,ECB、CBC、Counter等,不说了。
Block Cipher在用作disk encryption的时候,也有许多问题要考虑。主要是ECB模式不行(很明显),CBC模式也不好(无法随机访问),所以IEEE标准化了一个P1619标准,IEEE Standard for Cryptographic Protection of Data on Block-Oriented Storage Devices,见http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?punumber=4493431以及wiki页面http://en.wikipedia.org/wiki/IEEE_P1619
其中提出了一个名为XTS-AES的encryption mode作为加密模式,特点是:
1,disk block(如一个扇区)分成多个cipher block(如AES-128的128bit);
2,各cipher block之间独立(没有CBC那样的dependency);
3,cipher block的加密输入包含了index信息(扇区号和块号);
更详细信息,可参见TrueCrypt的介绍:http://www.truecrypt.org/docs/?s=modes-of-operation
这个加密模式被用于TrueCyrpt、OpenBSD/FreeBSD的Disk Encryption,以及Mac OS X的FileVault。更多信息参见wiki页面:http://en.wikipedia.org/wiki/Disk_encryption_theory
XTS-AES是可以随机访问的,其加密解密也是可以并行化的,因为各块之间是没有依赖关系的(类似于ECB或Counter模式),这也是TrueCrypt一直强调的可以实现Parallelization(http://www.truecrypt.org/docs/?s=parallelization)的原因所在。