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

一种支持加密存储的嵌入式Flash控制器

文献发布时间:2023-06-19 12:07:15


一种支持加密存储的嵌入式Flash控制器

技术领域

本发明涉及存储技术领域,特别涉及一种支持加密存储的嵌入式Flash控制器。

背景技术

相比于ROM,嵌入式Flash(Embedded Flash,或者eFlash)拥有重复烧写能力,嵌入式Flash中存储的数据可进行擦除和重新烧写;而相比于SRAM,嵌入式Flash存储的内容在掉电后不会丢失。因此,嵌入式Flash作为非易失性存储模块,可广泛应用于低功耗、低成本的系统芯片设计领域,尤其是在安全芯片领域,嵌入式Flash可以用来存储密钥,同时支持密钥的更新,因而得到了广泛应用。

如图1所示,系统芯片可以包括处理器CPU、直接存储器访问DMA以及嵌入式Flash,所述处理器CPU、直接存储器访问DMA以及嵌入式Flash通过系统总线与安全子系统以及外设通信。其中,所述处理器CPU负责控制、操作系统平台,以及一般的信号处理任务,所述嵌入式Flash则用来存储指令和数据,所述处理器CPU访问嵌入式Flash获得所需要的指令和数据,进而完成响应的任务操作。

随着用户安全意识的日益提高,对于嵌入式Flash加密存储的需求也越来越多。例如,专利申请201610987767.7中,公开了一种Flash加密存储方法及装置,其通过设备唯一ID生成一组字节交换位置(i,j)和密钥,将一页数据中i,j位置上的数据加密后交换。这一方法主要是基于软件实现,且加密方法较简单,安全性不高。专利申请201911356169.X中则公开了一种Flash加密解密接口电路及方法,采用双密钥加密及解密的电路设计,实现写数据的加密和读数据的解密。

发明内容

针对现有技术中的部分或全部问题,本发明提供一种支持加密存储的嵌入式Flash控制器,包括:

配置总线接口,其与处理器可通信地连接,用于从所述处理器获取待烧写的数据及烧写地址;

读数据总线接口,其与处理器可通信地连接,用于获取读数据地址,并将读取到的Flash存储器数据发送给所述处理器;

控制命令通路,包括:

命令寄存器,其与所述配置总线接口可通信地连接,用于接收

操作指令;以及

命令解析状态机,其与所述命令寄存器可通信地连接,同于解析接收的操作指令;

烧写数据通路,用于实现Flash存储器数据的烧写,包括:

写数据寄存器,其与所述配置总线接口可通信地连接,用于存

储待烧写的数据;

写数据加密模块,其与所述写数据寄存器可通信地连接,用于

对待烧写的数据进行加密;以及

烧写地址寄存器,其与所述配置总线接口可通信地连接,用于存储烧写地址;以及

读数据通路,用于实现Flash存储器数据的读取,包括:

读数据解密模块,其与所述读数据总线接口可通信地连接,用于将读取到的数据进行解密操作。

进一步地,所述嵌入式Flash控制器还包括初始地址寄存器,其与所述配置总线接口可通信地连接,用于存储Flash存储器的烧写起始地址。

进一步地,所述嵌入式Flash控制器还包括:

ECC编码模块,其与所述写数据加密模块可通信地连接,用于对加密后的数据进行校验编码;以及

ECC译码模块,其与所述读数据解密模块可通信地连接,用于对从Flash中读取到的数据进行校验译码。

进一步地,所述嵌入式Flash控制器还包括缓存模块,包括:

至少一个烧写缓存,其与所述写数据加密模块可通信地连接,且任一所述烧写缓存的大小与所述配置总线接口的数据位宽相同;

缓存空满逻辑模块,用于监测所述烧写缓存是否被写满,若所有烧写缓存均已写满,则挂起所述配置总线接口;

