一种高速加解密引擎及加解密实现方法与流程

未命名 07-14 阅读:112 评论:0


1.本发明涉及密码领域,具体涉及一种基于新硬件架构实现的高速加解密引擎及加解密实现方法。


背景技术:

2.密码产品在现代通信系统中得到广泛应用,常见的产品包括服务器密码机、密码卡、ca系统等,作为密码产品主要包含两大功能,分别是密码运算、密钥管理。为了提高产品可靠性、方便维护,密码运算、密钥管理一般采用独立的模块实现,密码卡就是这样一款产品。在现有产品设计中,密码运算、密钥管理功能一般通过集成密码卡的方式实现,密码卡通常具有一个pci-e高速接口,只能为一个业务处理模块提供密码服务。密码卡硬件实现上主要有两种架构,一种是“dsp+fpga”的实现架构,另一种采用“dsp+密码算法芯片”的架构。
3.第一种架构中dsp主要实现密钥管理功能,fpga主要实现密码运算功能,相应硬件架构如图1所示。密码卡一般采用三层密钥结构,包括主密钥、密钥加密密钥和会话密钥,都由dsp进行管理。密码卡接收到业务处理模块服务调用指令,从dsp提取对应密钥传递给fpga,由fpga调用算法芯片实现密码运算,并返回结果给业务处理模块。
4.第二种架构中dsp主要实现密钥管理功能,密码算法芯片实现密码运算,相应硬件架构如图2所示。
5.目前,密码设备一般通过集成通用pci-e密码卡实现密码运算、密钥管理等功能。通过研究,发现现有技术中至少存在以下技术缺点:
6.(1)通用密码卡只能提供一个pci-e接口,无法同时为多个业务处理模块提供密码服务;
7.(2)二级、三级密钥在安全芯片内部存储,密码运算频繁切换密钥的时间开销多,业务处理延时大;
8.(3)密码卡提供密码服务未实现并行、多级流水处理,处理性能低。


技术实现要素:

