一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据加解密组件、相关装置和方法与流程

2021-11-22 13:59:00 来源:中国专利 TAG:


1.本公开涉及芯片领域,具体而言,涉及一种数据加解密组件、相关装置和方法。


背景技术:

2.为提高存储空间、降低产品成本,越来越多的片上系统(system

on

a

chip,soc)使用外部存储器来存储程序代码等数据。为了实现数据的安全性,需要对存储在外部存储器的数据进行加密。从内部存储器将目标数据写入外部存储器前需要利用加密密钥对明文数据进行加密。从外部存储器将目标数据读取到内部存储器前需要利用解密密钥对密文数据进行解密。外部存储器可以是串口外部存储器,也可以是并口外部存储器。并口外部存储器比串口外部存储器在加解密时延和数据吞吐率方面的要求更严格。如何在并口外部存储器的读写方面不增加额外加解密时延,并且保证分组数据吞吐率,成为一个难题。


技术实现要素:

3.有鉴于此,本公开的一个目的是减少对并口外部存储器的读写的额外加解密时延,并保证分组数据吞吐率。
4.根据本公开的一方面,提供了一种数据加解密组件,用于对写入外部存储器的数据进行加解密操作,包括:
5.密钥流生成单元,用于基于物理地址产生密钥流,其中,所述物理地址是目标数据存储在所述外部存储器的地址,所述密钥流生成单元包括多级顺序连接的流水执行单元,其中,第一级流水执行单元基于所述物理地址、和与第一级流水执行单元相应的级密钥,产生到下一级流水执行单元的输出;之后的流水执行单元基于前一级流水执行单元的输出、和与该流水执行单元相应的级密钥,产生到下一级流水执行单元的输出,最后一级流水执行单元输出产生的密钥流,所述多级流水执行单元按顺序各占用一个时钟周期执行;
6.加解密单元,用于利用所述密钥流,对待加密明文数据加密或对待解密密文数据解密。
7.可选地,所述密钥流生成单元包括:
8.多个流水执行单元序列,每个所述流水执行单元序列由所述多级顺序连接的流水执行单元中的一个或多个组成;
9.并口转换部件,用于将所述物理地址分成多个物理地址片段,每个物理地址片段对应于所述流水执行单元序列中的一个,
10.其中,在各个所述流水执行单元序列中,
11.第一级流水执行单元具有接收相应物理地址片段的第一输入端、接收与第一级流水执行单元相应的级密钥的第二输入端、和产生到下一级流水执行单元的输出的输出端;
12.之后的流水执行单元具有接收前一级流水执行单元的输出的第一输入端、接收与该流水执行单元相应的级密钥的第二输入端、和产生到下一级流水执行单元的输出的输出端,
13.最后一级流水执行单元的输出端输出该流水执行单元序列产生的密钥流片段,各个流水执行单元序列产生的密钥流片段级联后得到产生的密钥流。
14.可选地,所述流水执行单元序列中的每个流水执行单元还具有接收为该流水执行单元分配的随机数的第三输入端,所述流水执行单元根据所述第一输入端、第二输入端、第三输入端的输入产生所述输出端的输出。
15.可选地,所述并口转换部件具有选通信号接收端,用于接收选通信号,所述选通信号包括多个选通位,所述多个选通位中的每一个用于指示所述多个流水执行单元序列中相应流水执行单元序列的工作状态,
16.其中,选通位有效表示相应的流水执行单元序列工作,则将所述对应的物理地址片段送入该流水执行单元序列;
17.反之,选通位无效,相应的流水执行单元序列停止工作。
18.可选地,所述加解密单元包括:
19.第一延时单元,用于将待加密明文数据延时n个时钟周期,n为所述流水执行单元序列中包含的流水执行单元的个数;
20.第一异或单元,用于将延时后的待加密明文数据和所述密钥流进行异或,得到密文数据。
21.可选地,所述加解密单元还包括:第二延时单元,用于将所述物理地址延时n个时钟周期发出;
22.所述数据加解密部件还包括:片外存储控制器,用于将第一异或单元得到的密文数据写入第二延时单元延时后发出的所述物理地址。
23.可选地,所述加解密单元包括:
24.第三延时单元,用于将待解密密文数据延时n个时钟周期,n为所述流水执行单元序列中包含的流水执行单元数;
25.第三异或单元,用于将延时后的待解密密文数据和所述密钥流进行异或,得到明文数据。
26.可选地,该数据加解密组件还包括:
27.比较器,用于对所述待加密明文数据或待解密密文数据的宽度与所述密钥流的宽度进行比较;
28.宽度调节器,用于根据宽度比较结果,对所述密钥流的宽度进行调整。
29.可选地,所述宽度调节器包括:
30.截取器,用于如果所述密钥流的宽度大于所述待加密明文数据或待解密密文数据的宽度,按照第一规则截取所述密钥流,使得所述密钥流的宽度等于所述待加密明文数据或待解密密文数据的宽度;
31.补位器,用于如果所述密钥流的宽度小于所述待加密明文数据或待解密密文数据的宽度,按照第二规则给所述密钥流补位,使得所述密钥流的宽度等于所述待加密明文数据或待解密密文数据的宽度。
32.可选地,该数据加解密组件还包括:与流水执行单元对应的级密钥合成单元,用于基于初始密钥和该流水执行单元的标识合成所述级密钥。
33.根据本公开的一方面,提供了一种片上系统,包括:如上所述的数据加解密组件;
处理单元;处理单元;片内存储器。
34.根据本公开的一方面,提供了一种片上系统,包括:如上所述的数据加解密组件;处理单元,具有片内存储器。
35.根据本公开的一方面,提供了一种计算装置,包括如上所述的数据加解密组件。
36.根据本公开的一方面,提供了一种数据加解密方法,用于对写入外部存储器的数据进行加解密操作,包括:
37.通过多级顺序连接的流水执行单元基于物理地址产生密钥流,其中,所述物理地址是目标数据存储在所述外部存储器的地址,其中,第一级流水执行单元基于所述物理地址、和与第一级流水执行单元相应的级密钥,产生到下一级流水执行单元的输出;之后的流水执行单元基于前一级流水执行单元的输出、和与该流水执行单元相应的级密钥,产生到下一级流水执行单元的输出,最后一级流水执行单元输出产生的密钥流,所述多级流水执行单元按顺序各占用一个时钟周期执行;
38.利用所述密钥流,对待加密明文数据加密或对待解密密文数据解密。
39.本公开实施例中,密钥流无需事先存储在特定存储位置。在需要加解密时,密钥流生成单元现场基于要读写的物理地址产生密钥流,而要读写的物理地址是不变的,使得读写时采用的密钥流也是一致的,在保证加解密同步的前提下节约了存储空间,减少了在存储了大量密钥流的存储空间中搜索需要的密钥流造成的加解密时延。相对于串口片外存储器的方式,它将加解密的过程分成多级流水执行单元去执行,第一级流水执行单元根据物理地址和相应级密钥产生到下一级流水执行单元的输出,之后的流水执行单元都根据上一级流水执行单元的输出和相应级密钥产生到下一级流水执行单元的输出,每个流水执行单元各占一个周期。这样,可以将一个密钥流的生成过程分成不同阶段让不同的时钟周期去执行,而其它密钥流的生成过程也可以分成不同阶段让同样的这些时钟周期去执行。也就是说,同一时钟周期能够同时执行不同密钥流生成的某个阶段,实现了复用同一时钟周期生成不同密钥流。相对于一个密钥流生成后才开始生成另一个密钥流的方式,在并口片外存储器数据访问场景下,大大减少了额外加解密时延,并且保证了分组数据吞吐率。
附图说明
40.通过参考以下附图对本公开实施例的描述,本公开的上述以及其它目的、特征和优点将更为清楚,在附图中:
41.图1是本公开一个实施例所应用的数据中心的结构图;
42.图2是根据本公开一个实施例的计算装置的内部结构图;
43.图3是根据本公开另一个实施例的计算装置的内部结构图;
44.图4是根据本公开一个实施例的数据加解密组件的内部结构图;
45.图5是根据本公开另一个实施例的数据加解密组件的内部结构图;
46.图6是根据本公开一个实施例的密钥流生成单元的内部结构图;
47.图7是根据本公开一个实施例的流水执行单元与轮运算的关系图;
48.图8是根据本公开一个实施例的各信号的时序图;
49.图9是根据本公开一个实施例的数据加解密方法的流程图。
具体实施方式
50.以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
51.在本文中使用以下术语。
52.计算装置:具有计算或处理能力的设备,它可以体现为终端的形式,如物联网设备、移动终端、桌上电脑、膝上电脑等,也可以体现为服务器或服务器组成集群。在数据中心的环境下,计算装置是数据中心中的服务器。在物联网的环境下,计算装置是物联网中的物联网终端。
53.片上系统:具有处理能力的单元和外围电路封装成片,在单个芯片上集成一个完整的系统,可以插入计算装置或从计算装置中更换。
54.处理器:位于计算装置或片上系统内,用于执行传统计算处理(非神经网络处理,非图形处理等)的指令的单元。
55.调度单元:在计算装置或片上系统中进行传统处理(非用于图像处理和各种深度学习模型等复杂运算的处理)之外,还承担着对加速单元的调度职能的单元。其向加速单元分配加速单元需要承担的任务。调度单元可以采用中央处理器(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等多种形式。
56.加速单元:针对传统处理单元在一些专门用途的领域(例如,处理图像、处理深度学习模型的各种运算,等等)效率不高的情况,为了提高在这些专门用途领域中的数据处理速度而设计的处理单元。加速单元也称为人工智能(ai)处理单元,包括中央处理器(cpu)、图形处理器(gpu)、通用图形处理器(gpgpu)、现场可编程门阵列(fpga)、专用集成电路(asic)、以及专用智能加速硬件(例如,神经网络处理器npu)。本公开可以适用于npu场景,但本公开实施例采用通用编译自定义接口,加速单元硬件实现上可以采用上述cpu、gpu、gpgpu等。
57.内部存储器:位于计算装置或片上系统内,用于存储信息的物理结构。按照用途的不同,计算装置或片上系统可用的存储器可以分为主存储器(即内部存储器)和辅助存储器(即本公开实施例的外部存储器)。内部存储器用于存储由数据信号表示的指令信息和/或数据信息,例如用于存放处理器提供的数据,也可用于实现处理器与外部存储器之间的信息交换。外部存储器提供的信息需要被调入内部存储器中才能被处理器访问。
58.外部存储器:即上述辅助存储器,位于计算装置或片上系统外。外部存储器中为了安全起见存储密文数据。这样,当将数据存入外部存储器时需要加密,当将密文数据调回内部存储器时需要解密。
59.数据加解密组件:位于计算装置或片上系统内,用于如上所述,在外部存储器提供的信息被读入计算装置或片上系统中时对密文数据解密,在计算装置或片上系统提供的明文数据被写入外部存储器时对明文数据加密。
60.本公开的应用环境
61.本公开实施例提出了一种外部存储器的数据加解密方案。整个数据加解密方案相对较为通用,可以用于访问外部存储器的各种硬件设备,例如,用于数据中心、用于ai(人工
智能)加速单元,用于gpu(图形处理单元),用于能执行深度学习模型的iot(物联网)设备,嵌入式设备等。该数据加解密方法与数据加解密组件最终部署在的硬件无关。但为了示例性描述,下文中将主要以数据中心为应用场景进行描述。本领域技术人员应当理解,本公开实施例还可以适用于其它的应用场景。
62.数据中心
63.数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传递、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。随着数据中心应用的广泛化,数据中心的数据安全越来越被重视。
64.在传统的大型数据中心,网络结构通常如图1所示,即互连网络模型(hierarchical inter

networking model)。这个模型包含了以下部分:
65.服务器140:各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。
66.接入交换机130:接入交换机130是用来让服务器140接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(top of rack)交换机,它们物理连接服务器。
67.汇聚交换机120:每台汇聚交换机120连接多台接入交换机130,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
68.核心交换机110:核心交换机110为进出数据中心的包提供高速的转发,为汇聚交换机120提供连接性。整个数据中心的网络分为l3层路由网络和l2层路由网络,核心交换机110为通常为整个数据中心的网络提供一个弹性的l3层路由网络。
69.通常情况下,汇聚交换机120是l2和l3层路由网络的分界点,汇聚交换机120以下的是l2网络,以上是l3网络。每组汇聚交换机管理一个传送点(pod,point of delivery),每个pod内都是独立的vlan网络。服务器在pod内迁移不必修改ip地址和默认网关,因为一个pod对应一个l2广播域。
70.汇聚交换机120和接入交换机130之间通常使用生成树协议(stp,spanning tree protocol)。stp使得对于一个vlan网络只有一个汇聚层交换机120可用,其他的汇聚交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚交换机120的层面,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
71.计算装置
72.由于服务器140才是数据中心真实的处理设备,图2示出了一个服务器140(计算装置141)的结构框图。计算装置141包括存储器24、处理器22和数据加解密组件300。外部存储器350是计算装置141之外的存储器,为了提高安全性,外部存储器350存储密文数据。在一些实施例中,每个处理器22可以包括用于处理指令的一个或多个处理器核220。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。在一些实施例中,如图2所示,处理器22可以包括高速缓冲存储器28(图2中示出了l1、l2、l3三层高速缓存),它用于存储一些处理器核220常用的指令或数据。
73.在一些实施例中,处理器22包括寄存器堆226(register file),寄存器堆226可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆226可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存
器等。
74.处理器22可以包括内存管理单元(memory management unit,mmu)222,用于实现虚拟地址到物理地址的转译。
75.处理器22用于执行指令序列(即程序)。处理器22执行每个指令的过程包括:从存放指令的存储器中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停机指令。为了实现上述过程,处理器22可以包含取指令单元224、指令译码单元225、指令执行单元221等。取指令单元224用于将指令从存储器24和/或片外存储器350中取出,并接收下一个取指地址或根据取指算法计算获得下一个取指地址。指令译码单元225按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息。指令执行单元221利用所述操作数执行所述指令。指令执行单元221可以是运算单元(例如包含算术逻辑单元,矢量运算单元等)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据等)以及协处理器等。
76.在一些实施例中,图2所示的数据加解密组件300包括总线互联310、协议解析单元320、密钥流生成单元360、加解密单元370、总线互联330和片外存储控制器340。注意,图2中仅示出了数据加解密组件300的一些主要部件。数据加解密组件300中还含有比较器380、宽度调节器390、密钥合成单元354等其它部件,它们将结合图4

