掌桥专利:专业的专利平台
掌桥专利
首页

加解密电路、处理系统及电子设备

文献发布时间:2024-04-18 20:00:50


加解密电路、处理系统及电子设备

技术领域

本公开的实施例涉及一种加解密电路、处理系统及电子设备。

背景技术

总线是可以传输信息的公共数据通道。根据不同的分类,总线可以被分为不同的总线。例如按照传递的信息来分类,有数据总线、地址总线和控制总线。按照总线所在位置分类,有内部总线、系统总线和外部总线。按照实现方式分类,有并行总和串行总线。

随着总线的广泛应用,对数据安全的要求也越来越高,传统的做法是对总线的数据传输增加加解密处理的过程,例如使用专用的加解密电路挂载在总线上,从而根据总线中传输的命令来对数据进行加解密处理。采用传统方法会导致数据传输的延迟增加,尤其是在大量数据等待进行加解密处理时,这种延迟更加严重。

发明内容

本公开至少一个实施例提供了一种加解密电路、处理系统及电子设备,用于解决现有技术中的上述技术问题。

本公开至少一个实施例提供一种加解密电路,包括数据加解密模块、密钥扩展模块、第一接口模块和第二接口模块,其中第一接口模块和第二接口模块连接到第一总线;密钥扩展模块被配置为根据接收到的第一密钥生成多个子密钥,并将多个子密钥发送给数据加解密模块;数据加解密模块被配置为根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,其中,第一数据与读命令或写命令对应,第一数据来自第一接口模块或第二接口模块,并将第二数据对应地发送至第二接口模块或第一接口模块以发送到第一总线;第一接口模块和第二接口模块均被配置为在第一总线中透传读命令或所述写命令的命令信息。

例如,在本公开一实施例提供的加解密电路中,数据加解密模块的工作模式包括加密模式和解密模式;数据加解密模块被配置为在加密模式下,密钥扩展模块生成多个子密钥的同时,对第一数据进行加密处理;数据加解密模块被配置为在解密模式下,密钥扩展模块生成多个子密钥之后,对第一数据进行解密处理;以及数据加解密模块还被配置为根据切换指示在解密模式和加密模式之间切换。

例如,在本公开一实施例提供的加解密电路中,数据加解密模块包括多个加密单元和多个解密单元,其中,多个解密单元被配置为在解密模式下对第一数据进行解密处理;多个加密单元被配置为在加密模式下对第一数据进行加密处理。

例如,在本公开一实施例提供的加解密电路中,数据加解密模块包括多个加解密单元,其中,多个加解密单元被配置为在解密模式下对第一数据进行解密处理,以及在加密模式下对第一数据进行加密处理。

例如,在本公开至少一实施例提供的加解密电路中,密钥扩展模块还被配置为多个子密钥在生成之后,将多个子密钥保留第一时长,其中,第一时长为预设时长、或者第一时长为对预设数据长度的数据进行加密处理或解密处理所需的时长、或者第一时长为根据多个子密钥使用次数确定的。

例如,在本公开一实施例提供的加解密电路中,密钥扩展模块还被配置为在多个子密钥保留第一时长之后,更新第一密钥,并根据更新的第一密钥,更新多个子密钥。

例如,在本公开至少一实施例提供的加解密电路中,密钥扩展模块还包括第一状态机,第一状态机被配置为对多个子密钥的生成进行计时,并在计时完成后向数据加解密模块发送多个子密钥生成完成的指示。

例如,在本公开一实施例提供的加解密电路中,密钥扩展模块还包括第二状态机,第二状态机被配置为对第一时长进行计时,并在计时完成后向密钥扩展模块发送更新第一密钥的指示。

例如,在本公开至少一实施例提供的加解密电路中,加解密电路还包括:寄存器模块,与第一接口模块、第二接口模块、数据加解密模块以及密钥扩展模块连接,其中,寄存器模块被配置为保存密钥扩展模块和数据加解密模块的配置参数。

例如,在本公开一实施例提供的加解密电路中,寄存器模块与第二总线连接,寄存器模块被配置为从第二总线获取配置参数。

例如,在本公开一实施例提供的加解密电路中,寄存器模块还被配置为经由第二总线获取第一密钥和子密钥生成指示,并向密钥扩展模块发送第一密钥和子密钥生成指示,第二总线与第一总线不同;密钥扩展模块被配置为在接收到子密钥生成指示之后,生成多个子密钥。

例如,在本公开一实施例提供的加解密电路中,寄存器模块还被配置为对多个子密钥的保留时长进行计时,在计时完成后更新第一密钥,并向密钥扩展模块发送更新后的第一密钥和子密钥生成指示。

例如,在本公开至少一实施例提供的加解密电路中,寄存器模块还被配置为记录数据加解密模块中的数据残留情况,数据残留情况包括有数据残留和无数据残留。

例如,在本公开至少一实施例提供的加解密电路中,加解密电路还包括:数据缓冲模块,与第一接口模块、第二接口模块以及数据加解密模块连接,其中,数据缓冲模块被配置为接收来自数据加解密模块的第二数据以及接收来自第一接口模块或第二接口模块的命令信息,将第二数据和命令信息对齐后发送至第一总线。

例如,在本公开一实施例提供的加解密电路中,数据缓冲模块包括至少两个FIFO存储器,至少两个FIFO存储器中的第一FIFO存储器被配置为缓冲命令信息,至少两个FIFO存储器中的第二FIFO存储器被配置为缓冲第二数据。

例如,在本公开至少一实施例提供的加解密电路中,密钥扩展模块包括多个子密钥生成单元,多个子密钥生成单元中的每一个子密钥生成单元被配置为根据第一密钥生成多个子密钥中的两个子密钥。