9.针对现有技术中的不足之处,本发明通过提供多个物理通道为多个业务处理模块提供密码服务,解决密码卡只能提供单个业务通道的问题;二级密钥导入fpga内部进行缓存,会话密钥由fpga实现生命周期管理,可以减少密码运算所需密钥更新的时间开销,明显降低密码服务处理时延;采用fpga作为密码运算处理核心单元,实现多级并行流水处理,有效提升处理性能。
10.本发明的第一方面涉及一种高速加解密引擎,其包括fpga芯片、安全芯片、多个密码运算模块,其中:
11.所述fpga芯片被配置成允许通过多个服务接口接收来自多个业务处理模块的调用指令,并对所述调用指令进行解析以获得指令信息;
12.所述fpga芯片还被配置成允许根据所述指令信息中的密码服务类型以并行的方
式基于所述指令信息分类地进行密码运算处理,以及根据所述指令信息中的密码算法类型将密码运算处理结果发送至与所述密码算法类型对应的所述密码运算模块;
13.所述密码运算模块被配置成在所述密码算法类型下对所述指令信息中的业务数据进行密码运算,并输出密码运算结果;并且,
14.所述高速加解密引擎中设置有密钥,所述密钥包括主密钥、密钥加密密钥和会话密钥;
15.所述安全芯片被配置用于实现所述主密钥和所述密钥加密密钥的生命周期管理;
16.所述fpga芯片还被配置用于实现所述会话密钥的生命周期管理;
17.在执行所述密码运算前,所述密钥加密密钥被同步缓存到所述fpga芯片中。
18.进一步地,所述调用指令以应用接口函数的形式进行封装;并且/或者,所述密码服务类型包括对称加解密服务、杂凑运算服务、mac运算服务、非对称算法运算服务、随机数产生服务、签名服务、以及验签服务;并且/或者,所述指令信息包括所述密码服务类型、所述密码算法类型、所述业务数据、以及服务接口编号信息;并且/或者,所述密码算法类型包括sm2算法、sm3算法和sm4算法。
19.进一步地,所述fpga芯片设置有接口轮询调度模块和调用指令解析/封装模块;
20.所述接口轮询调度模块被配置成以轮询的方式查询所述服务接口的状态,并读取所述调用指令;
21.所述调用指令解析/封装模块被配置成对所述调用指令进行解析以获得所述指令信息。
22.更进一步地,所述fpga芯片还设置有密码服务分类调度模块和多个密码运算处理模块;
23.所述密码服务分类调度模块被配置成根据所述密码服务类型进行分类,并根据所述分类结果将所述指令信息发送给所述密码运算处理模块;
24.所述密码运算处理模块被配置成根据所述指令信息获得密码运算中间值、密钥、以及所述业务数据,并基于此生成协议帧。
25.更进一步地,所述fpga芯片还设置有仲裁模块,其被配置成对所述密码运算处理模块进行轮询,并按照顺序将所述协议帧发送给与所述密码算法类型对应的所述密码运算模块。
26.更进一步地,所述仲裁模块还被配置成将所述密码运算结果返回给与所述协议帧对应的所述密码运算处理模块;
27.所述密码运算处理模块还被配置成基于所述密码运算结果重新生成数据帧,并将所述数据帧发送给所述密码服务分类调度模块;
28.所述密码服务分类调度模块还被配置成将与所述调用指令对应的一个或多个所述数据帧中的数据合为一路,并将其发送给所述调用指令解析/封装模块;
29.所述调用指令解析/封装模块还被配置成对由所述密码服务分类调度模块返回的所述数据进行封装,并将其返回给所述接口轮询调度模块;
30.所述接口轮询调度模块还被配置成将返回的封装数据经所述服务接口返回给与所述调用指令对应的所述业务处理模块。
31.进一步地,本发明的高速加解密引擎还包括非易失性存储器,所述非易失性存储
器被配置用于缓存所述密钥、密码运算中间值、所述业务数据和随机数中的至少一个;并且/或者,还包括随机数产生模块,其用于产生真随机数以用于所述密钥的生成。
32.本发明的第二方面涉及一种高速加解密实现方法,其包括以下步骤:
33.通过多个服务接口并行地接收多个调用指令;
34.以轮询的方式读取所述调用指令,并对所述调用指令进行解析以获得指令信息;
35.按照密码服务类型进行分类,并以并行的方式,分类地基于所述指令信息进行密码运算处理,以生成协议帧;
36.按照密码算法类型进行分类,并以并行的方式,分类地基于所述协议帧进行密码运算,以生成密码运算结果。
37.进一步地,本发明的高速加解密实现方法还可以包括以下步骤:
38.按照所述密码服务类型进行分类,并以并行的方式,分类地基于所述密码运算结果生成数据帧;
39.按照所述调用指令将所述数据帧进行封装;
40.以及,经由所述服务接口返回封装数据。
41.优选地,本发明的高速加解密实现方法在上述高速加解密引擎中执行。
附图说明
42.下面结合附图对本发明的具体实施方式作进一步详细的说明。
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需使用的附图作简单地介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图来获得其他的附图。
44.图1示出了现有技术中的密码卡的一种架构;
45.图2示出了现有技术中的密码卡的另一种架构;
46.图3示出了根据本发明的高速加解密引擎的硬件框架图;
47.图4示出了根据本发明的高速加解密引擎及其实现方法中三级密钥体系的密钥缓存方式;
48.图5示出了根据本发明的高速加解密引擎及其实现方法中密码服务处理流程;
49.图6示出了根据本发明的高速加解密引擎及其实现方法中多级流水调度过程。
具体实施方式
50.在下文中,本发明的示例性实施例将参照附图来详细描述。下面的实施例以举例的方式提供,以便充分传达本发明的精神给本发明所属领域的技术人员。因此,本发明不限于本文公开的实施例。
51.图3示出了根据本发明的高速加解密引擎的硬件框架图。
52.如图所示,本发明的高速加解密引擎可以同时高速地处理由多个业务处理模块提出要求的密码服务,这些密码服务可以包括但不限于对称加解密服务、杂凑运算服务、mac运算服务、非对称算法运算服务、随机数产生服务、签名服务、以及验签服务等。
53.业务处理模块可以经由服务接口向fpga芯片发送调用指令,以向fpga芯片传达其
要求的密码服务。如图所示,本发明的加解密引擎允许多个业务处理模块通过多个服务接口并行地与fpga芯片进行数据交换,从而具备同时处理多项密码服务的能力。
54.调用指令可以以应用接口函数的形式进行封装。其中,应用接口函数可以根据服务接口的具体类型进行定义。
55.在本发明中,调用指令可以包括密码服务类型、业务数据、控制信息、密码算法类型、流程控制信息等指令信息。其中,业务数据可以包括由业务处理模块调用加解密引擎以实现相应密码算法运算的数据。密码服务类型可以包括例如密钥管理类、非对称密码运算类、对称密码运算类、杂凑运算类等类型。密码算法可以包括例如sm2/3/4算法。
56.此外,为了方便地区别不同的业务处理模块,此处的调用指令还可以包括服务接口编号信息。
57.在一种优选实施方式中,服务接口可以采用高速串行接口,例如serdes(串行器/解串器)接口。
58.当fpga芯片经由服务接口接收到来自业务处理模块的调用指令时,fpga芯片对调用指令进行解析以获得相应的指令信息,根据指令信息调用相应的密钥和密码算法实现相应的密码运算,并将运算结果返回给相应的业务处理模块。
59.在本发明中,为了能够同时处理多种密码服务,高速加解密引擎中可以设置有多个密码运算模块,其例如可以借助算法芯片的形式来实现,诸如sm4算法芯片,sm2/3算法芯片等等,如图3所示。
60.因此,当fpga芯片通过对调用指令进行解析获得相应的指令信息时,可以根据指令信息中的密码算法类型,调用相应的密钥和业务数据一起发送给相应的密码运算模块,以便在该密码运算模块中基于相应的密码算法利用密钥实现对业务数据的密码运算。例如,当业务处理模块1通过服务接口1向fpga芯片发送调用指令以期望对业务数据进行关于sm4算法的加解密运算时,fpga芯片可以基于调用指令的解析结果,调用相应的密钥和业务数据发送至sm4算法芯片,以在sm4算法芯片中利用密钥对业务数据进行关于sm4算法的加解密运算。
61.本发明将采用三级密钥体系,即,本发明的高速加解密引擎中将设置有主密钥、密钥加密密钥和会话密钥等三级密钥。
62.为了生成密钥,本发明的高速加解密引擎中还可以设置有随机数产生模块,其产生真随机数以用于密钥的生成。作为示例,随机数产生模块可以包括真随机数芯片。
63.为了安全地建立三级密钥体系,本发明的高速加解密引擎中设置有安全芯片,其被用于实现主密钥和密钥加密密钥的生命周期管理;同时,会话密钥的生命周期管理由fpga芯片来实现。其中,密钥的生命周期是指密钥从产生到最终销毁的整个过程,例如,密钥的生命周期管理可以包括密钥生成、密钥安装、密钥存储、密钥使用、密钥销毁等操作。此外,安全芯片还可以被用于实现用户身份鉴别等功能。
64.为了提高密码运算处理性能,使得能够高速地同时处理多项密码服务,在本发明的加解密引擎中,在执行密码运算前,例如当合法用户登陆时,可以将安全芯片内的密钥加密密钥同步存储到fpga芯片内部的缓存当中,例如图4所示那样。由此,当需要执行密码运算时,二级和三级密钥都在fpga芯片内有缓存,由此可以减少密码运算过程中更换密钥带来的时间开销,有效降低密码服务的延时,极大提高引擎的运算速度,这对于多任务同步并
行处理的实现极其有利。
65.下面结合图5和图6具体描述本发明的高速加解密引擎中fpga芯片的工作流程。
66.如图5所示,面对多个业务处理模块发出的调用指令,在fpga芯片中,采用轮询的方式查询各个服务接口的状态,读取下一个待处理的调用指令,并对调用指令(应用接口函数)进行解析,从而获得相应的指令信息。
67.在一种实施方式中,如图6所示,可以在fpga芯片中设置接口轮询调度模块和调用指令解析/封装模块。其中,接口轮询调度模块以轮询的方式查询各个服务接口的状态,并读取调用指令。调用指令解析/封装模块对调用指令(应用接口函数)进行解析,获得相应的指令信息,例如密码服务类型、业务数据、控制信息、密码算法类型、流程控制信息、服务接口编号信息等。
68.继续参见图6,还可以在fpga芯片中设置密码服务分类调度模块,用于根据密码服务类型等指令信息对密码服务进行分类,并根据密码服务分类结果将相应的指令信息转发给相应的密码运算处理模块。例如,一个调用指令中可能涉及多种密码服务类型,密码服务分类调度模块可以对调用指令中的密码服务进行分类,根据密码服务类型将相应的指令信息发送给不同的密码运算处理模块(或称密码运算单元),以便在不同的密码运算模块中完成与密码服务类型相应的密码运算,最终实现该调用指令中需要的所有密码服务。
69.至此,完成了密码服务处理过程中的第一级调度。
70.在密码运算处理模块中,根据指令信息获得相应的密码运算中间值,密钥,以及业务数据、控制信息、密码算法、流程控制信息等数据。例如图5所示,可以根据密钥地址信息从相应的密钥缓存区中获取密钥。密码运算中间值可以例如是在调用应用接口函数时产生的数据,例如在数字签名过程中生成的哈希(hash)值。
71.继续参见图6,在获得上述数据之后,密码运算处理模块可以基于(但不限于)密钥、密码运算中间值和业务数据等生成协议帧,并依据密码算法的类型将所生成的协议帧发送给仲裁模块。
72.仲裁模块可以对各个密码运算处理模块进行轮询,并按照顺序将由密码运算处理模块输出的协议帧转送给相应的密码运算模块(例如算法芯片)。至此,完成密码服务处理过程中的第二级调度。
73.在密码运算模块中,基于预设的密码算法利用密钥对业务数据进行密码运算,并将运算结果输出给仲裁模块。
74.仲裁模块将密码运算模块输出的运算结果返回给相应的密码运算处理模块。
75.在密码运算处理模块中,将基于返回的运算结果重新生成数据帧,并将数据帧发送给密码服务分类调度模块。
76.在密码服务分类调度模块中,将属于同一调用指令、但可能来自一个或多个密码运算处理模块的数据帧中的数据合为一路,并将其发送给调用指令解析/封装模块。
77.至此,完成密码服务处理结果输出过程中的第一级调度。
78.在调用指令解析/封装模块中,对密码服务分类调度模块返回的数据进行封装,例如形成应用接口函数,并将封装的应用接口函数发送至接口轮询调度模块。
79.在接口轮询调度模块中,根据返回的应用接口函数将其经由相应的服务接口返回至相应的业务处理模块。
80.由此,完成密码服务处理结果输出过程中的第二级调度。
81.在本发明中,诸如密钥、密码运算中间值、业务数据、随机数等数据可以存在fpga芯片的缓存中。
82.在一个优选实施例中,还可以在加解密引擎中设置非易失性存储器(例如ddr存储器),用于缓存诸如密钥、密码运算中间值、业务数据、随机数等数据,以满足大数据量的需求。
83.下面将通过描述根据本发明的高速加解密实现方法来进一步解释本发明的工作原理。出于简洁的原因,与上文相同的内容将不再赘述。
84.在本发明的高速加解密实现方法中,可以由多个业务处理模块通过多个服务接口(例如fpga芯片上的serdes接口)并行地向fpga芯片发送调用指令。
85.在fpga芯片中,可以由例如接口轮询调度模块按照预设规则(例如轮询的方式)读取各个服务接口处的调用指令,并例如由调用指令解析/封装模块对调用指令进行解析以获得指令信息。
86.接着,在fpga芯片中,可以例如由密码服务分类调度模块对指令信息进行密码服务分类;并且,可以根据密码服务类型例如在不同的密码运算处理模块中基于相应的指令信息进行密码运算处理。在本发明中,由于多个密码运算处理模块的存在,使得多个密码运算处理可以并行地执行。因此,使得同时处理来自一个或多个调用指令的不同密码服务成为可能,极大地提高运算效率。作为示例,在密码运算处理中,可以基于(但不限于)密钥、密码运算中间值和业务数据等生成协议帧。
87.随后,在fpga芯片中,可以根据密码算法类型的不同并行地对不同的密码运算处理结果(例如协议帧)在相应的密码算法下执行密码运算,以获得运算结果。例如,可以设置多个用于执行相同或不同密码算法运算的密码运算模块(算法芯片),用以同时处理多个密码运算处理结果。
88.当完成密码运算后,基于不同密码运算处理结果的运算结果被返回至例如相应的密码运算处理模块。然后,将对应于相同调用指令的一个或多个运算结果封装在一起(例如生成应用接口函数),并将经封装的运算结果返回给相应的业务处理模块。
89.在本发明的实现方法中将采用三级密钥体系,其中主密钥和密钥加密密钥可以存储在例如安全芯片中,会话密钥存储在fpga芯片。并且,在执行密码运算时,密钥加密密钥可以事先缓存在fpga芯片中。
90.由此可见,本发明将fpga芯片与安全芯片相结合,通过多通道密码服务调用和多密码运算模块并行运算的方式,有效提升密码运算处理性能,减少处理延迟。
91.在本发明的高速加解密引擎和实现方法中,可以采用多个物理通道由同一fpga芯片为不同业务处理模块提供密码服务,大幅提高硬件资源使用效率;密钥缓存与密码运算控制在同一个芯片内实现,大幅降低密钥更新/切换的时间开销,有效降低密码服务处理时延;同时,密码运算执行过程利用fpga芯片并行处理的特性,采用多级并行流水的密码运算运行机制,有效提升处理性能。
92.尽管前面结合附图通过具体实施例对本发明进行了说明,但是,本领域技术人员容易认识到,上述实施例仅仅是示例性的,用于说明本发明的原理,其并不会对本发明的范围造成限制,本领域技术人员可以对上述实施例进行各种组合、修改和等同替换,而不脱离
本发明的精神和范围。

