CN101782956B - 一种基于aes实时加密的数据保护方法及装置 - Google Patents

一种基于aes实时加密的数据保护方法及装置 Download PDF

Info

Publication number
CN101782956B
CN101782956B CN2010101103172A CN201010110317A CN101782956B CN 101782956 B CN101782956 B CN 101782956B CN 2010101103172 A CN2010101103172 A CN 2010101103172A CN 201010110317 A CN201010110317 A CN 201010110317A CN 101782956 B CN101782956 B CN 101782956B
Authority
CN
China
Prior art keywords
data
key
program
aes
important
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2010101103172A
Other languages
English (en)
Other versions
CN101782956A (zh
Inventor
胡塘
李兆亮
张飞飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HANGZHOU SYNODATA SECURITY TECHNOLOGY CO., LTD.
Original Assignee
HANGZHOU SHENGYUAN CHIP TECHNIQUE CO Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by HANGZHOU SHENGYUAN CHIP TECHNIQUE CO Ltd filed Critical HANGZHOU SHENGYUAN CHIP TECHNIQUE CO Ltd
Priority to CN2010101103172A priority Critical patent/CN101782956B/zh
Publication of CN101782956A publication Critical patent/CN101782956A/zh
Application granted granted Critical
Publication of CN101782956B publication Critical patent/CN101782956B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及一种基于AES实时加密的数据保护方法及装置,采取在***内部用真随机数发生器生成初始密钥,生成的初始密钥存放到非易失性存储器中,再由非易失性存储器中的初始密钥生成各轮扩展子密钥。本发明的优点:在整个过程中,除了启动真随机数发生器工作的命令由处理器控制外,其余环节均由硬件电路实现,禁止处理器和软件参与,也不经由总线传输,保证密钥的安全性,防止密钥泄露。采用AES密码算法加密,引入子密钥扩展RAM,根据每轮加密/解密运算,地址自动加1或减1,解决了传统方法实现的AES算法由于密钥扩展耗时严重导致的***速度瓶颈问题。在处理器与AES算法通道间增加了缓冲器,提高加/解密速度,能在经加密过的存储器上实时运行程序。

Description

一种基于AES实时加密的数据保护方法及装置
技术领域
本发明涉及SOC集成电路设计领域,尤其是一种基于AES实时加密的数据保护方法及装置。
背景技术
在嵌入式SoC***中,对存储器中的关键内容进行有效保护,并达到对存储器的实时加密,是当前嵌入式***应用中的一大热点和难题。目前,该领域中亟待解决的关键技术难题如下:一是密钥的管理,不论是对称密码还是非对称密码,其安全性很大程度上依赖于密钥,不完善的密钥管理会在***运行过程中,造成密钥泄露,容易被攻击者截取破解。对于密钥管理,传统做法有以下几类:
a)从***外输入,在信道传输过程中会增加被攻击者截取的风险,或者有采用非对称密码(如RSA等)对传输的密钥加密,但增加了额外的成本;
b)在***中采用伪随机数发生器生成初始密钥,但由于伪随机数在较长周期下仍具有周期性、规律性的弱点,仍可被攻击者掌握并破解;
c)在***中采用真随机数发生器生成初始密钥,但在***运行过程中,若没有注意一些细节,(如被处理器或软件参与访问,或者是通过总线传输密钥),都会造成密钥泄露,以致被攻击者截取。
二是实时加密,在许多嵌入式应用场合中,都有实时运行的要求,目前的很多密码算法为了提高安全性,算法趋于复杂和/或运算轮数增多,这对于许多对速度有很高要求的***,要想在经加密过的存储器上实时运行程序,往往难以满足要求。
发明内容
针对以上两个问题,本发明提出一种基于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是存储器数据保护***应用图;
附图2是本发明的具体实施电路框图;
附图3是本发明的32x128子密钥扩展RAM架构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明:
如图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)存放区域。
除上述实施例外,本发明还可以有其他实施方式。凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围。

Claims (2)