6在后文中详细描述。在一些实施例中,在计算装置141访问外部存储器350的过程中,利用数据加解密组件300对待加密明文数据进行加密,从而将加密后密文数据写入外部存储器350。在一些实施例中,在计算装置141访问外部存储器350的过程中,利用数据加解密组件300对待解密密文数据进行解密,从而将解密后的明文数据写入内部存储器。由于利用数据加解密组件300对待加密明文数据进行加密和利用数据加解密组件300对待解密密文数据进行解密的详细内容将在下文中说明,故这里不再赘述。
77.图2示出了中央处理器22在执行过程中需要将明文数据加密送到外部存储器350、或者将外部存储器350存储的密文数据解密成明文数据存储到内部存储器的场景下的计算装置结构。相比之下,图3示出了加速单元430在执行过程中需要将明文数据加密送到外部存储器350、或者将外部存储器350存储的密文数据解密成明文数据存储到加速单元430的内部存储器的场景下的计算装置结构。
78.图3的计算装置141包括由总线连接的存储器410、调度单元集群470和加速单元集群480,以及数据加解密组件300。调度单元集群470包括多个调度单元420。加速单元集群480包括多个加速单元430。加速单元在本公开实施例中主要是为了加速神经网络模型的运算处理速度而设计的专门处理单元,可以体现为专门为神经网络运算处理设计的处理单元、图形处理单元(gpu)、专用集成电路(asic)和现场可编程门阵列(fpga)等。调度单元420是对加速单元430进行调度、向各加速单元430分配要执行的待执行指令序列的处理单元,它可以采用中央处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等多种形式。
79.图3所示的数据加解密组件300与图2所示的数据加解密组件300一致。由于利用数据加解密组件300对待加密明文数据进行加密和利用数据加解密组件300对待解密密文数据进行解密的详细内容将在下文中说明,故这里不再赘述。
80.可以理解的是,在本公开实施例中以中央处理器(cpu)和加速单元(例如,神经网络处理器npu)为例来说明计算装置,本公开实施例并不以此为限,本公开实施例的计算装置还可以包括其他的处理单元,例如,图形处理器(gpu)、通用图形处理器(gpgpu)、现场可编程门阵列(fpga)以及专用集成电路(asic)等。
81.数据加解密组件
82.图4是根据本公开一个实施例的数据加解密组件的内部结构图。图4所示的数据加解密组件用于将目标数据(待加密明文数据)加密,将加密后密文数据写入外部存储器350(图中未示出)。参考图4所示,数据加解密组件包括总线互联310、协议解析单元320、密钥流生成单元360、加解密单元370、总线互联330和片外存储控制器340、比较器380、宽度调节器390。宽度调节器390又包括截取器391和补位器392。
83.在一些实施例中,如图4所示,总线互连310是用于将处理器22或加速单元430与数据加解密组件300互连的线路。本公开实施例中,通过其接收将计算装置(图中未示出)中存储的目标数据写入外部存储器350的写访问请求。目标数据可以存储在处理器22的存储器24和高速缓冲存储器28、存储器410、以及调度单元420和加速单元430的内部存储器。总线互连310例如为axi总线。总线互连310的位宽可以是32比特、64比特、128比特、256比特、512比特或1024比特。
84.在一些实施例中,协议解析单元320连接总线互连310,其可以是任意具有不同网络通信协议解析功能的处理单元。协议解析是指对网络数据包的内容进行详细分析的过程。协议解析从网络通信协议特有的规则性出发,对数据包的数据、结构进行分析,获得深层次的数据,为之后处理数据包提供精确、详细的信息。在一些实施例中,协议解析单元320解析将目标数据写入外部存储器350的写访问请求,从而获得目标数据存储在外部存储器350的物理地址。
85.片外存储控制器340是对向外部存储器350写入密文数据、和从外部存储器350读取密文数据进行控制的部件。总线互连330是将数据加解密组件300与外部存储器350进行互连的部件。与上述总线互连310一样,它也可以是axi总线。
86.密钥流生成单元360、加解密单元370、比较器380、宽度调节器390是本公开实施例的特有部件。下面结合这些部件描述本公开实施例的实现过程。
87.密钥流生成单元360是用于基于物理地址产生密钥流的部件。物理地址是目标数据存储在所述外部存储器350的地址。目标数据是要向外部存储器350写入的数据或要从外部存储器350读取的数据。相应地,物理地址就是目标数据写到外部存储器350中的地址或要从外部存储器350读取数据的地址。加解密单元370是利用所述密钥流,对待加密明文数据加密或对待解密密文数据解密的部件。在一个实施例中,对待加密明文数据加密的方式是将待加密明文数据与所述密钥流异或,得到密文数据存储到外部存储器350的物理地址;对待解密密文数据解密的方式是将外部存储器350的物理地址处的待解密密文数据与所述密钥流异或,得到明文数据存储到内部存储器。
88.现有技术中,密钥流不是基于物理地址产生的。它是事先存储在特定存储位置,如内部存储器的某一区域。由于有大量数据需要加密后写入外部存储器350,因此,内部存储器中可能需要大量空间,来存储与这些数据对应的密钥流。而实际上,有很多数据的密钥流是可以复用的。例如,在外部存储器350特定存储位置上要写入或要读取的数据,可能需要
的密钥流是一样的。花费大量存储空间来存储这些密钥流,造成大量的存储开销,且在大的存储空间搜索需要的密钥流导致耗时很长。本公开实施例巧妙地利用了相同的物理地址需要的密钥流一致的特点,基于物理地址产生密钥流。这样,如果要读写同一个物理地址,加解密采用的密钥流也是一致的。每次现场根据物理地址产生密钥流,而不是花费大量存储空间预先存储需要的密钥流,在保证加解密同步的前提下节约了存储空间,减少了在存储了大量密钥流的存储空间中搜索需要的密钥流造成的加解密时延。
89.由物理地址来产生密钥流并不是单一的过程,其内部要经过很多轮运算,每一轮运算接收前一轮运算的结果作为输入,产生运算结果作为后一轮运算的输入。如图7的例子中,一个物理地址要经过10轮运算,才能产生最后的密钥流。本公开实施例中,可以将这些轮运算按照执行时间均衡的原则分配到多个时钟周期中,每个时钟周期由一个流水执行单元363来执行。执行时间均衡原则保证了每个时钟周期中分到的轮运算的总执行时间大致均衡。例如,轮运算1

