发明内容
针对以上两个问题,本发明提出一种基于AES实时加密的数据保护方法及装置,采取在***内部用真随机数发生器生成初始密钥,生成的初始密钥存放到非易失性存储器中,再由非易失性存储器中的初始密钥生成各轮扩展子密钥。在整个过程中,除了启动真随机数发生器工作的命令由处理器控制外,其余环节均由硬件电路实现,不允许也禁止处理器和软件参与,也不经由总线传输,保证密钥的安全性,防止密钥泄露。另外,本算法采用成熟安全的AES密码算法加密,针对AES算法的特点,引入了32x128结构的子密钥扩展RAM,该RAM会根据每轮加密/解密运算,地址自动加1或减1,解决了传统方法实现的AES算法由于密钥扩展耗时严重导致的***速度瓶颈问题。此外,考虑到AES算法的轮数相对较多,在处理器与AES算法通道间增加了缓冲器,有利于平滑处理器的流水线,提高加/解密速度,使得本发明中的***能在经加密过的存储器上实时运行程序。
本发明解决其技术问题采用的技术方案。这种基于AES实时加密的数据保护装置由主要有非重要程序/数据存储器模块(Unimportant Code/Data Memory,1)、处理器(CPU,2)、AES密码模块(AES Cipher,3)、重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)、上位机(Host PC,5)以及JTAG模块(JTAG,6)、真随机数发生器(True Random Number Generator,7)、非易失性存储器(Non-VolatileMemory,8)、32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10)组成。
其中:
非重要程序/数据存储器模块(Unimportant Code/Data Memory,1),用作非关键不需特别保护的程序/数据存储空间,实现非关键不需特别保护的程序执行和数据读写等。如:
a)上电后,各个模块的初始条件或参数的设定;
b)在程序跳转到重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)实时运行前的准备;
c)在进入到需对重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)进行数据的读写,包括对该模块的程序或数据的烧录;
d)在程序返回到非重要程序/数据存储器模块(Unimportant Code/Data Memory,1)运行后的恢复;
e)在由对重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)的数据读写返回到对非重要程序/数据存储器模块(Unimportant Code/Data Memory,1)的数据读写的恢复。
重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4),用于保存经AES密码模块(AES Cipher,3)加密处理的重要程序或数据,由于采用了成熟安全的AES密码算法,保证了重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)的内容安全性,不会被攻击者轻易破解。
AES密码模块(AES CIPHER,3),是AES密码算法的实现。当其执行加密操作时,它将处理器(CPU,2)输送来的明文经过AES密码模块(AES CIPHER,3)加密处理后的密文作为重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)的输入,在重要密文程序/数据存储器(Important CiphertextCode/Data Memory,4)进行保存;当其执行解密操作时,它将重要密文程序/数据存储器(Important CiphertextCode/Data Memory,4)的输出作为密文输入,经AES密码模块(AES CIPHER,3)解密处理,还原为原本的明文后交由处理器(CPU,2)存取访问。AES密码模块(AES CIPHER,3)具有多种工作模式,其各种工作模式由处理器(CPU,2)来配置决定。
真随机数发生器(True Random Number Generato,7),用于生成供AES密码模块(AES CIPHER,3)使用的初始密钥和/或初始向量。生成的初始密钥和/或初始向量存放于非易失性存储器(Non-VolatileMemory,8),这个过程不允许也禁止处理器(CPU,2)参与,完全由硬件实现的电路自动完成,不经由总线,防止密钥泄露。由于是真随机数,如此保证了初始密钥的质量和***的安全性。
32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10),用于存储经扩展的各轮子密钥,包括加密和解密,以及初始向量,从非易失性存储器(Non-Volatile Memory,8)输送来的初始密钥经扩展,并根据每轮编排存放地址。每一轮加密或解密时,该地址自动加1或减1,解决了传统方法中子密钥扩展耗时的技术问题。32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10)不允许也且禁止处理器(CPU,2)对其访问,所有操作均有硬件自动完成,这样就阻止了密钥泄露的可能。
非易失性存储器(Non-Volatile Memory,8),用于存放由真随机数发生器(True Random NumberGenerato,7)生成的初始密钥和/或初始向量,并传送给32x128的子密钥扩展RAM(32x128 Sub-Key ExpandRAM,10)用于扩展子密钥。如果没有非易失性存储器(Non-Volatile Memory,8),当***掉电后,初始密钥和/或初始向量保将会丢失,造成无法解密。非易失性存储器(Non-Volatile Memory,8)不允许也禁止处理器(CPU,2)对其访问,阻止了攻击者通过该单元获取密钥的可能。
处理器(CPU,2),是整个嵌入式***的中央处理单元。由处理器(CPU,2)配置AES密码模块(AESCipher,3)的参数,根据AES密码模块(AES Cipher,3)的返回状态,决定启动或是结束当前AES加密/解密操作:即向AES密码模块(AES Cipher,3)输入待加密的明文还是读取经AES密码模块(AES Cipher,3)解密后的明文。
为了提高速度,在处理器(CPU,2)与AES密码模块(AES Cipher,3)之间设有缓冲器(Buffer,9),暂存从处理器(2)输入的待加密明文或是暂存经AES密码模块(3)解密输出的原本明文,相当于增加了一级流水线,用以提高整体AES加/解密的吞吐率。
上位机(Host PC,5),用于生成存放于重要密文程序/数据存储器(Important Ciphertext Code/DataMemory,4)中的需特别保护的程序和数据,以及执行重要密文程序/数据存储器(Important CiphertextCode/Data Memory,4)的烧录操作,上位机(Host PC,5)通过JTAG模块(JTAG,6)经AES密码模块(AES Cipher,3)加密处理烧录到重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)中。
JTAG模块(JTAG,6),为上位机(Host PC,5)提供烧录和调试接口。
在本发明中,特别考虑到了某些嵌入式应用场合实时运行的速度瓶颈问题,在重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)与AES密码模块(AES Cipher,3)之间采用了高速的通信接口(如SQI、USB2.0等),使得本发明既保证了重要密文程序/数据存储器(Important Ciphertext Code/DataMemory,4)安全性的同时,又满足了嵌入式实时应用的各种实际场合。
本发明所述的一种基于AES实时加密的数据保护方法,具体步骤如下:
1)上位机(Host PC,5)准备好需要特别保护的关键程序和/或数据;
2)***上电运行后,由非重要程序/数据存储器模块(Unimportant Code/Data Memory,1)中的程序和数据完成各种准备工作:对重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,
4)烧录前的准备工作,包括AES密码模块(AES CIPHER,3)的密钥长度、是否需要初始向量、工作模式等各种参数;
3)使能真随机数发生器(True Random Number Generator,7),根据步骤2)的配置要求,生成128/192/256位和/或128位的初始向量,处理器(CPU,2)和软件除了启动和关闭真随机数发生器(True Random Number Generator,7)外,不对真随机数发生器(True Random Number Generator,7)进行其他操作;
4)将生成的初始密钥和/或初始向量存放于非易失性存储器(Non-Volatile Memory,8)中,由硬件完成这一步操作,不允许且禁止处理器(CPU,2)和软件参与;
5)将非易失性存储器(Non-Volatile Memory,8)的初始密钥和/或初始向量传送给AES密码模块(AESCIPHER,3),根据密钥扩展算法,分别生成各轮加密子密钥和解密子密钥,根据轮数编排32x128的子密钥扩展RAM的地址,这一步操作由硬件实现该操作,不允许且禁止处理器(CPU,2)和软件参与;
6)配置AES密码模块(AES CIPHER,3)处于加密模式,以及AES加密算法的其它参数;
7)上位机(Host PC,5)执行烧录操作,待加密的重要程序和/或数据经JTAG模块(JTAG,6)、处理器(CPU,2)、缓冲器(Buffer,9),输入到AES密码模块(AES CIPHER,3)执行加密操作,在每轮的加密运算中,对32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10)子密钥的提取均由硬件自动完成,不允许也禁止处理器(CPU,2)和软件参与,如此防止了经总线传输泄露密钥的可能;
8)经加密后的密文程序和/或数据分区域存放于重要密文程序/数据存储器(Important CiphertextCode/Data Memory,4)中;
9)烧录完毕后,程序和/或数据可以在非重要程序/数据存储器模块(Unimportant Code/Data Memory,1)和/或重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)两个区域运行和访问;
10)当程序跳转到重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)区域内执行时,重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)的程序通过AES密码模块(AES CIPHER,3)解密,输出原本的程序明文,经缓冲器(Buffer,9)送交处理器(CPU,2)执行,由于重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)与AES密码模块(AES CIPHER,3)之间具有的高速接口(如SQI、USB2.0等),加上缓冲器(Buffer,9)的流水线处理以及32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10)的提速,使得整个***达到了如同在重要程序/数据存储器4上实时运行程序的效果;
11)当处理器(CPU,2)需要对重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)中的数据进行读访问时,重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)的输出(密文)作为AES密码模块(AES CIPHER,3)的输入,经解密后还原为原本明文输出,再交由处理器(CPU,2)访问。其流程与从重要密文程序/数据存储器(Important CiphertextCode/Data Memory,4)读取密文程序执行类似。
12)当需要对重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)进行程序或是数据更新时,由处理器(CPU,2)提供待更新的程序或数据作为AES密码模块(AES CIPHER,3)的明文输入,然后将AES密码模块3输出的密文写入到重要密文程序/数据存储器(ImportantCiphertext Code/Data Memory,4),实现重要密文程序/数据存储器(Important Ciphertext Code/DataMemory,4)的程序在线更新和数据更新。其具体流程与上位机(Host PC,5)对重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)的烧录类似。
本发明有益的效果是:
1)提出了一种生成高质量的初始密钥方法:通过真随机数发生器用于生成高质量的初始密钥,从源头上保证了算法的安全性。
2)提出了一种有效和实际的密钥管理方案:通过非易失性存储器存储初始密钥,再由初始密钥生成各轮加密/解密子密钥,引入流水线的方法,每轮加密/解密运算,提取各轮子密钥,提高运行速度。涉及密钥的各个环节均有硬件自动实现,不允许且禁止处理器和/或软件参与,阻止了密钥在总线上传输而造成密钥泄露的可能。
3)解决了嵌入式应用中实时加密需求的场合:通过对耗时严重的子密钥扩展电路的改造,采用32x128的子密钥RAM结构,且根据加密或解密地址自动加1或减1;通过在处理器与AES密码模块之间引入缓冲器,利用较低的成本提升流水线的畅通性,使得本发明***能在加密过的存储器上实时运行程序。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
如图1所示,是本发明的存储器数据保护***应用图,这种基于AES实时加密的数据保护装置主要有非重要程序/数据存储器模块(Unimportant Code/Data Memory,1)、处理器(CPU,2)、AES密码模块(AES Cipher,3)、重要密文程序/数据存储器(Important Ciphertext Code/Data Memory,4)、上位机(HostPC,5)以及JTAG模块(JTAG,6)、真随机数发生器(True Random Number Generator,7)、非易失性存储器(Non-Volatile Memory,8)、32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10)组成。
如图2所示,是本发明的一个具体实施电路框图。该SoC***包含了上位机(Host PC,5)、JTAG模块(JTAG,6)、随机数发生器模块(True Random Number Generator,7)、32位RISC处理器(Cordis5+RISCProcessor,25)、主程序区(Main Code RAM,26)、主数据区(Main Data RAM,28)、功耗管理模块(PowerManagement,11)、中断处理***(Interrupt System,12)、实时时钟模块(RTC,13)、OTP片上非易失性存储器(OTP ROM,14)、Arbiter总线(Arbiter Bus,15)、Bridge总线(Bridge Bus,16)、SDRAM控制器(SDRAM Controller,17)、128K字节片上SRAM(128KB On-chip SRAM,18)、串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19)、串行FLASH接口SQI数据通道(SQI_Data_Path,20)、片外SRAM控制器(SRAM Controller,21)、多功能串行接口USART(USARTx3,22)、通用输入输出模块GPIO(GPIO,23)、全速USB接口模块(USB2.0FS,24)、AES密码模块(AES CIPHER,3)、子密钥扩展RAM(Sub-KeyExpand RAM,10)、华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)以及缓冲器(Buffer,9)。
该SoC***中各模块介绍如下:
上位机(Host PC,5)用于生成存放于华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)中的需特别保护的程序和数据,以及对华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)执行烧录操作。
JTAG模块(JTAG,6),为上位机(Host PC,5)提供烧录和调试接口。
中断处理***(Interrupt System,12)是该SoC***中相应模块的中断请求处理单元。
32位RISC处理器(Cordis5+RISC Processor,25)是整个***的中央处理单元,负责整个SoC***的调度,它可访问的程序空间和数据空间可以是主程序区(Main Code RAM,26)和主数据区(Main DataRAM,28),或是华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)。
主程序区(Main Code RAM,26)提供不需要特别保护的非重要程序空间,与W25Q80 Flash 27一起组成本***的程序空间。
主数据区(Main Data RAM,28)提供不需要特别保护的非重要数据空间,与W25Q80 Flash 27和128K字节片上SRAM(128KB On-chip SRAM,18)组成本***的数据空间。
功耗管理模块(Power Management,11)提供了对该SoC***的时钟、复位和功耗等管理策略,用以实现低功耗。
真随机数发生器(True Random Number Generator,7),用于生成供AES密码模块(AES CIPHER,3)使用的初始密钥和/或初始向量。生成的初始密钥和/或初始向量存放于OTP片上非易失性存储器(OTPROM,14),这个过程不允许且禁止处理器(CPU,2)和/或软件参与,完全由硬件电路自动完成,不经由总线,防止密钥泄露。由于真随机数的特性,进一步保证了初始密钥的质量和***的安全性。
实时时钟模块(RTC,13)用于该***提供实时准确的时间,可以提供复位中断请求给中断处理***(Interrupt System,12)用于唤醒***等场合。
OTP片上非易失性存储器(OTP ROM,14),用于存放由真随机数发生器(True Random NumberGenerator,7)生成的初始密钥和/或初始向量,并传送给32x128的子密钥扩展RAM(32x128 Sub-Key ExpandRAM,10)用于扩展子密钥。当***掉电后,初始密钥和/或初始向量保存在该存储器中,不会丢失。OTP片上非易失性存储器(OTP ROM,14)不允许且禁止处理器(CPU,2)对其访问,阻止了攻击者通过该单元获取密钥的可能。
Arbiter总线(Arbiter Bus,15)和Bridge总线(Bridge Bus,16)一起组成该SoC***的双总线结构,Arbiter总线(Arbiter Bus,15)用于挂接高速子模块,对速度有较高要求的模块如SDRAM控制器(SDRAMCONTROLLER,17)、128K字节片上SRAM(128KB On-chip SRAM,18)、片外SRAM控制器(SRAMController,21)以及缓冲器(Buffer,9)等。
Bridge总线(Bridge Bus,16)用于挂接低速子模块,如那些速度要求相对不高的模块真随机数发生器(True Random Number Generator,7)、串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19)、多功能串行接口USART(USARTx3,22)、通用输入输出模块GPIO(GPIO,23)以及全速USB接口模块(USB2.0FS,24)。
SDRAM控制器(SDRAM CONTROLLER,17)和片外SRAM控制器(SRAM Controller,21)可以外挂片外SDRAM和SRAM,当***有大容量的数据访问和存储要求时,可以在该***上外挂相应的存储器。
128K字节片上SRAM(128KB On-chip SRAM,18),可以与主数据区(Main Data RAM,28)等一起组成片内数据空间。
串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19)用于为AES密码模块(AES CIPHER,3)提供配置参数、AES密码模块(AES CIPHER,3)与华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)之间的SQI接口协议参数,由于配置参数不会频繁更改,所以将串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19)作为低速设备挂接在Bridge总线(Bridge Bus,16)上。
串行FLASH接口SQI数据通道(SQI_Data_Path,20)通过缓冲器(Buffer,9)为Arbiter总线(ArbiterBus,15)与AES密码模块(AES CIPHER,3)之间提供数据通道,同时也是华邦W25Q80 Flash(WinbondW25Q80 Flash Memory,27)与AES密码模块(AES CIPHER,3)之间SQI接口的具体实现。由于会涉及大量的数据读写操作,因此本发明中将串行FLASH接口SQI数据通道(SQI_Data_Path,20)通过缓冲器(Buffer,9)作为高速设备挂接在Arbiter总线(Arbiter Bus,15)上。
多功能串行接口USART(USARTx3,22)、通用输入输出模块GPIO(GPIO,23)、全速USB接口模块(USB2.0FS,24)作为低速设备挂接于Bridge总线(Bridge Bus,16),用于***与片外设备的通信。
AES密码模块(AES CIPHER,3)是AES密码算法的具体实现,包括加密、解密以及各轮子密钥的扩展,支持128/192/256位初始密钥,支持电码本模式ECB、密码分组链接模式CBC、密码反馈模式CFB、输出反馈模式OFB、以及计数器模式CTR等工作模式。当AES密码模块(AES CIPHER,3)执行加密时,将串行FLASH接口SQI数据通道(SQI_Data_Path,20)输出的明文进行加密,输出密文通过SQI接口写入到华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)中进行保存。当AES密码模块(AES CIPHER,3)执行解密时,将华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的密文输出作为输入进行解密还原为原本明文。
华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)是片外的串行Flash,通过四通道的SQI接口与AES密码模块(AES CIPHER,3)挂接,由于该SQI接口具有的高速吞吐率特点,使得本发明能够实现在华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)上实时运行受保护的程序,满足了很多需实时嵌入式***场合。华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)存储的内容是本发明中所需特别保护的程序或重要数据,但以密文的形式存储。如此,当***正常运行时,AES密码模块(AESCIPHER,3)与华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)之间的SQI通道始终以密文形式存在,而且采用了成熟安全的AES密码算法,使得攻击者难以通过侦测该信道来破解华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的内容。
缓冲器(Buffer,9),暂存从32位RISC处理器(Cordis5+RISC Processor,25)输入的明文或是暂存AES密码模块(AES CIPHER,3)输出的密文,相当于增加了在32位RISC处理器(Cordis5+RISC Processor,25)与AES密码模块(AES CIPHER,3)之间增加了一级流水线,用以提高AES加/解密整体吞吐率。
如图3所示,32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10),是AES密码模块(AESCIPHER,3)的子模块,也是本发明的一个重点,具有32深度128比特宽度的结构。用于存储经扩展的各轮子密钥,包括加密和解密,以及初始向量,从OTP片上非易失性存储器(OTP ROM,14)输送来的初始密钥经扩展,并根据每轮编排存放地址。由于256位的初始密钥的轮数是14轮,加上首轮,共15轮,初始向量存放于首地址和末地址,共需15x2+1x2=32个128比特宽度,所以32深度128比特宽度的RAM结构刚好满足设计需要。每一轮加密或解密时,该地址自动加1或减1,解决了传统方法中子密钥扩展耗时的技术难题。32x128的子密钥扩展RAM(32x128 Sub-Key Expand RAM,10)不允许也且禁止32位RISC处理器(Cordis5+RISC Processor,25)对其访问,所有操作均有硬件自动完成,不通过总线传输,这样就阻止了密钥泄露的可能。
具体步骤如下:
1)上位机(Host PC,5)用于生成存放于华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)中的需特别保护的程序和数据。
2)整个SoC***上电,此时***运行在主程序区(Main Code RAM,26)的程序空间,由主数据区(Main Data RAM,28)和128K字节片上SRAM(128KB On-chip SRAM,18)提供数据空间,若SDRAM控制器(SDRAM CONTROLLER,17)和片外SRAM控制器(SRAM Controller,21)外挂了片外SDRAM和SRAM,则外挂的片外SDRAM和SRAM也可以为***提供额外的数据空间。这一步用以完成SoC***上电后的初始工作和其它准备工作。
3)设置功耗管理模块(Power Management,11)的参数,根据需要,使能相应模块的时钟和释放相应的复位信号。
4)配置通用输入输出模块GPIO(GPIO,23),由于本发明的芯片管脚涉及复用,需要通过通用输入输出模块GPIO(GPIO,23)配置相应管脚的功能,例如使AES密码模块(AES CIPHER,3)和华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)之间的管脚为SQI接口状态
5)通过缓冲器(Buffer,9)配置挂接于Arbiter总线(Arbiter Bus,15)上的串行FLASH接口SQI数据通道(SQI_Data_Path,20),以及Bridge总线(Bridge Bus,16)上的串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19),使这两个模块准备就绪。
6)通过串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19)配置AES密码模块(AES CIPHER,3)将执行加密操作,配置其它各种参数,例如初始密钥长度128位、192位或256位,各种工作模式如电码本模式ECB、密码分组链接模式CBC、密码反馈模式CFB、输出反馈模式OFB、以及计数器模式CTR。
7)使能真随机数发生器(True Random Number Generator,7),根据步骤6)的设置生成AES密码模块(AES CIPHER,3)所需的128/192/256位初始密钥和/或128位初始向量IV(Initial Vector)。
8)将生成的初始密钥和/或初始向量存放于OTP片上非易失性存储器(OTP ROM,14)中,这一步不允许且禁止处理器和/或软件参与,完全由硬件执行该操作。将初始密钥和/或初始向量存放于OTP片上非易失性存储器(OTP ROM,14)中,是为了解密的需要,例如当***掉电后,由于是由真随机数发生器(True Random Number Generator,7)生成的初始密钥,如果掉电前没有保存,将造成解密时没有相对应的正确密钥。
9)将OTP片上非易失性存储器(OTP ROM,14)的初始密钥和/或初始向量传送给AES密码模块(AES CIPHER,3),根据密钥扩展算法,分别生成各轮加密子密钥和解密子密钥,根据轮数编排32x128的子密钥扩展RAM的地址,这一步操作由硬件实现该操作,不允许且禁止32位RISC处理器(Cordis5+RISC Processor,25)和软件参与,也不允许在总线上传输,如此阻止了密钥在总线上传输泄露的可能。
10)通过串行FLASH接口SQI控制通道(SQI_Ctrl_Path,19)与经缓冲器(Buffer,9)的串行FLASH接口SQI数据通道(SQI_Data_Path,20),配置好AES密码模块(AES CIPHER,3)与华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)之间的SQI接口和其它命令参数。
11)上位机(Host PC,5)执行烧录操作,待烧录的程序和数据经AES密码模块(AES CIPHER,3)加密后,并写入到华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)予以保存。
12)***重新运行,重复步骤2)和步骤3)。
13)根据不同的应用,可以分为以下几类:
A.程序空间从主程序区(Main Code RAM,26)跳转到华邦W25Q80 Flash(Winbond W25Q80Flash Memory,27)执行程序;
B.程序仍旧在主程序区(Main Code RAM,26)运行,但需要访问华邦W25Q80 Flash(WinbondW25Q80 Flash Memory,27)经加密过的数据;
C.对华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的密文进行在线更新,包括密文程序和/或密文数据。
14)若程序需要从主程序区(Main Code RAM,26)跳转到华邦W25Q80 Flash(Winbond W25Q80 FlashMemory,27)执行,32位RISC处理器(Cordis5+RISC Processor,25)预先把AES密码模块(AES CIPHER,3)配置为解密算法状态,并且配置好AES密码模块(AES CIPHER,3)与华邦W25Q80 Flash(WinbondW25Q80 Flash Memory,27)之间的SQI接口和其它命令参数。
15)32位RISC处理器(Cordis5+RISC Processor,25)通过SQI接口从华邦W25Q80 Flash(WinbondW25Q80 Flash Memory,27)读取经过加密的程序,输入到AES密码模块(AES CIPHER,3)解密,得到原本的明文程序。经32位RISC处理器(Cordis5+RISC Processor,25)的取指令、译码、取操作数、执行等处理器流水线操作,完成相对应的任务。同时通过对下一条预取指和译码,指导下一步操作是继续执行华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的密文程序还是跳转回主程序区(Main CodeRAM,26)执行。由于华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)和AES密码模块(AESCIPHER,3)之间所具有高速的SQI接口,而且每次是解密128位程序,以128位初始密钥的AES解密算法来计算,即相当于11个时钟周期实现4条32位指令或是8条16位指令,加上本发明中处理器的流水线结构优点。使得本发明中,从华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)读取密文程序,再经AES密码模块(AES CIPHER,3)解密还原为原本明文程序最后交由32位RISC处理器(Cordis5+RISC Processor,25)操作的整个过程,达到如同直接在华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)执行程序的效果。
16)若程序仍旧在主程序区(Main Code RAM,26)运行,但需要访问华邦W25Q80 Flash(WinbondW25Q80 Flash Memory,27)经加密过的数据,令AES密码模块(AES CIPHER,3)处于解密状态,准备从华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)读取数据。
17)AES密码模块(AES CIPHER,3)解密华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的数据,作为32位RISC处理器(Cordis5+RISC Processor,25)的操作数访问。
18)当需要对华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的密文程序进行在线更新或是对其内部密文数据在线更新,除了在华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)程序和数据存放的区域不一样外,更新操作基本一致。
19)32位RISC处理器(Cordis5+RISC Processor,25)先将AES密码模块(AES CIPHER,3)配置成加密模式,对要写入到华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)的内容先送到AES密码模块(AES CIPHER,3)加密成密文输出。AES密码模块(AES CIPHER,3)会根据输入的命令判断和区分当前加密的是程序还是数据,用以决定在华邦W25Q80 Flash(Winbond W25Q80 Flash Memory,27)存放区域。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。