例如,在本公开至少一实施例提供的加解密电路中,数据加解密模块包括多个处理单元,多个处理单元中的每一个处理单元被配置为使用多个子密钥中的两个子密钥对第一数据进行一轮加密处理或一轮解密处理。

例如,在本公开一实施例提供的加解密电路中,多个处理单元被配置为在一个时间周期内,多个处理单元并行处理输入数据加解密模块的数据。

例如,在本公开一实施例提供的加解密电路中,多个处理单元还被配置为在接收到多个子密钥之后且多个子密钥未变更的情况下,多个处理单元流水线式地处理第一数据。

本公开至少一个实施例提供一种处理系统,包括至少一个如上述实施例中任一项的加解密电路以及第一总线。

例如,在本公开一实施例提供的处理器系统中,还包括主模块和从模块,其中,至少一个加解密电路中的每一个加解密电路的一端经由第一总线连接主模块,另一端经由第一总线连接从模块。

例如,在本公开一实施例提供的处理器系统中,在至少一个加解密电路包括两个加解密电路时,两个加解密电路中的第一加解密电路被配置为从主设备向从设备传输信息,两个加解密电路中的第二加解密电路被配置为从从设备向主设备传输信息。

本公开至少一个实施例提供一种电子设备,包括如上述实施例中任一项所述的处理系统。

本公开至少一个实施例还提供一种数据加解密方法,包括:根据接收到的第一密钥生成多个子密钥;经第一接口模块或第二接口模块从第一总线接收第一数据,根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,并将第二数据对应地经第二接口模块或第一接口模块发送到第一总线,其中,第一数据与读命令或写命令对应;在第一总线中使用第一接口模块和第二接口模块透传读命令或写命令的命令信息。

例如,在本公开一实施例提供的方法中,该方法对应的工作模式包括加密模式和解密模式,在加密模式下,在生成多个子密钥的同时,对第一数据进行加密处理;在解密模式下,在生成多个子密钥之后,对第一数据进行解密处理;以及响应于切换指示在解密模式和加密模式之间切换。

例如,在本公开一实施例提供的方法中,还包括:在多个子密钥生成之后,将多个子密钥保留第一时长,其中,第一时长为预设时长、或者第一时长为对预设数据长度的数据进行加密处理或解密处理所需的时长、或者第一时长为根据多个子密钥使用次数确定的。

例如,在本公开一实施例提供的方法中,还包括:在多个子密钥保留第一时长之后,更新第一密钥;根据更新的第一密钥,更新多个子密钥。

例如,在本公开一实施例提供的方法中,在多个子密钥生成之后,将多个子密钥保留第一时长,包括:响应于多个子密钥生成完成,对第一时长进行计时。

例如,在本公开一实施例提供的方法中,还包括:将命令信息和第二数据对齐后发送至第一总线。

例如,在本公开一实施例提供的方法中,还包括:使用多个子密钥中的两个子密钥对第一数据进行一轮加密处理或一轮解密处理。

例如,在本公开一实施例提供的方法中,还包括:在第一时长内,流水线式地对第一数据进行加密处理或解密处理。

本公开至少一个实施例还提供一种数据加解密装置,包括:子密钥生成部件,用于根据接收到的第一密钥生成多个子密钥;数据接收部件,用于经第一接口模块或第二接口模块从第一总线接收第一数据;数据加解密部件,用于根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,并将第二数据对应地经第二接口模块或第一接口模块发送到第一总线,其中,第一数据与读命令或写命令对应;数据传输部件,用于在第一总线中使用第一接口模块和第二接口模块透传读命令或写命令的命令信息。

本公开至少一个实施例还提供一种数据加解密装置,包括处理器,该处理器实现如上述任一项所述的数据加解密方法。

本公开至少一个实施例还提供一种电子设备,包括如上述任一项的数据加解密装置。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1示出了现有技术中的一种处理系统的示意图;

图2示出了本公开至少一实施例提供的一种加解密电路的示意图;

图3示出了本公开至少一实施例提供的又一种加解密电路的示意图;

图4a示出了本公开至少一实施例提供的又一种加解密电路的示意图;

图4b示出了本公开至少一实施例提供的又一种加解密电路的示意图;

图5示出了本公开至少一实施例提供的密钥扩展模块的示意图;

图6示出了本公开至少一实施例提供的数据加解密模块的示意图;

图7示出了本公开至少一实施例提供的工作模式的切换的示意图;

图8示出了本公开至少一实施例提供的一种处理系统的示意图;

图9示出了本公开至少一实施例提供的一种电子设备的示意图;

图10示出了根据本公开至少一个实施例提供的数据加解密方法的流程图;

图11示出了根据本公开至少一个实施例提供的数据加解密装置的示意图。

具体实施例

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“耦接”、“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

目前有很多种总线支持master和slave之间的信息传输,例如AXI(AdvancedExtensible Interface,高性能扩展接口)总线、SPI(Serial Peripheral Interface,串行外围接口)总线、AHB(Advanced High Performance Bus,高级高性能总线)、APB(AdvancedPeripheral Bus,高级外围总线)等。master也被称为主设备、主机、主模块等。master可以主动发出请求或发起命令,例如master是CPU(Central Processing Unit,中央处理器)、DMA(Direct Memory Access,直接内存存取)等。slave也被称为从设备、从机、从模块等。slave被动处理请求或命令,例如slave是存储器等。对应的数据和命令信息在总线中是一起传输的。在需要保证数据安全时,是对数据进行加密处理和解密处理,而对于命令信息一般没有保密性的要求。例如,将要写入存储器的数据进行加密以及将从存储器中读取出来的数据进行解密。现有技术通常是使用挂载在总线上的加解密IP来实现数据的加密和解密。这一类加解密IP有两种实现方式,一种是作为总线上的从设备,另一种是作为总线上的主设备。图1示出了一种现有技术中的处理系统的示意图。