10的执行时间分别为0.1s,0.02s,0.07s,0.06s,0.05s,0.08s,0.02s,0.04s,0.06s,0.11s,共有6个时钟周期,对应于第1

6级流水执行单元,则将轮运算1分给第1级流水执行单元,耗时0.1s;将轮运算2

3分给第2级流水执行单元,耗时0.02s 0.07s=0.09s;将轮运算4

5分给第3级流水执行单元,耗时0.06s 0.05s=0.11s;将轮运算6

7分给第4级流水执行单元,耗时0.08s 0.02s=0.1s;将轮运算8

9分给第5级流水执行单元,耗时0.04s 0.06s=0.1s;将轮运算10分给第6级流水执行单元,耗时0.11s。每个流水执行单元的运算时间都在0.09

0.11s,符合执行时间均衡原则。每个流水执行单元363各占一个时钟周期。
90.将基于物理地址产生密钥流的过程分成多级流水执行单元去执行的意义在于,可以提高基于不同物理地址产生不同密钥流的过程的执行并行度。如果基于一个物理地址产生密钥流的过程由唯一的一个流水执行单元执行,则只能在基于一个物理地址经过多轮运算产生一个密钥流之后,再基于另一个物理地址再经过多轮运算产生另一个密钥流,这样的加解密的效率是很低的。尤其对于并口外部存储器350,该效率根本不可接受。如果如上所述,对于一个基于物理地址产生密钥流的任务,可以分多个流水执行单元363执行,每个流水执行单元363各占一个时钟周期,同时对于另一个基于物理地址产生密钥流的任务,也可以分若干个流水执行单元363执行,每个流水执行单元363各占一个时钟周期,这样,实际上在同一个时钟周期中,就可以由不同流水执行单元363同时执行不同的基于物理地址产生密钥流的任务,大大提高整体执行效率。例如,对于时钟周期4,可以让基于第一物理地址产生第一密钥流的第一任务中的第2级流水执行单元和基于第二物理地址产生第二密钥流的第二任务中的第3级流水执行单元同时执行。这样,相对于一个密钥流生成后才开始生成另一个密钥流的方式,在并口片外存储器数据访问场景下,大大减少了额外加解密时延,并且保证了分组数据吞吐率。
91.所述密钥流生成单元360可以包括多级顺序连接的流水执行单元363。第一级流水执行单元363基于所述物理地址、和与第一级流水执行单元363相应的级密钥,产生到下一级流水执行单元363的输出;之后的流水执行单元363基于前一级流水执行单元的输出、和与该流水执行单元相应的级密钥,产生到下一级流水执行单元的输出,最后一级流水执行单元363输出产生的密钥流。在一个具体的例子中,密钥流生成单元360有n级顺序连接的流水执行单元363。第一级流水执行单元363将所述物理地址、和与第一级流水执行单元363相
应的级密钥1进行异或运算,得到异或结果,输出到第二级流水执行单元363;第二级流水执行单元363将第一级流水执行单元363的输出、和与第二级流水执行单元363相应的级密钥2进行异或运算,得到异或结果,输出到第三级流水执行单元363
……
第n级流水执行单元363将第n

