Linux操作系统的文件读写透明加解密的方法与流程

文档序号:16265304发布日期:2018-12-14 21:52阅读:1234来源:国知局
Linux操作系统的文件读写透明加解密的方法与流程

本发明涉及linux操作系统领域,特别是一种linux操作系统的文件读写透明加解密的方法。



背景技术:

x86平台上的linux操作系统可以通过访问特定寄存器来hook系统调用函数(open,read,write,mmap,msync),从而达成透明加解密的效果。

现有技术大多采用如下方法:x86平台的linux操作系统的系统调用hook技术,是基于x86平台(芯片)的独特的构造---中断描述符表(idt)---来寻找系统调用表的,找到系统调用表,便可hook系统调用函数,从而截取open,read,write,mmap,msync系统调用中的数据流,进行加解密。

但是这样的方法无法兼容arm平台(芯片),且代码复杂度较高;市场需要一种能够适用于arm平台的且代码简单的文件读写透明加解密的方法;本发明解决这样的问题。



技术实现要素:

为解决现有技术的不足,本发明的目的在于提供一种linux操作系统的文件读写透明加解密的方法,本方法步骤流程简单,平台兼容性广,不仅适用于mips处理器,同时还适用于arm处理器;查找方式简单;代码简单易懂。

为了实现上述目标,本发明采用如下的技术方案:

linux操作系统的文件读写透明加解密的方法,包括如下步骤:

步骤一,找到sys_close函数的地址;

步骤二,从内存起始地址开始,读取内存中的数据,进行匹配,如果内容为系统调用sys_close的地址,则匹配成功,进行下一步;若不是,则匹配失败,继续读取下一块内存中的数据,并进行匹配;

步骤三,匹配成功后,在hook上系统调用open,read,write,mmap,msync函数,从而对数据进行加解密;

步骤四,达成文件加密防护的功能。

前述的linux操作系统的文件读写透明加解密的方法,步骤三,匹配成功后,在hook上系统调用open,read,write,mmap,msync函数,从而对数据进行加解密;

加解密的具体过程包括如下步骤:

步骤a,通过截取的open中的数据流,检查进程白名单和文件后缀名白名单,获取文件信息,并将文件信息添加至私有表单中;

步骤b,通过截取的read/mmap数据流,结合open中设置的表单,判断文件是否为密文,将数据流进行解密;

步骤c,通过截取的write/msync数据流,结合open中设置的表单,判断文件是否需要加密,并在需要时进行加密;

步骤d,通过截取exit系统调用,在进程退出时清理掉私有的表单;

步骤e,通过截取stat系列系统调用,获取加密后文件的长度,所述加密后文件的长度包含文件加密头;

步骤f,通过截取lseek系统调用,使文件指针偏移到正确的位置。

前述的linux操作系统的文件读写透明加解密的方法,sys_close函数的地址包括:在ubuntu14.04系统上为0xffffffff811eb720,在ubuntu16.04系统上为0xffffffffb5840370,在中标麒麟系统上为0xffffffff803338c8。

前述的linux操作系统的文件读写透明加解密的方法,本方法基于的cpu包括:arm处理器或mips处理器。

本发明的有益之处在于:

本方法不再依赖x86平台特有的构造,而是改用linux操作系统的普遍特性,即,唯一导出系统调用---sys_close;步骤流程简单,平台兼容性广,不仅适用于mips处理器,同时还适用于arm处理器。

从内存起始地址开始,直接搜索系统调用表;查找方式变更为简单的内存数据直接匹配;

代码简单易懂。

附图说明

图1是本发明的一种实施例的流程图。

具体实施方式

以下结合附图和具体实施例对本发明作具体的介绍。

linux操作系统的文件读写透明加解密的方法,包括如下步骤:

步骤一,找到sys_close函数的地址;作为一种实施例,sys_close函数的地址包括:在ubuntu14.04系统上为0xffffffff811eb720,在ubuntu16.04系统上为0xffffffffb5840370,在中标麒麟系统上为0xffffffff803338c8。

步骤二,从内存起始地址开始,读取内存中的数据,进行匹配,如果内容为系统调用sys_close的地址,则匹配成功,进行下一步;若不是,则匹配失败,继续读取下一块内存中的数据,并进行匹配。

步骤三,匹配成功后,在hook上系统调用open,read,write,mmap,msync函数,从而对数据进行加解密;

加解密的具体过程包括如下步骤:

步骤a,通过截取的open中的数据流,检查进程白名单和文件后缀名白名单,获取文件信息,并将文件信息添加至私有表单中;

步骤b,通过截取的read/mmap数据流,结合open中设置的表单,判断文件是否为密文,将数据流进行解密;

步骤c,通过截取的write/msync数据流,结合open中设置的表单,判断文件是否需要加密,并在需要时进行加密;

步骤d,通过截取exit系统调用,在进程退出时清理掉私有的表单;

步骤e,通过截取stat系列系统调用,获取加密后文件的长度,所述加密后文件的长度包含文件加密头;

步骤f,通过截取lseek系统调用,使文件指针偏移到正确的位置。

步骤四,达成文件加密防护的功能。

本方法适用的硬件,作为一种实施例,可以使用cpu为arm64,ddr为8g的计算机;作为另一种实施例,可以使用cpu为mips64,ddr为8g的计算机。

本方法不再依赖x86平台特有的构造,而是改用linux操作系统的普遍特性,即,唯一导出系统调用---sys_close;步骤流程简单,平台兼容性广,不仅适用于mips处理器,同时还适用于arm处理器;从内存起始地址开始,直接搜索系统调用表;查找方式变更为简单的内存数据直接匹配;代码简单易懂。

以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。



技术特征:

技术总结
本发明公开了一种Linux操作系统的文件读写透明加解密的方法,包括如下步骤:步骤一,找到sys_close函数的地址;步骤二,从内存起始地址开始,读取内存中的数据,进行匹配,如果内容为系统调用sys_close的地址,则匹配成功,进行下一步;若不是,则匹配失败,继续读取下一块内存中的数据,并进行匹配;步骤三,匹配成功后,在hook上系统调用open,read,write,mmap,msync函数,从而对数据进行加解密;步骤四,达成文件加密防护的功能。本方法步骤流程简单,平台兼容性广,不仅适用于Mips处理器,同时还适用于Arm处理器;查找方式简单;代码简单易懂。

技术研发人员:刘轶斌;谢永胜
受保护的技术使用者:浙江华途信息安全技术股份有限公司
技术研发日:2018.06.06
技术公布日:2018.12.14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1