在图1中,总线101上挂载了从加解密IP 102和主加解密IP 103。总线101的两端分别连接主机104和从机105。主机104例如是CPU,从机105例如是内存。主机104会通过总线101向从机105发起读命令和写命令。从加解密IP 102和主加解密IP 103用于实现主机104和从机105之间的数据的加解密。可以理解地,图1中示出两种加解密IP是为了更清楚的解释其工作方式,并不代表在实际应用中从加解密IP 102和主加解密IP 103必须同时存在,即仅使用从加解密IP 102或仅使用主加解密IP 103都可以实现数据的加解密。

对于从加解密IP 102,主机104会将待加解密处理的数据搬入从加解密IP 102,从加解密IP 102对该数据进行加解密处理,然后主机104在将加解密之后的数据搬运到指定地址或总线101。这里的主机104可以是CPU或DMA,指定地址可以是从机105中的地址。

对于主加解密IP 103,主加解密IP 103主动发送指令至总线101读取待加解密处理的数据,主加解密IP 103对读取到的该数据进行加解密处理,主加解密IP 103再将加解密处理后的数据写回线101。

无论是从加解密IP 102还是主加解密IP 103,除了加解密IP中必须的加解密处理之外,其都需要进行两笔操作,一笔操作是将数据“搬运”进入加解密IP,另一笔操作是经过加解密处理的数据从加解密IP“搬运”出去。同时,在加解密IP对数据进行处理时,总线101中的命令始终存在,总线101始终被占用。因此,目前的加解密IP对总线的占用时间长,数据传输的速度慢并可能会堵塞总线。

基于此,本公开至少一个实施例提供一种加解密电路,包括数据加解密模块、密钥扩展模块、第一接口模块和第二接口模块,其中第一接口模块和第二接口模块连接到第一总线;密钥扩展模块被配置为根据接收到的第一密钥生成多个子密钥,并将多个子密钥发送给数据加解密模块;数据加解密模块被配置为根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,其中,第一数据与读命令或写命令对应,第一数据来自第一接口模块或第二接口模块,并将第二数据对应地发送至第二接口模块或第一接口模块以发送到第一总线;第一接口模块和第二接口模块均被配置为在第一总线中透传读命令或所述写命令的命令信息。

本公开至少一个实施例中的加解密电路通过第一接口模块和第二接口模块连接到第一总线中,其不仅能够对数据进行透传,还能够对需要加解密的数据进行加解密处理后传输,无需对总线中的命令进行解析也不产生命令,在无需对总线进行额外的操作的情况下即可完成数据的加解密传输,大大减少对总线的占用时间,进而提高数据传输的速度。

本公开至少一个实施例提供一种处理系统,包括至少一个如上述实施例中任一项的加解密电路以及第一总线。

本公开至少一个实施例提供一种电子设备,包括如上述实施例中的处理系统。

下面结合附图对本公开的实施例及其示例进行详细说明。除非特别说明,附图中相同的附图标记表示相同的组件、部件或元件。

图2示出了本公开至少一个实施例提供的一种加解密电路的示意图。

例如,图2中的加解密电路200包括数据加解密模块210、密钥扩展模块220、第一接口模块230和第二接口模块240。数据加解密模块210连接到密钥扩展模块220、第一接口模块230和第二接口模块240。第一接口模块230连接到第一总线20的一端,第二接口模块240连接到第一总线20的另一端。第一接口模块230还与第二接口模块240连接。第一总线20可以是AXI总线、AHB总线、SPI总线等。

密钥扩展模块220根据接收到的第一密钥生成多个子密钥,并将多个子密钥发送给数据加解密模块210。第一密钥是外部输入到密钥扩展模块220的,例如通过APB(Advanced Peripheral Bus,高级外围总线)将第一密钥输入给密钥扩展模块220。密钥扩展模块220根据该第一密钥可以生成多个子密钥,例如16或32个子密钥。比如,第一密钥的长度是128位,生成32个子密钥,每个子密钥的长度为128位。

数据加解密模块210根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,并将第二数据发送至第一接口模块230或第二接口模块240。其中,第一数据与读命令或写命令对应,第一数据来自第一接口模块230或第二接口模块240。在本实施例中,密钥扩展模块220和数据加解密模块210一起实现例如SM4分组密码算法、AES(AdvancedEncryption Standard,高级加密标准)算法等加解密算法。

在本实施例中,读命令对应于读数据,例如将从模块中的数据读取到主模块。写命令对应于写数据,例如主模块要将数据写入从模块。第一数据是没有经过加解密处理的读数据或写数据,而第二数据则是经过加解密处理的读数据或写数据。根据数据安全要求的不同,存在加密读、加密写、解密读、解密写和旁路等的数据传输方式。相应地,第一数据会被数据加解密模块进行加密处理或解密处理。

在本实施例中,第一数据可以来自于第一接口模块230,也可以来自于第二接口模块240,即,第一数据可以来自主模块或从模块。第二数据则需要去往另一个接口模块,第一数据和第二数据具有相同的数据流向。在第一数据来自第一接口模块230时,第二数据则会发送给第二接口模块240。在第一数据来自第二接口模块240时,第二数据则会发送给第一接口模块230。

第一接口模块230和第二接口模块240均被配置为在第一总线20中透传读命令或写命令的命令信息,以及接收第二数据并将第二数据发送给第一总线20。

本实施例中,第一接口模块230和第二接口模块240连接到第一总线20的两端,第一接口模块230经由第一总线20连接到主模块或从模块,第二接口模块230经由第一总线20连接到对应的从模块或主模块。加解密电路200对命令信息不进行解析和处理,从而命令信息在第一接口模块230和第二接口模块240之间透传。第一接口模块230和第二接口模块240在接收到第二数据后,将第二数据发送给总线20。

