一种可信白名单快速匹配装置与方法与流程

文档序号:21849023发布日期:2020-08-14 17:21阅读:399来源:国知局
一种可信白名单快速匹配装置与方法与流程

本发明涉及信息安全技术领域,尤其是一种可信白名单快速匹配装置与方法。



背景技术:

可信计算作为一种主动防御技术,不需要依赖病毒库的升级更新,就可以自动免疫诸如勒索病毒、广告木马、挖矿机等新型安全威胁。主动防御技术要求对一个已知可信的系统的所有非用户数据文件进行完整性度量并建立可信基准数据库(这一过程可以是由计算机厂商在生产时完成,或由系统管理员在初始化系统时完成),随后在系统正常运行时,时刻对比可信基准数据库,如有超出可信基准数据库范围的非用户数据文件将被执行,则进行拦截。

为实现对任何文件的执行的拦截,需要在操作系统(windows/linux等)的内核中增加相应的安全钩子,这些钩子可以在操作系统加载可执行镜像和与可执行镜像关联的文件时,转到可信计算度量程序中预先对将要执行的文件进行度量。

可信度量的方法一般为使用密码学hash函数对被度量文件进行消息摘要运算。所以“对比可信基准数据库”这一过程,可以看作把被度量文件的消息摘要与预存的一组消息摘要进行白名单查找的过程。如果被度量文件的消息摘要在预存的一组消息摘要之中,那么说明被度量文件是合法的、经过授权的,而如果被度量文件的消息摘要不在预存的一组消息摘要之中,那么说明被度量文件是不被信任的,不可继续执行的。

前述在操作系统内核中进行白名单查验的过程,面对的主要问题是如何把相对庞大的白名单数据信息放到相对有限的内核内存空间中(因为内核模块一般完全在内存中运行,为保持速度一般不直接访问大容量外部存储器),又如何保持相对快的查找速度。

常见的白名单文件数大致为100万到1000万左右,按每文件需要至少128比特(16字节)的度量值存储空间和至少8字节的上下文索引地址计算,需要数十到数百兆的空间,按二叉搜索树计算每次比对需要20次左右的比较运算。这对于每次运行和加载文件都需要进行一次过滤的可信度量操作而言,会极大拖累系统的运行效率,降低用户体验,造成用户卡顿;同时,如果在内核模块中占据大量可用内存,也会减少用户程序可使用的内存,造成用户程序频繁使用虚拟内存(在linux称交换分区或交换文件)。



技术实现要素:

本发明所要解决的技术问题在于,提供一种可信白名单快速匹配装置与方法,为操作系统内核模块中提供一种在有限内存、有限时间情况下快速进行可信白名单对比匹配的功能,以减少因为引入可信度量机制而产生的系统卡顿、可用内存变少等现象。

为解决上述技术问题,本发明提供一种可信白名单快速匹配装置,包括:文件句柄监控单元、文件内容读取单元、sm3计算单元、bloom过滤器hash单元、bloom过滤器控制单元、hash暂存单元和用户态数据库单元;其中文件句柄监控单元连接文件内容读取单元、文件内容读取单元连接sm3计算单元、sm3计算单元连接bloom过滤器hash单元和hash暂存单元、bloom过滤器hash单元连接bloom过滤器控制单元、bloom过滤器控制单元连接hash暂存单元和用户态数据库单元。

优选的,文件句柄监控单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态对用户态文件打开操作进行拦截,并通知文件内容读取单元。

优选的,文件内容读取单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:利用内核态自身接口,在用户态文件打开之前,预先读取其内容,并送入sm3计算单元。

优选的,sm3计算单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:按国密sm3算法计算文件内容的128比特hash值,并送入bloom过滤器hash单元,并将文件名和128比特hash值组成二元组送入hash暂存单元。

优选的,bloom过滤器hash单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:将128比特hash值分为四组,每组各32比特,最终形成一个四元组,每组各为32比特长的hash值,将此hash值四元组和原128比特hash值送入bloom过滤器控制单元。

优选的,bloom过滤器控制单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:将前述hash值四元组中的每一位,作为索引,取出预存的比特数组对应位上的比特值,如果四个比特值不同时为1,则向用户反馈判决结果“不在可信白名单”,如果四个比特值同时为1,则向hash暂存单元询问前述128比特hash值是否在四元组列表中,如果不存在,则向用户态数据库单元查询128比特hash是否在可信白名单中,并将结果设置到hash暂存单元,再从hash暂存单元得到判决值并向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”;如果存在,则以hash暂存单元反馈的判决值为bloom过滤器控制单元向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”。