1.一种基于AES实时加密的数据保护装置,其特征在于:该保护装置由非重要程序/数据存储器模块(1)、处理器(2)、AES密码模块(3)、重要密文程序/数据存储器(4)、上位机(5)以及JTAG模块(6)、真随机数发生器(7)、非易失性存储器(8)、缓冲器(9)、32x128的子密钥扩展RAM(10)组成,其中:
非重要程序/数据存储器模块(1),用作非关键不需特别保护的程序/数据存储空间,实现非关键不需特别保护的程序执行和数据读写;
处理器(2),用于配置AES密码模块(3)的参数,根据AES密码模块(3)的返回状态,决定启动或是结束当前AES加密/解密操作;
重要密文程序/数据存储器(4),用于保存经AES密码模块(3)加密处理过的重要程序或数据;
上位机(5),用于生成存放于重要密文程序/数据存储器(4)中的需特别保护的程序和数据,以及执行重要密文程序/数据存储器(4)的烧录操作;
JTAG模块(6),为上位机(5)提供烧录和调试接口;
真随机数发生器(7),用于生成供AES密码模块(3)使用的初始密钥和/或初始向量;
AES密码模块(3),将处理器(2)输送来的明文经过加密处理后保存到重要密文程序/数据存储器(4);或将存储于重要密文程序/数据存储器(4)的密文解密处理后,还原为原本的明文传输给处理器(2);
非易失性存储器(8),用于存放由真随机数发生器(7)生成的初始密钥和/或初始向量,并传送给32x128的子密钥扩展RAM(10)用于扩展子密钥,非易失性存储器(8)不允许也禁止处理器(2)对其访问;
32x128的子密钥扩展RAM(10),用于存储经扩展的各轮加密子密钥和解密子密钥,以及初始向量;
在处理器(2)与AES密码模块(3)之间设有缓冲器(9),暂存从处理器(2)输入的待加密明文或是暂存经AES密码模块(3)解密输出的原本明文;
真随机数发生器(7)生成的初始密钥和/或初始向量存放于非易失性存储器(8),整个过程不允许也禁止处理器参与,且不经过总线,由硬件实现的电路自动完成;
32x128的子密钥扩展RAM(10)对非易失性存储器(8)输送来的初始密钥扩展后,根据每轮编排存放地址;每一轮加密或解密时,该地址加1或减1,32x128的子密钥扩展RAM(10)不允许也且禁止处理器(2)对其访问,所有操作均有硬件自动完成。
2.一种采用如权利要求1所述的基于AES实时加密的数据保护装置的方法,其特征在于:该方法的具体步骤如下:
1)上位机(5)准备好需要特别保护的关键程序和/或数据;
2)***上电运行后,由非重要程序/数据存储器模块(1)中的程序和数据完成各种准备工作:对重要密文程序/数据存储器(4)烧录前的准备工作,包括AES密码模块(3)的密钥长度、是否需要初始向量、工作模式各种参数;
3)使能真随机数发生器(7),根据步骤2)的配置要求,生成128/192/256位的初始向量,处理器(2)和软件除了启动和关闭真随机数发生器(7)外,不对真随机数发生器(7)进行其他操作;
4)将生成的初始密钥和/或初始向量存放于非易失性存储器(8)中,由硬件完成这一步操作,不允许且禁止处理器(2)和软件参与;
5)将非易失性存储器(8)的初始密钥和/或初始向量传送给AES密码模块(3),根据密钥扩展算法,分别生成各轮加密子密钥和解密子密钥,根据轮数编排32x128的子密钥扩展RAM的地址,这一步操作由硬件实现该操作,不允许且禁止处理器(2)和软件参与;
6)配置AES密码模块(3)处于加密模式,以及AES加密算法的其它参数;
7)上位机(5)执行烧录操作,待加密的重要程序和/或数据经JTAG模块(6)、处理器(2)、缓冲器(9),输入到AES密码模块(3)执行加密操作,在每轮的加密运算中,对32x128的子密钥扩展RAM(10)子密钥的提取均由硬件自动完成,不允许也禁止处理器(2)和软件参与;
8)经加密后的密文程序和/或数据分区域存放于重要密文程序/数据存储器(4)中;
9)烧录完毕后,程序和/或数据可以在非重要程序/数据存储器模块(1)和/或重要密文程序/数据存储器(4)两个区域运行和访问;
10)当程序跳转到重要密文程序/数据存储器(4)区域内执行时,重要密文程序/数据存储器(4)的输出通过AES密码模块(3)解密输出,得到原本的程序明文,经缓冲器(9)送交处理器(2)执行;
11)当处理器(2)需要对重要密文程序/数据存储器(4)中的数据进行读访问时,重要密文程序/数据存储器(4)的输出作为AES密码模块(3)的输入,经解密后还原为明文输出,再交由处理器(2)访问;
12)当需要对重要密文程序/数据存储器(4)进行程序或是数据更新时,由处理器(2)提供待更新的程序或数据作为AES密码模块(3)的明文输入,然后将AES密码模块(3)输出的密文写入到重要密文程序/数据存储器(4),实现重要密文程序/数据存储器(4)的程序在线更新和数据更新;其具体流程与上位机(5)对重要密文程序/数据存储器(4)的烧录类似。
CN2010101103172A 2010-02-09 2010-02-09 一种基于aes实时加密的数据保护方法及装置 Active CN101782956B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010101103172A CN101782956B (zh) 2010-02-09 2010-02-09 一种基于aes实时加密的数据保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010101103172A CN101782956B (zh) 2010-02-09 2010-02-09 一种基于aes实时加密的数据保护方法及装置

