一种邮件发送保护方法和装置的制造方法

文档序号:9914354阅读:516来源:国知局
一种邮件发送保护方法和装置的制造方法
【技术领域】
[0001]本发明属于互联网安全技术领域,尤其涉及一种邮件附件发送方法和装置。
【背景技术】
[0002]在当前企业的文档防泄密安全管理中,透明加密和沙箱两种方案已得到了市场检验并且都有相对成熟的解决方案。在解决本地文档防泄密方向上,这两种方案各有优劣并且都实现了相对完美的效果,但在邮件附件防泄密方面,这两种方案都没有提出完整的解决方案,所以邮件附件防泄密是一个独立的技术方案并且越来越多地得到重视。当然简单地控制邮件客户端或浏览器只能发送密文文件可以做到附件防泄密,但明显存在所有人收到的都是密文的问题,而需求往往是发送给特定用户一一称之为授信邮件一一的不加密而发送给其他人的加密,如同一封邮件发送给老板和其他人,其他人的是加密附件,而老板的是明文。
[0003]当前透明厂商提供的技术通常是使用ApiHook技术Hook邮件客户端(如foxmail,outlook,以及网易闪电邮等等)的socket函数,分析邮件客户端,分析邮件的发送数据包,邮件发送通常是通过通用的邮件协议smtp协议进行发送的,程序识别出smtp协议之后会提取出目标的邮箱,如果发现目标邮箱是授信邮箱,则分析这条smtp协议中是否有已经被加密过的附件,如果有则对附件进行解密后发送给授信邮箱。
[0004]当前的方案在一定程度上解决了邮件附件防泄密的问题,但实际的使用场景中,操作很复杂:当前方案在收件人列表只有授信邮箱或只有非授信邮箱时工作良好,而更常见的是一个邮件发送给多人,其中即有授信邮箱,又有非授信邮箱,则方案不能兼容。

【发明内容】

