一种基于网络应用软件的安全文件传输方法和装置制造方法
【专利摘要】本发明公开了一种基于网络应用软件的安全文件传输方法和装置,该方法包括文件发送步骤和文件接收步骤,所述文件发送步骤如下:监控网络应用软件是否发送文件;如果是,则截获发送文件的发送函数,并对将要发送的文件进行加密处理;修改上述发送函数中的至少一个参数,将其中待发送的文件名修改为经加密处理后的加密文件名;所述文件接收步骤如下:监控网络应用软件是否接收文件;如果是,则截获接收文件的接收函数,并对接收到的文件进行解密处理;修改上述接收函数中的至少一个参数,将其中待接收的文件名修改为经解密处理后的解密文件名。同时,本发明公开了与该方法对应的一种安全文件传输装置。
【专利说明】一种基于网络应用软件的安全文件传输方法和装置
【技术领域】
[0001]本发明涉及一种网络文件传输方法,尤其涉及一种基于网络应用软件的安全文件传输方法和装置。
【背景技术】
[0002]随着信息技术的飞速发展,现今企业为了降低沟通成本,提高业务处理效率。都会部属使用通信应用软件。如263EM、RTX、MSN、QQ等。这类应用软件不但提供便利的通讯方式,还提供方便的文件共享方式,即文件的传输功能。这为企业员工之间,企业与客户之间的沟通提供了便利的手段,但同时也由于这种便利的方式,企业核心机密信息也可能被有意无意的随意外发。企业核心机密存在泄密的安全隐患。
[0003]现有的文件外发保护方案,一般如下:
[0004]I)限制发送途径。即禁止263EM、QQ等的发送文件功能
[0005]2)通过审批授权,对要外发的源文件进行加密,并制作包含权限控制信息的外发文件。
[0006]3)通过指定途径发送制作好的外发文件,如U盘拷贝等。
[0007]现有技术的确解决了文件外发过程中存在的安全风险。而且不但适用于通讯应用软件,而且涵盖U盘,web邮件等其他外发方式。但针对于通讯软件来说这样的保护控制方案存在以下两点缺陷。
[0008]I)改变了原有软件的使用习惯。
[0009]2)使通讯软件丧失了原有的便利性。
【发明内容】
[0010]为解决上述技术问题,本发明提出了一种基于网络应用软件的安全文件传输方法,以解决使用网络应用软件传输文件时存在的安全泄露,以及使用不便的问题。该方法包括文件发送步骤和文件接收步骤,所述文件发送步骤如下:
[0011]11)监控网络应用软件是否发送文件;
[0012]12)如果是,则截获与文件发送相关的第一函数,并预先对将要发送的文件进行加密处理;
[0013]13)修改上述第一函数中的至少一个参数,将其中待发送的文件名修改为经加密处理后的加密文件名;
[0014]14)发送经加密的文件;
[0015]所述文件接收步骤如下:
[0016]21)监控网络应用软件是否接收文件;
[0017]22)如果是,则截获与文件接收相关的第二函数,并预先对接收到的文件进行解密处理;
[0018]23)修改上述第二函数中的至少一个参数,将其中待接收的文件名修改为经解密处理后的解密文件名;
[0019]24)接收经解密的文件。
[0020]具体来说,上述网络应用软件为即时通讯软件,包括RTX腾讯通、FeiQ飞秋、腾讯QQ、微软MSN、淘宝旺旺等各种可实现即时通讯(包括文件发送接收)的网络通讯软件。
[0021]所述第一函数和第二函数分别为上述网络即时通讯软件的系统API CreateFile函数和应用软件的系统API MoveFile函数。
[0022]上述步骤11)中的文件发送过程通过Hook技术,接管应用软件的系统APICreateFile,在即时通讯软件每次调用CreateFile时,判断这次调用是否是发送行为。上述步骤21)通过Hook技术,接管应用软件的系统API MoveFile,在即时通讯软件每次调用MoveFile时,判断这次调用是否是接收行为。
[0023]上述步骤12-13)中,如果确定是发送行为则根据策略,对源文件进行加密处理,修改CreateFile的参数,将文件名修改为加密文件的文件名,调用系统API CreateFile,返回打开后的加密文件句柄。
[0024]上述步骤22-23)中,如果确定是接收行为则判断是否是加密文件,是则根据策略,对加密文件进行解密处理,修改MoveFile的参数,将源文件名修改为解密后的文件,调用系统 API MoveFile。
[0025]为解决上述技术问题,本发明提出了一种基于网络应用软件的安全文件传输装置,以解决使用网络应用软件传输文件时存在的安全泄露,以及使用不便的问题。该装置包括文件发送模块和文件接收模块,所述文件发送模块包括:
[0026]文件发送监控模块,监控网络应用软件是否发送文件;
[0027]文件发送截获模块,截获与文件发送相关的第一函数,并预先对将要发送的文件进行加密处理;
[0028]文件发送模块,修改上述第一函数中的至少一个参数,将其中待发送的文件名修改为经加密处理后的加密文件名;
[0029]文件发送修改模块,修改上述第一函数中的至少一个参数,将其中待发送的文件名修改为经加密处理后的加密文件名;
[0030]文件发送子模块,发送经加密的文件;
[0031]所述文件接收模块包括:
[0032]文件接收监控模块,监控网络应用软件是否接收文件;
[0033]文件接收截获模块,截获与文件接收相关的第二函数,并预先对接收到的文件进行解密处理;
[0034]文件接收修改模块,修改上述第二函数中的至少一个参数,将其中待接收的文件名修改为经解密处理后的解密文件名;
[0035]文件接收子模块,接收经解密的文件。
[0036]由上述技术方案可见,本发明提供了一种基于网络应用软件的安全文件传输装置和装置,通过该发明,可实现用户在使用即时通讯软件发送文件时,自动对待发送文件进行加密,保证了文件的安全传输,并且用户在使用即时通讯软件接收文件时,可自动对待接收的文件进行解密,从而不会增加用户使用的负担。而上述对文件进行加密、解密的过程对用户是透明的,对用户的使用不会造成任何的不便。【专利附图】
【附图说明】
[0037]图1是即时通讯软件通用发送文件的流程图。
[0038]图2是即时通讯软件通用接收文件的流程图。
[0039]图3是使用即时通讯软件RTX腾讯通发送文件的流程图。
[0040]图4是使用即时通讯软件RTX腾讯通接收文件的流程图。
[0041]图5是使用即时通讯软件FeiQ飞秋发送文件的流程图。
[0042]图6是使用即时通讯软件FeiQ飞秋接收文件的流程图。
[0043]图7是本发明的装置结构图。
【具体实施方式】
[0044]技术解释:
[0045]Hook 技术:
[0046]Hook技术是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会受到系统的通知,这时程序就能在第一时间对该事件做出响应。
[0047]Hook的另一种解释,是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
[0048]钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。总之,Hook技术属于一种现有技术,在此不再赘述。
[0049]所述步骤2)中的CreateFile函数创建或打开以下对象并返回一个句柄,可以用来访问对象:文件、管道、mailslots、通信资源、磁盘设备(Windows NT只有)、consoles、目录(只开放)
[0050]CreateFile 函数:
[0051]HANDLE CreateFile(
LPCTSTR IpFileName, //指向文件名的指针
DWORD dwDesiredAccess, //访问模式(写/读)
DWORD dwSharcModc, //少、..十'.投式
LPSECURITY ATTRIBUTES lpSccurilyAtlribulcs,"衍 I!'丨J 安个》4件丨’丨勺指计
DWORD dwCrcationDisposilion, //如何创_?Ε
DWORD dwFlagsAndAltributcs, /7 义件M 性
HANDLE hTemplateFile //用于复制文件句柄
);
[0052]部分参数说明
[0053]IpFileName String要打开的文件的名或设备名。这个字符串的最 大长度在ANSI版本中为MAX_PATH,在Unicode版本中为32767。
[0054]dwDesiredAccess指定类型的访问对象。如果为GENERIC_READ表示允许对设备进行读访问;如果为GENERIC_WRITE表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息。
[0055]dwShareModeLong,如果是零表示不共享;如果是FILE_SHARE_DELETE表示随后打开操作对象会成功只要删除访问请求;如果是FILE_SHARE_READ随后打开操作对象会成功只有请求读访问;如果是FILE_SHARE_WRITE随后打开操作对象会成功只有请求写访问。
[0056]IpSecurityAttributes SECURITY_ATTRIBUTES,指向一个 SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)。
[0057]如执行成功,则返回文件句柄。
[0058]INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了 CREATE_ALWAYS 或 0PEN_ALWAYS,GetLastError 也会设为 ERR0R_ALREADY_EXISTS。
[0059]MoveFile 函数:
[0060]
BOOL MovcFi!c(
LPCTSTR IpExislingFilcNamc, // file name
LPCTSTR IpNcwFilcName// new (He name
);
[0061]函数功能
[0062]移动一个存在的文件或者目录(包括子目录)
[0063]参数说明
[0064]IpExistingFileName 一个存在的文件或者文件夹字符串指针
[0065]IpNewFileName 一个还没存在的文件或者文件夹的字符串指针[0066]返回值
[0067]如果成功调用返回非O
[0068]失败返回O
[0069]图1提供了一种使用即时通讯软件发送文件的方法。该发送方法主要包括下列步骤:
[0070]I)通过Hook技术,接管应用软件的系统API CreateFile。
[0071]2)在应用软件每次调用CreateFile时,判断这次调用是否是发送行为。
[0072]3)如果确定是发送行为,则根据策略对源文件进行加密处理。
[0073]4)修改CreateFile的参数,将文件名修改为加密文件的文件名。
[0074]5)调用系统API CreateFile,返回打开后的加密文件句柄。
[0075]应用程序进行文件发送,总免不了要对文件执行打开操作。所以本方法对应用程序的调用系统API CreateFile操作使用Hook技术进行截获。然后在应用程序每次发送文件之前,去执行文件打开操作时,对文件进行加密处理,之后对经加密的文件进行发送的操作。从而实现对文件发送的透明保护。
[0076]应用程序一般不是只在发送时才会调用CreateFile。通常会不停的调用CreateFile。所以我们需要通过一种方式来判断一次CreateFile的调用是否是发送行为的调用。本方法采用对函数调用堆栈进行分析,来判断是否是发送行为。因为函数调用堆栈表示了实现一个程序功能的函数调用过程。不会有相同的调用堆栈,除非是同一程序功能。根据上述原则,本方法首先会使用Windbg等工具分析应用程序的发送行为,确定文件发送操作调用堆栈的特征,如函数返回地址所在的模块等。然后在截获到一次CreateFile调用后,会回溯栈帧,通过之前分析得到调用堆栈特征来判断CreateFile的调用是否是发送行为的调用。
[0077]所述步骤I)中在对即时通讯软件的CreateFile系统事件进行hook后,一旦发生CreateFile系统事件(即发生了文件发送事件),对该事件进行hook的程序就会收到到系统的通知,这时程序就能在第一时间对该事件做出响应,从而实现截获文件发送的行为。
[0078]而步骤4)可通过修改CreateFile函数中的IpExistingFileName参数,实现将解密后的文件名替换接收的文件名,从而实现通过即时通讯软件接收经解密的文件。
[0079]图2提供了一种使用即时通讯软件接收文件的方法。该接收方法主要包括下列步骤:
[0080]I)通过Hook技术,接管应用软件的系统API MoveFile。
[0081]2)在应用软件每次调用MoveFile时,判断这次调用是否是接收行为。
[0082]3)如果是接收行为则判断是否是加密文件,是则根据策略,对加密文件进行解密处理。
[0083]4)修改MoveFile的参数,将源文件名修改为解密后的文件。
[0084]5)调用系统 API MoveFile。
[0085]通过对应用程序接收文件行为的分析,我们发现一般应用程序都会在文件接收完成后调用MoveFile操作来或是对临时文件改名,或是将临时目录下的临时文件移动到用户目录下。所以本方法设想对应用程序的调用系统API MoveFile操作使用Hook技术进行截获。然后在应用程序每次接收文件后,调用MoveFile时,预先将接收到的加密文件进行解密处理,从而实现对接收文件解密的透明处理,在对文件解密之后,然后调用MoveFile将经解密的文件移动到用户指定的位置,实现对文件解密的透明处理,让用户感觉不到后台程序对文件的解密处理。
[0086]同发送一样。在截获MoveFile操作后也需要对,MoveFile的调用进行分析,判断那次调用才是的接收后的调用行为。原理与方式同发送过程。
[0087]所述步骤I)中在对即时通讯软件的MoveFile系统事件进行hook后,一旦发生MoveFile系统事件(即发生了文件移动或改名事件),对该事件进行hook的程序就会收到到系统的通知,这时程序就能在第一时间对该事件做出响应,从而实现截获接收文件的行为。
[0088]而步骤4)可通过修改MoveFile函数中的IpFileName参数,实现将加密后的文件名替换原文件名,从而实现通过即时通讯软件发送经加密的文件。
[0089]实施例1
[0090]附图3-4分别公开了一种即时通讯软件RTX腾讯通进行文件发送和文件接收的方法。
[0091]腾讯通RTX (Real Time eXchange)是腾讯公司推出的企业级即时通信平台。企业员工可以轻松地通过服务器所配置的组织架构查找需要进行通讯的人员,并采用丰富的沟通方式进行实时沟通。文本消息、文件传输、直接语音会话或者视频的形式满足不同办公环境下的沟通需求。
[0092]文件发送过程:
[0093]I)通过Hook技术,接管RTX的系统API CreateFile例程。
[0094]2)在RTX每次调用CreateFile时,进行栈回溯,获取函数调用返回地址
[0095]3)判断函数调用返回是否在FileTransfer.dll模块中,是则这次调用CreateFile是发送行为。
[0096]4)如果是发送行为则根据策略,对源文件进行加密处理。
[0097]5)修改CreateFile的参数,将文件名修改为加密文件的文件名。
[0098]6)调用系统API CreateFile,返回打开后的加密文件句柄。
[0099]文件接收过程:
[0100]I)通过Hook技术,接管RTX软件的系统API MoveFile。
[0101]2)在RTX每次调用MoveFile时,进行栈回溯,获取函数调用返回地址
[0102]3)判断函数调用返回是否在FileTransfer.dll模块中,是则这次调用MoveFile是发送行为。
[0103]4)如果是接收行为则判断是否是加密文件,是则根据策略,对加密文件进行解密处理。
[0104]5)修改MoveFile的参数,将源文件名修改为解密后的文件。
[0105]6)调用系统 API MoveFile。
[0106]栈回溯伪代码:
[0107]
【权利要求】
1.一种基于网络应用软件的安全文件传输方法,该方法包括文件发送步骤和文件接收步骤, 所述文件发送步骤如下: 11)监控网络应用软件是否发送文件; 12)如果是,则截获与文件发送相关的第一函数,并预先对将要发送的文件进行加密处理; 13)修改上述第一函数中的至少一个参数,将其中待发送的文件名修改为经加密处理后的加密文件名; 14)发送经加密的文件; 所述文件接收步骤如下: 21)监控网络应用软件是否接收文件; 22)如果是,则截获与文件接收相关的第二函数,并预先对接收到的文件进行解密处理; 23)修改上述第二函数中的至少一个参数,将其中待接收的文件名修改为经解密处理后的解密文件名; 24)接收经解密的文件。.
2.根据权利要求1所述的方法,所述网络应用软件为即时通讯软件。
3.根据权利要求2所述的方法,所述第一函数和第二函数分别为所述网络应用软件的系统API CreateFile函数和应用软件的系统API MoveFile函数。
4.根据权利要求3所述的方法,所述步骤11)和步骤21)通过Hook技术,接管所述网络应用软件的所述系统API CreateFile函数和所述API CreateFile函数。
5.根据权利要求4所述的方法,所述步骤11)和步骤21)分别是通过监控所述网络应用软件是否调用所述CreateFile函数来判断是否发送文件,所述网络应用软件是否调用所述API MoveFile函数来判断是否接收文件。
6.一种基于网络应用软件的安全文件传输装置,该装置包括文件发送模块和文件接收模块,所述文件发送模块包括: 文件发送监控模块,监控网络应用软件是否发送文件; 文件发送截获模块,截获与文件发送相关的第一函数,并预先对将要发送的文件进行加密处理; 文件发送修改模块,修改上述第一函数中的至少一个参数,将其中待发送的文件名修改为经加密处理后的加密文件名; 文件发送子模块,发送经加密的文件; 所述文件接收模块包括: 文件接收监控模块,监控网络应用软件是否接收文件; 文件接收截获模块,截获与文件接收相关的第二函数,并预先对接收到的文件进行解密处理; 文件接收修改模块,修改上述第二函数中的至少一个参数,将其中待接收的文件名修改为经解密处理后的解密文件名; 文件接收子模块,接收经解密的文件。
7.根据权利要求6所述的装置,所述网络应用软件为即时通讯软件。
8.根据权利要求7所述的装置,所述第一函数和第二函数分别为所述网络应用软件的系统API CreateFile函数和应用软件的系统API MoveFile函数。
9.根据权利要求8所述的装置,所述文件发送监控模块和文件接收监控模块通过Hook技术,接管所述网络应用软件的所述系统API CreateFile函数和所述API CreateFile函数。
10.根据权利要求9所述的装置,所述文件发送监控模块和文件接收监控模块分别是通过监控所述网络应用软件是否调用所述CreateFile函数来判断是否发送文件,所述网络应用软件是否调 用所述API MoveFile函数来判断是否接收文件。
【文档编号】H04L9/00GK103441923SQ201310377250
【公开日】2013年12月11日 申请日期:2013年8月27日 优先权日:2013年8月27日
【发明者】章璋, 喻波, 王志华, 彭洪涛, 何晋昊 申请人:北京明朝万达科技有限公司