Instructions for Building TrueCrypt 7
TrueCrypt 7.0 is released on July 19, 2010.
New features:
-
Hardware-accelerated AES (for more information, see the chapter Hardware Acceleration).
-
Partition/device-hosted volumes can now be created on drives that use a sector size of 4096, 2048, or 1024 bytes (Windows, Linux). Note: Previously only file-hosted volumes were supported on such drives.
-
Other features are omitted in here.
TrueCrypt 7.0最重要的新特性就是加入了AES-NI指令支持,大幅度提升了AES算法的运行效率,比纯软件实现AES-XTS算法快 4-8 倍。
Linux版本加入AES算法的汇编实现和Benchmark功能。
编译 TrueCrypt 7.0/7.0a Windows版本,请参考 Readme.txt 和 Instructions for Building TrueCrypt 6.3a in Windows XP
编译 TrueCrypt 7.0/7.0a Linux版本,请参考下文 或 Instructions for Building TrueCrypt 6.3a in Linux
因为TrueCrypt的Linux版本首次加入了AES算法的汇编实现,需要加入额外的编译步骤,在这里整理一下在Ubuntu 9.10下面编译TrueCrypt的步骤。
1. sudo apt-get install build-essential
2. sudo apt-get install libfuse-dev
3. 下载PKCS #11 Cryptographic Token Interface (Cryptoki) 2.20 header files中三个文件:pkcs11.h,pkcs11f.h,pkcs11t.h,把这三个文件放到PKCS11_INC文件夹下。
设置临时环境变量,不过每次重启后再进行编译都必须重新设置。
export PKCS11_INC="/路径/PKCS11_INC"
如果你不想每次重启都设置环境变量,可以在Ubuntu的~/.bashrc文件末尾部分加入:
#Set PKCS11_INC environment variable for TrueCrypt
PKCS11_INC=/路径/PKCS11_INC
export PKCS11_INC
4. 下载nasm最新的稳定版本源代码,进行编译安装。(本人下载编译的是nasm-2.08.02.tar.bz2)
./configure
make install # 非root账户,加入sudo命令
5. 下载wxWidgets-2.8.10源代码,编译wxWidgets源代码来支持truecrypt编译,按以下步骤:
a. 安装Gnome开发环境。
sudo apt-get install gnome-core-devel
b. 切换到truecrypt源代码目录,运行下面命令分别编译wxWidgets release和debug库文件 。
make WX_ROOT= wxWidgets源代码路径 wxbuild # build wxwidgets release library
make DEBUG=1 DEBUGGER=1 WX_ROOT=wxWidgets源代码路径 wxbuild # build wxwidgets debug library
c. 分别编译truecrypt release和debug可执行档。
make WXSTATIC=1 # build truecrypt release binary
make DEBUG=1 DEBUGGER=1 WX_ROOT=wxWidgets源代码路径 WXSTATIC=1 # build truecrypt debug binary
如果只需要编译控制台界面,在make命令后面加上NOGUI=1
6. 如果编译成功,在/Main目录下面会生成一个truecrypt可执行档。
备注:
1. AES算法运行性能的大幅提升,除了要利用硬件加解密每一个Block单元,更重要的是利用好硬件并行处理数据的能力,这与某些情况下的硬件加速有区别。
2. AMD下一代处理器不知道是否会支持AES指令;VIA PadLock很早就实现AES硬件加速功能;GPU也可以实现AES硬件加解密功能。
3. AES算法的硬件加速十分必要(比如云存储,云数据传输),那么在CPU和GPU实现AES算法硬件加速有何优缺点,应用领域或场合有何区别呢?