至少一个拼接缓存,其与所述烧写缓存可通信地连接,用于将烧写缓存中存储的数据拼接成指定大小的数据,各拼接缓存大小的总和等于各烧写缓存大小的总和,且任一所述拼接缓存的大小等于所述Flash存储器的有效数据位宽;

数据拆分模块,其用于将从Flash存储器中读取的数据拆分成指定大小,并存入读数据缓存模块,其中,所述指定大小是指所述读数据缓存模块的大小;以及

至少一个读数据缓存,其与所述写数据加密模块可通信地连接,且任一所述读数据缓存的大小与所述读数据总线接口的数据位宽相同。

进一步地,所述命令寄存器包括1位“擦除使能位”,1位“烧写使能位”。

进一步地,所述配置总线接口和/或所述读数据总线接口为AMBA(AdvancedMicrocontroller Bus Architecture)AHB(Advanced High Performance Bus)2.0接口,但不局限于AHB接口。

进一步地,所述写数据加密模块和/或读数据解密模块包括至少一级加密电路,其中任一级所述加密电路用于实现如下功能:

将数据的低位与密钥进行轮转函数操作后,与数据的高位进行按位异或,得到新的数据低位;以及

将数据的低位直接传递给新的数据高位,新的数据低位及高位作为下一组加密电路的输入。

进一步地,各级加密电路的密钥为固定值,且所述写数据加密模块与读数据解密模块的密钥输入顺序相反。

进一步地,各级加密电路的密钥各不相同。

进一步地,所述轮转函数为替换运算函数或有限域矩阵运算函数。

本发明提供一种支持加密存储的嵌入式Flash控制器,首先,通过添加写数据加密模块及读数据解密模块,实现了Flash存储器数据的加密,根据需要,还可以添加ECC编码及译码模块,对数据进行的校验编码,提供双重安全保护。其中所述写数据加密模块及读数据解密模块采用了Feistel分组对称密码结构,可根据安全等级需求,确定加密电路的轮次。其次,所述控制器通过设置初始地址寄存器,使得可以持续写入待烧写数据,控制器只需根据初始地址,进行地址自增,实现地址自动管理,提高数据烧写效率。此外,所述控制器还设置有烧写缓存以及相应的拼接缓存模块,当Flash存储器数据位宽大于配置总线接口时,控制器可进行数据拼接,进而实现更大位宽数据的加密、烧写操作,提高了控制器的通用性。

附图说明

为进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。

图1示出现有技术中系统芯片的结构示意图;

图2示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的结构示意图;

图3示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的电路架构示意图;

图4示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的加密电路结构示意图;以及

图5示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的擦除操作时序示意图。

具体实施方式

以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法、材料或组件一起实施各实施例。在其它情形中,未示出或未详细描述公知的结构、材料或操作以免模糊本发明的发明点。类似地,为了解释的目的,阐述了特定数量、材料和配置,以便提供对本发明的实施例的全面理解。然而,本发明并不限于这些特定细节。此外,应理解附图中示出的各实施例是说明性表示且不一定按正确比例绘制。

在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。

需要说明的是,本发明的实施例以特定顺序对工艺步骤进行描述,然而这只是为了阐述该具体实施例,而不是限定各步骤的先后顺序。相反,在本发明的不同实施例中,可根据工艺的调节来调整各步骤的先后顺序。

为了实现不同位宽Flash存储器的数据加密,本发明提供一种支持加密存储的嵌入式Flash控制器。下面结合实施例附图,对本发明的方案做进一步描述。

图2示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的结构示意图。如图2所示,一种支持加密存储的嵌入式Flash控制器,包括配置总线接口001、读数据总线接口002、控制命令通路003、烧写数据通路004以及读数据通路005。

