在 Ubuntu 14.04 上构建 TrueCrypt

lin*_*ntu 5 security compiling source-code truecrypt open-source

在 NSA 的整个过程中,人们试图重新构建与 truecrypt.org 提供的外观相同的二进制文件,但没有成功。所以有些人认为它们可能是用源代码中没有的后门编译的。-> 那么如何在最新的 Ubuntu 版本上进行编译(我使用的是 UbuntuGNOME,但这无关紧要)?我为以前的 Ubuntu 版本尝试了一些教程,但它们似乎不再起作用了?

编辑:

https://madiba.encs.concordia.ca/~x_decarn/truecrypt-binaries-analysis/ 现在您可能会想“好吧,我们不需要构建”,但是:要构建他使用了闭源软件,并且有受感染编译器仍将后门放入二进制文件的概念证明: 1. 没有后门的源代码 2. 二进制文件与参考二进制文件相同 3. 二进制文件仍然包含后门

编辑2(回复帖子):

使用时$ make -j 2 PKCS11_INC=$HOME/src/pkcs-11我得到:

...

/usr/include/wx-2.8/wx/dynarray.h:669:5:注意:在宏'_WX_DEFINE_TYPEARRAY_PTR'的扩展中
     _WX_DEFINE_TYPEARRAY_PTR(_wxArray##name, name, base, classdecl)
     ^
/usr/include/wx-2.8/wx/dynarray.h:655:5:注意:在宏'WX_DEFINE_TYPEARRAY_WITH_DECL_PTR'的扩展中
     WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(T, name, base, class WXDLLEXPORT)
     ^
/usr/include/wx-2.8/wx/dynarray.h:829:5:注意:在宏'WX_DEFINE_EXPORTED_TYPEARRAY_PTR'的扩展中
     WX_DEFINE_EXPORTED_TYPEARRAY_PTR(T, name, wxBaseArrayPtrVoid)
     ^
/usr/include/wx-2.8/wx/bookctrl.h:26:1:注意:在宏'WX_DEFINE_EXPORTED_ARRAY_PTR'的扩展中
 WX_DEFINE_EXPORTED_ARRAY_PTR(wxWindow *, wxArrayPages);
 ^
链接 truecrypt
/usr/bin/ld: /home/user/src/truecrypt-7.1a-source/Volume/Volume.a(SecurityToken.o): 对符号 'dlopen@@GLIBC_2.1' 的未定义引用
/lib/i386-linux-gnu/libdl.so.2:添加符号时出错:命令行中缺少 DSO
collect2: 错误: ld 返回 1 个退出状态
make[1]: *** [truecrypt] 错误 1
make: *** [all] 错误 2
user@user-pc:~/src/truecrypt-7.1a-source$ 

使用时$ make -j 2 PKCS11_INC=$HOME/src/pkcs-11 LIBS=-ldl

...

Forms/VolumeSizeWizardPage.o:在函数`TrueCrypt::VolumeSizeWizardPage::GetVolumeSize() const'中:
VolumeSizeWizardPage.cpp:(.text._ZNK9TrueCrypt20VolumeSizeWizardPage13GetVolumeSizeEv+0x80):未定义引用`TrueCrypt::StringConverter::ToUInt64(std::basic_string, std::allocator > const&)'
Forms/VolumeSizeWizardPage.o:在函数‘TrueCrypt::VolumeSizeWizardPage::SetVolumeSize(unsigned long long)’中:
VolumeSizeWizardPage.cpp:(.text._ZN9TrueCrypt20VolumeSizeWizardPage13SetVolumeSizeEy+0x8f):对`TrueCrypt::StringConverter::FromNumber(unsigned long long)'的未定义引用
Forms/WizardFrame.o:在函数`TrueCrypt::WizardFrame::SetStep(int, bool)'中:
WizardFrame.cpp:(.text._ZN9TrueCrypt11WizardFrame7SetStepEib+0xe6):对`TrueCrypt::Event::Connect(TrueCrypt::EventConnectorBase const&)'的未定义引用
collect2: 错误: ld 返回 1 个退出状态
make[1]: *** [truecrypt] 错误 1
make: *** [all] 错误 2
user@user-pc:~/src/truecrypt-7.1a-source$

(同样没有make -j ...参数 BTW)

编辑3

现在它可以工作了,感谢 user76204 和 GEO:

  1. $ sudo apt-get install build-essential nasm libfuse-dev wx-common wx2.8-headers libwxbase2.8-dev libwxsvg-dev libwxgtk2.8-0 libwxgtk2.8-dev
  2. $ mkdir -p $HOME/src/pkcs-11
  3. 将 truecrypt 源放入 /home/USERNAME/truecrypt-7.1a-source
  4. 开始构建: $ LIBS=-ldl make -j 2 PKCS11_INC=/home/USERNAME/src/pkcs-11/

Eso*_*tes 1

我在 Ubuntu 14.04 上也遇到了同样的问题。

LIBS=-ldl make PKCS11_INC=/tmp/truecrypt/pkcs11 
Run Code Online (Sandbox Code Playgroud)

解决了我的问题(/tmp/truecrypt/pkcs11 是我的 pkcs11 文件的存储位置。)

对于在 14.04 上编译的人,请注意:不要安装 libwxgtk3.0-dev,而是使用较旧的 libwxgtk2.8-dev,否则由于 libwxgtk3.0-dev 中的错误而无法编译。

请参阅https://groups.google.com/forum/#!topic/wx-users/2D_my-umcLU