1级流水执行单元363的输出、和与第n级流水执行单元363相应的级密钥n进行异或运算,得到异或结果,作为产生的密钥流。
92.级密钥是相应级的流水执行单元363特有的密钥。其可以基于预先设置的初始密钥和该级的流水执行单元363的标识来合成。在一个实施例中,其可以由初始密钥和该级的流水执行单元363的标识异或而成。初始密钥是对所有流水执行单元363不变的,但不同级的流水执行单元363具有不同标识。例如,第一级流水执行单元363的标识为1,第二级流水执行单元363的标识为2
……

93.通过上述方式,对物理地址施加多级的流水执行单元363的运算,在这个过程中各级的流水执行单元363的级密钥都参与进来,提高了得到流密钥的过程的复杂性,使得加解密过程安全性高。
94.在另一个实施例中,可以采用流水执行单元阵列的形式,如图6所示。密钥流生成单元360包括多个流水执行单元序列,每个流水执行单元序列包括所述多级顺序连接的流水执行单元363。图6中每行的n级流水执行单元363为一个流水执行单元序列,包括第1级流水执行单元363、第2级流水执行单元363
……
第n级流水执行单元363。图6的流水执行单元阵列有n行,所以有n个流水执行单元序列。密钥流生成单元360还包括并口转换部件361,用于将所述物理地址分成多个物理地址片段(如图6的物理地址片段1、物理地址片段2
……
物理地址片段n),每个物理地址片段对应于一个流水执行单元序列。在每个流水执行单元序列中,第一级流水执行单元363具有接收相应物理地址片段的第一输入端365、接收与第一级流水执行单元363相应的级密钥的第二输入端366、和产生到下一级流水执行单元363的输出的输出端368;之后的流水执行单元363具有接收前一级流水执行单元363的输出的第一输入端365、接收与该流水执行单元363相应的级密钥的第二输入端366、产生到下一级流水执行单元363的输出的输出端368。最后一级流水执行单元363的输出端368输出该流水执行单元序列产生的密钥流片段,各个流水执行单元序列产生的密钥流片段按照物理地址分成相应物理地址片段的顺序级联后得到产生的密钥流。
95.举例来说,对于图6的某一行,即某一个流水执行单元序列,其第一级流水执行单元363具有接收相应行的物理地址片段的第一输入端365、接收与第一级流水执行单元363相应的级密钥1的第二输入端366。第一级流水执行单元363将接收的物理地址片段与级密钥1进行异或,得到第一级流水执行单元363的输出,从输出端368输送给第二级流水执行单元363,作为第二级流水执行单元363的第一输入端365的输入。第二级流水执行单元363的第二输入端366接收与第二级流水执行单元363相应的级密钥2。第二级流水执行单元363将接收的第二级流水执行单元363的输出与级密钥2进行异或,得到第二级流水执行单元363的输出,从输出端368输送给第三级流水执行单元363,作为第三级流水执行单元363的第一输入端365的输入
……
第n级流水执行单元363的第一输入端365接收第n