嵌入式Flash存储器不同于ROM,嵌入式Flash控制器能够擦除嵌入式Flash存储器中所有内容,即擦除(erase)操作,同时,也能够对嵌入式Flash存储器中的内容重新烧写,即重烧写(program)操作。通常erase和program操作对权限等级要求较高。在本发明的实施例中,通过所述配置总线接口001实现erase和program操作。所述配置总线接口001与处理器可通信地连接,用于从所述处理器接收烧写指令、擦除指令、重烧写指令,并获取待烧写的数据及烧写地址。在本发明的一个实施例中,所述配置总线接口001采用AMBA(AdvancedMicrocontroller Bus Architecture)AHB(Advanced High Performance Bus)2.0接口,或AMBA APB(Advanced Peripheral Bus)接口,或更先进的AXI总线接口,从而适用于ARM处理器,在本发明的又一个实施例中,所述配置总线接口001采用CoreConnect总线,以适用于IBM PowerPC处理器,以及,在本发明的再一个实施例中,所述配置总线接口001可采用开源的Wishbone、TileLink等总线。

对普通用户而言,相较于SRAM可以在单个时钟周期内完成读或者写操作,但是数据在掉电后丢失;使用嵌入式Flash存储器时,只需要从嵌入式Flash存储器中读取数据或者指令,而不需要去更新数据或者指令,因此嵌入式Flash存储器的读延时也较SRAM更长。在本发明的实施例中,数据的读取通过所述读数据总线接口002实现。所述读数据总线接口002与处理器可通信地连接,用于接收所述处理器发送的读数据指令,获取需读取数据的地址,并将读取到的Flash存储器数据发送给所述处理器。

所述控制命令通路003以及烧写数据通路004通过所述配置总线接口001与所述处理器通信,其中所述控制命令通路003可控制所述烧写数据通路004以及读数据通路005的时序,所述烧写数据通路004则根据接收到的指令实现Flash存储器的数据烧写。

所述读数据通路005通过所述读数据总线接口002与所述处理器通信,用于根据数据读取指令,读取Flash存储器指定地址的数据。

图3示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的电路架构示意图。如图3所示,所述控制命令通路003包括命令寄存器301以及命令解析状态机302,所述烧写数据通路004包括写数据寄存器401、写数据加密模块402以及烧写地址寄存器403,以及所述读数据通路005包括读数据解密模块501。

所述命令寄存器301与所述配置总线接口001可通信地连接,用于接收操作指令,并将接收到的操作指令发送给所述命令解析状态机302进行解析,进而得到相应的时序。为实现Flash存储器的擦除、烧写等功能,所述命令寄存器301中至少需要包括1位“擦除使能位”,1位“烧写使能位”,在本发明的一个实施例中,所述命令寄存器301为32位,其还可包括“缓存清空”位、“ECC关闭”位等有效数据,以实现不同的功能。

所述写数据寄存器401与所述配置总线接口001可通信地连接,用于存储待烧写的数据。

所述写数据加密模块402与所述写数据寄存器401可通信地连接,用于对待烧写的数据进行加密。在本发明的一个实施例中,所述写数据加密模块402采用Feistel分组密码算法实现对称加密。其中,Feistel分组密码结构由很多相同的轮函数电路组成,更多的迭代轮次能够取得更好的安全性,但是硬件开销更大,组合逻辑时序更差。在本发明的其他实施例中,也可以采用其他对称加密方式。在本发明的一个实施例中,所述写数据加密模块包括至少一级加密电路,其中任一级所述加密电路包括一个轮转函数以及一个加法器。其中,所述轮转函数可以采用简单的替换运算,也可以采用复杂的有限域矩阵运算,所述轮转函数越复杂,加密电路的安全性越高,但是相应的电路复杂度也随之提高。以32位的输入明文为例,图4示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的加密电路结构示意图。如图4所示,所述写数据加密模块的实现原理如下:

首先,所述输入明文被分为2个16位的组,其中,高16位计为LE0,低16位计为RE0;

然后,将RE0与16位的密钥data_key[15:0]做轮转函数F操作,然后与LE0做按位异或,得到RE1,并将RE0则直接传递给LE1。如此完成第一轮加密电路,RE1及LE1所谓下一级加密电路的输入,重复如上操作,但是,各级加密电路的密钥不同。