[0005]本发明所要解决的技术问题是提供一种新的邮件文件传输方法。
[0006]本发明解决上述技术问题所采取的技术方案如下:
[0007]—种邮件发送保护方法,该方法包括:
[0008]步骤I)截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存;
[0009]步骤2)解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列;
[0010]步骤3)根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包;
[0011]步骤4)将数据封包推送至收件邮箱。
[0012]优选的是,步骤I)中,具体包括:通过API Hooksocket的send函数、recv函数、closesocket函数对邮件客户端发送的邮件封包进行截获。
[0013]优选的是,步骤I)中,具体包括以下子步骤:
[0014]步骤11),通过API Hooksocket的send函数、recv函数、closesocket函数对邮件客户端发送的邮件封包进行截获,同时识别当前邮件的协议是否为Smtp协议;
[0015]步骤12),识别到Smtp协议后,以socket为key建立数据映射;
[0016]步骤13),对映射中的socket发送的所有数据进行分析,提取关键字段;
[0017]步骤14),将数据封包的列表进行缓存,缓存的内容包括映射的socke发送的所有的数据封包。
[0018]优选的是,所述子步骤13)中,所述关键字段包括:
[0019]From字段,其定义了发送邮箱;Rcpt字段,其定义了接收邮箱;Data字段,其定义了邮件内容,包括附件;End字段,其标志一个完整的Smtp发送完成。
[0020]优选的是,所述子步骤14)中,将数据封包的列表进行缓存,具体包括:
[0021]在数据封包中的Data字段发送时开始缓存,并在邮件的Data字段发送完成后对缓存的Data字段进行解析,并将邮件附件提取,写入单独的文件。
[0022]优选的是,所述步骤2)中,具体包括以下子步骤:
[0023]21)解析收件箱地址字段,如果出现多个不同类型的收件邮箱,则将与第一个类型不同的邮箱改为第一个邮箱的地址;
[0024]22)将替换的地址加入到缓存的封包列表中,由此形成授信和非授信两个封包列表队列。
[0025]优选的是,在子步骤22)中,如替换后封包的大小发生变化,则根据解密后附件改变的大小计算好解密后封包在封包列表的偏移,然后把替换的文件按逐个按计算好的偏移逆序插入,以此将解密后的附件插入到准确的位置,实现包中文件的替换。
[0026]优选的是,所述步骤3)中,根据预设的规则为授信邮箱的附件进行解密,具体包括:
[0027]判断邮件附件的编码格式,根据不同的编码格式执行不同的操作;
[0028]其中,如果是base64编码的附件,先将邮件附件进行base64解码,然后再对解码后的附件进行解密处理,处理后的邮件附件再进行base64编码;7bit编码的附件直接加解密处理。
[0029]一种邮件发送保护装置,该装置包括:
[0030]封包截获单元,用于截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存;
[0031]封包处理单元,用于解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列;
[0032]封包加解密单元,用于根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包;
[0033]封包转发单元,用于将数据封包推送至收件邮箱。
[0034]优选的是,所述封包截获单元通过API Hooksocket的send函数、recv函数、closesocket函数以对邮件客户端收发的邮件封包进行截获。
[0035]本方案在保证了附件防泄密的基础上进行了大幅度改进:可以支持一封邮件同时发送给授信邮箱和非授信邮箱,并且授信邮箱看到的是加密附件而非授信邮箱看到的是加密附件。
[0036]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0037]下面结合附图对本发明进行详细的描述,以使得本发明的上述优点更加明确。其中,
[0038]图1是现有技术的流程不意图;
[0039]图2是本发明邮件发送保护方法的流程示意图;
[0040]图3是本发明邮件发送保护装置的结构示意图。
【具体实施方式】
[0041]以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
[0042]其中,对本发明涉及的英文缩写和技术名词进行解释。
[0043]其中,SMTP协议:简单邮件传输协议,是基于tcp/ip协议的一种应用层协议,我们通常使用的邮件客户端发送邮件通常就是走的这个协议。
[0044]API H00K:apihOOk技术是一种用于改变API执行结果和获取API执行参数的技术。
[0045]邮件附件防泄密:针对邮件发送的附件做文档防泄密保护,如不能将密文文件发送给指定用户。
[0046]实施例一:
[0047]如图1和图2所示,一种邮件发送保护方法,该方法包括:
[0048]步骤I)截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存;
[0049]步骤2)解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列;
[0050]步骤3)根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包;
[0051 ]步骤4)将数据封包推送至收件邮箱。
[0052]其中,本发明采取了上述方案以后,能够一封邮件同时发送给授信邮箱和非授信邮箱,并且授信邮箱看到的是加密附件而非授信邮箱看到的是加密附件。
[0053]实施例二:
[0054]具体来说,步骤I)中,基于API Hooksocket的send函数、recv函数、closesocket函数对邮件客户端发送的邮件封包进行截获,具体来说:
[0055]包括以下子步骤:
[0056]步骤11),通过API Hooksocket的send函数、recv函数、closesocket函数对邮件客户端发送的邮件封包进行截获,同时识别当前邮件的协议是否为Smtp协议;
[0057]步骤12),识别到Smtp协议后,以socket为key建立数据映射;
[0058]步骤13),对映射中的socket发送的所有数据进行分析,提取关键字段,其中,该关键字段主要是From字段,其定义了发送邮箱;Rcpt字段,其定义了接收邮箱;Data字段,其定义了邮件内容,包括附件;End字段,其标志一个完整的Smtp发送完成。
[0059]步骤14),将数据封包的列表进行缓存,缓存的内容包括映射的socke发送的所有的数据封包。
[0060]实施例三:
[0061]以下对实施例一和实施例二进行整体说明,其中,本发明的实施步骤主要包括以下四步:
[0062]步骤I)通过APIHook技术实现邮件客户端收发网络封包的截获。
[0063]步骤2)对Smtp协议的解析,根据收件邮箱划分不同队列。
[0064]步骤3)解析邮件附件到独立的文件,并根据规则进行加解密。
[0065]步骤4)对缓存的邮件封包进行重新推送。
[0066]其中,技术实现上有四个关键点:
[0067]一是封包列表的缓存处理,二是收件邮箱按授信非授信队列的划分,三是附件的加解密,四是缓存封包列表的重发。
[0068]详细说明每一步如下:
[0069]一.封包列表的缓存:
[0070]I).通过API Hook的方式对邮件客户端发送接收的封包进行收集,我们Hook 了socket 的send函数,recv函数,closesocket 函数。
[0071]2).并不是所有的封包都需要进行缓存,首先需要识别出当前发送邮件的协议是否是Smtp协议,是通过EHLO标志来进行识别的。
[0072]3).识别
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1