本实施例提供的加解密电路能够直接对第一总线中传输的数据进行加解密处理,无需对第一总线进行操作也无需解析第一总线中的命令,仅增加数据加解密必须的处理时间,即可实现数据的安全传输,大大的减少对第一总线进行操作所带来的时延。

在一些实施例中,数据加解密模块的工作模式包括加密模式和解密模式;其中,数据加解密模块被配置为在加密模式下,密钥扩展模块生成多个子密钥的同时,对第一数据进行加密处理;数据加解密模块被配置为在解密模式下,密钥扩展模块生成多个子密钥之后,对第一数据进行解密处理;以及数据加解密模块还被配置为根据切换指示在解密模式和加密模式之间切换。

例如,根据模式的不同,数据加解密模块210在加密模式下,使用多个子密钥对第一数据进行加密处理;在解密模式下,数据加解密模块210使用多个子密钥对第一数据进行解密处理。

在一种实现方式中,数据加解密模块在获取多个子密钥的所有子密钥之后对第一数据进行加密处理或解密处理。例如,在密钥扩展模块220发送全部的子密钥之后,数据加解密模块210才对第一数据进行加密处理或解密处理。

在又一种实现方式中,数据加解密模块在获取到多个子密钥中的部分子密钥之后就对第一数据进行加密处理或解密处理。例如,密钥扩展模块220在每个时间周期可以生成2个子密钥,共需要16个时间周期来生成32个子密钥,密钥扩展模块220在第一个时间周期生成前两个子密钥并发送给数据加解密模块210,数据加解密模块210在第二个时间周期开始利用上一个时间周期接收到的2个子密钥对第一数据进行加密处理,从子密钥生成到第一数据加密完成共需要17个时间周期。需要注意的是,根据加解密算法的不同,在解密处理需要将多个子密钥倒序使用时,数据加解密模块必须在接收到所有子密钥之后才能进行解密处理。例如,SM4算法要求使用32个子密钥倒序解密,则密钥扩展模块220需要用16个时间周期生成该32个子密钥,数据加解密模块210在第17个周期开始进行32轮的计算,共需要32个时间周期来完成第一数据的解密处理。

在一些实施例中,数据加解密模块包括多个加密单元和多个解密单元,其中,多个解密单元被配置为在解密模式下对第一数据进行解密处理;多个加密单元被配置为在加密模式下对第一数据进行加密处理。

在又一些实施例中,数据加解密模块包括多个加解密单元,其中,多个加解密单元被配置为在解密模式下对第一数据进行解密处理,以及在加密模式下对第一数据进行加密处理。

例如,数据加解密模块210可以采用不同的实现方式,比如采用多个加密单元和多个解密单元、或者采用多个加解密单元,加解密单元可以实现加密计算和解密计算。加密单元、解密单元和加解密单元都用来进行逻辑运算,例如采用逻辑门器件实现。

在一些实施例中,密钥扩展模块还被配置为多个子密钥在生成之后,将多个子密钥保留第一时长,其中,第一时长为预设时长、或者第一时长为对预设数据长度的数据进行加密处理或解密处理所需的时长、或者第一时长为根据多个子密钥使用次数确定的。

例如,密钥扩展模块220在每次生成多个子密钥之后,会将本次生成的多个子密钥保存一段时间,即第一时长。该第一时长例如是预设的时长,如100ms。或者第一时长与预设数据长度相关,即,子密钥保留的时间由预设数据长度决定,比如本次生成的子密钥用于处理4MB的数据,则第一时长即为处理4MB数据对应的时长。又如,第一时长与子密钥的使用次数相关,例如本次生成的子密钥可以被使用20次,则第一时间就是多个子密钥均被使用20次所需的时长。

可选地,密钥扩展模块还被配置为在多个子密钥保留第一时长之后,更新第一密钥,并根据更新的第一密钥,更新多个子密钥。例如,由密钥扩展模块220来进行子密钥的更新,密钥扩展模块220进行第一时长的计时,并在计时到时之后,获取新的第一密钥,然后根据新的第一密钥更新多个子密钥。其中,密钥扩展模块220是从外部接收第一密钥,其可以存储第一密钥,在旧的第一密钥使用之后,就用新的第一密钥将其覆盖或者顺序使用预先存储的多个第一密钥。

在本公开的一些实施例中,密钥扩展模块可以有计时功能。比如利用状态机来实现计时。例如,密钥扩展模块还包括第一状态机,第一状态机被配置为对多个子密钥的生成进行计时,并在计时完成后向数据加解密模块发送多个子密钥生成完成的指示。比如,密钥扩展模块220包括第一状态机,其能够通知数据加解密模块210多个子密钥生成完成,从而数据加解密模块210就可以开始使用多个子密钥进行数据的解密处理。

又如,密钥扩展模块还包括第二状态机,第二状态机被配置为对第一时长进行计时,并在计时完成后向密钥扩展模块发送更新第一密钥的指示。例如,密钥扩展模块220包括第二状态机,其多个子密钥生成完成之后开始进行第一时长的计时,并在计时到时之后向密钥扩展模块220自身发送更新第一密钥的指示,从而使得密钥扩展模块220生成新的多个子密钥。在实施例中,除了更新第一密钥的指示之外,第二状态机还可以发送例如子密钥更新指示,不论是指示的名称是什么,其作用均是为了更新子密钥。

图3示出了本公开至少一个实施例提供的另一种加解密电路的示意图。

例如,图3中的加解密电路300包括数据加解密模块310、密钥扩展模块320、第一接口模块330、第二接口模块340和寄存器模块350。数据加解密模块310连接到密钥扩展模块320、第一接口模块330和第二接口模块340。第一接口模块330连接到第一总线30的一端,第二接口模块340连接到第一总线30的另一端。第一接口模块330还与第二接口模块340连接。

