密钥查找设备、方法和计算机可读存储介质与流程

文档序号:13332551阅读:226来源:国知局
密钥查找设备、方法和计算机可读存储介质与流程

本发明涉及互联网网络通讯技术和电子电路技术,特别涉及密钥查找设备、方法和计算机可读存储介质。



背景技术:

随着计算机、网络技术以及密码学技术的快速发展,数据信息的安全性越来越备受人们的关注。通过加密技术对数据信息加密,给数据的传输带来很好的保护作用,只有指定的对象通过解密才能够看到数据信息。des(数据加密标准,dataencryptionstandard)加密技术是一种常用的对称加密技术,该加密技术具有算法公开,加密强度大,运算速度块的优点,在各行各业得到广泛的使用。

des算法主要有明文、密钥以及密文构成,以64位数据为分组对数据进行加密。64位的明文从算法的一端输入,中间经过密钥进行加密,64位的密文就从另一端输出。由于des算法是一个对称算法,因此,加密和解密使用同一种算法。密钥是任意56位的数,且可以在任意时候发生改变。如果已知了明文和密文,便可找出对应的密钥。目前查找des算法的密钥主要通过cpu软件实现,在软件实现查找des算法的密钥时计算速度较慢,同时在算法的安全性方面也会存在隐患。



技术实现要素:

针对现有技术中的缺陷,本发明提出了一种密钥查找设备及方法,既可以保证查找des密钥的计算速度,而且在安全性方面更有保证。

具体地,本发明提供了一种密钥查找设备,该设备包括:

cpu和至少一fpga;

所述cpu用于通过相应的通信接口发送明文和密文给与所述cpu连接的所有fpga;响应中断信息请求,读取所述fpga的正确密钥寄存器获取正确密钥;

所述至少一fpga用于接收所述cpu发送过来的明文和密文并将明文和密文分别存储于fpga的明文寄存器和密文寄存器中;通过穷举的方式确定正确密钥;将正确密钥信息存储在所述fpga的正确密钥寄存器中,并通过中断信息请求的方式上报给所述cpu。

作为上述技术方案的进一步改进,所述通信接口为sgmii、spi、i2c、uart、pci或gpio。

作为上述技术方案的进一步改进,所述至少一fpga与所述cpu之间采用级联方式连接。

作为上述技术方案的进一步改进,所述fpga采用并行处理方式确定正确密钥,每个fpga根据硬件特性划分为多个des流水处理。

具体地,本发明还提供了一种密钥查找方法,该方法包括:

cpu将明文和密文通过相应的通信接口发送给fpga;

所述fpga将接收到的明文和密文存储于fpga的寄存器中;

所述fpga通过穷举的方式确定正确密钥;

所述fpga将正确密钥信息存储在所述fpga的寄存器中,并通过中断信息请求的方式上报给所述cpu;

所述cpu收到所述中断信息请求,读取所述fpga的寄存器以获取正确密钥。

作为上述技术方案的进一步改进,所述fpga通过穷举的方式确定正确密钥具体包括:

所述fpga穷举所有可行密钥,利用密钥对寄存器中保存的明文进行加密处理得到新密文,并将所述新密文与寄存器中保存的密文进行比对,当比对一致时,该密钥就是正确密钥。

作为上述技术方案的进一步改进,所述fpga通过穷举的方式确定正确密钥具体包括:

所述fpga穷举所有可行密钥,利用密钥对寄存器中保存的密文进行解密处理得到新明文,并将所述新明文与寄存器中保存的明文进行比对;当比对一致时,该密钥就是正确密钥。

作为上述技术方案的进一步改进,所述fpga采用并行处理方式确定正确密钥,每个fpga根据硬件特性划分为多个des流水处理。

作为上述技术方案的进一步改进,所述des流水处理的深度为18。

具体地,本发明还提供了一种计算机可读存储介质,其存储有上述方法所使用的计算机程序。

本发明提供的技术方案,与已有的公知技术相比,至少具有如下有益效果:

(1)des密钥查找采用fpga硬件电路实现,数据不容易被恶意篡改,安全性更高。

(2)采用多个fpga级联,每个fpga并行处理多个des流水作业,每个des流水作业的深度为18,所以查找密钥速度更加快。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明一实施例提出的一种密钥查找设备的结构示意图;

图2为本发明一实施例提出的一种密钥查找设备的fpga并行处理流程图;

图3为本发明另一实施例提出的一种密钥查找设备的结构示意图;

图4为本发明一实施例提出的一种密钥查找方法的流程示意图。

主要元件符号说明:

10-cpu;11-fpga;111-密文寄存器;112-明文寄存器;113-密钥查找范围寄存器;114-正确密钥寄存器。

具体实施方式

在下文中,将更全面地描述本公开的各种实施例。本公开可具有各种实施例,并且可在其中做出调整和改变。然而,应理解:不存在将本公开的各种实施例限于在此公开的特定实施例的意图,而是应将本公开理解为涵盖落入本公开的各种实施例的精神和范围内的所有调整、等同物和/或可选方案。

在下文中,可在本公开的各种实施例中使用的术语“包括”或“可包括”指示所公开的功能、操作或元件的存在,并且不限制一个或更多个功能、操作或元件的增加。此外,如在本公开的各种实施例中所使用,术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。

在本公开的各种实施例中,表述“a或/和b中的至少一个”包括同时列出的文字的任何组合或所有组合。例如,表述“a或b”或“a或/和b中的至少一个”可包括a、可包括b或可包括a和b二者。

在本公开的各种实施例中使用的表述(诸如“第一”、“第二”等)可修饰在各种实施例中的各种组成元件,不过可不限制相应组成元件。例如,以上表述并不限制所述元件的顺序和/或重要性。以上表述仅用于将一个元件与其它元件区别开的目的。例如,第一用户装置和第二用户装置指示不同用户装置,尽管二者都是用户装置。例如,在不脱离本公开的各种实施例的范围的情况下,第一元件可被称为第二元件,同样地,第二元件也可被称为第一元件。

应注意到:如果描述将一个组成元件“连接”到另一组成元件,则可将第一组成元件直接连接到第二组成元件,并且可在第一组成元件和第二组成元件之间“连接”第三组成元件。相反地,当将一个组成元件“直接连接”到另一组成元件时,可理解为在第一组成元件和第二组成元件之间不存在第三组成元件。

在本公开的各种实施例中使用的术语“用户”可指示使用电子装置的人或使用电子装置的装置(例如,人工智能电子装置)。

在本公开的各种实施例中使用的术语仅用于描述特定实施例的目的并且并非意在限制本公开的各种实施例。如在此所使用,单数形式意在也包括复数形式,除非上下文清楚地另有指示。除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本公开的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本公开的各种实施例中被清楚地限定。

实施例1

本发明实施例1提出的一种密钥查找设备,如图1所示,该设备包括:一个cpu(centralprocessingunit,即中央处理器)10和一个fpga(field-programmablegatearray,即现场可编程门阵列)11。

cpu10用于通过相应的通信接口发送明文和密文给与fpga11;cpu10还用于响应中断信息请求,读取fpga11的正确密钥寄存器114获取正确密钥;

fpga11用于接收cpu10发送过来的明文和密文并将明文和密文分别存储于fpga11的明文寄存器112和密文寄存器111中;通过穷举的方式确定正确密钥;将正确密钥信息存储在fpga11的正确密钥寄存器114中,并通过中断信息请求的方式上报给cpu10。

cpu10与fpga11之间的通信方式可以为sgmii、spi、i2c、uart、pci、gpio等接口。该接口用于传送明文、密文信息,以及密钥查找范围信息。由于des的密钥可以是任意的56位的数,密钥具有256种可能性,如果穷举所有花费时间较长,如果事先能够明确明文和密文对应的密钥的范围可以有效缩短查找密钥的时间。

cpu10将64位的明文和密文传送给fpga11,在fpga11内部利用寄存器进行存储。具体地,利用密文寄存器111存储密文,利用明文寄存器112存储明文。将明文和密文信息存储在fpga11的寄存器上,可加快数据的读取速度,以便更加快速的查找出正确的密钥。

如果事先能够明确明文和密文对应的密钥的范围,可以通过cpu10将密钥的查找范围信息通过对应接口传送给fpga11,fpga11将该信息存储在fpga11的密钥查找范围寄存器113,这样fpga11就能在固定范围内进行密钥信息的遍历。如果cpu10不下发密钥查找范围信息,则fpga11默认选择从0开始进行穷举遍历,直到找到正确密钥信息。

如果fpga11查找到正确密钥后,通过中断上送的方式,告知cpu10已经查找到正确的des密钥。cpu10在获取到中断后,可以通过读取正确密钥寄存器114的方式,获取正确密钥。

fpga11采用并行处理方式确定正确密钥,fpga11根据硬件特性划分为多个des流水处理。例如:型号为xc7k325t-ffg900的fpga最大支持64个des流水处理。

