阅读:2357回复:18
大家讨论一下磁盘加密的原理
通常大家都知道
如果对一个系统盘进行了加密,需要改写bootloader以支持读取加密的系统文件 具体流程怎样? 大家讨论一下,包括bootloader,磁盘加密驱动(diskperf)之类的细节 回答精彩的有专家分:) |
|
|
沙发#
发布于:2008-07-07 12:10
bootloader时可以通过INT13, 然后diskperf。
问题是这样的系统怎样安装? |
|
|
板凳#
发布于:2008-07-07 14:10
安装也不复杂,先在windows下安装驱动和MBR/EFI驱动,然后MBR/EFI启动的时候再对系统盘进行加密。
问题是加密的算法和密钥怎么办?必须和TPM芯片结合才有足够的安全性吧。 |
|
地板#
发布于:2008-07-07 16:13
大家接着说
在刚启动阶段,有办法访问文件系统吗?象那个grubu |
|
|
地下室#
发布于:2008-07-07 20:33
引用第3楼znsoft于2008-07-07 16:13发表的 : 如果是全盘加密, 而不是对文件, hook int13 就不用管文件系统了。 |
|
|
5楼#
发布于:2008-07-07 21:23
TureCrypt好象有源码吧
|
|
6楼#
发布于:2008-07-08 09:41
全盘加密的话 如果我把你的密钥破坏了你怎么办?
如果实现的话bios是一个很好的落脚点吧 复杂加密后加上最先使用的原始文件再加密一次 在bios引导的时候解秘获得原始启动文件 然后对其他部分进行解秘. TPM芯片 好象是可信什么的 这个我不知道物理上怎么使用 所以 其实我认为这个就是简单的将你自己的盘管理系统(文件系统的延伸)变换为系统认可的驱动 当然你必须能够不影响系统的启动 所以要做系统启动前 和启动后两个部分 备注:我刚接触驱动不久.如有错误,敬请指正! |
|
7楼#
发布于:2008-07-10 00:43
Inside NT boot
作者:陆麟 转载请征得作者同意. 1999.9.4 本文参考<<INSIDE WINDOWS NT 2ND EDITION>>和Mark Russinovich的<<Inside boot process>> NT的真正接管系统乃是从NT分区的引导扇区被引导开始.引导扇的引导代码是在NT安装时被写入的.当NT被装在FAT分区时,NT SETUP写入的是能识别FAT FS的引导代码,而当NT被装在NTFS分区时,NT SETUP写入的是能识别NTFS的引导代码.所以,引导扇区含有一段相关的文件系统代码.注意!这段代码对文件系统仅能进行读操纵,而不能进行写操作. 当引导扇区被引导后,他所干的一件事就是查找NTLDR.该文件必须存在于根目录下,否则系统提示: BOOT:Couldn't find NTLDR.或A kernel file is missing from the disk.NT就死翘翘了.当加载NTLDR的时候系统仍然是处于实模式下.所以,NTLDR的第一件大事就是将CPU从实模式转换到保护模式下.当NTLDR将所有的1M以下的内存页描述符创建好后,NTLDR再开启页映射功能,现在NT可以访问4G内存了.然后,NTLDR通过内建的文件系统代码来查找根目录下的BOOT.INI.(NTLDR含有FAT和NTFS2种文件系统的只读代码)根据BOOT.INI的内容提示用户可选的操作系统.当用户在缺省的时间内没有选择.NTLDR就引导缺省的操作系统.如果用户选择DOS,那么NTLDR就将根目录下的BOOTSECT.DOS装入内存,(BOOTSECT.DOS是DOS引导扇的COPY件.)然后执行一次热启动.如果此时C:是NTFS,DOS就不会被启动出来.否则,DOS就被引导出来了. 啊哈,然后NTLDR就加载NTDECT.COM.这个程序将显示NTDETECT V4.0 .....这个NTDECT.COM调用的乃是INTxx来执行一大堆的BIOS系统调用.用来进行系统配置的检测.所有检测到的东西将被存到系统注册表的HKLM\HARDWARE\DESCRIPTION项下. 然后,执行再次恢复到NTLDR.屏幕显示OSLOADER V4.0 ....接下来被加载的2个文件组成了WINDOWS NT的核心.那就是:HAL.DLL,NTOSKRNL.EXE.这2个文件在装载时将被检测PE校验和,如果有问题或找不到.NT又要死翘翘了.有一点要说明.单处理器和多处理器的NTOSKRNL.EXE是不同的.支持多处理器的NTOSKRNL.EXE在安装盘里的文件名称是NTKRNLMP.EXE.但是一旦被COPY到NT的系统目录里,名字就变成了NTOSKRNL.EXE.因为NTLDR只加载NTOSKRNL.EXE.加载完这2个文件后,NTLDR再加载所有引导必须的驱动程序,然后加载HKEY_LOCAL_MACHINE\SYSTEM\Services里的值SERVICE_BOOT_START的DRIVER.(此时不初始化.)(我也不知道SERVICE_BOOT_START的DRIVER怎么写,因为一般的KMD如果用SERVICE_BOOT_START值启动就会失败.)然后NTLDR就会锁定NTOSKRNL.EXE的main()函数,然后将控制转移给NTOSKRNL.EXE. BTW:NTOSKRNL.EXE的main()函数是 int main() { // Fire up NT! // KiSystemStartup(); return 0; } ..... |
|
|
8楼#
发布于:2008-07-10 00:55
推荐思路:mbr->ntldr->low filter FS driver/mini port Driver( 安装xp时,那个F6的硬件驱动)
没测试过,BSOD无数次,能否成功,不能赖我啊 :> 系统引导部分源代码,nt4/w2k代码中有. 还有一个软件产品里有此处理,是否与楼主需求一致,呵呵,没细看。 vista也有此功能,不行就逆吧 |
|
|
9楼#
发布于:2008-07-10 08:57
TureCrypt可以参考,不过我认为随着新系统及64BIT的流行,启动部分将会越来越复杂,搞这个可能会比较困难.
|
|
|
10楼#
发布于:2008-07-14 18:06
有开源的工程的。
全盘加密,只是系统盘。 可以直接学习的。 |
|
|
11楼#
发布于:2008-07-14 18:08
有开源的工程的。
全盘加密,支持系统盘加密,有OS引导部分的代码的。 最新的TrueCrypt 可以直接学习的。 |
|
|
12楼#
发布于:2008-09-26 16:48
|
|
13楼#
发布于:2008-09-27 12:52
TrueCrypt ? 开源还是牛啊,有机会也看看
|
|
|
14楼#
发布于:2008-10-01 09:07
引用第12楼liangjinq于2008-09-26 16:48发表的 : 说实话,亿赛通的产品从技术角度来看,是市面上最差的. 那个文件 驱动( hook api/ssdt )驱动, n年没改,跟静加密基本上一样,不行的话,你自己回去看代码或站上的分析. |
|
|
15楼#
发布于:2008-10-03 09:07
There're already such commercial software ready, refer to the following:
- PointSec - SecureDoc - SafeGuard Easy - etc. |
|
16楼#
发布于:2008-10-11 03:08
引用第14楼znsoft于2008-10-01 09:07发表的 : 你先看明白再说,把访问控制的驱动【驱动的名称已经写的很明白,FileCon.sys,不就是FileControl吗?】 当作动态加解密的驱动,楼主的程序分析能力也太弱了。 |
|
17楼#
发布于:2008-10-11 03:11
硬盘加密在带来安全的同时也会带来数据损坏丢失的隐患,因此,选择这类产品一定要能保证在加密密钥存在的情况下,其它各种软损坏情况【除硬件损坏外】,如系统无法启动等,均应有相应的解决方案,否则这类产品就是装在计算机上的一个不定时炸弹。
亿赛通的硬盘加密系统DiskSec在这方面做的比较有特色,其主要特点是带有两个急救系统,一个内嵌的急救系统,用于解决出现的各种意外情况,万一内嵌的急救系统也损坏了,还有光盘急救系统可以挽救硬盘上的数据,只要用户加密密钥没有忘记,一切全在掌控之中。 同时,Disksec采用用户输入的密钥作为加密密钥,避免了很多用户由于忘记备份密钥而无法解密数据的尴尬(用过EFS加密的很多人估计有此体会,重新安装系统后无法解密以前加密的数据)。 |
|
18楼#
发布于:2008-10-11 11:37
引用第16楼liangjinq于2008-10-11 03:08发表的 : 自己回家看代码吧,看一下亿赛通怎么实现的好了。 反正近,有空过来pk,走路过来也就5分钟。(如果你在亿赛通全职而不是在清华呆着只兼职的话,如果兼职,我建议你不要再说啥了,否则亿的老板会认为你在骗钱.hehe) 欢迎技术探讨。磁盘加密,亿xx的磁盘加密没用过,不敢枉言,但是文件加密产品那是切身使用过的。水准什么程度,自己可以参照技术发展水平评价。不再作这些评论了,没有啥意义。评论多了,用户还以为真牛x了。 文件控制,你自己也说了,加密主要的功能不就是控制吗?真正的加密过程只是一个运算,你是清华的,应该比我更明白。 如果只谈加密,n年前就有了,手工的。现在的加密产品要体现在一个动态和透明上,这就是控制功能了,文件加密产品的核心功能就是实现这个。 不过可惜,亿xx 的也无法实现内核加密,只在内核控制文件.有啥危险,大家一看就明白了. 都是专家,就不要说那些外行话。 你写的驱动,你应该非常明白它的作用了。你在亿也算是水平最高的了。 |
|
|