1级流水执行单元363产生的输出,第二输入端366接收与第n级流水执行单元363相应的级密钥n。第n级流水执行单元363将接收的第n

1级流水执行单元363的输出与级密钥n进行异或,得到第n级流水执行单元363的输出,从输出端368输出,作为该流水执行单元序列产生的密钥流片段。图
6的第一行的流水执行单元序列对应于物理地址片段1,产生密钥流片段1;第二行的流水执行单元序列对应于物理地址片段2,产生密钥流片段2
……
第n行的流水执行单元序列对应于物理地址片段n,产生密钥流片段n。这样,将密钥流片段1、2
……
n顺序连接起来,就得到了产生的密钥流。
96.图6的流水执行单元阵列的实施例相比于仅有一行的流水执行单元363(即一个流水执行单元序列)的实施例,优点是产生密钥流的过程更复杂,提高了加解密过程的安全性,同时,每个流水执行单元序列基于物理地址片段而不是整个物理地址产生密钥流片段,降低了每个流水执行单元执行作业的颗粒度,更有利于同一时钟周期内更灵活地复用不同的流水执行单元363的作业。
97.如图6所示,数据加解密组件300还可以包括:与流水执行单元363对应的级密钥合成单元364,用于基于初始密钥和该流水执行单元的标识合成所述级密钥。每个流水执行单元序列中相同级号的流水执行单元363可以复用同一个密钥合成单元364,即每一级对应于一个密钥合成单元364,合成一个级密钥。例如,图6中,初始密钥可以与第一级流水执行单元363的标识(相同级的流水执行单元363的标识可以相同)异或,产生级密钥1
……
初始密钥可以与第n级流水执行单元363的标识异或,产生级密钥n。
98.为了进一步增加上述加解密过程的复杂度,从而提高其安全性,可以进一步在产生密钥流片段的过程中引入随机数。如图6所示,每个流水执行单元363除了上述第一输入端365、第二输入端366之外,实际上还有第三输入端367。但在上述实施例中并没有考虑第三输入端367的输入来得到密钥流片段。在本实施例中,增加考虑第三输入端367,用于接收为该流水执行单元363分配的随机数。每个流水执行单元363分片的随机数可能各不相同。所述流水执行单元363根据所述第一输入端365的输入、第二输入端366的输入、第三输入端367的输入产生所述输出端368的输出。在一个实施例中,流水执行单元363可以将所述第一输入端365的输入、第二输入端366的输入、第三输入端367的输入进行异或,得到输出端368的输出。该实施例中,由于在产生密钥流片段的过程中引入随机数,进一步提高产生密钥流的复杂度,提高加解密安全性。
99.当密钥流生成单元360产生密钥流后,在加密的情况下,加解密单元370可以利用产生的密钥流,对从协议解析单元320传递过来的待加密明文数据进行加密。在一个实施例中,可以将待加密明文数据与密钥流进行异或。但进行异或运算的一个前提是待加密明文数据与密钥流的宽度,即位数,需要一致。为了实现二者的宽度一致,如图4所示,可以由比较器380将密钥流生成单元360产生的密钥流的宽度与待加密明文数据的宽度进行比较。如果二者不一致,由宽度调节器390对所述密钥流的宽度进行调整,使得调整后的宽度与待加密明文数据的宽度一致。在一个实施例中,宽度调节器390可以包括截取器391和补位器392。假设待加密明文数据的宽度为l1,密钥流的宽度为l2。如果所述密钥流的宽度l2大于所述待加密明文数据的宽度l1,由截取器391按照第一规则截取所述密钥流,使得截取后的所述密钥流的宽度等于所述待加密明文数据的宽度l1。第一规则可以是截取所述密钥流的l2位中最前面的l1位或者最后面的l1位,等等。如果所述密钥流的宽度l2小于所述待加密明文数据的宽度l1,补位器392按照第二规则给所述密钥流补位,使得所述密钥流的宽度等于所述待加密明文数据的宽度l1。第二规则可以是在密钥流的前面补l1