优选的,用户态数据库单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:预先存入可信白名单,可信白名单内容为可信文件的128比特hash值,在bloom过滤器控制单元从内核发来查询请求时,查找白名单内是否有bloom过滤器控制单元所请求的128比特hash值。

优选的,hash暂存单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:响应sm3计算单元的请求,在自身内存的四元组列表中建立一个新的四元组项,新的四元组项包括sm3计算单元的请求中的文件名和128比特hash值两二元组中的两项,一项最近使用时间戳项,此项在新建时为当前时间,一项判决值项,此项在新建时为空,如果自身四元组列表超过一定大小,则丢弃按“最近使用时间戳项”标记,最久没有使用的四元组;响应bloom过滤器控制单元的请求,查找包含128比特hash值的四元组是否存在,并反馈判决值,同时如果四元组存在,更新四元组中的最近使用时间戳项为当前时间;响应bloom过滤器控制单元的请求,查找包含128比特hash值的四元组是否存在,并设置判决值。

相应的,一种可信白名单快速匹配方法,包括如下步骤:

(1)向用户态数据库单元填充可信白名单,并开辟一个充分大的内存区域作为比特数组,初始化为全0,随后,将每条白名单数据的128比特hash值分为四组,每组各32比特,形成一个四元组,每组各为32比特长的hash值,将四元组中的每一位,作为数组索引,在比特数组索引对应位上置1,最后将此比特数组预存到bloom过滤器控制单元;

(2)文件句柄监控单元在内核态对用户态文件打开操作进行拦截,并通知文件内容读取单元;

(3)文件内容读取单元利用内核态自身接口,在用户态文件打开之前,预先读取其内容,并送入sm3计算单元;

(4)sm3计算单元按国密sm3算法计算文件内容的128比特hash值,并送入bloom过滤器hash单元,并将文件名和128比特hash值组成二元组送入hash暂存单元;

(5)hash暂存单元在自身内存的四元组列表中建立一个新的四元组项,包括sm3计算单元的请求中的文件名和128比特hash值两二元组中的两项;一项最近使用时间戳项,此项在新建时为当前时间;一项判决值项,此项在新建时为空;如果自身四元组列表超过一定大小,则丢弃按“最近使用时间戳项”标记,最久没有使用的四元组;

(6)bloom过滤器hash单元将步骤四中sm3计算单元发来的128比特hash值分为四组,每组各32比特,最终形成一个四元组,每组各为32比特长的hash值,将此hash值四元组和原128比特hash值送入bloom过滤器控制单元;

(7)bloom过滤器控制单元将步骤六中bloom过滤器hash单元发来的hash值四元组中的每一位,作为索引,取出预存的比特数组对应位上的比特值,如果四个比特值不同时为1,则向用户反馈文件不在可信白名单中,如果四个比特值同时为1,则向hash暂存单元询问前述128比特hash值是否在四元组列表中,如果不存在,则向用户态数据库单元查询128比特hash是否在可信白名单中,并将结果设置到hash暂存单元,再从hash暂存单元得到判决值并向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”;如果存在,则以hash暂存单元反馈的判决值为bloom过滤器控制单元向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”。

本发明的有益效果为:本发明引入“bloom过滤器”这一概率算法将白名单检索的时间复杂度降低到常数阶,而空间复杂度比上述确定性算法降低一个数量级,同时结合可信度量的特点,虽然白名单总量庞大,但一段时间内,系统调用的文件数是有限的,通过hash暂存单元对标准bloom过滤器算法在查找命中时(即结果为“阳性positive”)时的二次查找结果进行缓存,使得bloom过滤器概率算法的假阳性(falsepositive)问题得到极大的缓解。

附图说明

图1为本发明的装置结构示意图。

图2为本发明的bloom过滤器控制单元判决流程示意图。

具体实施方式

如图1所示,一种可信白名单快速匹配装置,包括:文件句柄监控单元、文件内容读取单元、sm3计算单元、bloom过滤器hash单元、bloom过滤器控制单元、hash暂存单元和用户态数据库单元;其中文件句柄监控单元连接文件内容读取单元、文件内容读取单元连接sm3计算单元、sm3计算单元连接bloom过滤器hash单元和hash暂存单元、bloom过滤器hash单元连接bloom过滤器控制单元、bloom过滤器控制单元连接hash暂存单元和用户态数据库单元。

文件句柄监控单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:在内核态对用户态文件打开操作进行拦截,并通知文件内容读取单元。

文件内容读取单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:利用内核态自身接口,在用户态文件打开之前,预先读取其内容,并送入sm3计算单元。

sm3计算单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:按国密sm3算法计算文件内容的128比特hash值,并送入bloom过滤器hash单元,并将文件名和128比特hash值组成二元组送入hash暂存单元。

