bannerman
驱动牛犊
驱动牛犊
  • 注册日期2010-01-26
  • 最后登录2014-05-29
  • 粉丝2
  • 关注1
  • 积分41分
  • 威望341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分22分
阅读:4075回复:5

[讨论]linux透明加解密

楼主#
更多 发布于:2012-03-21 23:31
这两年来坛子不是很活跃,就是那么几条供人下载的老帖挂在前面,看来透明加密这块厂家和技术基本上已经稳定。最近在弄linux网络设备,顺便了解下linux下的透明加解密实现,上网查了下资料基本上没有,而已经推出linux版本的厂家动静比较大的也就是亿塞通,搜索第一页半数是他的软文。总体上个人感觉如果想在IT行业中推广文档安全产品,不支持linux基本上就没戏。
网络搜索的结果比较多的一种观点是linux下透明加解密比较简单,可以通过fuse实现;但所谓fuse只不过是用于实现用户态文件系统,更确切的说是为了管理文件系统的磁盘结构,文件系统上层逻辑有fuse内核模块实现。用fuse是不可能实现目前我们公认的基于进程的透明加解密方式,不过倒可以实现基于文件的虚拟磁盘。当然也许是我比较愚笨,希望有经验的同学赐教。
下面是我个人认为一种可行的方法,linux下面基于进程的透明加密难点和windows一样,就是映像,这里的方法和windows类似采用堆栈式文件系统,实际上原理和layerfsd基本上一致,相对于windows来说,vfs帮我们做了很多事情,但也带来不透明性;
1、新建一个文件夹,用于加密进程重定向;比如\flyencrypt;
2、创建堆栈式文件系统,以ecryptfs为模版,挂根目录到\flyencrypt,这样\flyencrypt里处理的文件都将加密;
3、HOOK sys_open和sys_openat,如果是加密进程则重定向到\flyencrypt;同时保护\flyencrypt被非加密进程访问;
4、主要有三个问题需要解决,
a、文件名的获取,通过父句柄组织全部路径;
b、正确判断是常规文件还是其他文件,这只能在重定向到\flyencrypt后,在堆栈式文件系统中调用底层真实文件系统获取inode后才能知道,如果获取的文件不是常规文件,则返回特定的错误代码,在sys_open/sys_openat继续处理正常的流程;
c、直接挂根目录对非正常文件的影响;
经过多天思考,用到了hook,用到了堆栈式文件系统,感觉不是很靠谱,但确实想不出其他更靠谱的办法了,希望有经验的同学不吝赐教。
bannerman
驱动牛犊
驱动牛犊
  • 注册日期2010-01-26
  • 最后登录2014-05-29
  • 粉丝2
  • 关注1
  • 积分41分
  • 威望341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分22分
沙发#
发布于:2012-03-22 14:17
纠正下,上述对FUSE理解和应用有误。用FUSE把根目录加载到某个临时目录下,即可实现透明加解密,实现方法跟上述内核实现方法类似,HOOK区分加密进程及重定向到FUSE是不可少的。
上网查了下FUSE的主要几方面应用,上面所说的实现虚拟磁盘基本上不可能。
实验性文件系统;
文件夹加解密;
特殊格式文件应用,比如把ZIP虚拟为一个文件系统;
游客

返回顶部