l2位0或l1

l2位1,使得所述密钥流的宽度等于所述待加密明文数据的宽度l1。应当理解,比较器380和宽度
调节器390不是必需的。例如,在某种场合下,由密钥流生成单元360保证生成的密钥流的宽度与待加密明文数据的宽度一致。
100.如图4所示,在一个实施例中,加解密单元370可以包括第一延时单元371、第二延时单元372、第一异或单元373。第一延时单元371将待加密明文数据延时n个时钟周期,n为所述流水执行单元序列中包含的流水执行单元数。其原因是,由于流水执行单元序列有n个流水执行单元363,每个流水执行单元363占用一个时钟周期,因此,从密钥流生成单元360接收到物理地址到其输出密钥流,一共用了n个时钟周期。这样,用产生的密钥流加密待加密明文数据时,必须也要将待加密的明文数据延时同样多的时钟周期,二者才能对准。如图8所示,在第0

5个时钟周期,分别给密钥流生成单元360输入物理地址a0

a5。由于需要6级流水执行单元363,即6个时钟周期,才能将物理地址转换成相应密钥流,这样6个物理地址在6个时钟周期之后变成相应的密钥流b0

b6。从图8中可以看到此时与密钥流b0

b6相应的6个明文数据还在第0

5个时钟周期的位置,需要将它们也延时6个时钟周期,才能与密钥流b0