技术特征:
1.一种高速加解密引擎,其包括fpga芯片、安全芯片、多个密码运算模块;所述fpga芯片被配置成允许通过多个服务接口接收来自多个业务处理模块的调用指令,并对所述调用指令进行解析以获得指令信息;所述fpga芯片还被配置成允许根据所述指令信息中的密码服务类型以并行的方式基于所述指令信息分类地进行密码运算处理,以及根据所述指令信息中的密码算法类型将密码运算处理结果发送至与所述密码算法类型对应的所述密码运算模块;所述密码运算模块被配置成在所述密码算法类型下对所述指令信息中的业务数据进行密码运算,并输出密码运算结果;其中,所述高速加解密引擎中设置有密钥,所述密钥包括主密钥、密钥加密密钥和会话密钥;所述安全芯片被配置用于实现所述主密钥和所述密钥加密密钥的生命周期管理;所述fpga芯片还被配置用于实现所述会话密钥的生命周期管理;在执行所述密码运算前,所述密钥加密密钥被同步缓存到所述fpga芯片中。2.如权利要求1所述的高速加解密引擎,其中:所述调用指令以应用接口函数的形式进行封装;并且/或者,所述密码服务类型包括对称加解密服务、杂凑运算服务、mac运算服务、非对称算法运算服务、随机数产生服务、签名服务、以及验签服务;并且/或者,所述指令信息包括所述密码服务类型、所述密码算法类型、所述业务数据、以及服务接口编号信息;并且/或者,所述密码算法类型包括sm2算法、sm3算法和sm4算法。3.如权利要求1所述的高速加解密引擎,其中,所述fpga芯片设置有接口轮询调度模块和调用指令解析/封装模块;所述接口轮询调度模块被配置成以轮询的方式查询所述服务接口的状态,并读取所述调用指令;所述调用指令解析/封装模块被配置成对所述调用指令进行解析以获得所述指令信息。4.如权利要求3所述的高速加解密引擎,其中:所述fpga芯片还设置有密码服务分类调度模块和多个密码运算处理模块;所述密码服务分类调度模块被配置成根据所述密码服务类型进行分类,并根据所述分类结果将所述指令信息发送给所述密码运算处理模块;所述密码运算处理模块被配置成根据所述指令信息获得密码运算中间值、密钥、以及所述业务数据,并基于此生成协议帧。5.如权利要求4所述的高速加解密引擎,其中,所述fpga芯片还设置有仲裁模块,其被配置成对所述密码运算处理模块进行轮询,并按照顺序将所述协议帧发送给与所述密码算法类型对应的所述密码运算模块。6.如权利要求5所述的高速加解密引擎,其中,所述仲裁模块还被配置成将所述密码运算结果返回给与所述协议帧对应的所述密码运算处理模块;所述密码运算处理模块还被配置成基于所述密码运算结果重新生成数据帧,并将所述数据帧发送给所述密码服务分类调度模块;
所述密码服务分类调度模块还被配置成将与所述调用指令对应的一个或多个所述数据帧中的数据合为一路,并将其发送给所述调用指令解析/封装模块;所述调用指令解析/封装模块还被配置成对由所述密码服务分类调度模块返回的所述数据进行封装,并将其返回给所述接口轮询调度模块;所述接口轮询调度模块还被配置成将返回的封装数据经所述服务接口返回给与所述调用指令对应的所述业务处理模块。7.如权利要求1所述的高速加解密引擎,其还包括非易失性存储器,所述非易失性存储器被配置用于缓存所述密钥、密码运算中间值、所述业务数据和随机数中的至少一个;并且/或者,还包括随机数产生模块,其用于产生真随机数以用于所述密钥的生成。8.一种高速加解密实现方法,其包括以下步骤:通过多个服务接口并行地接收多个调用指令;以轮询的方式读取所述调用指令,并对所述调用指令进行解析以获得指令信息;按照密码服务类型进行分类,并以并行的方式,分类地基于所述指令信息进行密码运算处理,以生成协议帧;按照密码算法类型进行分类,并以并行的方式,分类地基于所述协议帧进行密码运算,以生成密码运算结果。9.如权利要求8所述的高速加解密实现方法,其还包括以下步骤:按照所述密码服务类型进行分类,并以并行的方式,分类地基于所述密码运算结果生成数据帧;按照所述调用指令将所述数据帧进行封装;以及,经由所述服务接口返回封装数据。10.如权利要求9所述的高速加解密实现方法,其在如权利要求1-7中任一项所述的高速加解密引擎中执行。

技术总结
本发明涉及高速加解密引擎及加解密实现方法,其中通过提供多个物理通道为多个业务处理模块提供密码服务,解决密码卡只能提供单个业务通道的问题;二级密钥导入FPGA芯片内部进行缓存,会话密钥由FPGA芯片实现生命周期管理,可以减少密码运算所需密钥更新的时间开销,明显降低密码服务处理时延;采用FPGA芯片作为密码运算处理核心单元,实现多级并行流水处理,有效提升处理性能。有效提升处理性能。有效提升处理性能。


技术研发人员:周杰 郝立燕 厉彦忠
受保护的技术使用者:山东量子科学技术研究院有限公司
技术研发日:2021.12.30
技术公布日:2023/7/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