第一接口模块330和第二接口模块340均被配置为在第一总线30中透传命令信息,以及接收第二数据并将第二数据发送给第一总线30,其中命令信息携带读命令或写命令的命令信息。

本实施例中的数据加解密模块310、密钥扩展模块320、第一接口模块330和第二接口模块340实现的功能与上述实施例中的加解密电路200的中的数据加解密模块210、密钥扩展模块220、第一接口模块230和第二接口模块240的相似,其中相同的功能描述参见图2的相关描述,在此不再赘述。

寄存器模块350与数据加解密模块310、密钥扩展模块320、第一接口模块330和第二接口模块340连接。寄存器模块350可以保存密钥扩展模块320和数据加解密模块310的配置参数。

例如,配置参数包括加解密电路300的工作模式。该工作模式包括数据加解密模式和旁路模式。旁路模式表示不对第一数据进行加解密,将第一数据和命令信息直接进行透传。数据加解密模式表示需要对第一数据进行加解密。数据加解密模式还可以进一步包括多种模式,例如,SM4加解密算法包括计数器(Counter,CTR)模式、电子码本(ElectronicCode-Book,ECB)模式等。除了加解密电路300的工作模式,配置参数还包括其他的模式。例如数据加解密模块310的工作模式包括加密模式和解密模式。

可选地,通过设置寄存器模块350中对应存储的值来切换模式。在寄存器模块350中,各种模式均可以用数值来表示,例如加解密电路300的工作模式中的加解密模式用“1”表示,旁路模式则用“0”表示,则将“0”修改为“1”表示从旁路模式切换到加解密模式。相应地,数据加解密模块310通过查询寄存器模块350中对应于“工作模式”的取值就可以知晓当前的工作模式。

可选地,寄存器模块与第二总线连接,寄存器模块被配置为从第二总线获取配置参数。第二总线可以是APB总线。例如APB等的低速总线,其通常只允许以安全访问的形式进行读操作或者写操作。对于非安全访问的写操作无法接触到寄存器模块350。对于非安全访问的读操作会返回预设值,例如“DEADBEEF”,预设值也会方便后续处理,例如对出现预设值的位置的检索和定位、bug查找等。这种安全访问机制,可以进一步保证数据安全。第二总线还可以是AXI总线。

可选地,在没有寄存器模块的情况下,可以通过安全访问的总线对加解密电路进行配置。例如加解密电路200可以通过APB总线被配置及重新配置。

可选地,寄存器模块350还可以存储第一密钥和子密钥生成指示。例如,寄存器模块350经由第二总线获取第一密钥和子密钥生成指示,并向密钥扩展模块320发送第一密钥和子密钥生成指示。寄存器模块350在接收到外部发送的第一密钥之后,保存该第一密钥。寄存器模块350还可以从外部接口子密钥生成指示,保存该子密钥生成指示并发送给密钥扩展模块320。

相应地,密钥扩展模块320被配置为在接收到子密钥生成指示之后,生成多个子密钥,密钥扩展模块320生成子密钥的方式可参见图2相关的描述,在此不再赘述。

可选地,寄存器模块350还可以对多个子密钥的保留时长进行计时,在计时完成后更新第一密钥,并向密钥扩展模块320发送更新后的第一密钥和子密钥生成指示。例如寄存器模块350包括计数器寄存器,其可以进行计时或计数。多个子密钥的保留时长可以上述实施例中的第一时长。在利用寄存器模块350来进行计时情况下,密钥扩展模块320可以被动地“保留”和“更新”多个子密钥,从而密钥扩展模块320不需要实现计时功能。

在一些实施例中,寄存器模块350还被配置为记录数据加解密模块310中的数据残留情况,数据残留情况包括有数据残留和无数据残留。例如,寄存器模块350可以对进入数据加解密模块310的第一数据和从数据加解密模块310输出的第二数据进行统计,在进入数据加解密模块310的数据量等于离开数据加解密模块310的数据量时,数据残留情况为无残留,反之则为有数据残留。例如可以设置在有数据残留的情况下,不可以对寄存器模块350中的工作模式的“值”进行修改。通过记录数据残留情况,可以保证不会在第一数据尚未完成加密处理或者解密处理时进行工作模式或其他模式的切换,从而保证加解密电路正常工作。

图4a和图4b分别示出了本公开至少一个实施例提供的又一种加解密电路的示意图。

例如,图4a中,加解密电路400包括数据加解密模块210、密钥扩展模块220、第一接口模块230、第二接口模块240和数据缓冲模块401。数据加解密模块210、密钥扩展模块220、第一接口模块230和第二接口模块240参见图2的相关描述。

数据缓冲模块401与第一接口模块230、第二接口模块240以及数据加解密模块210连接。其中,数据缓冲模块401被配置为接收来自数据加解密模块210的第二数据以及接收来自第一接口模块230或第二接口模块240的命令信息,将第二数据和命令信息对齐后发送至第一总线。

在本公开的实施例中,将命令信息透传,可以减少加解密电路中用于缓存命令信息的缓存资源,但是对于命令信息的目标设备而言,命令信息和第二数据并不是同时发送过来,命令信息和数据之间会存在延迟,数据的整齐性较差。这里的目标设备是指接收命令信息和第二数据的设备,其可以是第一总线上的master或slave。

本实施例中的数据缓冲模块可以将命令信息和第二数据对齐后发送到第一总线上,从而目标设备可以同时接收到命令信息和第二数据,提供数据整齐性,便于后续的处理。

在一些实施例中,数据缓冲模块包括至少两个先进先出(First In First Out,FIFO)存储器,至少两个FIFO存储器中的第一FIFO存储器被配置为缓冲命令信息,至少两个FIFO存储器中的第二FIFO存储器被配置为缓冲第二数据。