b6进行相应运算,如第一异或单元373的异或。
101.第一异或单元373用于将延时后的待加密明文数据和所述密钥流进行异或,得到密文数据。片外存储控制器340需要将其写入相应物理地址。但是,第一异或单元373在异或时,待加密明文数据和所述密钥流都是延时了n个时钟周期的,上述异或得到的密文数据也是延时了n个时钟周期的,但从协议解析单元320输出的物理地址却没有延时。为了能够写入正确的片外存储器350的地址,第二延时单元372将所述物理地址延时n个时钟周期发出,经过总线互连330到达片外存储控制器340。片外存储控制器340将第一异或单元373得到的密文数据写入第二延时单元372延时后发出的物理地址。
102.上述讨论的是加密的情况。在解密的情况下,当密钥流生成单元360产生密钥流后,加解密单元370可以利用产生的密钥流,对从协议解析单元320传递过来的待解密密文数据进行解密。在一个实施例中,可以将待解密密文数据与密钥流进行异或。但进行异或运算的一个前提是待解密密文数据与密钥流的宽度,即位数,需要一致。为了实现二者的宽度一致,如图5所示,可以由比较器380将密钥流生成单元360产生的密钥流的宽度与待解密密文数据的宽度进行比较。如果二者不一致,由宽度调节器390对所述密钥流的宽度进行调整,使得调整后的宽度与待解密密文数据的宽度一致。在一个实施例中,宽度调节器390可以包括截取器391和补位器392。假设待解密密文数据的宽度为l1,密钥流的宽度为l2。如果所述密钥流的宽度l2大于所述待解密密文数据的宽度l1,由截取器391按照第一规则截取所述密钥流,使得截取后的所述密钥流的宽度等于所述待解密密文数据的宽度l1。第一规则可以是截取所述密钥流的l2位中最前面的l1位或者最后面的l1位,等等。如果所述密钥流的宽度l2小于所述待解密密文数据的宽度l1,补位器392按照第二规则给所述密钥流补位,使得所述密钥流的宽度等于所述待解密密文数据的宽度l1。第二规则可以是在密钥流的前面补l1

l2位0或l1

l2位1,使得所述密钥流的宽度等于所述待解密密文数据的宽度l1。应当理解,比较器380和宽度调节器390不是必需的。例如,在某种场合下,可以由密钥流生成单元360保证生成的密钥流的宽度与待解密密文数据的宽度一致。
103.如图5所示,在一个实施例中,加解密单元370可以包括第三延时单元374和第三异或单元375。第三延时单元374将待解密密文数据延时n个时钟周期,n为所述流水执行单元序列中包含的流水执行单元数。需要将待解密密文数据延时n个时钟周期的原因与将待加
密明文数据延时n个时钟周期的原因相同,故不赘述。第三异或单元375将延时后的待解密密文数据和所述密钥流进行异或,得到明文数据,通过协议解析单元320、总线互连310等写回内部存储器。
104.如图4

5所示,协议解析单元320除了向密钥流生成单元360输出物理地址和明文数据,还可以输出复位信号、旁路信号、选通信号、暂停信号等。
105.复位信号是触发密钥流生成单元360工作的信号。当复位信号未被复位,例如为0时,如图8所示,密钥流生成单元360不工作,不产生密钥流,自然不会进行后续的加解密。当密钥流生成单元360被复位,如在图8的复位信号的上升沿,产生密钥流,以便进行后续的加解密。
106.暂停信号是表示相应时钟周期拉长,暂停下一时钟周期到来的信号。如图8的暂停信号的下降沿,这时正好进入第6个时钟周期,产生密钥流b0,此时该时钟周期延长,暂停第7个时钟周期的到来。直到暂停信号出现了上升沿,第7个时钟周期才到来。
107.选通信号是用于指示各个流水执行单元序列是否工作的信号。并口转换部件361具有选通信号接收端,用于接收选通信号。所述选通信号包括用于指示各个流水执行单元序列是否工作的各选通位。选通位有效表示相应的流水执行单元序列工作,所述物理地址分成的相应物理地址片段送入该流水执行单元序列。反之,表示相应的流水执行单元序列停止工作,所述物理地址分成的相应物理地址片段停止送入该流水执行单元序列。例如,假设图6的流水执行单元阵列有6行,即6个流水执行单元序列1