bloom过滤器hash单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:将128比特hash值分为四组,每组各32比特,最终形成一个四元组,每组各为32比特长的hash值,将此hash值四元组和原128比特hash值送入bloom过滤器控制单元。

bloom过滤器控制单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:将前述hash值四元组中的每一位,作为索引,取出预存的比特数组对应位上的比特值,如果四个比特值不同时为1,则向用户反馈判决结果“不在可信白名单”,如果四个比特值同时为1,则向hash暂存单元询问前述128比特hash值是否在四元组列表中,如果不存在,则向用户态数据库单元查询128比特hash是否在可信白名单中,并将结果设置到hash暂存单元,再从hash暂存单元得到判决值并向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”;如果存在,则以hash暂存单元反馈的判决值为bloom过滤器控制单元向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”。

用户态数据库单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:预先存入可信白名单,可信白名单内容为可信文件的128比特hash值,在bloom过滤器控制单元从内核发来查询请求时,查找白名单内是否有bloom过滤器控制单元所请求的128比特hash值。

hash暂存单元包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该程序时实现:响应sm3计算单元的请求,在自身内存的四元组列表中建立一个新的四元组项,新的四元组项包括sm3计算单元的请求中的文件名和128比特hash值两二元组中的两项,一项最近使用时间戳项,此项在新建时为当前时间,一项判决值项,此项在新建时为空,如果自身四元组列表超过一定大小,则丢弃按“最近使用时间戳项”标记,最久没有使用的四元组;响应bloom过滤器控制单元的请求,查找包含128比特hash值的四元组是否存在,并反馈判决值,同时如果四元组存在,更新四元组中的最近使用时间戳项为当前时间;响应bloom过滤器控制单元的请求,查找包含128比特hash值的四元组是否存在,并设置判决值。

相应的,一种可信白名单快速匹配方法,包括如下步骤:

(1)向用户态数据库单元填充可信白名单,并开辟一个充分大的内存区域作为比特数组,初始化为全0,随后,将每条白名单数据的128比特hash值分为四组,每组各32比特,形成一个四元组,每组各为32比特长的hash值,将四元组中的每一位,作为数组索引,在比特数组索引对应位上置1,最后将此比特数组预存到bloom过滤器控制单元;

(2)文件句柄监控单元在内核态对用户态文件打开操作进行拦截,并通知文件内容读取单元;

(3)文件内容读取单元利用内核态自身接口,在用户态文件打开之前,预先读取其内容,并送入sm3计算单元;

(4)sm3计算单元按国密sm3算法计算文件内容的128比特hash值,并送入bloom过滤器hash单元,并将文件名和128比特hash值组成二元组送入hash暂存单元;

(5)hash暂存单元在自身内存的四元组列表中建立一个新的四元组项,包括sm3计算单元的请求中的文件名和128比特hash值两二元组中的两项;一项最近使用时间戳项,此项在新建时为当前时间;一项判决值项,此项在新建时为空;如果自身四元组列表超过一定大小,则丢弃按“最近使用时间戳项”标记,最久没有使用的四元组;

(6)bloom过滤器hash单元将步骤四中sm3计算单元发来的128比特hash值分为四组,每组各32比特,最终形成一个四元组,每组各为32比特长的hash值,将此hash值四元组和原128比特hash值送入bloom过滤器控制单元;

(7)如图2所示,bloom过滤器控制单元将步骤六中bloom过滤器hash单元发来的hash值四元组中的每一位,作为索引,取出预存的比特数组对应位上的比特值,如果四个比特值不同时为1,则向用户反馈文件不在可信白名单中,如果四个比特值同时为1,则向hash暂存单元询问前述128比特hash值是否在四元组列表中,如果不存在,则向用户态数据库单元查询128比特hash是否在可信白名单中,并将结果设置到hash暂存单元,再从hash暂存单元得到判决值并向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”;如果存在,则以hash暂存单元反馈的判决值为bloom过滤器控制单元向用户反馈的判决结果,即“在可信白名单”或“不在可信白名单”。

如表1和表2所示,本发明引入“bloom过滤器”这一概率算法将白名单检索的时间复杂度降低到常数阶,而空间复杂度比上述确定性算法降低一个数量级,同时结合可信度量的特点,虽然白名单总量庞大,但一段时间内,系统调用的文件数是有限的,通过hash暂存单元对标准bloom过滤器算法在查找命中时(即结果为“阳性positive”)时的二次查找结果进行缓存,使得bloom过滤器概率算法的假阳性(falsepositive)问题得到极大的缓解。

表1白名单数量为100万时算法性能对比

表2白名单数量为1000万时算法性能对比

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1