教你加密Root文件系统(图)
互联网 发布时间:2008-10-08 19:02:19 作者:佚名
我要评论
当你不能依靠物理安全来保证你文件的安全时,是时候采取额外的步骤加密文件系统了,虽然本文涉及到的是基于PowerPC的系统,但原则上来说也适用于其他架构的系统。
在另一篇文章“实现加密的home目录”中,我描写了如何透明地加密home目录,本文叙述另一个技术实现--
当你不能依靠物理安全来保证你文件的安全时,是时候采取额外的步骤加密文件系统了,虽然本文涉及到的是基于PowerPC的系统,但原则上来说也适用于其他架构的系统。
在另一篇文章“实现加密的home目录”中,我描写了如何透明地加密home目录,本文叙述另一个技术实现--加密的root文件系统,我论述了GNU/Linux启动过程和软件需求,并提供了一些指令,对Open Firmware做了一下介绍,以及其他一些有关的考虑事项。我用于教学的系统是一台基于PowerPC架构的新世界苹果iBOOK电脑,运行Fedora Core 3预览版,不考虑细节,本文涉及到的概念和程序可以应用到任何设备、架构或操作系统。我提供的指令假设你有一个多余的USB闪存盘并且你系统的支持从USB设备启动。
同时,我还假设读者能轻松应用源代码补丁并编译程序,对于Fedora Core 3 Test 3版本,mkinitrd和启动脚本软件包需要打补丁以支持加密的root文件系统,需要掌握基本的分区管理和创建文件系统的知识,执行一个基本的Linux发行版安装超出了本文要求的范畴。
在呈现有关的技术步骤之前,一个高层概念必须先讨论:信任。信任与加密技术和认证总是纠缠在一起的,对任何有电子密钥的设备都可以假设它是可信任的。例如:当自动提款机(ATM)与我的银行账号共用个人识别号(PIN)时,我会信任ATM不会将我的PIN与不适当的第三方进行共享。同样,当我给我的计算机提供一个加密密钥时,我假设这个密钥不会与任何其他人进行共享,我会信任这台计算机在我们之间保守秘密。
那么,你能信任你的计算机吗?除非你无论到哪里都带着它,否则你真的不能信任它,即使磁盘已经经过加密处理也不行。设想这样一个情景:在你睡觉时,有人偷走了你的计算机,小偷将计算机中加密的内容做了一份拷贝,虽然没有加密密钥而对他来说毫无意义,但是他可以用更恶魔的内容替换笔记本电脑加密的内容,然后再将电脑放回去,当你第二天醒来时,计算机提示你输入加密密码,但是这时你提供的密钥会传输给小偷,他得到密钥后就有一份数据和密钥的拷贝了,他就可以读取你的文件了。
这个情景可能显得比较牵强,但是它说明了一点,你不能信任你的笔记本电脑,始终保持你的眼睛你离开它很重要,因此,无论如何优秀地实现你的加密系统,要建立在信任的基础前提条件下才行。
网络确保我们可以信任计算机的启动过程,我们需要将其从计算机中分隔出来,考虑这个问题:你携带你的汽车钥匙而不是携带你的汽车。你的密钥自身概念上与你的汽车钥匙一样。你可以更容易地保护你的密钥,因此你不用随时随地都携带上你的计算机,我们将用这个密钥提供启动计算机需要的软件,闪存盘将充当密钥的角色,通过保护启动系统最初的软件,除加密密钥外,我们可以有效地降低启动过程被劫持的风险。
你需要连接你的计算机是如何启动的,因为解锁一个加密的root文件系统是对整体的引导过程有影响,目前稳定的内核版本是2.6,可选择使用initramfs来帮助启动,在lwn.net上有一篇文档“initramfs来了”, initramfs是一个cipo归档,内核知道如何解压到基于RAM的磁盘上,这个解压的文件系统包括一个传统的载入内核挂载root文件系统的模块的脚本,在我们的样例中,这个脚本也用于解锁加密的root文件系统,关于这个主题更多的信息可以在文件buffer-format.txt和initrd.txt中找到,这两个文件都在Linux内核源代码发布包中。
对Linux有若干个文件系统加密接口是可用的,Jari Ruusu的Loop-AES就是这样一个项目,有多个cryptoloop变种提供一个加密的loopback设备,本文集中讲述最近2.6Linux内核提供的dm-crypt接口,这个接口目前已经被Fedora项目吸收,dm-crypt模块由Fedora内核包提供,还需要一个静态链接cryptsetup,这个实用程序简化了dm-crypt设备的管理,最后,还需要parted和hfsutils来管理启动文件系统。
不幸的是,Fedora Core的anaconda安装程序还不支持在盒子外安装加密文件系统,网络绕过这个限制,你必须保留一个空闲分区安装Fedora,格式化空闲分区为一个加密文件系统,然后拷贝原始安装数据到新的加密文件系统上,网络简化,我们假设Fedora已经安装到两个分区上:/dev/hda4,挂载到/home和/dev/hda5,挂载到/,因为/home下还没有用户目录,直到Fedora安装完毕,我们可以使用/dev/hda4作为我们的备用分区,/dev/hda3作为swap分区。
安装Fedroa Core 3,挂载/dev/hda4到/home,/dev/hda5挂载到/,不要添加非root用户,因为/home稍后将被清除干净,至此,你应该拥有一个全功能的Linux系统了。
在设置加密文件系统之前,你应该随意分区,这样排除一个潜在关于磁盘内容的信息漏洞,图1示范了一个抽象的半满磁盘,它没有恰当进行随机排列,图2示范了一个恰当随机排列的磁盘,在格式化之前包含一个加密的文件系统,注意,从图1中可以获取到一些关于它的内容的知识(如它们跨越了磁盘的二分之一),图2提供了一个没有那么豪华的对手,假如这样,磁盘可以很容易被清空,分区随机排列是通过用随机数据重写它的内容实现的:dd if=/dev/urandom of=/dev/hda4,这个过程可能要花很长的时间,因为创建随机数据有些困难的。
图1
图2随机排列的分区隐藏了使用量
要在/dev/hda4上创建一个加密的ext3文件系统,使用下面的步骤:
1)确认aes,dm-mod,dm-crypt模块已经载入内核
2)卸载将要托管加密root文件系统的分区/dev/hda4
#umount /dev/hda4
3)创建一个随机256位加密密钥并存储在/etc/root-key
#dd if =/dev/urandom of=/etc/root-key bs=1c count=32
这个密钥稍后将拷贝到闪存盘。
4)创建一个dm-crypt设备,使用前面创建的密钥加密
#cryptsetup -d /etc/root-key create /dev/hda4
现在访问/dev/mapper/root在/dev/hda4上提供了一个加密层,默认情况下,cryptsetup创建一个aes加密的dm-crypt设备并任务密钥大小为256位。
5)在/dev/mapper/root上创建一个ext3文件系统
#mkfs.ext3 /dev/mapper/root
6)挂载新文件系统
#mkdir /mnt/encroot
#mount /dev/mapper/root /mnt/encroot
7)现在你已经有一个加密文件系统了,你必须用/dev/hda5(原始的root文件系统)的内容来填充它
#cp -ax / /mnt/encroot
8)最后,在/mnt/encroot/crypttab中创建一个条目以便不同的实用程序知道文件系统是如何配置的:
root /dev/hda4 /etc/root-key cipher=aes
现在我们的加密文件系统已经准备好了,需要理解更多关于目标架构的启动过程,通常,计算机有一个固件程序来掌管系统启动的全过程,保护固件程序超出了本文的范畴,因此我们假设系统固件程序是可以信任的,大多数读者可能对BIOS比较熟悉,它是PC平台的启动固件程序,我主要讨论的是Open Firmware,它用于计算机制造厂商如苹果,sun和IBM启动系统。
在另一篇文章“实现加密的home目录”中,我描写了如何透明地加密home目录,本文叙述另一个技术实现--加密的root文件系统,我论述了GNU/Linux启动过程和软件需求,并提供了一些指令,对Open Firmware做了一下介绍,以及其他一些有关的考虑事项。我用于教学的系统是一台基于PowerPC架构的新世界苹果iBOOK电脑,运行Fedora Core 3预览版,不考虑细节,本文涉及到的概念和程序可以应用到任何设备、架构或操作系统。我提供的指令假设你有一个多余的USB闪存盘并且你系统的支持从USB设备启动。
同时,我还假设读者能轻松应用源代码补丁并编译程序,对于Fedora Core 3 Test 3版本,mkinitrd和启动脚本软件包需要打补丁以支持加密的root文件系统,需要掌握基本的分区管理和创建文件系统的知识,执行一个基本的Linux发行版安装超出了本文要求的范畴。
在呈现有关的技术步骤之前,一个高层概念必须先讨论:信任。信任与加密技术和认证总是纠缠在一起的,对任何有电子密钥的设备都可以假设它是可信任的。例如:当自动提款机(ATM)与我的银行账号共用个人识别号(PIN)时,我会信任ATM不会将我的PIN与不适当的第三方进行共享。同样,当我给我的计算机提供一个加密密钥时,我假设这个密钥不会与任何其他人进行共享,我会信任这台计算机在我们之间保守秘密。
那么,你能信任你的计算机吗?除非你无论到哪里都带着它,否则你真的不能信任它,即使磁盘已经经过加密处理也不行。设想这样一个情景:在你睡觉时,有人偷走了你的计算机,小偷将计算机中加密的内容做了一份拷贝,虽然没有加密密钥而对他来说毫无意义,但是他可以用更恶魔的内容替换笔记本电脑加密的内容,然后再将电脑放回去,当你第二天醒来时,计算机提示你输入加密密码,但是这时你提供的密钥会传输给小偷,他得到密钥后就有一份数据和密钥的拷贝了,他就可以读取你的文件了。
这个情景可能显得比较牵强,但是它说明了一点,你不能信任你的笔记本电脑,始终保持你的眼睛你离开它很重要,因此,无论如何优秀地实现你的加密系统,要建立在信任的基础前提条件下才行。
网络确保我们可以信任计算机的启动过程,我们需要将其从计算机中分隔出来,考虑这个问题:你携带你的汽车钥匙而不是携带你的汽车。你的密钥自身概念上与你的汽车钥匙一样。你可以更容易地保护你的密钥,因此你不用随时随地都携带上你的计算机,我们将用这个密钥提供启动计算机需要的软件,闪存盘将充当密钥的角色,通过保护启动系统最初的软件,除加密密钥外,我们可以有效地降低启动过程被劫持的风险。
你需要连接你的计算机是如何启动的,因为解锁一个加密的root文件系统是对整体的引导过程有影响,目前稳定的内核版本是2.6,可选择使用initramfs来帮助启动,在lwn.net上有一篇文档“initramfs来了”, initramfs是一个cipo归档,内核知道如何解压到基于RAM的磁盘上,这个解压的文件系统包括一个传统的载入内核挂载root文件系统的模块的脚本,在我们的样例中,这个脚本也用于解锁加密的root文件系统,关于这个主题更多的信息可以在文件buffer-format.txt和initrd.txt中找到,这两个文件都在Linux内核源代码发布包中。
对Linux有若干个文件系统加密接口是可用的,Jari Ruusu的Loop-AES就是这样一个项目,有多个cryptoloop变种提供一个加密的loopback设备,本文集中讲述最近2.6Linux内核提供的dm-crypt接口,这个接口目前已经被Fedora项目吸收,dm-crypt模块由Fedora内核包提供,还需要一个静态链接cryptsetup,这个实用程序简化了dm-crypt设备的管理,最后,还需要parted和hfsutils来管理启动文件系统。
不幸的是,Fedora Core的anaconda安装程序还不支持在盒子外安装加密文件系统,网络绕过这个限制,你必须保留一个空闲分区安装Fedora,格式化空闲分区为一个加密文件系统,然后拷贝原始安装数据到新的加密文件系统上,网络简化,我们假设Fedora已经安装到两个分区上:/dev/hda4,挂载到/home和/dev/hda5,挂载到/,因为/home下还没有用户目录,直到Fedora安装完毕,我们可以使用/dev/hda4作为我们的备用分区,/dev/hda3作为swap分区。
安装Fedroa Core 3,挂载/dev/hda4到/home,/dev/hda5挂载到/,不要添加非root用户,因为/home稍后将被清除干净,至此,你应该拥有一个全功能的Linux系统了。
在设置加密文件系统之前,你应该随意分区,这样排除一个潜在关于磁盘内容的信息漏洞,图1示范了一个抽象的半满磁盘,它没有恰当进行随机排列,图2示范了一个恰当随机排列的磁盘,在格式化之前包含一个加密的文件系统,注意,从图1中可以获取到一些关于它的内容的知识(如它们跨越了磁盘的二分之一),图2提供了一个没有那么豪华的对手,假如这样,磁盘可以很容易被清空,分区随机排列是通过用随机数据重写它的内容实现的:dd if=/dev/urandom of=/dev/hda4,这个过程可能要花很长的时间,因为创建随机数据有些困难的。
图1
图2随机排列的分区隐藏了使用量
要在/dev/hda4上创建一个加密的ext3文件系统,使用下面的步骤:
1)确认aes,dm-mod,dm-crypt模块已经载入内核
2)卸载将要托管加密root文件系统的分区/dev/hda4
#umount /dev/hda4
3)创建一个随机256位加密密钥并存储在/etc/root-key
#dd if =/dev/urandom of=/etc/root-key bs=1c count=32
这个密钥稍后将拷贝到闪存盘。
4)创建一个dm-crypt设备,使用前面创建的密钥加密
#cryptsetup -d /etc/root-key create /dev/hda4
现在访问/dev/mapper/root在/dev/hda4上提供了一个加密层,默认情况下,cryptsetup创建一个aes加密的dm-crypt设备并任务密钥大小为256位。
5)在/dev/mapper/root上创建一个ext3文件系统
#mkfs.ext3 /dev/mapper/root
6)挂载新文件系统
#mkdir /mnt/encroot
#mount /dev/mapper/root /mnt/encroot
7)现在你已经有一个加密文件系统了,你必须用/dev/hda5(原始的root文件系统)的内容来填充它
#cp -ax / /mnt/encroot
8)最后,在/mnt/encroot/crypttab中创建一个条目以便不同的实用程序知道文件系统是如何配置的:
root /dev/hda4 /etc/root-key cipher=aes
现在我们的加密文件系统已经准备好了,需要理解更多关于目标架构的启动过程,通常,计算机有一个固件程序来掌管系统启动的全过程,保护固件程序超出了本文的范畴,因此我们假设系统固件程序是可以信任的,大多数读者可能对BIOS比较熟悉,它是PC平台的启动固件程序,我主要讨论的是Open Firmware,它用于计算机制造厂商如苹果,sun和IBM启动系统。
相关文章
- “CMOS密码”就是通常所说的“开机密码”,主要是为了防止别人使用自已的计算机,设置的一个屏障2023-08-01