Publications (2)

Publication Number Publication Date
CN101782956A CN101782956A (zh) 2010-07-21
CN101782956B true CN101782956B (zh) 2012-06-13

Family

ID=42522945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010101103172A Active CN101782956B (zh) 2010-02-09 2010-02-09 一种基于aes实时加密的数据保护方法及装置

Country Status (1)

Country Link
CN (1) CN101782956B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541762A (zh) * 2010-12-27 2012-07-04 北京国睿中数科技股份有限公司 用于外部存储器的数据保护器和数据保护方法
US9294447B2 (en) * 2011-04-18 2016-03-22 Hewlett-Packard Development Company, L.P. Access control
CN102411683B (zh) * 2011-08-15 2014-04-02 复旦大学 一种适用于嵌入式***的基于高速缓存的aes加速器
CN103593619A (zh) * 2013-11-13 2014-02-19 宇龙计算机通信科技(深圳)有限公司 应用数据保护的方法和***
CN104253684B (zh) * 2014-09-23 2018-02-02 深圳市汇顶科技股份有限公司 加密方法和加密装置
CN105007154B (zh) * 2015-07-23 2018-07-31 深圳市紫光同创电子有限公司 一种基于aes算法的加密解密装置
CN105356996B (zh) * 2015-12-14 2018-11-09 联想(北京)有限公司 一种密文处理方法、电子设备及密文处理装置
CN107808099B (zh) * 2016-09-08 2021-03-16 北京自动化控制设备研究所 嵌入式软件加密/解密***及方法
CN106507349B (zh) * 2016-10-13 2019-12-10 山东康威通信技术股份有限公司 一种软硬件结合的嵌入式终端加密***及加密方法
CN106788971A (zh) * 2016-12-14 2017-05-31 上海电机学院 一种基于流密码算法的子密钥生成方法
CN109284114B (zh) * 2017-07-20 2022-07-12 深圳市中兴微电子技术有限公司 嵌入式***中可编程芯片的自动烧录方法
DE102018208066A1 (de) * 2018-05-23 2019-11-28 Robert Bosch Gmbh Datenverarbeitungseinrichtung und Betriebsverfahren hierfür
CN109033023B (zh) * 2018-06-11 2022-01-04 安徽工程大学 一种普通轮变换运算单元、普通轮变换电路及aes加密电路
CN108959129B (zh) * 2018-07-12 2021-08-24 北京航空航天大学 一种基于硬件的嵌入式***机密性保护方法
CN109510703B (zh) * 2018-11-23 2020-02-11 北京海泰方圆科技股份有限公司 一种数据加解密方法及装置
CN110138750A (zh) * 2019-04-23 2019-08-16 上海数据交易中心有限公司 配置文件的加密方法、装置及***、存储介质、终端
CN110990848A (zh) * 2019-11-18 2020-04-10 上海易点时空网络有限公司 基于hive数据仓库的敏感字加密方法及装置、存储介质
CN111159097A (zh) * 2019-12-09 2020-05-15 中山大学 一种片上访存保护***及方法
CN111008391B (zh) * 2019-12-25 2023-05-09 北京中电华大电子设计有限责任公司 一种flash加密解密接口电路及方法
CN112765062B (zh) * 2021-01-22 2023-05-12 山东云海国创云计算装备产业创新中心有限公司 Jtag接口的控制方法、装置、设备及可读存储介质
CN117914471A (zh) * 2023-12-26 2024-04-19 北京邮电大学 一种基于迭代复用结构的低功耗aes密码加速器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050135607A1 (en) * 2003-12-01 2005-06-23 Samsung Electronics, Co., Ltd. Apparatus and method of performing AES Rijndael algorithm
CN1761185A (zh) * 2005-11-18 2006-04-19 清华大学 乱序执行的数据流aes加密电路结构
CN1806409A (zh) * 2003-06-12 2006-07-19 皇家飞利浦电子股份有限公司 用于加密和/或解密数据的处理器和使用这样的处理器加密和/或解密数据的方法
CN101114903A (zh) * 2007-03-05 2008-01-30 中兴通讯股份有限公司 一种吉比特无源光网络***中高级加密标准加密装置及其实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1806409A (zh) * 2003-06-12 2006-07-19 皇家飞利浦电子股份有限公司 用于加密和/或解密数据的处理器和使用这样的处理器加密和/或解密数据的方法
US20050135607A1 (en) * 2003-12-01 2005-06-23 Samsung Electronics, Co., Ltd. Apparatus and method of performing AES Rijndael algorithm
CN1761185A (zh) * 2005-11-18 2006-04-19 清华大学 乱序执行的数据流aes加密电路结构
CN101114903A (zh) * 2007-03-05 2008-01-30 中兴通讯股份有限公司 一种吉比特无源光网络***中高级加密标准加密装置及其实现方法