为了加快正确密钥的查找速度,在同一个fpga里,会增加多个des流水处理,如图2所示。每个des流水处理使用同一明文,但是每个des流水处理所使用的密钥不同,n为整数。

确定正确密钥的详细处理方式如下:

(1)采用n条des计算流并行对明文进行加密操作,所有des计算流的明文输入一致。

(2)每条des计算流输入的密钥不一致,且不重合。

(3)每条des计算流计算完后,都会输出对应的密文,再将该密文与原始密文进行对比。

(4)如果其中一条des计算出的密文与原始密文比对完全匹配后,则产生find_key信号,说明已经找到正确密钥。

(5)在n条计算流中,只有有一条计算流产生find_key信号,则stop信号有效。

(6)stop信号输入控制des计算流停止后续所有的计算,直到cpu再次下发开始指令。

在本实施例中通过明文加密,对比密文确定正确密钥,其他实施例中,也可通过解密计算,使用密文进行输入,再将计算出的明文与原始明文进行对比,也可找到正确的密钥。

每个des流水处理包括:初始置换运算、16轮循环迭代运算、逆初始置换运算三个过程。

16轮循环迭代运算中的16轮运算做成流水外,开始的“初始置换运算”以及最后的“逆初始置换运算”也会单独做成流水线,总共有18级流水处理。即每个des流水处理的深度为18。

密钥的查找范围可由cpu控制,默认查找范围为:0~256。如果cpu已经明确密钥查找范围,并告诉fpga,则可以大大节省正确密钥的查找时间。

总的密钥查找区间,会被均匀地划分为n个小范围,送入n条des计算流中,进行加、解密计算。

在默认的256个密钥中,划分成n个密钥区间,分别为:0~[(256)/n];[(256)/n]~[(256)/n]*2;[(256)/n]*2~[(256)/n]*3;……;[(256)/n]*(n-1)~(256)。假设,cpu下发给fpga的密钥查找范围为100~900,则区间差为:△=900-100=800;假设fpga内部划分为4条des流水处理,则四个密钥区间分别为:100~300;300~500;500~700;700~900。这四个区间的密钥分别送入4个des计算流中。

实施例2

本发明实施例2提出的一种密钥查找设备,如图3所示,该设备包括:一个cpu和n个fpga。n个fpga与cpu之间采用级联方式连接。

如果只采用一个fpga进行des密钥的计算,那么能够增加的des计算流的个数有限的,从而导致无法更快的获取到正确的密钥。采用多个fpga同时进行des计算,从而加快了计算速度,使得能够更快的找到正确的des密钥值。

同时在所有的级联fpga内部,并不需要每个fpga的des流水处理个数都一致,每个fpga的des流水处理个数可具体根据fpga的资源的使用情况,来决定des流水处理的个数。

每个fpga都设有密文寄存器、明文寄存器、密钥查找范围寄存器、正确密钥寄存器。只要其中一个fpga计算出正确的密钥将会将正确密钥保存在其正确密钥寄存器中,并通知cpu,cpu就会从该fpga的正确密钥寄存器中获取des密钥。

实施例3

本发明实施例3提出的一种密钥查找方法,如图4所示,该方法包括如下步骤:

s11:cpu将明文和密文通过相应的通信接口发送给fpga;

通信接口包括:sgmii、spi、i2c、uart、pci以及gpio。

s12:所述fpga将接收到的明文和密文存储于fpga的寄存器中;

将明文和密文信息存储在fpga的寄存器上,可加快数据的读取速度,以便更加快速的查找出正确的密钥。

s13:所述fpga通过穷举的方式确定正确密钥。

所述fpga穷举所有可行密钥,可以利用密钥对寄存器中保存的明文进行加密处理得到新密文,并将所述新密文与寄存器中保存的密文进行比对,当比对一致时,该密钥就是正确密钥。

所述fpga穷举所有可行密钥,还可以利用密钥对寄存器中保存的密文进行解密处理得到新明文,并将所述新明文与寄存器中保存的明文进行比对;当比对一致时,该密钥就是正确密钥。

s14:所述fpga将正确密钥信息存储在所述fpga的寄存器中,并通过中断信息请求的方式上报给所述cpu;

s15:所述cpu收到所述中断信息请求,读取所述fpga的寄存器以获取正确密钥。

fpga采用并行处理方式确定正确密钥,每个fpga根据硬件特性划分为多个des流水处理。每个des流水处理包括:初始置换运算、16轮循环迭代运算、逆初始置换运算三个过程。每个des流水处理的深度为18。

本实施例还提供了一种计算机存储介质,用于储存上述方法使用的计算机程序。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

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