例如,数据缓冲模块401包括第一FIFO存储器和第二FIFO存储器,第一FIFO存储器与第一接口模块230及第二接口模块240连接,第二FIFO存储器与第一接口模块230、第二接口模块240以及数据加解密模块210连接。第一FIFO存储器在第一接口模块230和第二接口模块240之间传输命令信息。第二FIFO存储器在第一接口模块230或第二接口模块240和数据加解密模块210之间传输第二数据,或者在第二接口模块240和数据加解密模块210之间传输第二数据。

可选地,数据缓冲模块还可以在第一接口模块和数据加解密模块之间传输第一数据,或者在第二接口模块和数据加解密模块之间传输第一数据。例如,数据缓冲模块401还包括第三FIFO存储器,其用于在第一接口模块230和数据加解密模块210之间传输第一数据,或者在第二接口模块240和数据加解密模块210之间传输第一数据。通过使用FIFO存储器缓冲传输第一数据、第二数据和命令信息,临时保存第一总线中传输的数据,从而在第一总线堵塞时,对堵塞起到缓解作用。并且结合多个FIFO存储器,可以给加解密电路设置暂停功能,从而可以选择暂停及继续第一数据的加密处理或解密处理。

可选地,数据缓冲模块还被配置为剩余存储空间不足时,向数据加解密模块发送暂停指示,以使数据加解密模块暂停对第一数据的处理。例如,数据缓冲模块401中没有空闲的存储空间时,向数据加解密模块210发送暂停指示,从而数据加解密模块210对第一数据的处理暂时停止。又如,数据缓冲模块401在有空闲的存储空间之后,向数据加解密模块210发送恢复指示,从而数据加解密模块210恢复对第一数据的处理。在本实施例中,数据缓冲模块的剩余存储空间不足包括无剩余存储空间和剩余存储空间小于预设阈值等。

在图4b中,加解密电路410包括数据加解密模块310、密钥扩展模块320、第一接口模块330、第二接口模块340、寄存器模块350和数据缓冲模块411。数据加解密模块310、密钥扩展模块320、第一接口模块330、第二接口模块340和寄存器模块350可参见图3相关描述。

数据缓冲模块411与第一接口模块330、第二接口模块340、数据加解密模块310以及寄存器模块350连接。数据缓冲模块411和数据缓冲模块401的功能类似,具体可参见图4a的相关描述。寄存器模块350还可以存储数据缓冲模块411的配置参数,例如FIFO存储器的深度和宽度等。

数据缓冲模块411包括FIFO存储器412和FIFO存储器413。FIFO存储器413缓冲传输命令信息,FIFO存储器412缓冲传输第二数据。图4b中,数据加解密模块310与第一接口模块330及第二接口模块340之间的连接线表示进行第一数据的传输,数据加解密模块310和FIFO存储器412的连接线表示进行第二数据的传输。在数据缓冲模块411中的FIFO存储器412和FIFO存储器413可以实现将第二数据和命令信息对齐传输。例如,FIFO存储器412和FIFO存储器413具有相同数量的存储单元,对应的第二数据和命令信息分别被存储在FIFO存储器412和FIFO存储器中的对应的存储单元内,由于其先进先出的特征,对应的第二数据和命令信息就会被对齐发送到第一接口模块330或第二接口模块340。

图4a和图4b仅为示意并非限制,加解密电路200可以设置如图4a的数据缓冲模块401,也可以设置图4b的数据缓冲模块411。相应地,加解密电路300也可以设置如图4a的数据缓冲模块401。

在一些实施例中,密钥扩展模块包括多个子密钥生成单元,其中多个子密钥生成单元中的每一个子密钥生成单元被配置为根据第一密钥生成多个子密钥中的两个子密钥。

图5示出了本公开至少一个实施例提供的密钥扩展模块的示意图。

在图5中,密钥扩展模块500包括N个子密钥生成单元。N为正整数,例如N等于2、4、8、16和32。每个密钥扩展单元可以生成至少一个子密钥。例如总共需要生成32个子密钥,每个密钥扩展单元生成32/N个子密钥。每个密钥扩展单元在1个时间周期内生成32/N个子密钥,但是每个密钥扩展单元需要等待前一个密钥扩展单元的输出结果作为当前密钥扩展单元的输入,从而密钥扩展模块500共需要N个周期就可以生成32个子密钥。

例如,密钥扩展模块500的输入是第一密钥,例如第一密钥的数据长度是128位,可以将第一密钥拆分成4个32位的数据。密钥扩展模块500包括16个密钥扩展单元,每个密钥扩展单元的输入是4个32位的数据(即第一密钥)和2个1位的预设常数。每个密钥扩展单元的输出是2个32位的子密钥。

在本实施例中,密钥扩展模块220和密钥扩展模块320都可以采用图5的密钥扩展模块500的结构。

例如,在本公开至少一实施例提供的加解密电路中,数据加解密模块包括多个处理单元,其中多个处理单元中的每一个处理单元被配置为使用多个子密钥中的两个子密钥对第一数据的一部分进行加密处理或解密处理。

图6示出了本公开至少一个实施例提供的数据加解密模块的示意图。

数据加解密模块600包括N个处理单元。每一个处理单元使用多个子密钥中的至少一个子密钥对第一数据的一部分进行加密处理或解密处理。例如,数据加解密模块600中的处理单元的数量与密钥扩展模块500的密钥扩展单元的数量相同,即处理单元和密钥扩展单元一一对应。例如,16个密钥扩展单元对应连接到16个处理单元,每个处理单元接收对应的密钥扩展单元输出的2个子密钥。

与密钥扩展单元不同的是,N个处理单元可以并行处理第一数据。例如输入每个处理单元的是数据长度为128位的数据,从而N个处理单元可以在一个时间周期内处理N*128位的数据。可以理解地,每个处理单元需要接收到对应的子密钥之后才能工作。

