一种基于加密算法的网络节点布隆过滤器构建及实现方法技术

技术编号:17011368 阅读:81 留言:0更新日期:2018-01-11 08:02
本发明专利技术公开一种基于加密算法的网络节点布隆过滤器构建及实现方法,通过计数器模式下的高级加密算法AES对布隆过滤器的插入、查询元素进行加密,近似得到布隆过滤器中所需的哈希流;通过对生成的哈希流进行截断输出,得到不同参数设置下,布隆过滤器所对应的各个哈希函数;并利用指令集AES‑NI对布隆过滤器的实现进行速度优化。本发明专利技术利用微处理器硬件广泛支持的AES‑NI技术,能够保证布隆过滤器在网络节点部署的一致性,为网络场景下基于布隆过滤器的各类应用提供一致高效的数据元素操作;为使用布隆过滤器这一算法部件的网络协议带来显著的性能提升。

【技术实现步骤摘要】
一种基于加密算法的网络节点布隆过滤器构建及实现方法
本专利技术涉及网络安全技术,具体的说是一种基于加密算法的网络节点布隆过滤器构建及实现方法。
技术介绍
布隆过滤器是一类具有存储高效性的数据结构,该数据结构利用底层的哈希函数,可被用来快速判断任一元素是否属于给定集合。随着互联网的发展,数以千计的实时网络应用与服务将布隆过滤器作为一个重要的设计组成要素,这些应用包括分布式拒绝服务攻击防御,高速网络流量测试,以及网络流量包监控等。布隆过滤器已经为各式各样的网络系统提供了功能及效能上的巨大支持。然而,构建布隆过滤器并不是一件轻而易举的事情。在将多种协议部署于网络节点时,由于底层哈希函数的实现方法不同,布隆过滤器的实现也产生了差异性。虽然通常一些优秀的哈希函数(如Murmur算法)可供选择,然而一些传统的哈希函数(如MD5算法)仍然被广泛使用。在不同协议中实现布隆过滤器时,这种非一致性将不可避免地增加部署的复杂度。另一个问题是布隆过滤器的处理速度。目前,数据查询请求往往具有海量特性,数据处理上轻微的延迟都将会逐步积累,并最终限制并影响相关应用的实施效率。因此,如何加速布隆过滤器这一关键部件,变得异常重要。但布隆过滤器自身结构的简单性,几乎没有为其加速和优化提供空间。
技术实现思路
本专利技术针对目前技术发展的需求和不足之处,提供一种基于加密算法的网络节点布隆过滤器构建及实现方法。本专利技术所述一种基于加密算法的网络节点布隆过滤器构建及实现方法,解决上述技术问题采用的技术方案如下:所述基于加密算法的网络节点布隆过滤器构建及实现方法,通过计数器模式下的高级加密算法AES对布隆过滤器的插入、查询元素进行加密,近似得到布隆过滤器中所需的哈希流;通过对生成的哈希流进行截断输出,得到不同参数设置下,布隆过滤器所对应的各个哈希函数;具体实现流程包括:步骤一,设置布隆过滤器的加密密钥,并进行轮密钥扩展;步骤二,布隆过滤器接收一系列插入或查询请求,根据初始请求的元素长度进行元素预处理操作;步骤三,使用高级加密标准AES对预处理后的数据进行加密;步骤四,确定布隆过滤器哈希函数的输出值;步骤五,根据步骤四产生的哈希函数的输出值,完成布隆过滤器相应的插入或查询请求。进一步,所述步骤一,设置高级加密标准AES加密密钥,根据设置的AES加密密钥,轮密钥扩展利用指令集AES-NI支持的AES_Key_Expansion()函数,生成所有后续插入或查询操作所需AES加密过程的轮密钥值。进一步,所述步骤二,布隆过滤器接收一系列插入或查询请求,对于每个请求,根据相应的初始请求元素的长度进行元素预处理操作,具体流程包括:步骤1,计算加密分组数量b;步骤2,分组长度填充;比较初始请求元素与最大输入长度的值,确定预处理操作的方式,使元素被修正以最终对齐至最大输入长度;步骤3,元素自我复制;若加工后的元素依然不足b个分组,将进行自我复制直至最终达到b个分组。进一步,所述步骤2,使用PKCS#7填充模式将元素的大小对齐至AES分组长度的整数倍。进一步,所述基于加密算法的网络节点布隆过滤器构建及实现方法,还包括:利用指令集AES-NI对布隆过滤器的实现进行速度优化的步骤。进一步,利用微处理器广泛支持的指令集技术AES-NI,对AES算法的计算过程进行加速,包括对轮密钥扩展和文本加密两个过程进行加速。本专利技术所述一种基于加密算法的网络节点布隆过滤器构建及实现方法,与现有技术相比具有的有益效果是:本专利技术不同于传统的基于哈希函数的构建方式,利用高级加密标准AES算法进行布隆过滤器构建,并使用AES指令集AES-NI对AES的运算速度进行优化;利用微处理器硬件广泛支持的AES-NI技术,能够保证布隆过滤器在网络节点部署的一致性,为网络场景下基于布隆过滤器的各类应用提供一致高效的数据元素操作;为使用布隆过滤器这一算法部件的网络协议带来显著的性能提升;此外,当网络节点具有加密或身份认证功能时,基于AES算法构建的布隆过滤器也提升了网络节点中算法的可复用性。附图说明为了更清楚的说明本专利技术实施例或现有技术中的
技术实现思路
,下面对本专利技术实施例或现有技术中所需要的附图做简单介绍。显而易见的,下面所描述附图仅仅是本专利技术的一部分实施例,对于本领域技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,但均在本专利技术的保护范围之内。附图1为实施例2中初始请求元素为N/2比特的示意图。具体实施方式为使本专利技术的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本专利技术的技术方案进行清查、完整的描述,显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术的实施例,本领域技术人员在没有做出创造性劳动的前提下获得的所有实施例,都在本专利技术的保护范围之内。实施例1:本实施例提出一种基于加密算法的网络节点布隆过滤器构建及实现方法,通过计数器模式下的高级加密算法AES(AdvancedEncryptionStandard,高级加密标准)对布隆过滤器的插入、查询元素进行加密,近似得到布隆过滤器中所需的哈希流;然后,通过对生成的哈希流进行截断输出,得到不同参数设置下,布隆过滤器所对应的各个哈希函数。本实施例基于加密算法的网络节点布隆过滤器构建及实现方法,具体包括如下步骤:步骤一,设置布隆过滤器的加密密钥,并进行轮密钥扩展;具体的,设置高级加密标准AES加密密钥,根据设置的AES加密密钥,轮密钥扩展利用指令集AES-NI支持的AES_Key_Expansion()函数,生成所有后续插入或查询操作所需AES加密过程的轮密钥值。基于预定义的用户密钥,只需执行一次轮密钥展开,并在随后进行所需的插入或查询操作。步骤二,布隆过滤器接收一系列插入或查询请求,并根据初始请求的元素长度进行元素预处理操作;步骤三,使用高级加密标准AES对预处理后的数据进行加密;具体的,在速度和安全性上具有优势的CTR计数器模式(CounterMode)下进行AES加密,利用指令集AES-NI支持的AES_CTR_Encrypt()函数进行文本加密操作。步骤四,确定布隆过滤器哈希函数的输出值;具体的,给定一个具有n个元素的集合A,选定一个可接受的误报概率p的情况下,最优的布隆过滤器长度m为:最优的哈希函数个数k:可知,当集合规模为n,选择的误报概率为p时,标准的布隆过滤器占用m个比特,所需哈希函数个数为k。对于一个具有m个比特的向量,一个既定的元素插入或查询操作,每个哈希函数fi(·),i∈{1,2,…,k}的输出都表示了m个比特中的一个位置。从而,每个哈希函数的长度l可以如下式计算:则将k个哈希函数串联起来得到的字符串的总长度L为:具体的,完成AES-CTR加密后,前l比特的密文将被当作第一个哈希函数f1(·)的输出值,随后是第二个哈希函数f2(·)的输出值,以此类推;得到不同参数设置下,布隆过滤器对应的各个哈希函数。步骤五,根据步骤四产生的哈希函数的输出值,完成布隆过滤器相应的插入或查询请求。本实施例基于加密算法的网络节点布隆过滤器构建及实现方法,首先进行AES加密的轮密钥扩展,完成轮密钥扩展后,检测布隆过滤器插入或查询操作的初始化元素大小,并根据元素输入长度进行相应的元素预处理操作。本文档来自技高网
...
一种基于加密算法的网络节点布隆过滤器构建及实现方法

