http://blog.topsec.com.cn/truecrypt%E4%B8%8Ecryptsetup%E5%8F%8C%E7%B3%BB%E7%BB%9F%E5%85%A8%E7%9B%98%E5%8A%A0%E5%AF%86%E5%9B%BE%E6%96%87/

TrueCrypt与CryptSetup双系统全盘加密(图文)

By kernux TopSec α-lab

选取无系统硬盘进行说明。

1. 首先在硬盘上安装Windows系统,过程简单,直接光盘启动电脑,或者PE安装,都可以。

2. 安装完成Windows后,开始安装Kali Linux。同样光盘启动电脑,或者U盘启动,进入安装后,具体分区过程如下:

选择Manual后

第一个是Windows分区,后面是空闲空间,在这里建立一个boot分区

再建立一个加密分区,选择Configure encryted  volumes

然后开始擦出分区信息,如果是新硬盘,则可以跳过

选择Configure the Logical Volume Manager

然后将root挂在到/,swap格式化为swap分区

至此Linux 安装完毕,重启进入Linux后,生成g2ldr,目的在于用Windows来引导Linux,因为TrueCrypt不能引导Linux。执行如下命令:

grub-mkimage -o core.img -O i386-pc biosdisk part_msdos fat ntfs ext2 iso9660 udf configfile search help  reiserfs font linux chain echo

cat /boot/grub/lnxboot.img core.img > g2ldr

然后将g2ldr还有/usr/lib/grub/i386-pc/g2ldr.mbr 复制到Windows根目录下,在Windows目录下创建grub目录,将/boot/grub/grub.cfg 复制到Windows的grub目录下,重启进入Windows,安装TrueCrypt,Ultraiso和bootice。打开bootice:

添加实模式启动项,具体配置如下

+

重启系统测试,启动Linux成功:

再次进入Windows,开始加密。

最后一步选择NO

创建恢复盘镜像,然后用Ultraiso加载到虚拟光驱,不然不能进行下一步。此镜像要好好保管。

重启电脑后,提示输入刚刚的加密密码:

测试成功后,开始加密系统。

完成后,双系统的全盘加密就安装完毕了。进Windows需要输入TrueCrypt秘钥,进Linux则两个秘钥都需要输入。

最后我们再进入Linux系统,给系统加上一个nuke密码,这样如果我们启动Linux时,输入nuke密码,将会将Linux系统的加密分区信息头销毁,这样就算是正确的密码也解不开Linux分区了。具体操作很简单:

cryptsetup luksDump /dev/sdxx

这里的/dve/sdxx是你的系统分区设备,如果不知道,可以fdisk -l 查看,或者挨个试,加密分区会打印出正确的信息。然后

cryptsetup luksAddNuke /dev/sdxx

会提示你先输入之前的任意密码作为验证,然后再输入新的slot密码(nuke)。

cryptsetup luksDump /dev/sdxx 来查看一下结果,发现多了一个slot是enable状态,说明成功。到此nuke就完成了。我们随时可以销毁Linux系统。当然,销毁的系统还是可以恢复的,这需要我们在销毁前保存一份luksHeader信息,具体如下:

cryptsetup luksHeaderBackup –header-backup-file luksheader.back /dev/sdxx

openssl enc -aes-256-cbc -salt -in luksheader.back -out luksheader.back.enc

得到ase加密后的luksheader.back.enc,好好保存。

然后假设系统被销毁,恢复操作需要借助其他方法加载硬盘,执行恢复操作。先解密luks header

openssl enc -d -aes-256-cbc -in luksheader.back.enc -out luksheader.back

恢复luks header到分区

cryptsetup luksHeaderRestore –header-backup-file luksheader.back /dev/sdxx

到此一个经过完整加密的多系统就实现了。

最新文章

  1. 转 10 个最佳的 Node.js 的 MVC 框架
  2. Gson运用
  3. C++primer 阅读点滴记录(一)
  4. LeetCode25 Reverse Nodes in k-Group
  5. Demon_打砖块(建造一面墙,发射子弹打砖块)
  6. pyqt之倒计时例子
  7. 在两个Android设备间通过UDP传输目录内文件
  8. BZOJ 1621: [Usaco2008 Open]Roads Around The Farm分岔路口
  9. hibernate tools连接数据报错
  10. Maven+STS工程中Maven Dependencies 文件夹丢失问题
  11. C语言字节数组转换为基本数据类型
  12. Docker 集群
  13. [c++]大数运算---利用C++ string实现任意长度正小数、整数之间的加减法
  14. 常用的js代码合集
  15. Fiddler功能介绍之Web抓包、远程抓包教程【转载】
  16. Error: Java VM internal error:Error Loading javai.dll
  17. 线程同步-SpinWait
  18. 三,ESP8266 SPI(基于Lua脚本语言)
  19. 【机器学习算法】cascade classifier级联分类器
  20. liunx的磁盘管理的基本命令

热门文章

  1. 原来Java的发家史是这么回事
  2. python基础(四):切片和索引
  3. Java编程语言学习01-编写第1个Java程序
  4. Day09_42_Set集合_HashSet
  5. 03- Linux目录与文件进阶操作
  6. RF-日期时间拼接(20191024_195355)
  7. UVA11100旅行(大包装小包,问最少多少个包)
  8. CVE-2018-8174(双杀漏洞)复现
  9. NT 内核函数原型大全
  10. 深入浅出带你玩转sqlilabs(四)-updatexml(),floor(),extractvalue()报错注入