Also Published As

Publication number Publication date
CN101782956A (zh) 2010-07-21

Similar Documents

Publication Publication Date Title
CN101782956B (zh) 一种基于aes实时加密的数据保护方法及装置
CN101051892B (zh) 一种cpu专用数据的加密装置及方法
US20150294123A1 (en) System and method for sharing data securely
CN102138300B (zh) 消息认证码预计算在安全存储器中的应用
EP2734951A1 (en) Cryptographic information association to memory regions
US10313128B2 (en) Address-dependent key generator by XOR tree
CN109656840A (zh) 一种数据加解密的装置、方法、存储介质、以及数据存储***
CN102436423A (zh) 通用片外NorFlash核心数据保护的控制器及方法
CN103154963A (zh) 对地址的加扰和对需存储于存储设备中的写入数据的加密
CN107590402A (zh) 一种存储数据加解密装置及方法
US10146701B2 (en) Address-dependent key generation with a substitution-permutation network
CN103258172A (zh) 一种芯片片外Nor Flash总线接口硬件加密装置
CN107516047A (zh) 一种存储数据加解密装置及方法
CN110825672A (zh) 用于联机加密处理的高性能自主硬件引擎
CN103488916A (zh) 一种弹上软件加密保护方法
US20170046280A1 (en) Data processing device and method for protecting a data processing device against attacks
CN104463020B (zh) 存储器数据完整性保护的方法
CN108959129B (zh) 一种基于硬件的嵌入式***机密性保护方法
CN109101829A (zh) 基于可重构密码处理器的安全固态盘数据传输***
CN108171067A (zh) 一种硬盘加密方法与装置
CN103336920B (zh) 用于无线传感网络soc芯片的安全***
CN102629236B (zh) 基于不等长计数器的存储器保护方法
US9946662B2 (en) Double-mix Feistel network for key generation or encryption
CN203930840U (zh) 一种硬件加密卡
JP2017526220A (ja) 順不同(out of order)データに対する推論的暗号処理

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee
CP02 Change in the address of a patent holder

Address after: The city of Hangzhou in West Zhejiang province 311121 No. 998 Building 9 East Sea Park

Patentee after: Hangzhou Shengyuan Chip Technique Co., Ltd.

Address before: 310012, room 17, building 176, 203 Tianmu Mountain Road, Hangzhou, Zhejiang, Xihu District

Patentee before: Hangzhou Shengyuan Chip Technique Co., Ltd.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: The city of Hangzhou in West Zhejiang province 311121 No. 998 Building 9 East Sea Park

Patentee after: HANGZHOU SYNODATA SECURITY TECHNOLOGY CO., LTD.

Address before: The city of Hangzhou in West Zhejiang province 311121 No. 998 Building 9 East Sea Park

Patentee before: Hangzhou Shengyuan Chip Technique Co., Ltd.