QQScreenShot之逆向并提取QQ截图--OCR和其他功能
上一篇文章逆向并提取QQ截图没有提取OCR功能, 再次逆向我发现是可以本地调用QQ的OCR的,但翻译按钮确实没啥用, 于是Patch了翻译按钮事件, 改为了将截图用百度以图搜图搜索.2023-02-04
QQ截图是我用过的最好用的截图工具, 由于基本不在电脑上登QQ了, 于是就想将其提取出独立版目前除了屏幕录制功能其他都逆出来了, 在此分享一下2023-02-04
非系统分区使用BitLocker加密导致软件无法安装的解决方法
很多电脑用户在考虑自己电脑磁盘分区安全时会采用 Windows 自带的 BitLocker 加密工具对电脑磁盘分区进行加密。但有些人加密后就会忘记自己设置的密码从而导致在安装其它软2020-11-25
防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生
这篇文章为大家详细介绍了如何才能防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-06-27
彻底防止计算机泄密、重要涉密人员离职泄密、涉密人员离岗离职前防范举
近些年企业商业机密泄漏的事件屡有发生,这篇文章主要教大家如何彻底防止计算机泄密、重要涉密人员离职泄密、告诉大家涉密人员离岗离职前的防范举措,具有一定的参考价值,2017-06-27- 最近有电脑用户反应量子计算机可以破解下载的所有的加密算法吗?其实也不是不可以,下面虚拟就为大家讲解买台量子计算机,如何分分钟破解加密算法2016-09-26
怎么破解Webshell密码 Burpsuite破解Webshell密码图文教程
webshell是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,一种网页后门。黑客通常会通过它控制别人网络服务器,那么怎么破解webshell密码呢?一起来看看吧2016-09-19- 本文讨论了针对Linux系统全盘加密的冷启动攻击,大家都认为这种攻击是可行的,但执行这么一次攻击有多难?攻击的可行性有多少呢?需要的朋友可以参考下2015-12-28
防止泄露公司机密、企业数据防泄密软件排名、电脑文件加密软件排行
面对日渐严重的内部泄密事件,我们如何守护企业的核心信息,如何防止内部泄密也就成了摆在各个企业领导面前的一大问题。其实,针对内网安全,防止内部信息泄漏早已有了比较2015-12-17







最新评论