Jeffrey Li

导航

Instructions for Building TrueCrypt 6.3a in Linux

TrueCrypt最初是为Windows平台上开发的加解密软件,后来也支持了Linux和Mac OS X平台,但是TrueCrypt的重点仍然是Windows平台,Linux和Mac OS X至今还不支持System Encryption功能并且AES算法也没有使用x86汇编。具体是什么原因,没有找到官方的说法,可能的原因如:

1. TrueCrypt的重点是Windows平台,支持Linux和Mac OS X平台可能仅为了提供软件的完整性和跨平台使用的便利性。

2. Linux Kernel 2.6.x已经提供了device mapper架构下的dm-crypt目标驱动。它和cryptsetup-LUKS应用层工具一起可以提供System Encryption功能。TrueCrypt开发人员可能认为dm-crypt据有天生的优势,目前没有必要在Linux平台下提供重复功能软件(dm-crypt代码在Linux kernel中直接维护,避免了很多问题,目前主流的Linux发布版本都支持dm-crypt with luks)。

3. TrueCrypt提供System Encryption功能并不困难,但是要像Windows版本那样提供真正的全磁盘加密,也就是Linux下面的/boot也要加密,这需要修改Grub等bootloader,而且要尽量避免bootloader升级带来的兼容问题,也可以提供一个自己的bootloader提供解密功能并引导Linux的bootloader启动,完成这项工作也是非常费时。

注: cryptsetup目前也不支持/boot加密,有人修改了Grub2的代码实现的此功能,但是他在文章中提到:"The method is truly the bleeding edge and the modified code is not even in the trunk of GRUB2"。

TrueCrypt为了避免受到Linux Kernel版本变化的影响,driver部分采用FUSE(file system in userspace)架构,也就是driver部分运行在userspace中,虽然FUSE架构写的非常稳定和高效,但是还是会影响性能,而且AES算法使用的C实现而也没有使用x86汇编。TrueCrypt for Linux 没有像Windows本版那样提供benchmark功能,如果排除程序本身在Linux和Windows平台之间下的性能差异,性能应该比Windows版本低一些,但是本人没有测试过。

虽然TrueCrypt的Linux版本和Windows本版比起来有种种的不足,但是TrueCrypt丰富的功能,友好的界面和稳定性在Linux平台下的众多的开源加解密软件中还是非常出色,值的我们去研究和使用。

参考TrueCrypt代码包中ReadMe.txt和Makefile文件,折腾一番,成功编译出可执行文件问题不大。TrueCrypt的Makefile文件编写的非常好,ReadMe.txt也写的还行,就是还不够详细。如果你想编译Debug本版进行调试,还得花费一定的时间处理编译中出现的各种问题。本人在Ubuntu 9.04/9.10和Fedora 11/12都编译成功,下面以Ubuntu 9.10为例来演示编译步骤。

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.

(a)如果你不想下载wxWidgets源代码包进行编译,按下面步骤:

1-1.

    (1)For release version with GUI 
    sudo apt-get install libwxgtk2.8-0 libwxgtk2.8-dev wx2.8-headers wx-common

    (2)For release & debug version with GUI and NOGUI
    sudo apt-get install libwxbase2.8-0 libwxbase2.8-dbg libwxbase2.8-dev libwxgtk2.8-0 libwxgtk2.8-dbg libwxgtk2.8-dev wx2.8-headers wx-common wx2.8-i18n

     注释:

     libwxbase2.8 * : non-GUI support classesof wxWidgets toolkit
     libwxgtk2.8 * : wxWidgets Cross-platfrom c++ GUI toolkit
     wx2.8-i18n : i18n是internationalization的缩写,i和n之间正好18个字母,好像是国际化语言包吧。
     wx2.8-doc
     wx2.8-examples

1-2. 

     make                                          # build truecrypt release

     make  DEBUG=1 DEBUGGER=1   # build truecrypt debug

    

(b)如果你想编译wxWidgets源代码只用来支持truecrypt编译,按以下步骤:

1-1.    

     apt-get install gnome-core-devel
     make WX_ROOT= wxWidgets源代码路径 wxbuild                                           # build wxwidgets release library
     make DEBUG=1 DEBUGGER=1 WX_ROOT=wxWidgets源代码路径 wxbuild      # build wxwidgets debug library

1-2.

     make  WXSTATIC=1                                                                                             # build truecrypt release

     make  DEBUG=1 DEBUGGER=1  WX_ROOT=wxWidgets源代码路径 WXSTATIC=1  # build truecrypt debug 
 

     如果只需要编译控制台界面,在make命令后面加上NOGUI=1

(c)你也可以直接编译wxWidgets全部源代码,使用make install命令安装,这里不提供具体步骤。

     在编译wxWidgets-2.8.10代码的过程中可能出现socket错误,这需要在src/gtk/gsockgtk.cpp中添加一个宏定义如下:

    +#define GSocket GlibGSocket
      #include <gdk/gdk.h>
      #include <glib.h>
    +#undef GSocket

推荐大家采用4(b)中提供的方法来编译。

   

5. 如果编译成功,在/Main目录下面会生成一个truecrypt可执行档案(对比Windows本版会生成多个文件,Linux本版这点很好)。如果编译的是debug版本,你可以启动gdb,试试看能不能调试应用部分。

posted on 2010-05-18 10:56  JeffreyLi  阅读(749)  评论(0编辑  收藏  举报