在图4所示的实施例中,共包括4级加密电路,在得到第四级加密电路的输出LE4、RE4后,将所述LE4传递给RE5,RE4直接传递给LE5,最终得到32位输出密文。应当理解的是,根据实际需求,可对加密电路的级数进行调整,例如,在时序允许时,可以增加加密电路的级数,以提高安全等级,或减少加密电路的级数,以降低安全等级。由于嵌入式Flash存储器存储的是非易失性数据,因此,所述写数据加密模块402中采用的密钥对同一个芯片来说是固定值,这样才能保证下一次重新上电后,仍然可以用同一个密钥实现对Flash存储器数据的解密。所述密钥可以存储在fuse中,或者为固化在芯片中的字符串。

所述烧写地址寄存器403与所述配置总线接口001可通信地连接,用于存储烧写地址,其中所述烧写地址寄存器403的Addr[1:0]用来标记字节的偏移,烧写地址存储于Addr[4:2]。为了实现地址自动管理,在本发明的一个实施例中,所述烧写数据通路004还包括初始地址寄存器404,其设置于所述配置总线接口001与所述烧写地址寄存器403之间,用于存储Flash存储器的烧写起始地址,进而使得可以从Flash存储器的任意地址开始烧写。在设置所述烧写地址寄存器403后,只需要持续地将待烧写的数据写入所述写数据寄存器401,即可自动完成地址管理和数据加密、拼接和烧写操作,具体而言,是在完成一个数据写入后,所述烧写地址寄存器403将自动增加1个数据位宽。所述烧写地址寄存器403中的烧写地址通过行列地址译码器006进行解析,得到Flash控制器中的行地址及列地址,以便于数据的烧写。

为了能够实现与所述配置总线接口数据位宽不一致的Flash存储器的数据烧写,在本发明的一个实施例中,所述烧写数据通路004还包括第一缓存模块405,其连接于所述写数据加密模块402的输出端,并与所述烧写地址寄存器403可通信地连接,用于实现数据的拼接。所述第一缓存模块405包括:

至少一个烧写缓存4051,其与所述写数据加密模块402可通信地连接,且任一所述烧写缓存的大小与所述配置总线接口001的数据位宽相同;例如,若所述配置总线接口001的数据位宽为32位,则任一所述烧写缓存可存储1个32位的数据;

缓存空满逻辑模块4052,其用于监测所述烧写缓存是否被写满,若所有烧写缓存均已写满,则挂起所述配置总线接口。在本发明的一个实施例中,所述缓存空满逻辑模块4052通过提供fifo_full满指示信号给所述配置总线接口001,实现配置总线的挂起,此时,仅当直到再次给出fifo_empty空指示信号后,配置总线才能开始工作。在本发明的又一个实施例中,如果配置总线采用AMBA AHB2.0,则其可通过拉低AHB的HREADY信号,实现挂起功能;以及

至少一个拼接缓存4053,其与所述烧写缓存4051可通信地连接,用于将烧写缓存中存储的数据拼接成指定大小的数据,各拼接缓存模块大小的总和等于各烧写缓存模块大小的总和,且任一所述拼接缓存模块的大小等于所述Flash存储器的有效数据位宽。例如,若所述配置总线接口001的数据位宽为32位,且所述Flash存储器的有效数据为32位位宽,当具有8个烧写缓存时,所述缓存模块405可将8个烧写缓存的数据进行拼接,得到与任意地址对齐的8个32位烧写数据,分别存放于8个32位的拼接缓存中;若所述配置总线接口001的数据位宽为32位,且所述Flash存储器的有效数据为64位位宽,当具有8个烧写缓存时,所述缓存模块405可将8个烧写缓存的数据进行拼接,得到与任意地址对齐的4个64位烧写数据,分别存放于4个64位的拼接缓存中;以及若所述配置总线接口001的数据位宽为32位,且所述Flash存储器的有效数据为32位位宽,当具有8个烧写缓存时,所述缓存模块405可将8个烧写缓存的数据进行拼接,得到与任意地址对齐的2个128位烧写数据,分别存放于2个128位的拼接缓存中。