6。假设选通信号为011110,表明第2

5个流水执行单元序列都是选通的,产生密钥流片段;第1、6个流水执行单元序列不选通,不产生密钥流片段。在将相应密钥流片段连接成密钥流时,可以只连接第2

5个流水执行单元序列产生的密钥流片段,或者将第1和6个流水执行单元序列产生的密钥流片段用全0或全1表示,与第2

5个流水执行单元序列产生的密钥流片段连接。该实施例通过设置选通位,可以实现对物理地址中有效部分的灵活指定。
108.旁路信号是用于指示各个流水执行单元序列中特定级的流水执行单元363是否工作的信号。并口转换部件361具有旁路信号接收端,用于接收旁路信号。所述旁路信号包括用于指示各个流水执行单元序列中每一级的流水执行单元363是否工作的级有效位。级有效位有效表示各流水执行单元序列中相应级的流水执行单元363工作。反之,表示相应级的流水执行单元363不工作,将其前一级的流水执行单元363的输出直接作为后一级的流水执行单元363的输入。例如,假设图6中每个流水执行单元序列有8级,即第1级流水执行单元363

第8级流水执行单元363。假设级有效信号为11011111,表明除了第3级流水执行单元363之外的所有其它级的流水执行单元363都是有效的。因此,可以将第2级流水执行单元363的输出直接连接到第4级流水执行单元363的输入,实现对基于物理地址生成密钥流的过程中包含的子过程数目的灵活控制。
109.数据加解密方法
110.图9是本公开实施例提供的数据加解密方法的流程图。如图上所示,该方法包括以下步骤。
111.在步骤801中,通过多级顺序连接的流水执行单元363基于物理地址产生密钥流,其中,所述物理地址是目标数据存储在所述外部存储器350的地址,其中,第一级流水执行单元363基于所述物理地址、和与第一级流水执行单元363相应的级密钥,产生到下一级流
水执行单元363的输出;之后的流水执行单元363基于前一级流水执行单元363的输出、和与该流水执行单元363相应的级密钥,产生到下一级流水执行单元363的输出,最后一级流水执行单元363输出产生的密钥流,所述多级流水执行单元363按顺序各占用一个时钟周期执行。
112.在步骤802中,利用所述密钥流,对待加密明文数据加密或对待解密密文数据解密。
113.由于上述过程的实现细节已在前述装置实施例的描述中详细介绍,故不赘述。
114.本公开实施例的商业价值
115.本公开实施例提供的并口外部存储器数据加解密组件将基于目标地址产生密钥流的过程分配到多级流水执行单元,各级流水执行单元按顺序各占用一个时钟周期执行,在所述多级流水执行单元的级数个时钟周期这一初始等待时间后,加解密单元利用密钥流,对待加密明文数据加密或对待解密密文数据解密,得到要写入外部存储器的加密后密文数据或要写入内部存储器的解密后明文数据。在初始等待时间之外,未增加额外的加解密时延,能够在保证并口外部存储器的数据吞吐率前提下有效的降低数据加解密组件的功耗,提高数据安全性。在此场景下,通过降低数据加解密组件的的功耗从而降低计算装置访问外部存储器的功耗,进而降低整个数据中心的运行成本。本公开实施例使加解密时延降低80%,提高分组数据吞吐率30%,因而具备了良好的商业价值和经济价值。
116.本领域的技术人员能够理解,本公开可以实现为系统、方法和计算机程序产品。因此,本公开可以具体实现为以下形式,即完全的硬件、完全的软件(包括固件、驻留软件、微代码),还可以实现为软件和硬件结合的形式。此外,在一些实施例中,本公开还可以实现为一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
117.可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如但不限于为电、磁、光、电磁、红外线或半导体的系统、装置或器件,或其他任意以上的组合。计算机可读存储介质的更具体的例子包括:具体一个或多个导线的电连接,便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或者闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器、磁存储器或者上述任意合适的组合。在本文中,计算机可读的存储介质可以是任意包含或存储程序的有形介质,该程序可以被处理单元、装置或者器件使用,或者与其结合使用。
118.计算机可读信号介质可以包括在基带中或者作为截波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或者其他任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质之外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令系统、装置或器件使用或者与其结合使用的程序。
119.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,以及上述任意合适的组合。
120.可以以一种或者多种程序设计语言或者组合来编写用于执行本公开实施例的计算机程序代码。所述程序设计语言包括面向对象的程序设计语言,例如java、c ,还可以包
括常规的过程式程序设计语言,例如c。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络包括局域网(lan)或广域网(wan)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
121.以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本公开可以有各种改动和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献