当前位置: 首页 > 专利查询>复旦大学专利>正文

一种适用于嵌入式系统的基于高速缓存的AES加速器技术方案

技术编号:7263186 阅读:301 留言:0更新日期:2012-04-14 10:57
本发明专利技术属于集成电路设计技术领域,具体为一种适用于嵌入式系统的AES加速器。嵌入式系统由中央处理器、指令高速缓存、数据高速缓存、缓存控制器、总线接口部件、总线、外围存储器以及AES加速器组成;AES加速器输入密钥长度为128位,该AES加速器是基于对高速缓存并行查找的方式实现的,通过这种方式,不仅有效地减小了芯片的面积,而且加快了加解密运算的速度,在将查找表的数据以及最原始的输入导入cache的情况下,一次AES加/解密运算的时间约为50周期,吞吐率达到384Mbps。本发明专利技术能够较好地应用于手持设备中的嵌入式系统。

【技术实现步骤摘要】

本专利技术属于集成电路设计
,具体涉及到一种适用于嵌入式系统的AES加速器ο
技术介绍
随着信息技术的飞速发展,计算机技术的突飞猛进使得越来越多的敏感信息将通过公开的媒介进行传播。为了保护敏感信息,各种密码算法被广泛地应用到网络和无线通信领域中。虽然目前有些密码算法通过增加额外的查找表来实现高速运算,但是所需的芯片面积较大,为了解决这个问题,本设计在通用处理器的基础上添加一些特殊指令与专用单元,并且使用cache (高速缓存)的部分资源来实现并行查找表的功能,从而有效地提高了密码算法的运算速度。分组密码一直是密码学中一种重要的加密技术,在很多的密码系统中都处于核心地位,也可以作为消息认证技术、数据完整性机制以及数字签名中的核心部件。于2001年被美国国家标准和技术协会NIST定为美国政府新的加密标准的AES(AdvanCed Encryption Mandard)算法是一种常见的分组密码算法,其应用场合见于诸多安全领域。AES是以块为单位对数据进行操作,它所允许的数据块和密钥的长度可以是128,192或256位。在AES 标准算法中采用的数据块长度为1 位,密钥长度可为1 ,192或256位。
技术实现思路
本专利技术的目的在于设计一种能加速AES算法的运算,同时能显著地降低硬件成本的适用于嵌入式系统的AES加速器。附图1给出了集成了 AES加速器嵌入式系统的基本框图,该系统由中央处理器 (1)、指令高速缓存(2)、数据高速缓存(7)、缓存控制器(3)、总线接口部件(4)、总线(5)、外围存储器(8)以及AES加密运算单元(6)(即AES加速器)组成。该系统的工作过程如下 中央处理器(1)从指令高速缓存(2)中读取指令,如果指令不在指令高速缓存中,将通过缓存控制器(3)向总线接口部件(4)发出访问外围存储器(8)的请求,并通过总线(5)取回所需的指令,中央处理器(1)在取到指令后继续运行。接着,中央处理器(1)中的译码模块对指令进行译码,如果发现这条指令是AES加速器(6)的特殊指令,则根据该指令执行相应的操作。本专利技术通过将查找表导入到4路组相连的cache中,并将查找表的数据锁存,这种方式能够有效地减小芯片的面积,从而降低了硬件成本。因此,本专利技术使用cache中的部分资源来充当并行查找表。本专利技术可以从cache中并行地查找数据,并且完成相关数据的运算,因此能够实现高速的AES加解密运算,从而在有效地降低硬件成本的基础上实现快速的加解密运算。本专利技术在中央处理器(1)中引入了 8条特殊指令,它们分别是FETCHLOCK,LD_ CACHELINE, CONFIG, CACHE_AES0, CACHE_AES1, CACHE_AES2, CACHE_AES3 禾口 SW_AES,这 8 条指令都是原系统指令集中所保留而未使用的指令,它们的指令编码分别为FETCHL0CK LD_CACHELINE CONFIG: Sff AES01IOOlxx xxxxxxxx xxxxxxxx xxxxxxxx01IOlOxx xxxxxxxx xxxxxxxx xxxxxxxx01IOlOxx xxxxxxxx xxxxxxxx xxxxxxxx01101Ixx xxxxxxxx xxxxxxxx xxxxxxxxCACHE_AES0 CACHE_AES1 CACHE_AES2 CACHE AES301IlOOxx xxxxxxxx xxxxxxxx xxOOlOOO01IlOOxx xxxxxxxx xxxxxxxx xxOOlOOl01IlOOxx xxxxxxxx xxxxxxxx χχΟΟΙΟΙΟ01IlOOxx xxxxxxxx xxxxxxxx xxOOlOl1本专利技术的AES加速器使用12个32位寄存器以及上述特殊指令的译码逻辑,其中第0 寄存器组(由第0寄存器、第1寄存器、第2寄存器、第3寄存器组成)和第1寄存器组(由第 4寄存器、第5寄存器、第6寄存器、第7寄存器组成)用于交替存储当前需要进行轮变换的数据,第2寄存器组(由第8寄存器、第9寄存器、第10寄存器、第11寄存器组成)用于存储 128bit的轮密钥,根据特殊指令产生控制信号,来控制数据在AES加密运算单元内的运算。本专利技术中的AES加密运算单元(6)所采用的数据块长度是实际应用中最常见的1 位,其加密轮数为10。其AES算法是一种迭代的算法,每一次迭代可以称为一轮 (Round)。 它的加密流程如附图3所示,其主要运算包括行变换(ShiftRow)、字节替换 (SubByte)、列混合(MixColumn)和密钥加(AddRoundKey)运算等。第0轮只进行一次密钥加运算,第1至9轮需要顺次经过这四种变换运算,而最后一轮不需要进行列混合变换。AES 解密流程则是加密过程的完全逆过程,即第0轮只进行一次密钥加运算,第1至第9轮都要依次进行这四种运算的逆运算,最后一轮没有逆列混合运算,如附图4所示。附图5给出了传统的基于查找表的AES轮函数的实现,查找表操作完成了行变换、字节替换和列混合的运算。对AES,128-bit的轮输入被分成4个字,分别表示为W3S W21, Wli, WOi,这4个字的 16个字节被标上b0到bl5。每个字节用来索引四个具有256*32 (比特)查找表中的一个, 四个查找表分别用Ta、Tb、Tc、Td来表示。从四个查找表中得到的数据再与轮密钥中的数据进行异或可以得到一个新的字,依次执行四次类似的操作后,可以得到下一轮的输入。本专利技术是对传统的基于查找表的创新,采用cache (高速缓存)的部分资源充当并行查找表。集成在通用处理器上的专用AES加速器的执行步骤如下首先执行特殊指令FETCHL0CK,将查找表的数据以及初始的轮函数的输入,从外围存储器预取并锁存到高速数据缓存中。接着执行指令LD_CACHELINE,将高速数据缓存中的初始的轮函数的输入和轮密钥分别写到寄存器组0与寄存器组2。然后执行指令CACHE_ AESO, CACHE_AES1、CACHE_AES2和CACHE_AES3,这四条指令交替使用寄存器组0和寄存器组1中的内容生成访问查找表原始的索引T0、T1、T2和Τ3。再对原始的索引进行变换,得到访问高速数据缓存所需的索引Ta、Tb、Tc和 Td。然后从4路组相连的数据高速缓存中,并行的取出4个32-bit的数据和寄存器组2中存储的轮密钥中的字进行异或,经过4次这样的操作后,得到下一轮运算的输入。在进行最后一轮的运算时,需要对Config寄存器进行配置,用于控制产生访问最后一轮所需查找表的索引,接下来产生最终的U8-bit的输出。最后,执行指令SW_AES将AES运算的结果写回内存。5本专利技术的优点是充分利用了嵌入式系统中高速缓存的资源来充当AES并行运算的查找表,采用这种方式实现AES运算的加速只需较小的硬件代价,另一方面,完成10轮的 AES的加解密运算的时间约为50个时钟周期,具有较高的加解密的吞吐率。本专利技术能够较好地应用于手持设备中的嵌入式系统。附图说明图1 一种适用于嵌入式系统的基于高速缓存的AES加速器。图2基于高速缓存的AES加密单元。图3 AES加密流程图。图4 AES解密流程图。图5传统本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:韩军李辉楷贺中柱王帅曾晓洋
申请(专利权)人:复旦大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术