所述读数据解密模块501与所述读数据总线接口002可通信地连接,用于将读取到的数据进行解密操作,返回给读数据总线。在本发明的一个实施例中,所述读数据解密模块501与所述写数据加密模块402的电路结构相同,不同之处在于,其各级加密电路的密钥输入顺序与所述写数据加密模块402的顺序相反。举例来说,在图4所示的实施例中,所述读数据解密模块501与所述写数据加密模块402均包括4级加密电路,其中,所述写数据加密模块402的第一级加密电路采用的密钥为data_key[15:0],第二级加密电路采用的密钥为data_key[31:16],第三级加密电路采用的密钥为data_key[47:32],以及第四级加密电路采用的密钥为data_key[63:48],则所述读数据解密模块501的第一级加密电路采用的密钥为data_key[63:48],第二级加密电路采用的密钥为data_key[47:32],第三级加密电路采用的密钥为data_key[31:16],以及第四级加密电路采用的密钥为data_key[15:0]。

为了能够实现与所述配置总线接口数据位宽不一致的Flash存储器的数据烧写,在本发明的一个实施例中,所述读数据通路005还包括第二缓存模块502,所述第二缓存模块502设置于所述Flash存储器与所述读数据解密模块501之间,用于将从所述Flash存储器中读取到的数据拆分成与所述读数据总线接口002的数据位宽相同大小的数据。所述第二缓存模块包括:

数据拆分模块5021,其用于将从Flash存储器中读取的数据拆分成与所述读数据总线接口002的数据位宽相同大小的数据,并存入读数据缓存模块5022中;以及

至少一个读数据缓存5022,其与所述写数据加密模块501可通信地连接,其用于存储所述数据拆分模块5021拆分后的数据,并发送给所述写数据加密模块501进行解密操作。任一所述读数据缓存模块的大小与所述读数据总线接口的数据位宽相同,且所述读数据缓存5022的数量应满足,所有读数据缓存5022的大小总和至少等于Flash存储器的数据位宽,例如,若所述Flash存储器的数据位宽为128位,所述读数据总线接口002的数据位宽为32位,则,任一所述读数据缓存5022的大小为32位,且所述第二缓存模块502应包括至少4个读数据缓存5022,且读数据缓存5022的个数应为4的倍数。

为了进一步地提高数据的安全性,在本发明的一个实施例中,所述嵌入式Flash控制器还设置有ECC保护模块,用于对待烧写的数据进行ECC校验编码,得到额外的9位的校验数据。所述ECC保护模块包括:

ECC编码模块406,其用于对加密后的数据,再次进行校验编码;以及

ECC译码模块503,其用于对从Flash中读取到的数据进行校验译码,然后进行数据拆分和/或数据解密。

下面以32位数据位宽的配置总线接口以及数据总线接口为例,描述所述嵌入式Flash控制器的擦除、烧写以及读取数据操作。其他数据位宽的配置总线接口以及数据总线接口操作与此类似。

如果要对所述嵌入式Flash控制器进行擦除操作,首先需要通过所述配置总线接口001,将所述命令寄存器301中的“擦除使能位”设置为1,然后所述命令解析状态机302将其解析为Flash存储器的控制端口时序。图5示出本发明一个实施例的一种支持加密存储的嵌入式Flash控制器的擦除操作时序示意图。其以台积电40nm的嵌入式Flash颗粒为例,当收到擦除指令后,所述命令解析状态机302首先需要拉低YE/SE/MAS1输入,并在下一周期拉高XE,再拉高ERASE和NVSTR端口,开始擦除;等待嵌入式Flash手册规定的擦除时间后,再有序地拉低ERASE和NVSTR端口,再拉高YE/SE/MAS1等端口。