【技术保护点】
一种基于加密算法的网络节点布隆过滤器构建及实现方法,其特征在于,通过计数器模式下的高级加密算法AES对布隆过滤器的插入、查询元素进行加密,近似得到布隆过滤器中所需的哈希流;通过对生成的哈希流进行截断输出,得到不同参数设置下,布隆过滤器所对应的各个哈希函数;具体实现流程包括:步骤一,设置布隆过滤器的加密密钥,并进行轮密钥扩展;步骤二,布隆过滤器接收一系列插入或查询请求,根据初始请求的元素长度进行元素预处理操作;步骤三,使用高级加密标准AES对预处理后的数据进行加密;步骤四,确定布隆过滤器哈希函数的输出值;步骤五,根据步骤四产生的哈希函数的输出值,完成布隆过滤器相应的插入或查询请求。

【技术特征摘要】
1.一种基于加密算法的网络节点布隆过滤器构建及实现方法,其特征在于,通过计数器模式下的高级加密算法AES对布隆过滤器的插入、查询元素进行加密,近似得到布隆过滤器中所需的哈希流;通过对生成的哈希流进行截断输出,得到不同参数设置下,布隆过滤器所对应的各个哈希函数;具体实现流程包括:步骤一,设置布隆过滤器的加密密钥,并进行轮密钥扩展;步骤二,布隆过滤器接收一系列插入或查询请求,根据初始请求的元素长度进行元素预处理操作;步骤三,使用高级加密标准AES对预处理后的数据进行加密;步骤四,确定布隆过滤器哈希函数的输出值;步骤五,根据步骤四产生的哈希函数的输出值,完成布隆过滤器相应的插入或查询请求。2.根据权利要求1所述一种基于加密算法的网络节点布隆过滤器构建及实现方法,其特征在于,所述步骤一,设置高级加密标准AES加密密钥,根据设置的AES加密密钥,轮密钥扩展利用指令集AES-NI支持的AES_Key_Expansion()函数,生成所有后续插入或查询操作所需AES加密过程的轮密钥值。3.根据权利要求2所述一种基于加密算法的网络节点布隆过滤器构建及...

【专利技术属性】
技术研发人员:张尧
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1