可选地,多个处理单元还被配置为在接收到多个子密钥之后且多个子密钥未更新之前,多个处理单元流水线式地处理第一数据。例如,32个子密钥已经生成,16个处理单元均接收到了对应的子密钥,在这种情况下,16个处理单元只要有第一数据的输入,就可以流水线式地对第一数据进行处理。

图7示出了本公开至少一个实施例提供的工作模式切换的示意图。

加解密电路的工作模式还可以细分为读模式、写模式和旁路模式,图7示出了读、写和旁路模式之间的转换方式。在旁路模式下,加解密电路对第一数据不进行处理,即不对数据进行加密或者解密处理,将第一数据和命令信息透传。在读模式下仅允许来自第一总线的突发读操作。在写模式下仅允许来自第一总线的突发写操作。而对于读模式和写模式,还需要设置加密处理或解密处理,如此就出现加密写、加密读、解密写、解密读这几种可能的工作方式。

如图7所示出的状态切换可以用状态机来实现。该状态机可以对称设置在第一接口模块和第二接口模块中。在图7中,datamode=0x0的取值变化决定状态切换。datamode的取值等于0x0、0x1和0x2。0x0对应于旁路模式、0x1对应于读模式、0x2对应于写模式。在datamode的取值等于0x2时,就会切换到写模式。在datamode的取值等于0x1时,就会切换到读模式。在datamode的取值等于0x0时,就会切换到旁路模式。

本公开至少一个实施例还提供一种处理系统,包括:master;slave;和至少一个如上述实施例中任一项的加解密电路;其中,至少一个加解密电路中的每一个加解密电路的一端经由第一总线连接master,另一端经由第一总线连接slave。

图8示出了本公开至少一个实施例提供的处理系统的示意图。

如图8所示,处理系统800包括主模块801、从模块802、加解密电路803、可选地加解密电路804和总线805。主模块801通过总线805的一部分连接到加解密电路803和加解密电路804,加解密电路803和加解密电路804通过总线805的另一部分连接到从模块802。主模块801可以是处理器、处理器核、DMA、PCIe(Peripheral Component Interconnect express,外围组件互连协议)设备等。从模块802可以是DDR SDRAM(Double Data Rate SynchronousDynamic Random Access Memory,双倍速率同步动态随机存储器)、PCIe设备等。

在图8中加解密电路804用虚线框表示,其为可选择设置的,即处理系统800可以仅包括加解密电路803,处理系统800也可以包括加解密电路803和加解密电路804。

在处理系统800仅包括加解密电路803时,加解密电路803在主模块801和从模块802之间对总线805中传输的数据进行加密处理和解密处理。

在处理系统800包括加解密电路803和加解密电路804二者时,可以选择其中一个加解密电路进行数据的加密处理,另一个加解密电路进行数据的解密处理。例如,使用加解密电路803进行数据的加密处理,使用加解密电路804进行数据的解密处理。

可选地,在至少一个加解密电路包括两个加解密电路时,两个加解密电路中的第一加解密电路被配置为从主模块向从模块传输信息,两个加解密电路中的第二加解密电路被配置为从从模块向主模块传输信息。

在又一种实现方式中,可以选择将加解密电路和数据的传输方向相关联。例如,将加解密电路803设置为对从主模块801发送到从模块802的数据进行加密处理和加密处理,将将加解密电路803设置为对从从模块802发送到主模块801的数据进行加密处理和加密处理。

在本实施例中的处理系统中,可以灵活的设置加解密电路的数量,例如1个、2个、3个、4个或者更多个。在面对带宽需求小的总线,可以仅用1个加解密电路。对于例如PCIe设备、DDR等带宽需求大、数据传输速度要求高的场景,可以选择根据数据的传输方向,加密模式还是解密模式等设置更多的加解密电路,从而保证数据的高效传输。

本公开至少一个实施例提供一种电子设备,包括如上述实施例中任一项所述的处理系统。

图9示出了本公开至少一个实施例提供的电子设备的示意图。

如图9所示,电子设备900包括处理系统901。处理系统901为本公开任一实施例提供的处理系统,例如图8所示的处理器系统800。电子设备900可以为任意的具有计算功能的设备,例如为计算机、服务器、智能手机、平板电脑等,本公开的实施例对此不作限制。

本公开至少一个实施例还提供一种数据加解密方法,包括:根据接收到的第一密钥生成多个子密钥;经第一接口模块或第二接口模块从第一总线接收第一数据,根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,并将第二数据对应地经第二接口模块或第一接口模块发送到第一总线,其中,第一数据与读命令或写命令对应;在第一总线中使用第一接口模块和第二接口模块透传读命令或写命令的命令信息。

图10示出了根据本公开至少一个实施例提供的数据加解密方法的流程图。

如图10所示,数据加解密方法1000包括以下步骤:

步骤S1001,根据接收到的第一密钥生成多个子密钥。

例如,第一密钥是从总线接收的,比如AXI总线或APB总线。可以采用已有的密钥生成算法或密钥扩展算法来生成子密钥。例如得到第一密钥之后,每一轮生成2个子密钥,这2个子密钥作为下一轮生成2个子密钥的必要条件。

步骤S1002,经第一接口模块或第二接口模块从第一总线接收第一数据。其中,第一数据与读命令或写命令对应。

例如,第一接口模块和第二接口模块与第一总线是双向交互的,从而第一数据可能来自第一接口模块或第二接口模块。

步骤S1003,根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据。

例如,第一数据的位宽是128位,其对应的第二数据也是128位。使用多个子密钥可以第一数据进行多轮加密处理或解密处理。例如,多个子密钥为32个子密钥,每一轮使用2个子密钥对第一数据进行加密处理或解密处理,共需要进行16轮的加密处理或解密处理。