所述嵌入式Flash控制器的烧写操作包括:

首先,通过所述配置总线接口001,将所述命令寄存器301中的“烧写使能位”(prog_en)写1,则所述命令解析状态机302将知悉当前已进入烧写使能状态,其将自动监控所述缓存空满逻辑模块4052的空满标志(fifo_full)满指示信号;

接下来,通过所述配置总线接口001,往所述初始地址寄存器404写入烧写的初始地址,例如,若往所述初始地址寄存器404写入0x00000000,则说明从嵌入式Flash的首地址开始烧写,应当理解的是,所述初始地址寄存器404的设置,使得所述嵌入式Flash控制器允许从任意地址开始烧写;

接下来,通过所述配置总线接口001,往所述写数据寄存器401中写入待烧写数据,所述待烧写数据首先通过所述写数据加密模块402进行加密,转换为32位的加密后数据。若当前所述烧写地址寄存器402的addr[4:2]为3’b000,则所述加密后数据将被被存储至32位的烧写缓存0。由于已经写入一个数据,则所述烧写地址寄存器402将自动加4,即地址自增4个字节,即地址自增1个32位的word,其addr[4:2]变成3’b001;

接下来,继续通过所述配置总线接口001,往所述写数据寄存器401中写入第二个待烧写数据;所述第二个待烧写数据通过所述写数据加密模块402进行加密,转换为32位的加密后数据;由于是写入的第二个数据,当前所述烧写地址寄存器402的addr[4:2]为3’b001,且加密后数据被存储值烧写缓存1;

重复上述步骤,直到烧写缓存0–烧写缓存7都已满,此时,所述缓存空满逻辑模块4052会提供fifo_full满指示信号给所述配置总线接口001,以挂起配置总线;直到再次给出fifo_empty空指示信号,配置总线才能开始工作。如果配置总线采用AMBA AHB2.0,则通过拉低AHB的HREADY信号,可以实现该挂起功能。

所述缓存空满逻辑模块4052同时会把fifo_full输入给所述拼接缓存4053。如果Flash存储器的有效数据是32为位宽,则有8条32位的拼接缓存4053;如果Flash存储器的有效数据是64为位宽,则有4条64位的拼接缓存4053;如果Flash存储器的有效数据是128位位宽,则有2条128位的拼接缓存4053。以128位位宽为例,拼接缓存将8个烧写缓存的数据进行拼接,可以拼接出与任意地址对齐的128位的烧写数据;

接下来,所述拼接缓存输出的128bit加密数据进入所述ECC编码模块406,并产生额外的9位的校验数据,产生最终的137位的数据,被写入Flash存储器,其中所述命令解析状态机302保证Flash存储器的烧写控制信号的时序正确性,同时控制行列地址译码器006,产生正确的行地址和列地址;以及

最后,通过所述配置总线接口001,将所述命令寄存器301中的“烧写使能位”(prog_en)写0,退出烧写状态。

所述嵌入式Flash控制器的读取操作包括:

通过所述读数据总线接口002发送读命令和读地址,所述命令解析状态机302将经过所述行列地址译码器006的行地址、列地址以及读命令发送给Flash存储器;在符合spec的等待时间后,137为的读数据从Flash存储器中输出,进入所述ECC译码模块503;

通过所述ECC译码模块503会对数据做校验,实时输出128位的经过校验的数据,该数据仍是加密后数据;

通过所述数据拆分模块5021把128位的数据拆分为4个32位的数据,存入读数据缓存0–读数据缓存3;

最后,通过所述读数据解密模块501对读数据缓存中的32位数据经过解密模块,返回给读数据总线。

尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。

相关技术
  • 一种支持加密存储的嵌入式Flash控制器
  • 一种高效的嵌入式系统芯片Nor-Flash控制器及控制方法
技术分类

06120113178257