基于FPGA的密钥索引协商装置、系统及方法与流程

文档序号:15357656发布日期:2018-09-05 00:11阅读:195来源:国知局
本发明涉及点对点加密通信
技术领域
,尤其涉及一种基于fpga的密钥索引协商装置、系统及方法。
背景技术
:纵观密码学的发展历史,对数据的安全保护越来越呈现出基于密钥保密而不是算法保密这一新特点。因此对密钥的管理和使用就成为保障数据安全的重点,至于密钥管理在很多文献和书籍中都有专门论述,在此不再赘述,而密钥使用的方法还停留在比较传统的阶段,有足够的研究价值和提升空间。使用密钥的主要问题是密钥索引,即对于某个终端地址数据包的加解密,如何确定应该使用哪组密钥。目前一般的方法是将由所有地址及其对应的密钥索引组成的表项预制在一张全量映射表中,表项的主键为终端地址。在加解密时就可以根据终端地址的密钥索引来确定需要使用的密钥。但该方法存在诸多缺点,首先预制时必须要知道所有的终端地址,其次当终端地址和密钥索引的映射关系发生变化,映射表修改量太大。综上可知传统使用密钥的方法或系统中存在预制映射表不灵活、成本高和修改映射表工作量大的缺点。技术实现要素:鉴于上述的分析,本发明旨在提供一种基于fpga的密钥索引协商装置、系统及方法,解决了现有技术所存在的预制映射表不灵活、成本高和修改映射表工作量大的问题。本发明的目的主要是通过以下技术方案实现的:一方面,提供了一种基于fpga的密钥索引协商装置,包括fpga1和cpu1;所述fpga1包括片内ram1:fpga1,用于接收到待发送数据包时,搜索映射表中对端地址为ip2的表项,未搜索到,则通知cpu1新建密钥索引;还用于获取终端2发送的第二帧,并保存在片内ram1数据区,并通知cpu1处理;cpu1,用于执行:新建密钥索引;发送第一帧至终端2,所述第一帧包括终端1的密钥索引值、帧计数、ip1和ip2;接收到处理通知时,读出第二帧,将对端地址为ip2的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第二帧中的密钥索引值;发送第三帧至终端2,所述第三帧包括终端1的密钥索引值、帧计数、ip1和ip2。进一步,所述fpga1通过中断的方式通知cpu1。进一步,所述映射表包括表项索引、状态、本端地址、对端地址和密钥索引字段;所述状态字段用于表示密钥索引的协商状态,fin表示完成,new表示新建,ack表示响应。进一步,通过二次匹配算法对表项进行搜索查找;所述映射表采用具有地址冲突的冗余设置。进一步,所述新建密钥索引包括:将ip1和ip2写入片内ram1数据区;将ip2转换为h值,在映射表表项索引值为h值的位置添加状态为new的新表项。第二方面,提供了一种密钥索引协商方法,包括以下步骤:接收到待发送数据包,搜索映射表中对端地址为ip2的表项;未搜索到,则新建密钥索引;发送第一帧至终端2,所述第一帧包括终端1的密钥索引值、帧计数、ip1和ip2;获取终端2发送的第二帧,并保存;读出第二帧,将对端地址为ip2的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第二帧中的密钥索引值;发送第三帧至终端2,所述第三帧包括终端1的密钥索引值、帧计数、ip1和ip2。其中,ip1和ip2分别为终端1的ip地址、终端2的ip地址。第三方面,提供了一种基于fpga的密钥索引协商装置,包括fpga2和cpu2,fpga2包括片内ram2数据区;fpga2,用于捕获终端1发送的第一帧,并保存在片内ram2数据区;还用于捕获终端1发送的第三帧,并保存在片内ram2数据区;cpu2,用于执行:读出第一帧,查找对端地址为ip1的表项,添加或更新该表项的状态为ack,同时将该表项的密钥索引字段更新为第一帧中的密钥索引值;发送第二帧至终端1,所述第二帧包括终端2的密钥索引值、帧计数、ip1和ip2;读出第三帧,将对端地址为ip1的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第三帧中的密钥索引值。第四方面,提供了一种密钥索引协商方法,包括以下步骤:捕获终端1发送的第一帧,并保存;读出第一帧,查找对端地址为ip1的表项,添加或更新该表项的状态为ack,同时将该表项的密钥索引字段更新为第一帧中的密钥索引值;发送第二帧至终端1,所述第二帧包括终端2的密钥索引值、帧计数、ip1和ip2;捕获终端1发送的第三帧,并保存;读出第三帧,将对端地址为ip1的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第三帧中的密钥索引值。第五方面,提供了一种基于fpga的双方密钥索引协商系统,包括与终端1相连的上述第一方面提供的密钥索引协商装置和与终端2相连的上述第三方面提供的密钥索引协商装置。第六方面,提供了一种双方密钥索引协商方法,包括上述第二发明所提供的密钥索引协商方法和上述第四方面提供的密钥索引协商方法。上述方案的有益效果如下:在通信的两终端终端1处设置fpga1、cpu1;终端2处设置fpga2及cpu2;在fpga1中设置ram1,在fpga2中设置ram2,fpga1与fpga2间通过网络接口进行网络连接实现数据发送和密钥索引协商。只消耗极少网络开销的情况下,就能根据当前网络中的数据流,完成所需的密钥索引的协商。不仅大大提高了使用密钥索引的灵活性,而且不受网络拓扑的影响,即便是整个网络拓扑发生改变,密钥索引也会重新动态生成。软硬件结合,软件辅助硬件。fpga和cpu通过中断方式通知,通过片内ram进行数据共享,实现密钥索引的动态协商。映射表以[对端地址]为主键。地址转换确定了每个表的表项数量为1024个,少于传统设计中映射表的表项数量。地址转换结果即表项索引值,访问表项时直接通过索引值寻址,比传统的索引方式更快,避免大量时间消耗在逻辑运算上,大大提高匹配效率。采用简单高效的二次匹配算法设计映射表及表项查找,以极小的地址冲突代价,换来映射表减小的效果。由地址转换函数可知,存在多个地址转换结果相同的情况,仅用一个表来保存映射关系是远远不够的,所以在设计映射表的时候采用了具有地址冲突冗余功能的多表平行方法,一共使用四个映射表,允许多达四个冲突地址,对于地址转换结果相同的多个对端地址,可以分别放在四个映射表的h值位置。同时通过判断表项的命中计数值,定期清理不活动的表项,使映射表尽量处于空闲,保证地址冲突冗余功能,解决了地址冲突问题。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分的从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。附图说明附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。图1为本发明实施例1硬件结构图;图2为本发明实施例2流程图;图3为本发明实施例3硬件结构图;图4为本发明实施例4流程图;图5为本发明实施例5硬件网络结构图;图6为本发明实施例6密钥索引协商流程图。具体实施方式下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。密钥索引协商由通信的两终端终端1、终端2协商完成,终端1的ip地址、终端2的ip地址分别为ip1和ip2。实施例1如图1所示,本实施例涉及通信发起端即终端1处的密钥协商装置。终端1处设置fpga1、cpu1;fpga1包括片内ram1。fpga1,用于接收到待发送数据包时,搜索映射表中对端地址为ip2的表项,未搜索到,则通知cpu1新建密钥索引;还用于获取终端2发送的第二帧,并保存在片内ram1数据区,并通知cpu1处理;cpu1,用于执行:新建密钥索引后,发送第一帧至终端2,所述第一帧包括终端1的密钥索引值、帧计数、ip1和ip2;接收到处理通知时,读出第二帧,将对端地址为ip2的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第二帧中的密钥索引值;发送第三帧至终端2,所述第三帧包括终端1的密钥索引值、帧计数、ip1和ip2。采用带有片内ram的fpga进行数据共享,较好地实现了与终端2之间密钥索引的动态协商。所述装置能够与多种通信中断形成数据连接,不受网络拓扑结构的影响,适应性广;实时处理,时间开销小;掉电丢失,安全性好;处理灵活,扩展性强。fpga1通过中断的方式通知cpu1。通过中断方式通信实现了协商的动态实时性。第一帧告知对端建链信息、第二帧确认对端已响应并生效本端、第三帧告诉对端本端已生效并使对端生效。ram1中的映射表和数据区不是同一区域。fpga1从映射表中搜索主键值为ip2的表项时,映射表中存着ip2相关信息。而需要新建密钥索引时,ram1的数据区存储ip1+ip2相关信息。需要说明的是,映射表包括表项索引、状态、本端地址、对端地址和密钥索引字段;如表1所示,映射表主要字段说明如表2所示。表1映射表结构表项索引状态本端地址对端地址密钥索引命中计数0000010000…………………………102fin1684275716842852162308…………………………10230000表2映射表字段说明新建密钥索引可采用下述方式实现:将ip1和ip2写入片内ram1数据区;将ip2转换为h值,在映射表表项索引值为h值的位置添加状态为new的新表项。可以采用下述地址转换函数将述ip2转换为h值:h(ip2)=ip2.1+ip2.2+ip2.3+ip2.4其中,h(ip2)为转换后h值,ip2.1、ip2.2、ip2.3、ip2.4分别对应ip2地址点分十制的四个字节的值。映射表以[对端地址]为主键。地址转换确定了每个表的表项数量为1024个,少于传统设计中映射表的表项数量。地址转换结果即表项索引值,访问表项时直接通过索引值寻址,比传统的索引方式更快,避免大量时间消耗在逻辑运算上,大大提高匹配效率。示例性地,ip2=1.1.0.100(no.16842852),则h(ip2)=1+1+0+100=102。可选地,通过二次匹配算法对表项进行搜索查找。采用简单高效的二次匹配算法查找表项简单高效,以极小的地址冲突代价,换来映射表减小的效果。映射表采用具有地址冲突的冗余设置,采用多表平行方式。由地址转换函数可知,存在多个地址转换结果相同的情况,仅用一个表来保存映射关系是远远不够的,为解决冲突问题,可以在设计映射表的时候采用具有地址冲突冗余功能的多表平行方法,很好地解决了表项搜索所带来的的冲突问题。示例性地,本实施例可使用四个映射表,允许多达四个冲突地址,对于地址转换结果相同的多个对端地址,可以分别放在四个映射表的h值位置。还可以通过判断表项的命中计数值,定期清理不活动的表项,使映射表尽量处于空闲,保证地址冲突冗余功能,更好的解决地址冲突问题。实施例2如图2所示,本实施例涉及通信发送端即终端1处所实施的密钥协商方法。包括如下步骤:步骤s201、接收到待发送数据包,搜索映射表中对端地址为ip2的表项;步骤s202、未搜索到,则新建密钥索引;否则,结束。步骤s203、发送第一帧至终端2,所述第一帧包括终端1的密钥索引值、帧计数、ip1和ip2;步骤s204、获取终端2发送的第二帧,并保存;步骤s205、读出第二帧,将对端地址为ip2的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第二帧中的密钥索引值;步骤s206、发送第三帧至终端2,所述第三帧包括终端1的密钥索引值、帧计数、ip1和ip2。本实施例与实施例1采用相同的原理,其相同之处可相互借鉴,且能够实现相同的技术效果。实施例3本实施例涉及通信接收端即终端2处的密钥协商装置。终端2处设置fpga2和cpu2,fpga2包括片内ram2数据区。具体地,fpga2,用于捕获终端1发送的第一帧,并保存在片内ram2数据区;还用于捕获终端1发送的第三帧,并保存在片内ram2数据区;cpu2,用于执行:读出第一帧,查找对端地址为ip1的表项,添加或更新该表项的状态为ack,同时将该表项的密钥索引字段更新为第一帧中的密钥索引值;发送第二帧至终端1,所述第二帧包括终端2的密钥索引值、帧计数、ip1和ip2;读出第三帧,将对端地址为ip1的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第三帧中的密钥索引值。本实施例系统,动态实时地实现了与终端1的密钥索引协商,不受网络拓扑变化的影响,灵活性高,适应性广;实时处理,时间开销小;掉电丢失,安全性好;处理灵活,扩展性强。实施例4如图4所示,本实施例涉及通信发送端终端2处密钥索引协商方法,包括以下步骤:s401、捕获终端1发送的第一帧,并保存;s402、读出第一帧,查找对端地址为ip1的表项,添加或更新该表项的状态为ack,同时将该表项的密钥索引字段更新为第一帧中的密钥索引值;s403、发送第二帧至终端1,所述第二帧包括终端2的密钥索引值、帧计数、ip1和ip2;s404、捕获终端1发送的第三帧,并保存;s405、读出第三帧,将对端地址为ip1的表项状态添加或更新为fin,同时将该表项的密钥索引字段更新为第三帧中的密钥索引值。本实施例与实施例3基于相同的原理,相互之间可互相借鉴,且能够达到相同的效果。实施例5本实施例以通信双方交互说明完成密钥索引协商系统。其所基于的硬件体系结构如图5所示,即包括实施例1和实施例3双方系统。终端1处设置fpga1、cpu1;fpga1包括片内ram1;终端2处设置fpga2、cpu2;fpga2包括片内ram2;fpga1和fpga2采用网络互连;可为无线、有线多种网络连接方式,此处不一一赘述。本实施例系统,采用带有片内ram的fpga进行数据共享,较好地实现了密钥索引的动态协商,通过中断方式通信实现了协商的实时性。所述系统连接与通信双方之间,不受网络拓扑结构的影响,适应性广。实施例6本实施例以通信双方交互说明完成密钥索引协商的方法。具体步骤如图6所示,包括以下步骤:步骤s601:终端1待发送数据包通过fpga1时,fpga1在映射表中搜索对端地址为ip2的表项,如未搜索到,则通过中断通知cpu1进入步骤602新建密钥索引,并将发送端、接收端的ip地址ip1、ip2写入fpga1的ram1数据区;如搜索到,则结束协商;步骤s602:cpu1读出ram1数据区的ip1和ip2,将ip2转换为h值,在映射表的h值位置添加状态为new的新表项。步骤s603:cpu1将包括自己的密钥索引值、帧计数、ip1和ip2在内的信息组成第一帧发送。步骤s604:fpga2捕获通过的第一帧,保存到ram2的数据区并通过中断通知cpu2处理。步骤s605:cpu2从ram2数据区读出第一帧,查找对端地址为ip1的表项,添加或更新表项的状态为ack,同时将表项的密钥索引字段更新为第一帧中的密钥索引值。步骤s606:cpu2将包含自己的密钥索引值、帧计数、ip1和ip2在内的信息组成第二帧发往终端1。步骤s607:fpga1捕获通过的第二帧,保存到ram1的数据区并通过中断通知cpu1处理。步骤s608:cpu1从ram1数据区读出第二帧,查找对端地址为ip2的表项,更新表项的状态为fin,同时将表项的密钥索引字段更新为第二帧中的密钥索引值。步骤s609:cpu1将包含自己的密钥索引值、帧计数、ip1和ip2在内的信息组成第三帧发往终端2。步骤s610:fpga2捕获通过的第三帧,保存到ram2的数据区并通过中断通知cpu2处理。步骤s611:cpu2从ram2数据区读出第三帧,查找对端地址为ip1的表项,更新表项的状态为fin,同时将表项的密钥索引字段更新为第三帧中的密钥索引值。至此双方密钥协商完成。通过三次协商,两边都建立了对端的地址和密钥索引的映射关系。不仅大大提高了使用密钥索引的灵活性,而且不受网络拓扑的影响,即便是整个网络拓扑发生改变,密钥索引也会重新动态生成。映射表以[对端地址]为主键。地址转换确定了每个表的表项数量为1024个,少于传统设计中映射表的表项数量。地址转换结果即表项索引值,访问表项时直接通过索引值寻址,比传统的索引方式更快,避免大量时间消耗在逻辑运算上,大大提高匹配效率。需要说明的是,上述实施例之间,其相同或相似之处可相互借鉴。本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1