可选地,数据加解密方法对应的工作模式包括加密模式和解密模式。在加密模式下,在生成多个子密钥的同时,对第一数据进行加密处理。例如,32个子密钥已经生成了16个子密钥,从而可以使用这16个子密钥对第一数据进行加密处理,同时继续生成剩下的16个子密钥。可选地,可以设置子密钥阈值数量,在子密钥已生成的数量超过该阈值数量之后,就可以对第一数据进行加密处理。例如阈值数量为1,2,4等。例如,子密钥阈值数量与每一轮加密处理所需的子密钥数量相关,在仅需要1个子密钥就可以进行一轮加密处理时,该子密钥阈值数量为1。

在解密模式下,在生成多个子密钥之后,对第一数据进行解密处理。例如,对第一数据进行解密处理时需要倒序使用多个子密钥,从而需要等待所有的子密钥生成完成才可以对第一数据进行解密处理。若多个子密钥的生成顺序与多个子密钥被使用来解密的顺序相同,则可以在生成子密钥的同时对第一数据进行解密处理。数据加解密方法还可以根据切换指示来实现加密模式和加密模式之间的切换。在一个实现方式中,可以使用多个子密钥中的两个子密钥对第一数据进行一轮加密处理或一轮解密处理。还可以使用其他数量的子密钥对第一数据进行一轮加密处理或一轮解密处理,该数量可以进行设置和调整,在此不作限制。

步骤S1004,将第二数据对应地经第二接口模块或第一接口模块发送到第一总线。

例如,在第一数据是从第一接口模块接收的情况下,将第二数据从第二接口模块发送到第一总线,反之亦然。

步骤S1005,在第一总线中使用第一接口模块和第二接口模块透传读命令或写命令的命令信息。

对于命令信息不进行解析并且不对命令信息进行处理,是在第一接口模块和第二接口模块之间透传该命令信息。可以理解地,命令信息和第一数据来自同一个接口模块。

在图中将步骤S1004和步骤S1005的连线示意为没有箭头的虚线,这是因为步骤S1004和步骤S1005没有必然的先后顺序。例如,步骤S1004和步骤S1005是同时进行的,即命令信息和第二数据对齐后一起发送给第一总线。还可以是命令信息先发送到第一总线,第二数据后发送到第一总线。

可选地,该数据加解密方法还包括:在多个子密钥生成之后,将多个子密钥保留第一时长,其中,第一时长为预设时长、或者第一时长为对预设数据长度的数据进行加密处理或解密处理所需的时长、或者第一时长为根据多个子密钥使用次数确定的。例如,对第一时长进行计时或者倒计时,在第一时长到时时,丢弃多个子密钥。或者,对子密钥的使用次数进行计数,在使用次数耗尽或者达到该使用次数时,丢弃当前的多个子密钥。在丢弃当前的多个子密钥的情况下,还需要停止对第一数据的加密处理或解密处理,例如暂停接收第一数据或暂停加解密处理。等待新的多个子密钥生成之后,恢复之前暂停的步骤。

可选地,在多个子密钥保留第一时长之后,更新第一密钥;根据更新的第一密钥,更新多个子密钥。更新第一密钥可以是接收新的第一密钥,然后根据新的第一密钥获取新的多个子密钥。

可选地,在第一时长内,可以流水线式地对第一数据进行加密处理或解密处理。在第一时长内,多个子密钥都已经得到,从而只要接收到第一数据,就可以对第一数据进行加密处理或解密处理。例如,在第一时长内连续接收到13个第一数据,则对这13个第一数据依次进行加密处理或解密处理。

图11示出了根据本公开至少一个实施例提供的数据加解密装置的示意图。

数据加解密装置1100包括子密钥生成部件1101、数据接收部件1102、数据加解密部件1103和数据传输部件1104。子密钥生成部件1101用于根据接收到的第一密钥生成多个子密钥。数据接收部件1102用于经第一接口模块或第二接口模块从第一总线接收第一数据。数据加解密部件1103用于根据多个子密钥对第一数据进行加密处理或者解密处理以得到第二数据,并将第二数据对应地经第二接口模块或第一接口模块发送到第一总线。其中,第一数据与读命令或写命令对应。数据传输部件1104用于在第一总线中使用第一接口模块和第二接口模块透传读命令或写命令的命令信息。

数据加解密装置1100可以执行如图10所示的数据加解密方法1000,具体的执行方式参见图10的相关描述。

本公开至少一个实施例还提供一种数据加解密装置,包括处理器,该处理器实现如图10所示的数据加解密方法1000。

本公开至少一个实施例还提供一种电子设备,包括如上述任一项的数据加解密装置。

以上结合具体实施例描述了本申请的基本原理,但是,需要指出的是,在本申请中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。

值得注意的,本申请中的步骤流程图以及以上方法描述仅作为例示性的例子并且不旨在于要求或暗示必须按照给出的顺序进行各个实施例的步骤,某些步骤可以并行、彼此独立或按照其他适当的顺序执行。另外,诸如“其次”、“然后”、“接下来”等等的词语不旨在于限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。

本申请中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。还需要指出的是,在本申请的装置和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本申请的等效方案。

有以下几点需要说明:(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

相关技术
  • 车辆控制装置、车辆、车辆控制装置的处理方法以及存储介质
  • 车辆控制装置、车辆、车辆控制装置的处理方法以及存储介质
  • 车辆控制装置、车辆、车辆控制方法以及存储介质
  • 车辆控制装置、车辆控制方法及存储介质
  • 车辆控制装置、车辆控制方法及存储介质
  • 电动车辆的控制装置、具备该控制装置的电动车辆、电动车辆的控制方法以及存储有用于使计算机执行该控制方法的程序的计算机能够读取的存储介质
  • 车辆用控制系统、车辆用控制装置、车辆用学习装置、车辆用控制方法以及存储介质
技术分类

06120116544496