CN101409616A - Aes加密/解密电路 - Google Patents

Aes加密/解密电路 Download PDF

Info

Publication number
CN101409616A
CN101409616A CNA2008101698782A CN200810169878A CN101409616A CN 101409616 A CN101409616 A CN 101409616A CN A2008101698782 A CNA2008101698782 A CN A2008101698782A CN 200810169878 A CN200810169878 A CN 200810169878A CN 101409616 A CN101409616 A CN 101409616A
Authority
CN
China
Prior art keywords
conversion
samsara
addroundkey
key
signal
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.)
Granted
Application number
CNA2008101698782A
Other languages
English (en)
Other versions
CN101409616B (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Publication of CN101409616A publication Critical patent/CN101409616A/zh
Application granted granted Critical
Publication of CN101409616B publication Critical patent/CN101409616B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明通过减小在每个时钟周期时段用于每个子块变换的信号处理时间总和之间的差,使得比以前更小的硬件实现AES加密或解密所要求的周期次数。为此,加密/解密电路包括第一AddRoundKey变换模块、第二AddRoundKey变换模块、ShiftRows变换模块、SubBytes变换模块、MixColumns变换模块及数据保持单元,其中在加密周期,第一AddRoundKey变换模块和第二AddRoundKey变换模块使用不同的轮回密钥被执行。

Description

AES加密/解密电路
技术领域
本发明涉及一种用来执行由FIPS(联邦信息处理标准)197定义的AES(高级加密标准)时理的AES加密/解密电路。
背景技术
随着光纤网络的最近改进,每个人都能容易地在互联网上使用高速通信。这也便于诸如高质量视频发行之类的海量数据通信。然而,有对网络的威胁,包括窃听、改变及欺骗。为了保护网络通信免受这些威胁,对于加密的需要已经增长。
尽管加密对于可靠通信是基本的,但是不期望传输速率的任何降低。这种趋势在处理大量数据的视频发行领域特别明显。为了以高速可靠地传输大量数据,高速加密是必要的。
海量加密通信一般使用对称块密码。
最广泛使用的对称块密码是由FIPS(联邦信息处理标准)197定义的AES。
为了对付高速加密通信,AES需要使用专用硬件加速器加速。
图60A和60B表示AES加密和解密算法。在图60A和60B中的AddRoundKey、SubBytes、ShiftRows、MixColumns、InvSubBytes、InvShiftRows及InvMixColumns是相同名称的处理,这些处理在FIPS197中定义为子块变换。NR是按照密钥长度确定的轮回次数,在AES-128中是10、在AES-192中是12、或在AES-256中是14。
如图60A和60B所示,AES算法在AddRoundKey之后重复由标准NR次数定义的轮回函数。轮回函数包括用于加密的四个处理-SubBytes、ShiftRows、MixColumns及AddRoundKey;和用于解密的四个处理-InvShiftRows、InvSubBytes、AddRoundKey及InvMixColumns。例外地,第NR次的轮回函数包括用于加密的三个处理-SubBytes、ShiftRows及AddRoundKey;和用于解密的三个处理-InvShiftRows、InvSubBytes及AddRoundKey。AddRoundKey变换要求从密码密钥产生的、并且具有每轮回变化的值的轮回密钥wkeyi(FIPS197描述的轮回密钥;i是轮回数)。
为了把AES算法实施成硬件,所有AES信号处理都必须划分成可在供给到AES电路中的1个时钟周期时段内执行的处理。例如,在一般实施方法中,一个轮回函数在一个时钟周期内执行,两个轮回函数在一个时钟周期内执行,或一个轮回函数在两个时钟周期内执行。
在常规方法中,AES-128的加密和解密当一个轮回函数在一个时钟周期内执行时要求11个时钟周期,当两个轮回函数在一个时钟周期内执行时要求6个时钟周期,及当一个轮回函数在两个时钟周期内执行时要求22个时钟周期。
硬件实施的AES算法可实现预定水平的高速处理。然而,要求AES处理速度更高。
发明内容
本发明考虑上述情形而形成,并且提供一种通过减少加密和解密所要求的周期次数以更高速度执行AES处理的加密/解密电路。
本发明在第一方面提供一种AES加密/解密电路,该AES加密/解密电路包括
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
ShiftRows变换模块;
SubBytes变换模块;
MixColumns变换模块;及
数据保持单元,
其中在加密周期中,第一AddRoundKey变换模块和第二AddRoundKey变换模块使用不同的轮回密钥被执行。
本发明在第二方面提供一种AES加密/解密电路,该AES加密/解密电路包括
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
InvShiftRows变换模块;
InvSubBytes变换模块;
InvMixColumns变换模块;及
数据保持单元,
其中在解密周期中,第一AddRoundKey变换模块和第二AddRoundKey变换模块使用不同的轮回密钥被执行。
本发明在第三方面提供一种AES加密/解密电路,该AES加密/解密电路包括
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
第三AddRoundKey变换模块;
第一ShiftRows变换模块;
第二ShiftRows变换模块;
第一SubBytes变换模块;
第二SubBytes变换模块;
第一MixColumns变换模块;
第二MixColumns变换模块;及
数据保持单元,
其中在加密周期中,第一AddRoundKey变换模块、第二AddRoundKey变换模块及第三AddRoundKey变换模块使用不同的轮回密钥被执行。
本发明在第四方面提供一种AES加密/解密电路,该AES加密/解密电路包括
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
第三AddRoundKey变换模块;
第一InvShiftRows变换模块;
第二InvShiftRows变换模块;
第一InvSubBytes变换模块;
第二InvSubBytes变换模块;
第一InvMixColumns变换模块;
第二InvMixColumns变换模块;及
数据保持单元,
其中在解密周期中,第一AddRoundKey变换模块、第二AddRoundKey变换模块及第三AddRoundKey变换模块使用不同的轮回密钥被执行。
在本发明中,在一些时钟周期中的信号处理增加,从而在每个时钟周期时段在用于每个子块变换的信号处理时间总和之间的差最小。这使得通过硬件对AES加密或解密所要求的周期数量比以前小。
当实施本发明时,在每个时钟周期时段用于每个子块变换的信号处理时间总和的最大值等于现有技术的最大值。为此,周期数量的减少意味着处理速度的提高。
本发明适用于加密和解密(包括等效的逆密码)。本发明适用于任何实施方法,如1Round/Cycle、2Round/Cycle、或0.5Round/Cycle。本发明适用于任何加密模式,如ECB模式或CBC模式。本发明适用于任何密钥长度。
作为本发明的效果,在1Round/Cycle的实施例方法中,在AES-128中可把11个周期减小到10个周期,在AES-192中可把13个周期减小到12个周期,及在AES-256中可把15个周期减小到14个周期。
在2Round/Cycle的实施例方法中,在AES-128中可把6个周期减小到5个周期,在AES-192中可把7个周期减小到6个周期,及在AES-256中可把8个周期减小到7个周期。
参照附图的示范实施例的如下描述,本发明的其它特征将变得明白。
附图说明
图1是用来把现有技术在时钟周期中执行的加密过程内容与第一实施例的那些相比较的图;
图2是用来把现有技术在每个时钟周期中用于每个子块变换的加密处理时间总和与第一实施例的总和相比较的图;
图3是用来把现有技术在时钟周期中执行的解密过程内容与第一实施例的那些相比较的图;
图4是用来把现有技术在每个时钟周期中用于每个子块变换的解密处理时间总和与第一实施例的总和相比较的图;
图5是根据第一实施例的AES芯(Core)的方块图;
图6是根据第一实施例的加密/解密单元的方块图;
图7是根据第一实施例的用于加密的修改轮回函数模块的方块图;
图8是根据第一实施例的用于解密的修改轮回函数模块的方块图;
图9A和9B是根据第一实施例的加密时序图;
图10A和10B是根据第一实施例的解密时序图;
图11是表示根据第二实施例在时钟周期中执行的加密和解密过程内容的图;
图12是用来把现有技术在每个时钟周期中用于每个子块变换的加密处理时间总和与第二实施例的总和相比较的图;
图13是用来把现有技术在每个时钟周期中用于每个子块变换的解密处理时间总和与第二实施例的总和相比较的图;
图14是根据第二实施例的AES芯的方块图;
图15是根据第二实施例的加密/解密单元的方块图;
图16是根据第二实施例的用于加密的修改轮回函数模块的方块图;
图17是根据第二实施例的用于解密的修改轮回函数模块的方块图;
图18A和18B是根据第二实施例的加密时序图;
图19A和19B是根据第二实施例的解密时序图;
图20是表示根据第三实施例在时钟周期中执行的加密和解密过程内容的图;
图21是用来把现有技术在每个时钟周期中用于每个子块变换的加密处理时间总和与第三实施例的总和相比较的图;
图22是用来把现有技术在每个时钟周期中用于每个子块变换的解密处理时间总和与第三实施例的总和相比较的图;
图23是根据第三实施例的AES芯的方块图;
图24是根据第三实施例的加密/解密单元的方块图;
图25是根据第三实施例的用于加密的修改轮回函数模块的方块图;
图26是根据第三实施例的用于解密的修改轮回函数模块的方块图;
图27A和27B是根据第三实施例的加密时序图;
图28A和28B是根据第三实施例的解密时序图;
图29是用来把现有技术在时钟周期中执行的加密过程内容与第四实施例的那些相比较的图;
图30是用来把现有技术在时钟周期中执行的解密过程内容与第四实施例的那些相比较的图;
图31是用来把现有技术用于在时钟周期中执行的每个子块变换的信号处理时间总和与第四实施例的总和相比较的图;
图32是根据第四实施例的AES芯的方块图;
图33是根据第四实施例的加密/解密单元的方块图;
图34是根据第四实施例的修改轮回函数模块的方块图;
图35A和35B是根据第四实施例的解密时序图;
图36是表示根据第五实施例在时钟周期中执行的加密和解密过程内容的图;
图37是用来把现有技术用于在时钟周期中执行的每个子块变换的信号处理时间总和与第五实施例的总和相比较的图;
图38是根据第五实施例的AES芯的方块图;
图39是根据第五实施例的加密/解密单元的方块图;
图40是根据第五实施例的修改轮回函数模块的方块图;
图41A和41B是根据第五实施例的解密时序图;
图42是表示根据第六实施例在时钟周期中执行的加密和解密过程内容的图;
图43是用来把现有技术用于在时钟周期中执行的每个子块变换的信号处理时间总和与第六实施例的总和相比较的图;
图44是根据第六实施例的AES芯的方块图;
图45是根据第六实施例的加密/解密单元的方块图;
图46是根据第六实施例的修改轮回函数模块的方块图;
图47A和47B是根据第六实施例的解密时序图;
图48是用来把现有技术在时钟周期中执行的加密过程内容与第七实施例的那些相比较的图;
图49是用来把现有技术用于在每个时钟周期时段中的每个子块变换的加密处理时间总和与第七实施例的总和相比较的图;
图50是用来把现有技术在时钟周期中执行的解密过程内容与第七实施例的那些相比较的图;
图51是用来把现有技术用于在每个时钟周期时段中的每个子块变换的解密处理时间总和与第七实施例的总和相比较的图;
图52是根据第七实施例的AES芯的方块图;
图53是根据第七实施例的加密/解密单元的方块图;
图54A和54B是根据第七实施例用于加密的修改轮回函数模块的方块图;
图55A和55B是根据第七实施例用于解密的修改轮回函数模块的方块图;
图56A和56B是根据第七实施例的加密时序图;
图57A和57B是根据第七实施例的解密时序图;
图58是根据第八实施例的加密/解密单元的方块图;
图59是根据第九实施例的修改轮回函数模块的方块图;
图60A和60B是表示AES算法的图;
图61A和61B是表示时钟和数据保持单元的数据更新时序的时序图;及
图62是表示另一实施方法的图。
具体实施方式
这里,参照附图将详细地描述本发明的实施例。这个实施例中,将举例说明由FIPS197定义的AES-128(下文简称为AES)。
<第一实施例>
图1表示在第一实施例中在时钟周期中执行的加密过程内容与现有技术之间的比较。
参照图1,周期计数指示在AES处理开始是“0”的时钟周期计数。轮回密钥wkeyi是FIPS197描述的轮回密钥(i是轮回数)。
这个实施例中,AddRoundKey变换、ShiftRows变换、SubBytes变换及MixColumns变换在第0至第八周期中被执行。在第九周期,第一AddRoundKey变换、ShiftRows变换、SubBytes变换及第二AddRoundKey变换被执行。至于轮回密钥,wkey0被用在第0周期中,wkey1被用在第一周期中,...,及wkey8被用在第八周期中。在第九周期中,使用两个轮回密钥wkey9和wkey10。
这个实施例中,与现有技术相同的处理被整体执行。然而,这个实施例中,AES加密可以少一个的时钟周期被执行。
接着将描述根据这个实施例在每个时钟周期时段用于每个子块变换的加密处理时间总和。图2是表示现有技术在每个时钟周期时段用于每个子块变换的加密处理时间总和与第一实施例的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施这个实施例,在每个时钟周期时段用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图2所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
这个实施例中,在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换的第0至第八周期的每个周期中,用于每个子块变换的信号处理时间总和比在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及AddRoundKey变换的第九周期中用于每个子块变换的信号处理时间总和更长。因此,这个实施例中在一个时钟周期时段执行的每个子块变换的信号处理时间总和的最大值与现有技术的最大值相等。如果在一个周期时段中执行的每个子块变换的信号处理时间总和的最大值比现有技术中的一个周期时间更短,则这个实施例也可实现。
本发明也适用于AES解密。
图3表示在本实施例中在时钟周期中执行的解密过程内容与现有技术之间的比较。
参照图3,周期计数指示在AES处理开始是“0”的时钟周期计数。
这个实施例中,第一AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及第二AddRoundKey变换在第0周期中执行。在第一周期至第九周期中,InvMixColumns变换、InvShiftRows变换、InvSubBytes变换及AddRoundKey变换被执行。至于轮回密钥,两个轮回密钥wkey9和wkey10被用在第0周期中,wkey8被用在第一周期中,wkey7被用在第二周期中,...,及wkey0被用在第九周期中。
这个实施例中,与现有技术相同的处理被总体上执行。然而,这个实施例中,AES解密可以少一个的时钟周期被执行。
接着将描述根据这个实施例在每个时钟周期时段用于每个子块变换的解密处理时间总和。图4是表示在第一实施例中在每个时钟周期时段用于每个子块变换的解密处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施这个实施例,在每个时钟周期时段用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图4所示,每个子块变换的处理时间在InvSubBytes变换中最长,并且按InvMixColumns变换、AddRoundKey变换及InvShiftRows变换的顺序缩短。
这个实施例中,在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换的第一至第九周期的每一个周期中,用于每个子块变换的信号处理时间总和比在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及AddRoundKey变换的第0周期中用于每个子块变换的信号处理时间总和更长。这个实施例中在每个时钟周期时段用于每个子块变换的信号处理时间总和的最大值与现有技术的最大值相等。所以这个实施例也可实现。
将概括本发明的上述特性特征。
在一般常规实施方法中,标准定义的轮回函数被认为是处理中的断点,并且加密和解密被分配给时钟周期。为此,在第10和第0周期中用于每个子块变换的信号处理时间总和比第一至第九周期的每一个周期的总和短。就是说,每个周期中用于每个子块变换的信号处理时间总和变化。
另一方面,在本发明中,一些时钟周期中的信号处理增加,从而在每个时钟周期时段在用于每个子块变换的信号处理时间总和之间的差最小。在本发明中,AES加密或解密所要求的时钟周期的数量被减小一个,而不增加在每个时钟周期时段用于每个子块变换的信号处理时间总和。这把AES处理速度提高约10%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。
图5是根据这个实施例的AES芯的方块图。
参照图5,AES芯101执行AES处理。密钥扩展单元102从密码密钥产生对AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元103使用从密钥扩展单元102供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元104从AES芯101外部的单元接收控制信号,并且产生控制密钥扩展单元102和加密/解密单元103的操作的信号、并且向AES芯101外部的单元通知操作完成的信号。
参照图5,输入信号150是要加密的明文数据或要解密的密文数据。输出信号151是通过使加密/解密单元103加密或解密输入信号150得到的结果。密码密钥152被用于加密或解密。加密/解密选择信号153选择要执行的加密和解密之一。密钥准备开始信号155使密钥扩展单元102开始密钥扩展,以从密码密钥152产生轮回密钥。控制信号157能够使加密/解密处理晚一个周期。加密/解密开始信号158开始输入信号150的加密或解密。有效信号159代表输出信号151保持通过加密/解密单元103的加密或解密的结果。控制信号160使加密/解密单元103保持输出信号151的值。计数器信号161代表在密钥准备或加密/解密中从密钥准备开始信号155或加密/解密开始信号158的前沿起的周期数。轮回密钥A 162是轮回密钥之一。轮回密钥B 163是密钥扩展单元102产生的并且用在加密的最后周期或解密的第一周期中的轮回密钥。选择信号170切换在加密/解密单元103中子块变换的连接。选择信号171切换在加密/解密单元103中的目标过程数据。
以上设置中,输入信号150从外部输入到加密/解密单元103。输出信号151从加密/解密单元103输出到外部。密码密钥152从外部输入到密钥扩展单元102。加密/解密选择信号153从外部输入到密钥扩展单元102、加密/解密单元103及控制单元104。密钥准备开始信号155从外部输入到密钥扩展单元102和控制单元104。控制信号157从控制单元104输出到外部。加密/解密开始信号158从外部输入到密钥扩展单元102和控制单元104。有效信号159从控制单元104输出到外部。输出保持控制信号160从控制单元104输出到加密/解密单元103。计数器信号161从控制单元104输出到密钥扩展单元102。轮回密钥A 162从密钥扩展单元102输出到加密/解密单元103。轮回密钥B 163从密钥扩展单元102输出到加密/解密单元103。选择信号170从控制单元104输出到加密/解密单元103。选择信号171从控制单元104输出到加密/解密单元103。
接着将描述加密/解密单元103。图6是加密/解密单元103的方块图。参照图6,修改轮回函数模块105在选择信号170的控制下使用轮回密钥A 162和轮回密钥B 163执行一个周期的加密。修改轮回函数模块106在选择信号170的控制下使用轮回密钥A 162和轮回密钥B 163执行解密。
选择器107按照加密/解密选择信号153选择来自修改轮回函数模块105的输出和来自修改轮回函数模块106的输出之一。数据保持单元108按照输出保持控制信号160保持选择器107选择的信号。选择器109按照选择信号171选择输入信号150和来自数据保持单元108的输出信号之一。
参照图6,输入信号165输入到修改轮回函数模块105和106。输出信号166是通过使修改轮回函数模块105以处理输入信号165得到的结果。输出信号167是通过使修改轮回函数模块106以处理输入信号165得到的结果。输出信号168从选择器107输出。
在以上设置中,输入信号150、来自数据保持单元的输出及选择信号171输入到选择器109。来自选择器109的输出、轮回密钥A 162、轮回密钥B 163及选择信号170输入到修改轮回函数模块105。来自选择器109的输出、轮回密钥A 162、轮回密钥B 163及选择信号170输入到修改轮回函数模块106。来自修改轮回函数模块105的输出信号、来自修改轮回函数模块106的输出信号及加密/解密选择信号153输入到选择器107。来自选择器107的输出和输出保持控制信号160输入到数据保持单元108。数据保持单元108输出加密/解密单元103的输出信号151。
在以上设置中,当选择信号171被取消(negate)时,选择器109选择并输出输入信号150。当选择信号171被声明时,选择器109选择并输出来自数据保持单元108的输出信号151。作为选择器109选择结果的输入信号165分别输入到进行加密和解密的修改轮回函数模块105和106。当加密/解密选择信号153被取消时,选择器107选择并输出作为修改轮回函数模块105的输出结果的输出信号166。当加密/解密选择信号153被声明时,选择器107选择并输出作为修改轮回函数模块106的输出结果的输出信号167。来自选择器107的输出信号168被输入到数据保持单元108,并被临时保持。数据保持单元108的输出信号151是加密/解密单元103的输出信号。输出信号也连接到选择器109的输入。在选择信号171被声明时,重复执行通过修改轮回函数模块105的加密或通过修改轮回函数模块106的解密。
当已结束加密/解密,并且下一次加密/解密还没有开始时,控制单元104声明输出保持控制信号160。这个时间期间,数据保持单元108独立于输出信号168持续地保持输出信号151的值。
接着将描述修改轮回函数模块105。图7是修改轮回函数模块105的方块图。参照图7,AddRoundKey变换模块110(与第一AddRoundKey变换模块相对应)接收输入信号165和轮回密钥A 162,并且执行AddRoundKey变换。SubBytes变换模块111接收来自AddRoundKey变换模块110的输出,并且执行SubBytes变换。ShiftRows变换模块112接收来自SubBytes变换模块111的输出,并且执行ShiftRows变换。MixColumns变换模块113接收来自ShiftRows变换模块112的输出,并且执行MixColumns变换。AddRoundKey变换模块114(与第二AddRoundKey变换模块相对应)接收来自ShiftRows变换模块112的输出和轮回密钥B 163,并且执行AddRoundKey变换。选择器115按照选择信号170选择并输出来自MixColumns变换模块113的输出和来自AddRoundKey变换模块114的输出之一。选择器115的输出信号是修改轮回函数模块105的输出信号。
在以上设置中,当选择信号170被取消时,选择器115选择并输出来自MixColumns变换模块的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块的输出。
接着参照图8的方块图将描述修改轮回函数模块106。
参照图8,InvMixColumns变换模块116接收输入信号165,并且执行InvMixColumns变换。AddRoundKey变换模块117接收输入信号165和轮回密钥B 163,并且执行AddRoundKey变换。选择器118按照选择信号170选择并输出来自InvMixColumns变换模块116的输出和来自AddRoundKey变换模块117的输出之一。InvShiftRows变换模块119接收来自选择器118的输出,并且执行InvShiftRows变换。InvSubBytes变换模块120接收来自InvShiftRows变换模块119的输出,并且执行InvSubBytes变换。AddRoundKey变换模块121接收来自InvSubBytes变换模块120的输出,并且执行AddRoundKey变换。AddRoundKey变换模块121的输出是修改轮回函数模块106的输出。
在以上设置中,当选择信号170被取消时,选择器118选择并输出来自InvMixColumns变换模块116的输出。当选择信号170被声明时,选择器118选择并输出来自AddRoundKey变换模块117的输出。
接着将描述在以上设置中的加密操作。图9A和9B是根据这个实施例的加密时序图。参照图9A和9B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。
在图9A左端沿纵坐标的三位数指示信号线,并且与图5至8使用的信号线的附图标记具有一一对应性。
在图9A和9B的时序图表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey10并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块加密时段(T17至T27)。第四部分是第二块加密时段(从T27起)。
在参数设置时,按需要设置用于加密/解密的各种参数,如密钥长度和加密模式,除了密码密钥152和加密/解密选择信号153以外。加密/解密选择信号153和密码密钥152的值需要始终保持在外部,直到新参数设置。参数设置时段是紧接在复位之后具有任意长度的时段。当从AES芯101外的单元声明密钥准备开始信号155时(T06),参数设置时段结束。
参数设置时段结束的同时,下一个密钥准备时段开始。在密钥准备时段中,密钥扩展单元102事先产生最后轮回密钥(wkey10)以在加密/解密的第九周期(T26)中把两个轮回密钥(wkey9和wkey10)同时供给到加密/解密单元103。密钥准备时段是从密钥准备开始信号155的声明(T06)到11个周期后的时序(T17)的时段,在该时序(T17)产生最后轮回密钥(wkey10)。
接着将描述在密钥准备时段期间每个电路的操作。当密钥准备开始信号155被声明时,控制单元104从0依次向上计数计数器信号161。密钥扩展单元102按照计数器信号161在每个时钟周期扩展wkey0(密码密钥152),由此产生10个轮回密钥wkey1、wkey2、...、wkey10。产生的轮回密钥被依次输出作为轮回密钥A 162。
在时序T16,计数器信号161达到“10”。密钥扩展单元102把产生的轮回密钥(wkey10)保持在寄存器中,并且输出它作为轮回密钥B163。这之后,wkey10被持续地保持,直到下一次执行密钥准备。
当密钥准备时段已经结束时(T17),密钥扩展单元102输出在加密/解密中首先要使用的轮回密钥(在加密中的wkey0或在解密中的wkey9),作为轮回密钥A 162。轮回密钥A 162的值被保持,直到加密/解密开始信号158的声明。控制单元104停止向上计数计数器信号161,并且把计数器清除到0。
在密钥准备时段结束的附近,当预计到密钥准备将在T17结束、并启动加密时,控制单元104在T16声明控制信号157。
在T17检测到控制信号157的声明时,设置在AES芯101外的输入信号供给单元把明文数据P0供给到AES芯101作为输入信号150。加密/解密开始信号158被声明,以开始输入信号150的加密(T17)。在时序图中,加密/解密开始信号158在最短周期中被声明。然而,时序在AES芯101外自由确定。
在加密时段中,输入信号150被加密。加密时段是从加密/解密开始信号158的声明(T17)到10个周期后的时序(T27)的时段。
在检测到加密/解密开始信号158的声明时,控制单元104在下个周期(T18)中取消控制信号157、有效信号159及输出保持控制信号160。同时,控制单元104开始向上计数计数器信号161。
密钥扩展单元102按照计数器信号161从轮回密钥wkey0起依次进行密钥扩展。密钥扩展单元102在T18把wkey1、在T19把wkey2、...及在T26把wkey9输出到加密/解密单元103作为轮回密钥A 162。
从T17至T18,选择信号171被取消。因此,修改轮回函数模块105使用wkey0输出作为轮回密钥A对输入信号150执行子块变换。从T18至T27,选择信号171被声明。因此,修改轮回函数模块105从T18到T19使用wkey1,从T19到T20使用wkey2,...,及从T25到T26使用wkey8对数据保持单元108的输出执行子块变换。
在加密的最后周期(T26)中,控制单元104声明选择信号170。相应地,修改轮回函数模块105的选择器115选择来自使用轮回密钥B163执行AddRoundKey变换的AddRoundKey变换模块114的输出,从而执行最后周期的子块变换。在T26,修改轮回函数模块105的输出信号166输出是作为输入信号的明文数据P0的加密结果的密文数据C0。一个周期后(T27),数据保持单元108向外部输出密文数据C0的值作为来自AES芯101的输出。同时,为了通知在AES芯101外部单元加密结束、以及输出信号151被启动,控制单元104声明有效信号159(T27)。在有效信号159被声明的同时,AES芯101保证输出信号151被启动。
另一方面,输出保持控制信号160保持取消,因为在T27有效信号159被声明,但在T27加密/解密开始信号158也被声明。如果在T27加密/解密开始信号158不被声明,则在T27输出保持控制信号160被声明,并且数据保持单元108的值保持密文数据C0。
在T27当加密结束时,密钥扩展单元102输出wkey0作为轮回密钥A 162。轮回密钥A 162的值被保持,直到下一个加密/解密开始信号156的声明。
当预计加密结束时(T27),控制单元104在结束前的一个周期(T26)声明控制信号157。当控制信号157被声明时,在AES芯101外部的单元把输入信号150的值设置到下个明文数据P1,从而第二块的加密可开始。在图9A和9B的时序图中,在AES芯101外部的单元在最短周期(T27)中声明下一个加密/解密开始信号。第二块的加密操作以与第一块相同的方式进行。从那时起,加密操作被重复进行与块的预定数量一样多次。在图9A和9B的时序图中,第二块的加密在距离第一块加密结束的最短间隔开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已经完全结束,并且下一个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述这个实施例的解密操作。图10A和10B是根据这个实施例的解密时序图。参照图10A和10B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图10A的左端沿纵坐标的三位数指示信号线,并且与图5至8中使用的信号线的附图标记具有一一对应性。
解密操作也大致划分成四部分:参数设置时段(T01至T06)、密钥准备时段(T06至T17)、第一块解密时段(T17至T27)及第二块解密时段(从T27起)。
参数设置时段是从T01至T06,并且其作用、开始条件及结束条件与本实施例的加密中相同。然而,加密/解密选择信号153在解密中被声明。
密钥准备时段是从T06至T17,并且开始条件和结束条件与本实施例的加密中相同。每个电路的操作也几乎与本实施例的加密中相同。然而,第一周期中使用的轮回密钥在加密和解密之间是不同的。因此,密钥扩展单元102在密钥准备时段的结束(T17)从wkey10反向地进行密钥扩展以产生wkey9,并且输出密钥作为轮回密钥A 162。轮回密钥A 162的值被保持,直到加密/解密开始信号158的声明。控制单元104停止向上计数计数器信号161,并且把计数器清除到0。
在密钥准备时段结束的附近,当预计到密钥准备将在T17结束、并启动解密时,控制单元104在T16声明控制信号157。
在T17检测到控制信号157的声明时,设置在AES芯101外的输入信号供给单元把密文数据C0供给到AES芯101作为输入信号150。加密/解密开始信号158被声明,以开始输入信号150的解密(T17)。在时序图中,加密/解密开始信号158在最短周期中被声明。然而,时序在AES芯101外自由确定。
在解密时段中,输入信号150被解密。解密时段是从加密/解密开始信号158的声明(T17)到10个周期后的时序(T27)的时段。
在检测到加密/解密开始信号158的声明时,控制单元104在下个周期(T18)中取消控制信号157、有效信号159及输出保持控制信号160。同时,控制单元104开始向上计数计数器信号161。
密钥扩展单元102按照计数器信号161从轮回密钥wkey9反向地进行密钥扩展。密钥扩展单元102在T18把wkey9、在T19把wkey8、...及在T26把wkey0输出到加密/解密单元103作为轮回密钥A 162。
从T17至T18,选择信号171被取消。因此,修改轮回函数模块106使用wkey9输出作为轮回密钥A对输入信号150执行子块变换。在解密的第一周期中,控制单元104声明选择信号170。相应地,修改轮回函数模块106的选择器118选择来自AddRoundKey变换模块117(其使用轮回密钥B 163执行AddRoundKey变换)的输出,从而执行第一周期的子块变换。
从T18至T27,选择信号171被声明。因此,修改轮回函数模块106从T18到T19使用wkey8,从T19到T20使用wkey7,...,及从T25到T26使用wkey0对来自数据保持单元108的输出执行子块变换。
在T26,修改轮回函数模块106的输出信号167输出是作为输入信号的密文数据C0的解密结果的明文数据P0。一个周期后(T27),数据保持单元108向外部输出明文数据P0的值作为来自AES芯101的输出。同时,为了通知AES芯101外部的单元解密被结束、以及输出信号151被启动,控制单元104声明有效信号159(T27)。在有效信号159被声明的同时,AES芯101保证输出信号151被启动。
另一方面,输出保持控制信号160保持取消,因为在T27有效信号159被声明,但在T27加密/解密开始信号158也被声明。如果在T27加密/解密开始信号158不被声明,则在T27输出保持控制信号160被声明,并且数据保持单元108的值保持明文数据P0。
在T27当解密结束时,密钥扩展单元102通过逆运算由wkey10得到wkey9,并且输出它作为轮回密钥A 162。轮回密钥A 162的值被保持,直到下一个加密/解密开始信号156的声明。
当预计解密结束时(T27),控制单元104在结束前的一个周期(T26)声明控制信号157。当控制信号157被声明时,在AES芯101外部的单元把输入信号150的值设置到下个密文数据C1,从而第二块的解密可开始。在图10A和10B的时序图中,在AES芯101外部的单元在最短周期(T27)中声明下一个加密/解密开始信号158。第二块的解密操作与第一块以相同方式进行。从那时起,解密操作被重复进行任意次。
当解密已完全结束,并且下个作业要开始时,处理再次从参数设置开始。
第一实施例能以上述方式实施。在第一实施例中,对AES加密所要求的时钟周期的数量被减小一个,而不增大在每个时钟周期用于每个子块变换的信号处理时间总和的最大值。这把AES处理速度提高约10%。
<第二实施例>
图11是表示根据第二实施例在时钟周期中执行加密和解密过程内容的图。
参照图11,周期计数指示在AES处理开始是“0”的时钟周期计数。
在这个实施例的加密中,第一AddRoundKey变换、ShiftRows变换、SubBytes变换、MixColumns变换及第二AddRoundKey变换在第0周期中被执行。在第一至第八周期中,AddRoundKey变换、ShiftRows变换、SubBytes变换及MixColumns变换被执行。在第九周期中,AddRoundKey变换、ShiftRows变换及SubBytes变换被执行。至于轮回密钥,wkey0和wkey1被用在第0周期中,wkey2被用在第一周期中,...,及wkey10被用在第九周期中。
在第二实施例中,与现有技术相同的处理被总体上执行。然而,这个实施例中,AES加密可以少一个的时钟周期被执行。
接着将描述根据第二实施例在时钟周期中用于执行的每个子块变换的信号处理时间总和。图12是表示在第二实施例中在时钟周期中执行每个子块变换的信号处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实现第二实施例,在每个时钟周期时段用于每个子块变换的信号处理时间总和的最大值必须小于一个周期时间。如图12所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
这个实施例中,在执行第一AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及第AddRoundKey变换的第0周期中,用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、SubBytes变换及ShiftRows变换的第九周期中用于每个子块变换的信号处理时间总和更长。因此,这个实施例的每个子块变换的信号处理时间总和的最大值比现有技术的最大值更大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术在每个时钟周期时段中用于每个子块变换的加密处理时间总和的最大值比一个周期时间短,则也假定本实施例在多数情况下是可实施的。
本发明也适用于AES解密。
如图11所示,在这个实施例的解密中,AddRoundKey变换、InvShiftRows变换及InvSubBytes变换在第0周期中被执行。在第一至第八周期中,AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及InvMixColumns变换被执行。在第九周期中,第一AddRoundKey变换、InvShiftRows变换、InvSubBytes变换、InvMixColumns变换及第二AddRoundKey变换被执行。至于轮回密钥,wkey10被用在第0周期中,wkey9被用在第一周期中,...,及wkey2被用在第八周期中。在第九周期中,使用两个轮回密钥wkey1和wkey0。
在第二实施例中,与现有技术相同的处理被总体上执行。然而,在第二实施例中,AES解密可以少一个的时钟周期被执行。
接着将描述根据第二实施例在时钟周期中执行的每个子块变换的信号处理时间总和。图13是表示在第二实施例中在时钟周期中执行的每个子块变换的信号处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施这个实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个周期时间。如图13所示,每个子块变换的处理时间在InvSubBytes变换中最长,并且按InvMixColumns变换、AddRoundKey变换及InvShiftRows变换的顺序缩短。
在第二实施例中,在执行第一AddRoundKey变换、InvSubBytes变换、InvShiftRows变换、InvMixColumns变换及第二AddRoundKey变换的第九周期中用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、InvSubBytes变换及InvShiftRows变换的第0周期中用于每个子块变换的信号处理时间总和更长。因此,第二实施例的每个子块变换的信号处理时间总和的最大值比现有技术的最大值大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。在每个时钟周期时段中每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术在每个时钟周期时段中每个子块变换的解密处理时间总和的最大值比一个周期时间短,则也假定本实施例在多数情况下是可实施的。
将概括第二实施例的上述特性特征。
在一般常规实施方法中,由标准定义的轮回函数被认为是处理中的断点,并且加密和解密被分配给时钟周期。为此,在第10和第0周期用于每个子块变换的信号处理时间总和比第一至第九周期的每一个周期中用于每个子块变换的解密处理时间总和更短。就是说,在每个周期中执行每个子块变换的信号处理时间总和变化。
另一方面,在本发明中,在一些时钟周期中的信号处理增加,从而在每个时钟周期时段中用于每个子块变换的信号处理时间总和之间的差减小。
这个实施例中,在一个周期中执行每个子块变换的信号处理时间总和的最大值稍微增大。为此,本实施例在现有技术可实施的条件下不一定是可实施的。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。多数情况下,AES加密或解密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。
图14是根据这个实施例的AES芯的方块图。
参照图14,AES芯131执行AES处理。密钥扩展单元132从密码密钥产生对AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元133使用从密钥扩展单元132供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元134从AES芯131外部的单元接收控制信号,并且产生控制密钥扩展单元132和加密/解密单元133的操作的信号、以及向AES芯131外部的单元通知操作完成的信号。
参照图14,选择信号175从控制单元134输出到加密/解密单元133以切换在加密/解密单元133中的子块变换的连接。
将省略图14的构成元件和信号线的描述,这些构成元件和信号线与第一实施例中描述的那些相同。
接着将描述加密/解密单元133。图15是用来解释加密/解密单元133的方块图。参照图15,修改轮回函数模块135在选择信号170和选择信号175的控制下使用轮回密钥A 162和轮回密钥B 163执行一个周期的加密。修改轮回函数模块136在选择信号170和175的控制下使用轮回密钥A 162和轮回密钥B 163执行解密。
在以上设置中,当选择信号171被取消时,加密/解密单元133的选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。
将省略图15的构成元件和信号线的描述,这些构成元件和信号线与第一实施例中描述的那些相同。
接着将描述修改轮回函数模块135。图16是修改轮回函数模块135的方块图。参照图16,AddRoundKey变换模块114接收输入信号165和轮回密钥B 163,并且执行AddRoundKey变换。选择器137按照选择信号175选择并输出输入信号165和来自AddRoundKey变换模块114的输出之一。SubBytes变换模块111接收来自选择器137的输出,并且执行SubBytes变换。ShiftRows变换模块112接收来自SubBytes变换模块111的输出,并且执行ShiftRows变换。MixColumns变换模块113接收来自ShiftRows变换模块112的输出,并且执行MixColumns变换。选择器115按照选择信号170选择并输出来自MixColumns变换模块113的输出和来自ShiftRows变换模块112的输出之一。AddRoundKey变换模块110接收来自选择器115的输出和轮回密钥A 162,并且执行AddRoundKey变换。AddRoundKey变换模块110的输出信号是修改轮回函数模块135的输出信号。
在以上设置中,当选择信号170被取消时,选择器115选择并输出来自MixColumns变换模块113的输出。当选择信号170被声明时,选择器115选择并输出来自ShiftRows变换模块112的输出。当选择信号175被取消时,选择器137选择并输出输入信号165。当选择信号175被声明时,选择器137选择并输出来自AddRoundKey变换模块114的输出。
接着将描述修改轮回函数模块136。图17是修改轮回函数模块136的方块图。参照图17,AddRoundKey变换模块121接收输入信号165和轮回密钥A 162,并且执行AddRoundKey变换。InvMixColumns变换模块116接收来自AddRoundKey变换模块121的输出,并且执行InvMixColumns变换。选择器118按照选择信号170选择并输出来自InvMixColumns变换模块116的输出和来自AddRoundKey变换模块121的输出之一。InvShiftRows变换模块119接收来自选择器118的输出,并且执行InvShiftRows变换。InvSubBytes变换模块120接收来自InvShiftRows变换模块119的输出,并且执行InvSubBytes变换。AddRoundKey变换模块117接收来自InvSubBytes变换模块120的输出和轮回密钥B 163,并且执行AddRoundKey变换。选择器138按照选择信号175选择并输出来自InvSubBytes变换模块120的输出和来自AddRoundKey变换模块117的输出之一。选择器138的输出是修改轮回函数模块136的输出。
在以上设置中,当选择信号170被取消时,选择器118选择并输出来自InvMixColumns变换模块116的输出。当选择信号170被声明时,选择器118选择并输出来自AddRoundKey变换模块121的输出。当选择信号175被取消时,选择器138选择并输出来自InvSubBytes变换模块120的输出。当选择信号175被声明时,选择器138选择并输出来自AddRoundKey变换模块117的输出。
接着将描述以上设置中的加密操作。图18A和18B是根据第二实施例的加密时序图。参照图18A和18B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图18A左端沿纵坐标的三位数指示信号线,并且与图14至17中使用的信号线的附图标记具有一一对应性。
在图18A和18B的时序图中表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块加密时段(T17至T27)。第四部分是第二块加密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与第一实施例相同。密钥准备时段是从T06至T17,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。然而,密钥扩展单元132在时序T16的操作、密钥扩展单元132和控制单元134在时序T17的操作与第一实施例不同,因此将在下面描述。
在时序T16,密钥扩展单元132输出wkey0作为轮回密钥B 163。轮回密钥wkey10被保持于在密钥扩展单元132提供的寄存器中。
在时序T17,密钥扩展单元132输出wkey1作为轮回密钥A 162。控制单元134声明选择信号175。
第一块加密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元134在加密结束时声明选择信号175,并且在加密的第一周期中取消它(T18或T28)。控制单元134还在加密的最后周期(T16)声明选择信号170,并且在加密结束(T17)时取消它。控制单元134还在加密的第一周期声明选择信号171,并且在加密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器115选择并输出来自MixColumns变换模块113的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块112的输出。当选择信号175被取消时,选择器137选择并输出输入信号165。当选择信号175被声明时,选择器137选择并输出来自AddRoundKey变换模块114的输出。
因此,在第0周期(T17至T18),修改轮回函数模块135对输入信号150执行AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行SubBytes变换、ShiftRows变换及AddRoundKey变换得到的结果。
修改轮回函数模块135通过按上述方式控制选择信号171、170及175可执行图11所示的加密。
另一方面,密钥扩展单元132在密钥准备时段后输出作为轮回密钥A 162的wkey1和作为轮回密钥B 163的wkey0。为此,wkey0和wkey1在加密开始(T17)时被供给到修改轮回函数模块135。基于加密/解密开始信号158检测到加密开始时(T17),密钥扩展单元132使用在轮回密钥A寄存器中保持的wkey1产生wkey2,并且把wkey2保持在轮回密钥A寄存器中。因此,wkey2在T18供给到修改轮回函数模块135。轮回密钥以相同方式供给直到T26。当wkey10被保持在轮回密钥A寄存器中,并且轮回密钥供给在T26结束时,密钥扩展单元132把从外部连续供给的wkey0产生wkey1用作密码密钥152,并且把wkey1保持在轮回密钥A寄存器中以准备下次加密开始(T27)。
当密钥扩展单元132按上述方式操作时,修改轮回函数模块135可如图11所示在每个周期使用轮回密钥。
根据第二实施例的加密时段期间操作按上述方式进行。第二块的加密操作以与第一块相同的方式进行。从那时起,加密操作被重复地进行与块的预定数量一样多次。在图18A和18B的时序图中,第二块的加密在距离第一块加密结束的最短间隔开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述这个实施例的解密操作。图19A和19B是根据这个实施例的解密时序图。参照图19A和19B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图19A左端沿纵坐标的三位数指示信号线,并且与图14至17中使用的信号线的附图标记具有一一对应性。
在图19A和19B的时序图中表示的解密操作也大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块解密时段(T17至T27)。第四部分是第二块解密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与第一实施例相同。密钥准备时段是从T06至T17,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。然而,密钥扩展单元132在时序T16的操作、密钥扩展单元132和控制单元134在时序T17的操作与第一实施例不同,并因此将在下面描述。
在时序T16,密钥扩展单元132输出wkey0作为轮回密钥B 163。轮回密钥wkey0被保持于密钥扩展单元132提供的寄存器中。
在时序T17,密钥扩展单元132输出wkey10作为轮回密钥A 162。控制单元134声明选择信号170。
第一块解密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元134在解密结束时声明选择信号170,并且在解密的第一周期取消它(T18或T28)。控制单元134还在解密的最后周期(T16)声明选择信号175,并且在解密结束(T17)时取消它。控制单元134还在解密的第一周期声明选择信号171,并且在解密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器118选择并输出来自InvMixColumns变换模块116的输出。当选择信号170被声明时,选择器118选择并输出来自AddRoundKey变换模块121的输出。当选择信号175被取消时,选择器138选择并输出来自InvSubBytes变换模块120的输出。当选择信号175被声明时,选择器138选择并输出来自AddRoundKey变换模块117的输出。
因此,在第0周期(T17至T18),修改轮回函数模块136对输入信号150执行AddRoundKey变换、InvShiftRows变换及InvSubBytes变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行AddRoundKey变换、InvMixColumns变换、InvShiftRows变换及InvSubBytes变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行AddRoundKey变换、InvMixColumns变换、InvShiftRows变换、InvSubBytes变换及AddRoundKey变换得到的结果。
修改轮回函数模块136通过按上述方式控制选择信号171、170及175可执行图11所示的解密。
另一方面,密钥扩展单元132在密钥准备时段后输出作为轮回密钥A 162的wkey10和作为轮回密钥B 163的wkey0。为此,wkey10在解密开始(T17)时被供给到修改轮回函数模块136。基于加密/解密开始信号158检测到解密开始时(T17),密钥扩展单元132使用在轮回密钥A寄存器中保持的wkey10产生wkey9,并且把wkey9保持在轮回密钥A寄存器中。因此,wkey9在T18供给到修改轮回函数模块136。轮回密钥以相同方式供给直到T26。当wkey1被保持在轮回密钥A寄存器中,并且轮回密钥供给在T26结束时,密钥扩展单元132把在密钥扩展单元的内部寄存器中保持的wkey10加载在轮回密钥A寄存器中,以准备下次解密开始(T27)。
当密钥扩展单元132按上述方式操作时,修改轮回函数模块136可如图11所示在每个周期使用轮回密钥。
根据第二实施例的解密时段期间操作按上述方式进行。第二块的解密操作以与第一块相同的方式进行。从那时起,解密操作被重复进行与块的预定数量一样多次。在图19A和19B的时序图中,第二块的解密在距离第一块解密结束的最短间隔开始。AES芯通过以这样一种时序执行所有块的解密可呈现其最大性能。然而,解密间隔基本上可设置到任意长度。
当预定数量的块的解密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
第二实施例能以上述方式实施。在第二实施例中,在一个周期中必须执行的每个子块变换的信号处理时间总和的最大值稍微增大。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段用于每个子块变换的解密处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,在多数情况下,AES加密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
上述第二实施例仅是本发明的例子,并且本发明的效果不限于上述实施例的那些。
<第三实施例>
图20是表示根据第三实施例在时钟周期执行加密和解密过程内容的图。参照图20,周期计数指示在AES处理开始是“0”的时钟周期计数。
在第三实施例的加密中,AddRoundKey变换、ShiftRows变换及SubBytes变换在第0周期中被执行。在第一至第八周期中,AddRoundKey变换、ShiftRows变换、SubBytes变换及MixColumns变换被执行。在第九周期中,MixColumns变换、第一AddRoundKey变换、SubBytes变换、ShiftRows变换及第二AddRoundKey变换被执行。至于轮回密钥,wkey0被用在第0周期中,wkey1被用在第一周期中,...,及wkey8被用在第八周期中。在第九周期中,使用两个轮回密钥wkey9和wkey10。
在第三实施例中,与现有技术相同的处理被总体上执行。然而,在第三实施例中,AES加密可以少一个的时钟周期被执行。
接着将描述根据第三实施例在时钟周期中执行的每个子块变换的信号处理时间总和。图21是表示第三实施例中在每个时钟周期中每个子块变换的加密处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实现第三实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个周期时间。如图21所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
在第三实施例中,在执行第一AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及第二AddRoundKey变换的第九周期中用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、SubBytes变换及ShiftRows变换的第0周期中用于每个子块变换的信号处理时间总和更长。因此,第三实施例的用于每个子块变换的信号处理时间总和的最大值比现有技术的最大值大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术在每个时钟周期时段中用于每个子块变换的加密处理时间总和的最大值比一个周期时间短,则也假定这个实施例在多数情况下是可实施的。
本发明也适用于AES解密。
如图20所示,在第三实施例的解密中,第一AddRoundKey变换、InvShiftRows变换、InvSubBytes变换、InvMixColumns变换及第二AddRoundKey变换在第0周期中被执行。在第一至第八周期中,AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及InvMixColumns变换被执行。在第九周期中,AddRoundKey变换、InvShiftRows变换及InvSubBytes变换被执行。至于轮回密钥,wkey10和wkey9被用在第0周期中,wkey8被用在第一周期中,...,及wkey0被用在第九周期中。
在第三实施例中,与在现有技术中相同的处理被总体上执行。然而,在此实施例中,AES解密可以少一个的时钟周期被执行。
接着将描述根据第三实施例在时钟周期中执行的每个子块变换的信号处理时间总和。图22是表示在第三实施例在时钟周期中执行的每个子块变换的信号处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施这个实施例,在每个时钟周期时段中每个子块变换的信号处理时间总和的最大值必须小于一个周期时间。如图22所示,每个子块变换的处理时间在InvSubBytes变换中最长,并且按InvMixColumns变换、AddRoundKey变换及InvShiftRows变换的顺序缩短。
在第三实施例中,在执行第一AddRoundKey变换、InvSubBytes变换、InvShiftRows变换、InvMixColumns变换及第二AddRoundKey变换的第0周期中用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、InvSubBytes变换及InvShiftRows变换的第九周期中用于每个子块变换的信号处理时间总和更长。因此,第三实施例的每个子块变换的信号处理时间总和的最大值比现有技术的最大值大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值比一个周期时间短,则也假定这个实施例在多数情况下是可实施的。
将概括第三实施例的上述特性特征。
在一般常规实施方法中,由标准定义的轮回函数被认为是处理中的断点,并且加密和解密被分配给时钟周期。为此,在第10和第0周期中用于每个子块变换的信号处理时间总和比在第一至第九周期的每一个中用于每个子块变换的信号处理时间总和更短。就是说,每个周期中执行的每个子块变换的信号处理时间总和变化。
另一方面,第三实施例中,一些时钟周期中的信号处理被增加,从而在每个时钟周期时段中用于每个子块变换的信号处理时间总和之间的差减小。
在第三实施例中,在一个周期中执行每个子块变换的信号处理时间总和的最大值稍微增大。为此,本实施例在现有技术可实施的条件下不一定是可实施的。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。在多数情况下,AES加密或解密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。图23是根据这个实施例的AES芯的方块图。参照图23,AES芯141执行AES处理。密钥扩展单元142从密码密钥产生对于AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元143使用从密钥扩展单元142供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元144从在AES芯141外部的单元接收控制信号,并且产生控制密钥扩展单元142和加密/解密单元143的操作的信号、以及向在AES芯141外部的单元通知操作完成的信号。
将省略图23中的构成元件和信号线的描述,这些构成元件和信号线与第一和第二实施例中描述的那些相同。
接着将描述加密/解密单元143。图24是表示加密/解密单元143的方块图。参照图24,修改轮回函数模块145在选择信号170和175的控制下使用轮回密钥A 162和轮回密钥B 163执行一个周期的加密。修改轮回函数模块146在选择信号170和175的控制下使用轮回密钥A 162和轮回密钥B 163执行解密。
在以上设置中,当选择信号171被取消时,加密/解密单元143的选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。
将省略图24中的构成元件和信号线的描述,这些构成元件和信号线与第一实施例中描述的那些相同。
接着将描述修改轮回函数模块145。图25是修改轮回函数模块145的方块图。参照图25,MixColumns变换模块113接收输入信号165,并且执行MixColumns变换。选择器137按照选择信号175选择并输出输入信号165和来自MixColumns变换模块113的输出之一。AddRoundKey变换模块110接收来自选择器137的输出和轮回密钥A 162,并且执行AddRoundKey变换。SubBytes变换模块111接收来自AddRoundKey变换模块110的输出,并且执行SubBytes变换。ShiftRows变换模块112接收来自SubBytes变换模块111的输出,并且执行ShiftRows变换。AddRoundKey变换模块114接收来ShiftRows变换模块112的输出和轮回密钥B 163,并且执行AddRoundKey变换。选择器115按照选择信号170选择并输出来自ShiftRows变换模块112的输出和来自AddRoundKey变换模块114的输出之一。选择器115的输出信号是修改轮回函数模块145的输出信号。
在以上设置中,当选择信号170被取消时,选择器115选择并输出来自ShiftRows变换模块112的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。当选择信号175被取消时,选择器137选择并输出来自MixColumns变换模块113的输出。当选择信号175被声明时,选择器147选择并输出输入信号165。
接着将描述修改轮回函数模块146。图26是修改轮回函数模块146的方块图。参照图26,AddRoundKey变换模块121接收输入信号165和轮回密钥A 162,并且执行AddRoundKey变换。选择器118按照选择信号170选择并输出输入信号165和来自AddRoundKey变换模块121的输出之一。InvShiftRows变换模块119接收来自选择器118的输出,并且执行InvShiftRows变换。InvSubBytes变换模块120接收来自InvShiftRows变换模块119的输出,并且执行InvSubBytes变换。AddRoundKey变换模块117接收来自InvSubBytes变换模块120的输出和轮回密钥B 163,并且执行AddRoundKey变换。InvMixColumns变换模块116接收来自AddRoundKey变换模块117的输出,并且执行InvMixColumns变换。选择器138按照选择信号175选择并输出来自InvMixColumns变换模块116的输出和来自AddRoundKey变换模块117的输出之一。选择器138的输出是修改轮回函数模块146的输出。
在以上设置中,当选择信号170被取消时,选择器118选择并输出输入信号165。当选择信号170被声明时,选择器118选择并输出来自AddRoundKey变换模块121的输出。当选择信号175被取消时,选择器138选择并输出来自InvMixColumns变换模块116的输出。当选择信号175被声明时,选择器138选择并输出来自AddRoundKey变换模块117的输出。
接着将描述在以上设置中的加密操作。图27A和27B是根据这个实施例的加密时序图。参照图27A和27B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图27A左端沿纵坐标的三位数指示信号线,并且与图23至26中使用的信号线的附图标记具有一一对应性。
在图27A和27B的时序图中表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块加密时段(T17至T27)。第四部分是第二块加密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与第一实施例相同。密钥准备时段是从T06至T17,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。然而,控制单元144在密钥准备时段的结束(T17)时声明选择信号175。
第一块加密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元144在加密结束时声明选择信号175,并且在加密的第一周期取消它(T18或T28)。控制单元144还在加密的最后周期(T16)声明选择信号170,并且在加密结束(T17)时取消它。控制单元144还在加密的第一周期声明选择信号171,并且在加密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器115选择并输出来自ShiftRows变换模块112的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。当选择信号175被取消时,选择器137选择并输出来自MixColumns变换模块113的输出。当选择信号175被声明时,选择器147选择并输出输入信号165。
因此,在第0周期(T17至T18),修改轮回函数模块145对输入信号150执行AddRoundKey变换、SubBytes变换及ShiftRows变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行MixColumns变换、AddRoundKey变换、SubBytes变换、ShiftRows变换及AddRoundKey变换得到的结果。
修改轮回函数模块145通过按上述方式控制选择信号171、170及175可执行图20所示的加密。
另一方面,密钥扩展单元142在密钥准备时段后输出作为轮回密钥A 162的wkey0和作为轮回密钥B 163的wkey10。为此,wkey0在加密开始(T17)时被供给到修改轮回函数模块145。基于加密/解密开始信号158检测到加密开始时(T17),密钥扩展单元142使用在轮回密钥A寄存器中保持的wkey0产生wkey1,并且把wkey1保持在轮回密钥A寄存器中。因此,wkey1在T18供给到修改轮回函数模块145。轮回密钥以相同方式供给直到T26。在T26,也供给作为轮回密钥B163的wkey10。当wkey10被保持在轮回密钥A寄存器中,并且轮回密钥供给在T26结束时,密钥扩展单元142把从外部连续地供给的wkey0作为密码密钥152保持在轮回密钥A寄存器中以准备下次加密开始(T27)。
当密钥扩展单元142按上述方式操作时,修改轮回函数模块145可如图20所示在每个周期使用轮回密钥。
根据第三实施例在加密时段期间的操作按上述方式进行。第二块的加密操作以与对于第一块相同的方式进行。从那时起,加密操作被重复地进行与块的预定数量一样多次。在图27A和27B的时序图中,第二块的加密在距离第一块加密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述这个实施例的解密操作。图28A和28B是根据这个实施例的解密时序图。参照图28A和28B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图28A左端沿纵坐标的三位数指示信号线,并且与在图23至26中使用的信号线的附图标记具有一一对应性。
在图28A和28B的时序图中表示的解密操作也大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块解密时段(T17至T27)。第四部分是第二块解密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与第一实施例相同。密钥准备时段是从T06至T17,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。然而,控制单元144在密钥准备时段的结束(T17)时声明选择信号170。
第一块解密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元144在解密结束时声明选择信号170,并且在解密的第一周期取消它(T18或T28)。控制单元144还在解密的最后周期(T16)声明选择信号175,并且在解密结束(T17)时取消它。控制单元144还在解密的第一周期声明选择信号171,并且在解密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器118选择并输出输入信号165。当选择信号170被声明时,选择器118选择并输出来自AddRoundKey变换模块121的输出。当选择信号175被取消时,选择器138选择并输出来自InvMixColumns变换模块116的输出。当选择信号175被声明时,选择器138选择并输出来自AddRoundKey变换模块117的输出。
因此,在第0周期(T17至T18),修改轮回函数模块146对输入信号150执行AddRoundKey变换、InvShiftRows变换、InvSubBytes变换、AddRoundKey变换及InvMixColumns变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行InvShiftRows变换、InvSubBytes变换、AddRoundKey变换及InvMixColumns变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行InvShiftRows变换、InvSubBytes变换及AddRoundKey变换得到的结果。
修改轮回函数模块146通过按上述方式控制选择信号171、170及175可执行图20所示的解密。
另一方面,密钥扩展单元142在密钥准备时段后输出作为轮回密钥A 162的wkey9和作为轮回密钥B 163的wkey10。为此,wkey10和wkey9在解密开始(T17)时被供给到修改轮回函数模块146。基于加密/解密开始信号158检测到解密开始时(T17),密钥扩展单元142使用在轮回密钥A寄存器保持的wkey9产生wkey8,并且把wkey8保持在轮回密钥A寄存器。因此,wkey8在T18供给到修改轮回函数模块146。轮回密钥以相同方式供给直到T26。当wkey0被保持在轮回密钥A寄存器中,并且轮回密钥供给在T26结束时,密钥扩展单元142使用在轮回密钥B寄存器保持的wkey10产生wkey9,并且把wkey9保持在轮回密钥A寄存器以准备下次解密开始(T27)。
当密钥扩展单元142按上述方式操作时,修改轮回函数模块146可如图20所示在每个周期使用轮回密钥。
根据这个实施例的在解密时段期间的操作按上述方式进行。第二块的解密操作以与第一块相同的方式进行。从那时起,解密操作被重复地进行与块的预定数量一样多次。在图28A和28B的时序图中,第二块的解密在距离第一块解密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的解密可呈现其最大性能。然而,解密间隔基本上可设置到任意长度。
当预定数量的块的解密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
第三实施例能以上述方式实施。在第三实施例中,在一个周期中必须执行的每个子块变换的信号处理时间总和的最大值稍微增大。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,在多数情况下,AES加密和解密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
如以上描述的那样,通过应用本发明的想法,除基本第一实施例以外还可得到多个实施例。例子是第二和第三实施例。在加密的任意周期中执行AddRoundKey变换两次的设置也是可得到的,如图26所示,表明用来在第八周期执行AddRoundKey变换两次的设置。实施例仅是本发明的例子,并且本发明的效果不限于在实施例中描述的那些。
<第四实施例>
在第四实施例中,使用FIPS197描述的等效逆密码执行解密。
图29表示在第四实施例在时钟周期中执行的加密过程内容与现有技术之间的比较。
参照图29,周期计数指示在AES处理开始是“0”的时钟周期计数。
这个实施例中,AddRoundKey变换、ShiftRows变换、SubBytes变换及MixColumns变换在第0至第八周期中被执行。在第九周期中,第一AddRoundKey变换、ShiftRows变换、SubBytes变换及第二AddRoundKey变换被执行。至于轮回密钥,wkey0被用在第0周期中,wkey1被用在第一周期中,...,及wkey8被用在八周期中。在第九周期中,使用两个轮回密钥wkey9和wkey10。
在第四实施例中,与在现有技术中相同的处理被总体上执行。然而,在第四实施例中,AES加密可以少一个的时钟周期被执行。
接着将描述根据第四实施例在每个时钟周期时段中用于每个子块变换的加密处理时间总和。图31是表示现有技术在每个时钟周期时段中用于每个子块变换的加密处理时间总和与第四实施例的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实现第四实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图31所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
在第四实施例中,在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换的第0至第八周期的每一个周期中每个子块变换的信号处理时间总和比在执行第一AddRoundKey变换、SubBytes变换、ShiftRows变换及第二AddRoundKey变换的第九周期中每个子块变换的信号处理时间总和更长。因此,在第四实施例在一个时钟周期中执行的每个子块变换的信号处理时间总和的最大值与现有技术的最大值相等。如果在一个周期中执行的每个子块变换的信号处理时间总和的最大值比现有技术中的一个周期时间短,则这个实施例也可实现。
本发明也适用于AES解密。
图30表示在第四实施例中在时钟周期中执行解密过程内容与现有技术之间的比较。
参照图30,周期计数指示在AES处理开始是“0”的时钟周期计数。修改解密密钥wkey′(i是轮回数)是对FIPS197描述的等效逆密码必需的轮回密钥。
在第四实施例中,AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及InvMixColumns变换在第0至第八周期中被执行。在第九周期,第一AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及第二AddRoundKey变换被执行。至于轮回密钥,wkey10被用在第0周期,wkey9′被用在第一周期中,...,wkey2′被用在第八周期中。在第九周期,使用两个轮回密钥wkey1′和wkey0。
在第四实施例中,与在现有技术中相同的处理被总体上执行。然而,在第四实施例中,AES解密可以少一个的时钟周期被执行。
接着将描述根据第四实施例在每个时钟周期时段用于每个子块变换的解密处理时间总和。图31是表示在第四实施例中每个时钟周期时段中用于每个子块变换的解密处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施这个实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图31所示,每个子块变换的处理时间在InvSubBytes变换中最长,并且按InvMixColumns变换、AddRoundKey变换及InvShiftRows变换的顺序缩短。
在第四实施例中,在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换的第0至第八周期的每一个中用于每个子块变换的信号处理时间总和比在执行第一AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及第二AddRoundKey变换的第九周期中用于每个子块变换的信号处理时间总和更长。因此,这个实施例中在一个时钟周期中执行每个子块变换的信号处理时间总和的最大值与现有技术的最大值相等。如果在一个时钟周期中执行每个子块变换的信号处理时间总和的最大值比在现有技术中的一个周期时间短,则也可实施这个实施例。
将概括第四实施例的上述特性特征。
在一般常规实施方法中,由标准定义的轮回函数被认为是处理中的断点,并且加密和解密被分配给时钟周期。为此,在第10和第0周期中用于每个子块变换的信号处理时间总和比在第一至第九周期的每一个周期中用于每个子块变换的信号处理时间总和短。就是说,在每个周期中用于执行每个子块变换的信号处理时间总和变化。
另一方面,在第四实施例中,一些时钟周期中的信号处理被增加,从而在每个时钟周期时段中用于每个子块变换的信号处理时间总和之间的差最小。在本发明中,AES加密或解密所要求的时钟周期数量被减小一个,而不增加一个周期中执行每个子块变换的信号处理时间总和。这把AES处理速度提高约10%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。
图32是根据第四实施例的AES芯的方块图。
参照图32,AES芯201执行AES处理。密钥扩展单元202从密码密钥产生对于AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元203使用从密钥扩展单元202供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元204从在AES芯201外部的单元接收控制信号,并且产生控制密钥扩展单元202和加密/解密单元203的操作的信号、以及向在AES芯201外部的单元通知操作完成的信号。
将省略图32的构成元件和信号线的描述,这些构成元件和信号线与第一实施例中描述的那些相同。
接着将描述加密/解密单元203。图33是加密/解密单元203的方块图。参照图33,修改轮回函数模块205在选择信号170、加密/解密选择信号153及选择信号175的控制下使用轮回密钥A 162和轮回密钥B 163执行一个周期的加密或解密。
在以上设置中,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。
将省略图33中的构成元件和信号线的描述,这些构成元件和信号线与第一实施例中描述的那些相同。
接着将描述修改轮回函数模块205。图34是修改轮回函数模块205的方块图。参照图34,AddRoundKey变换模块110接收输入信号165和轮回密钥A 162,并且执行AddRoundKey变换。SubBytes/InvSubBytes变换模块222接收来自AddRoundKey变换模块110的输出,并且按照加密/解密选择信号153执行SubBytes变换和InvSubBytes变换之一。ShiftRows/InvShiftRows变换模块223接收来自SubBytes/InvSubBytes变换模块222的输出,并且按照加密/解密选择信号153执行ShiftRows变换和InvShiftRows变换之一。MixColumns/InvMixColumns变换模块224接收来自ShiftRows/InvShiftRows变换模块223的输出,并且按照加密/解密选择信号153执行MixColumns变换和InvMixColumns变换之一。AddRoundKey变换模块114接收来自ShiftRows/InvShiftRows变换模块223的输出,并且执行AddRoundKey变换。选择器115按照选择信号170选择并输出来自MixColumns/InvMixColumns变换模块224的输出和来自AddRoundKey变换模块114的输出之一。选择器115的输出信号是修改轮回函数模块205的输出信号。
在以上设置中,当选择信号170被取消时,选择器115选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。当加密/解密选择信号153被取消时,SubBytes/InvSubBytes变换模块222、ShiftRows/InvShiftRows变换模块223及MixColumns/InvMixColumns变换模块224分别执行SubBytes变换、ShiftRows变换及MixColumns变换。当加密/解密选择信号153被声明时,它们分别执行InvSubBytes变换、InvShiftRows变换及InvMixColumns变换。
接着参照图9A和9B的时序图将描述以上设置中的加密操作。参照图9A和9B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。
图9A左端沿纵坐标的三位数指示信号线,并且与在图32至34中使用的信号线的附图标记具有一一对应性。
在图9A和9B的时序图中表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块加密时段(T17至T27)。第四部分是第二块加密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与第一实施例相同。密钥准备时段是从T06至T17。在密钥准备时段中的开始条件、结束条件及每个电路的操作与第一实施例相同,并且将不重复描述。
第一块加密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元204在加密的最后周期(T16)声明选择信号170,并且在加密结束(T17)时取消它。控制单元204还在加密的第一周期声明选择信号171,并且在加密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器115选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。当加密/解密选择信号153被取消时,SubBytes/InvSubBytes变换模块222、ShiftRows/InvShiftRows变换模块223及MixColumns/InvMixColumns变换模块224分别执行SubBytes变换、ShiftRows变换及MixColumns变换。当加密/解密选择信号153被声明时,它们分别执行InvSubBytes变换、InvShiftRows变换及InvMixColumns变换。
因此,在第0周期(T17至T18),修改轮回函数模块205对输入信号150执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行AddRoundKey变换、SubBytes变换、ShiftRows变换及AddRoundKey变换得到的结果。
修改轮回函数模块205通过按上述方式控制选择信号171和170可执行图29所示的加密。
另一方面,密钥扩展单元202在密钥准备时段后输出作为轮回密钥A 162的wkey0和作为轮回密钥B 163的wkey10。为此,wkey0在加密开始(T17)时被供给到修改轮回函数模块205。基于加密/解密开始信号158检测到加密开始时(T17),密钥扩展单元202使用在轮回密钥A寄存器中保持的wkey0产生wkey1,并且把wkey1保持在轮回密钥A寄存器。因此,wkey1在时序T18供给到修改轮回函数模块205。轮回密钥以相同方式供给直到时序T26。在T26,供给用作轮回密钥B 163的两个轮回密钥wkey9和wkey10。当wkey9被保持在轮回密钥A寄存器,并且轮回密钥供给在T26结束时,密钥扩展单元202把从外部连续地供给的wkey0作为密码密钥152保持在轮回密钥A寄存器以准备下次加密开始(T27)。
当密钥扩展单元202按上述方式操作时,修改轮回函数模块205可如图29所示在每个周期使用轮回密钥。
根据第四实施例在加密时段期间的操作按上述方式进行。第二块的加密操作以与第一块相同的方式进行。从那时起,加密操作被重复地进行与块的预定数量一样多次。在图9A和9B的时序图中,第二块的加密在距离第一块加密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述这个实施例的解密操作。图35A和35B是根据第四实施例的解密时序图。参照图35A和35B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图35A左端沿纵坐标的三位数指示信号线,并且与图32至34中使用的信号线的附图标记具有一一对应性。
在图35A和35B的时序图表示的解密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块解密时段(T17至T27)。第四部分是第二块解密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与第一实施例的加密中相同。
密钥准备时段是从T06至T17,并且开始条件和结束条件与在第一实施例的加密中相同。每个电路的操作也与这个实施例的加密中几乎相同。然而,密钥扩展单元202在时序T16的操作、密钥扩展单元202和控制单元204在时序T17的操作与加密中的那些不同,因此将在下面描述。
在时序T16,密钥扩展单元202输出作为轮回密钥B 163的wkey0和作为轮回密钥A 162的wkey10。轮回密钥wkey10也被分离地保持于密钥扩展单元202提供的寄存器中。在T16,密钥扩展单元202由wkey10反向地进行密钥扩展,以产生修改解密密钥wkey9′。
在时序T17,密钥扩展单元202输出wkey9′作为轮回密钥A 162。控制单元204声明选择信号170。
第一块解密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元204在解密的最后周期(T16)声明选择信号170,并且在解密结束(T17)时取消它。控制单元204还在解密的第一周期声明选择信号171,并且在解密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器115选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。当加密/解密选择信号153被取消时,SubBytes/InvSubBytes变换模块222、ShiftRows/InvShiftRows变换模块223及MixColumns/InvMixColumns变换模块224分别执行SubBvtes变换、ShiftRows变换及MixColumns变换。当加密/解密选择信号153被声明时,它们分别执行InvSubBytes变换、InvShiftRows变换及InvMixColumns变换。
因此,在第0周期(T17至T18),修改轮回函数模块205对输入信号150执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及AddRoundKey变换得到的结果。
修改轮回函数模块205通过按上述方式控制选择信号171和170可执行图30所示的解密。
另一方面,密钥扩展单元202在密钥准备时段后输出作为轮回密钥A 162的wkey10和作为轮回密钥B 163的wkey0。为此,wkey10在解密开始(T17)时被供给到修改轮回函数模块205。基于加密/解密开始信号158检测到解密开始时(T17),密钥扩展单元202使用在轮回密钥A寄存器保持的wkey10产生wkey9′,并且把wkey9′保持在轮回密钥A寄存器。因此,wkey9′在时序T18供给到修改轮回函数模块205。轮回密钥以相同方式供给直到时序T26。在T26,供给用作轮回密钥B 163的两个轮回密钥wkey1′和wkey0。当wkey1′被保持在轮回密钥A寄存器中,并且轮回密钥供给在T26结束时,密钥扩展单元202把在密钥扩展单元的内部寄存器保持的wkey10加载在轮回密钥A寄存器中以准备下次解密开始(T27)。
当密钥扩展单元202按上述方式操作时,修改轮回函数模块205可如图30所示在每个周期使用轮回密钥。
根据第四实施例在解密时段期间的操作按上述方式进行。第二块的解密操作以与第一块相同的方式进行。从那时起,解密操作被重复地进行与块的预定数量一样多次。在图35A和35B的时序图中,第二块的解密在距离第一块解密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的解密可呈现其最大性能。然而,解密间隔基本上可设置到任意长度。
当预定数量的块的解密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
第四实施例能以上述方式实施。在第四实施例中,已经描述了电路设置和使用等效逆密码执行解密的操作。在第四实施例中,对于AES加密所要求的时钟周期的数量被减小一个,而不增大在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值。这把AES处理速度提高约10%。
上述第四实施例仅是本发明的例子,并且本发明的效果不限于上述实施例的那些。
<第五实施例>
在第五实施例中,使用FIPS197描述的等效逆密码执行解密。
图36是表示根据第五实施例在时钟周期中执行加密和解密过程内容的图。
参照图36,周期计数指示在AES处理开始是“0”的时钟周期计数。
在这个实施例的加密中,第一AddRoundKey变换、ShiftRows变换、SubBytes变换、MixColumns变换及第二AddRoundKey变换在第0周期中使用两个轮回密钥被执行。在第一至第八周期中,AddRoundKey变换、ShiftRows变换、SubBytes变换及MixColumns变换被执行。在第九周期,AddRoundKey变换、ShiftRows变换及SubBytes变换被执行。至于轮回密钥,wkey0和wkey1被用在第0周期中,wkey2被用在第一周期中,...,及wkey10被用在第九周期中。
在第五实施例中,与在现有技术中相同的处理被总体上执行。然而,这个实施例中,AES加密可以少一个的时钟周期被执行。
接着将描述根据第五实施例在每个时钟周期时段中用于每个子块变换的加密处理时间总和。图37是表示在第五实施例中在时钟周期中执行每个子块变换的信号处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实现第五实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图37所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
在第五实施例中,在执行第一AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及第二AddRoundKey变换的第0周期中用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、SubBytes变换及ShiftRows变换的第九周期中用于每个子块变换的信号处理时间总和更长。因此,第五实施例用于每个子块变换的信号处理时间总和的最大值比现有技术的最大值大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。在每个时钟周期时段用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值比一个周期时间短,则也假定这个实施例在多数情况下是可实施的。
本发明也适用于AES解密。
如图36所示,在这个实施例的解密中,第一AddRoundKey变换、InvShiftRows变换、InvSubBytes变换、InvMixColumns变换及第二AddRoundKey变换在第0周期被执行。在第一至第八周期,AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及InvMixColumns变换被执行。在第九周期,AddRoundKey变换、InvShiftRows变换及InvSubBytes变换被执行。至于轮回密钥,wkey10和wkey9′被用在第0周期中,wkey8′被用在第一周期中,...,wkey0被用在第九周期中。
在第五实施例中,与在现有技术中相同的处理被总体上执行。然而,在第五实施例中,AES解密可以少一个的时钟周期被执行。
接着将描述根据第五实施例在每个时钟周期时段中用于每个子块变换的解密处理时间总和。图37是表示在第五实施例中每个时钟周期时段中用于每个子块变换的解密处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施这个实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图37所示,每个子块变换的处理时间在InvSubBytes变换中最长,并且按InvMixColumns变换、AddRoundKey变换及InvShiftRows变换的顺序缩短。
在第五实施例中,在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换、InvMixColumns变换及AddRoundKey变换的第0周期中用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、InvSubBytes变换及InvShiftRows变换的第九周期中用于每个子块变换的信号处理时间总和更长。因此,第五实施例用于每个子块变换的信号处理时间总和的最大值比现有技术的最大值大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术的在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值比一个周期时间短,则也假定这个实施例在多数情况下是可实施的。
将概括第五实施例的上述特性特征。
在一般常规实施方法中,由标准定义的轮回函数被认为是处理中的断点,并且加密和解密被分配给时钟周期。为此,在第10和第0周期中用于每个子块变换的信号处理时间总和比第一至第九周期的每一个周期中用于每个子块变换的信号处理时间总和更短。就是说,在每个周期中用于执行每个子块变换的信号处理时间总和变化。
另一方面,在第五实施例中,一些时钟周期中的信号处理被增加,从而在每个时钟周期时段中用于每个子块变换的信号处理时间总和之间的差减小。
在第五实施例中,在一个周期中用于每个子块变换的信号处理时间总和的最大值稍微增大。为此,本实施例在现有技术可实施的条件下不一定是可实施的。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。在多数情况下,AES加密或解密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。
图38是根据第五实施例的AES芯的方块图。参照图38,AES芯231执行AES处理。密钥扩展单元232从密码密钥产生对于AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元233使用从密钥扩展单元232供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元234从在AES芯231外部的单元接收信号,并且产生控制密钥扩展单元232和加密/解密单元233的操作的信号、以及向在AES芯231外部的单元通知操作完成的信号。
将省略图38中的构成元件和信号线的描述,这些构成元件和信号线与在第一和第二实施例中描述的那些相同。
接着将描述加密/解密单元233。图39是加密/解密单元233的方块图。参照图39,修改轮回函数模块235在选择信号170和175及加密/解密选择信号153的控制下使用轮回密钥A 162和轮回密钥B 163执行一个周期的加密或解密。
在以上设置中,当选择信号171被取消时,加密/解密单元233的选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。
将省略图39中的构成元件和信号线的描述,这些构成元件和信号线与在第一和第二实施例中描述的那些相同。
接着将描述修改轮回函数模块235。图40是修改轮回函数模块235的方块图。参照图40,AddRoundKey变换模块114接收输入信号165和轮回密钥B 163,并且执行AddRoundKey变换。选择器137按照选择信号175选择并输出输入信号165和来自AddRoundKey变换模块114的输出之一。SubBytes/InvSubBytes变换模块222接收来自选择器137的输出,并且按照加密/解密选择信号153执行SubBytes变换和InvSubBytes变换之一。ShiftRows/InvShiftRows变换模块223接收来自SubBytes/InvSubBytes变换模块222的输出,并且按照加密/解密选择信号153执行ShiftRows变换和InvShiftRows变换之一。MixColumns/InvMixColumns变换模块224接收来自ShiftRows/InvShiftRows变换模块223的输出,并且按照加密/解密选择信号153执行MixColumns变换和InvMixColumns变换之一。选择器115按照选择信号170选择并输出来自MixColumns/InvMixColumns变换模块224的输出和来自ShiftRows/InvShiftRows变换模块223的输出之一。AddRoundKey变换模块110接收来自选择器115的输出和轮回密钥A 162,并且执行AddRoundKey变换。AddRoundKey变换模块110的输出信号是修改轮回函数模块235的输出信号。
在以上设置中,当选择信号170被取消时,选择器115选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号170被声明时,选择器115选择并输出来自ShiftRows/InvShiftRows变换模块223的输出。当选择信号175被取消时,选择器137选择并输出输入信号165。当选择信号175被声明时,选择器137选择并输出来自AddRoundKey变换模块114的输出。
接着参照图18A和18B的时序图将描述以上设置中的加密操作。在图18A左端沿纵坐标的三位数指示信号线,并且与图38至40中使用的信号线的附图标记具有一一对应性。
在图18A和18B的时序图中表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块加密时段(T17至T27)。第四部分是第二块加密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与在第二实施例中相同。密钥准备时段是从T06至T17。开始条件、结束条件及每个电路的操作也与在第二实施例中相同,并且将不重复描述。第一块加密时段是从T17到T27,并且开始条件和结束条件与在第二实施例中相同。每个电路的操作也与在第二实施例中相同。
控制单元234在加密结束时声明选择信号175,并且在加密的第一周期取消它(T18或T28)。控制单元234还在加密的最后周期(T16)声明选择信号170,并且在加密结束(T17)时取消它。控制单元234还在加密的第一周期声明选择信号171,并且在加密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号175被取消时,选择器137选择并输出输入信号165。当选择信号175被声明时,选择器137选择并输出来自AddRoundKey变换模块114的输出。当选择信号170被取消时,选择器115选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号170被声明时,选择器115选择并输出来自ShiftRows/InvShiftRows变换模块223的输出。当加密/解密选择信号153被取消时,SubBytes/InvSubBytes变换模块222、ShiftRows/InvShiftRows变换模块223及MixColumns/InvMixColumns变换模块224分别执行SubBytes变换、ShiftRows变换及MixColumns变换。当加密/解密选择信号153被声明时,它们分别执行InvSubBytes变换、InvShiftRows变换及InvMixColumns变换。
因此,在第0周期(T17至T18),修改轮回函数模块235对输入信号150执行AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行SubBytes变换、ShiftRows变换及AddRoundKey变换得到的结果。
修改轮回函数模块235通过按上述方式控制选择信号171、170及175可执行图36所示的加密。
另一方面,密钥扩展单元232在密钥准备时段后输出作为轮回密钥A 162的wkey1和作为轮回密钥B 163的wkey0。为此,wkey0和wkey1在加密开始(T17)时被供给到修改轮回函数模块235。基于加密/解密开始信号158检测到加密开始时(T17),密钥扩展单元232使用在轮回密钥A寄存器保持的wkey1产生wkey2,并且把wkey2保持在轮回密钥A寄存器。因此,wkey2在时序T18供给到修改轮回函数模块235。轮回密钥以相同方式供给直到时序T26。当wkey10被保持在轮回密钥A寄存器中,并且轮回密钥供给在时序T26结束时,密钥扩展单元232把从外部连续地供给wkey0用作密码密钥152产生wkey1,并且把wkey1保持在轮回密钥A寄存器中以准备下次加密开始(T27)。
当密钥扩展单元232按上述方式操作时,修改轮回函数模块235可如图36所示在每个周期使用轮回密钥。
根据第五实施例在加密时段期间的操作按上述方式进行。第二块的加密操作以与对于第一块相同的方式进行。从那时起,加密操作被重复地进行与块的预定数量一样多次。在图18A和18B的时序图中,第二块的加密在距离第一块加密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述第五实施例的解密操作。图41A和41B是根据第五实施例的解密时序图。参照图41A和41B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。
图41A左端沿纵坐标的三位数指示信号线,并且与在图38至40中使用的信号线的附图标记具有一一对应性。
图41A和41B的时序图中表示的解密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块解密时段(T17至T27)。第四部分是第二块解密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与在这个实施例的加密中相同。然而,在解密中,声明加密/解密选择信号153。
密钥准备时段是从T06至T17,并且开始条件和结束条件与在这个实施例的加密中相同。每个电路的操作也与在这个实施例的加密中几乎相同。然而,密钥扩展单元232在时序T16的操作、密钥扩展单元232和控制单元234在时序T17的操作与加密中的那些不同,因此将在下面描述。
在时序T16,密钥扩展单元232输出作为轮回密钥B 163的wkey10和作为轮回密钥A 162的wkey10。在T16,密钥扩展单元232由wkey10反向地进行密钥扩展,以产生修改解密密钥wkey9′。
在时序T17,密钥扩展单元232输出wkey9′作为轮回密钥A 162。控制单元234声明选择信号175。
在密钥准备时段结束时(T17),控制单元234声明选择信号175。
第一块解密时段是从T17到T27,并且开始条件和结束条件与第一实施例相同。每个电路的操作也与第一实施例几乎相同。
控制单元234在解密的最后周期(T26)声明选择信号170,并且在第一周期解密(T18或T28)取消它。控制单元234还在解密结束(T17)时声明选择信号175,并且在解密结束(T17)时取消它。控制单元234还在解密的第一周期声明选择信号171,并且在解密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。
当选择信号175被取消时,选择器137选择并输出输入信号165。当选择信号175被声明时,选择器137选择并输出来自AddRoundKey变换模块114的输出。当选择信号170被取消时,选择器115选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号170被声明时,选择器115选择并输出来自ShiftRows/InvShiftRows变换模块223的输出。
因此,在第0周期(T17至T18),修改轮回函数模块235对输入信号150执行AddRoundKey变换、InvShiftRows变换、InvSubBytes变换、AddRoundKey变换及InvMixColumns变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行InvShiftRows变换、InvSubBytes变换、AddRoundKey变换及InvMixColumns变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行InvShiftRows变换、InvSubBytes变换及AddRoundKey变换得到的结果。
修改轮回函数模块235通过按上述方式控制选择信号171、170及175可执行图36所示的解密。
另一方面,密钥扩展单元232在密钥准备时段后输出作为轮回密钥A 162的wkey9′和作为轮回密钥B 163的wkey10。为此,wkey10和wkey9′在解密开始(T17)时被供给到修改轮回函数模块235。基于加密/解密开始信号158检测到解密开始时(T17),密钥扩展单元232使用在轮回密钥A寄存器中保持的wkey9′产生wkey8′,并且把wkey8′保持在轮回密钥A寄存器中。因此,wkey8′在T18供给到修改轮回函数模块235。轮回密钥以相同方式供给直到时序T26。当wkey0被保持在轮回密钥A寄存器中,并且轮回密钥供给在时序T26结束时,密钥扩展单元232使用在轮回密钥B寄存器中保持的wkey10产生wkey9′,并且把wkey9′保持在轮回密钥A寄存器中以准备下次解密开始(T27)。
当密钥扩展单元232按上述方式操作时,修改轮回函数模块235可如图36所示在每个周期使用轮回密钥。
根据第五实施例的在解密时段期间的操作按上述方式进行。第二块的解密操作以与对于第一块相同的方式进行。从那时起,解密操作被重复地进行与块的预定数量一样多次。在图41A和41B的时序图中,第二块的解密在距离第一块解密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的解密可呈现其最大性能。然而,解密间隔基本上可设置到任意长度。
当预定数量的块的解密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
第五实施例能以上述方式实施。在第五实施例中,在一个周期中必须执行每个子块变换的信号处理时间总和的最大值稍微增大。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,在多数情况下,AES加密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
上述第五实施例仅是本发明的例子,并且本发明的效果不限于上述实施例的那些。
<第六实施例>
在第六实施例中,使用FIPS197描述的等效逆密码执行解密。
图42是表示根据第六实施例在时钟周期中执行加密和解密过程内容的图。
参照图42,周期计数指示在AES处理开始是“0”的时钟周期计数。
在第六实施例中,第一AddRoundKey变换、SubBytes/InvSubBytes变换、ShiftRows/InvShiftRows变换、MixColumns/InvMixColumns变换及第二AddRoundKey变换在第0周期中使用两个轮回密钥被执行。在第一至第八周期中,SubBytes/InvSubBytes变换、ShiftRows/InvShiftRows变换、MixColumns/InvMixColumns变换及AddRoundKey变换被执行。在第九周期中,SubBytes/InvSubBytes变换、ShiftRows/InvShiftRows变换及AddRoundKey变换被执行。SubBytes/InvSubBytes变换表示在加密中执行SubBytes变换并且在解密中执行InvSubBytes变换。ShiftRows/InvShiftRows变换表示在加密中执行ShiftRows变换并且在解密中执行InvShiftRows变换。MixColumns/InvMixColumns变换表示在加密中执行MixColumns变换并且在解密中执行InvMixColumns变换。
这个实施例的加密中使用的轮回密钥是在第0周期中的wkey0和wkey1、第一周期中的wkey2、...及在第九周期中的wkey10。解密中使用的轮回密钥是在第0周期中的wkey10和wkey9′、在第一周期中的wkey8′、...及在第九周期中的wkey0。
在第六实施例中,与在现有技术中相同的处理被总体上执行。然而,这个实施例中,AES加密和解密可以少一个的时钟周期被执行。
接着将描述根据这个实施例在每个时钟周期时段中用于每个子块变换的加密处理时间总和。图43是表示在第六实施例中在时钟周期中用于执行每个子块变换的信号处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实现第六实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图43所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
这个实施例中,在执行AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换的第0周期中用于每个子块变换的信号处理时间总和,比在执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换的第一至第八周期中用于每个子块变换的信号处理时间总和、或在执行AddRoundKey变换、SubBytes变换及ShiftRows变换的第九周期中用于每个子块变换的信号处理时间总和更长。图43也适用于解密,并且以上所描述的同样应用于解密。因此,第六实施例用于每个子块变换的信号处理时间总和的最大值比现有技术的最大值大一个对应于AddRoundKey变换处理时间的量。然而,一个AddRoundKey变换处理时间比一个周期中用于每个子块变换的信号处理时间总和短得多。在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,如果现有技术在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值比一个周期时间短,则也假定这个实施例在多数情况下是可实施的。
将概括第六实施例的上述特性特征。
在一般常规实施方法中,由标准定义的轮回函数被认为是在处理中的断点,并且加密和解密被分配给时钟周期。为此,在第10和第0周期中用于每个子块变换的信号处理时间总和比在第一至第九周期的每一个周期中用于每个子块变换的信号处理时间总和短。就是说,在每个周期中用于执行每个子块变换的信号处理时间总和变化。
另一方面,在第六实施例中,在一些时钟周期中的信号处理被增加,从而在每个时钟周期时段中用于每个子块变换的信号处理时间总和之间的差减小。
在第六实施例中,在一个周期中用于每个子块变换的信号处理时间总和的最大值稍微增大。为此,第六实施例在现有技术可实施的条件下不一定是可实施的。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。在多数情况下,AES加密或解密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。
图44是根据这个实施例的AES芯的方块图。参照图44,AES芯241执行AES处理。密钥扩展单元242从密码密钥产生对于AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元243使用从密钥扩展单元242供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元244从在AES芯241外部的单元接收信号,并且产生控制密钥扩展单元242和加密/解密单元243的操作的信号、以及向在AES芯241外部的单元通知操作完成的信号。
将省略图44中的构成元件和信号线的描述,这些构成元件和信号线与在第一和第二实施例中描述的那些相同。
接着将描述加密/解密单元243。图45是加密/解密单元243的方块图。参照图45,修改轮回函数模块245在选择信号170和175及加密/解密选择信号153的控制下使用轮回密钥A 162和轮回密钥B 163执行一个周期的加密或解密。
在以上设置中,当选择信号171被取消时,加密/解密单元243的选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。
将省略图45中的构成元件和信号线的描述,这些构成元件和信号线与在第一和第二实施例中描述的那些相同。
接着参照图46的方块图将描述修改轮回函数模块245。参照图46,输入信号165和加密/解密选择信号153输入到MixColumns/InvMixColumns变换模块224。来自MixColumns/InvMixColumns变换模块224的输出、输入信号165及选择信号175输入到选择器137。来自选择器137的输出和轮回密钥A 162输入到AddRoundKey变换模块110。来自AddRoundKey变换模块110的输出输入到SubBytes/InvSubBytes变换模块222。来自SubBytes/InvSubBytes变换模块222的输出输入到ShiftRows/InvShiftRows变换模块223。来自ShiftRows/InvShiftRows变换模块223的输出和轮回密钥B 163输入到AddRoundKey变换模块114。来自ShiftRows/InvShiftRows变换模块223的输出、来自AddRoundKey变换模块114的输出及选择信号170输入到选择器115。选择器115的输出连接到来自修改轮回函数模块245的输出信号168上。将省略图46中的构成元件和信号线的描述,这些构成元件和信号线与在第一、第四及第五实施例中描述的那些相同。
在以上设置中,当选择信号175被取消时,选择器137选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号175被声明时,选择器137选择并输出输入信号165。当选择信号170被取消时,选择器115选择并输出来自ShiftRows/InvShiftRows变换模块223的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。
接着参照图27A和27B的时序图将描述以上设置中的加密操作。在图27A左端沿纵坐标的三位数指示信号线,并且与在图44至46中使用的信号线的附图标记具有一一对应性。
在图27A和27B的时序图中表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块加密时段(T17至T27)。第四部分是第二块加密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与在第三实施例中相同。密钥准备时段是从T06至T17。开始条件、结束条件及每个电路的操作也与在第三实施例中相同,并且将不重复其描述。
控制单元244在加密结束时声明选择信号175,并且在加密的第一周期取消它(T18或T28)。控制单元244还在加密的最后周期(T16)声明选择信号170,并且在加密结束(T17)时取消它。控制单元244还在加密的第一周期声明选择信号171,并且在加密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号170被取消时,选择器115选择并输出来自ShiftRows/InvShiftRows变换模块223的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。当选择信号175被取消时,选择器137选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号175被声明时,选择器137选择并输出输入信号165。当加密/解密选择信号153被取消时,SubBytes/InvSubBytes变换模块222、ShiftRows/InvShiftRows变换模块223及MixColumns/InvMixColumns变换模块224分别执行SubBytes变换、ShiftRows变换及MixColumns变换。当加密/解密选择信号153被声明时,它们分别执行InvSubBytes变换、InvShiftRows变换及InvMixColumns变换。
因此,在第0周期(T17至T18),修改轮回函数模块245对输入信号150执行AddRoundKey变换、SubBytes变换及ShiftRows变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKev变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行MixColumns变换、AddRoundKey变换、SubBytes变换、ShiftRows变换及AddRoundKey变换得到的结果。
修改轮回函数模块245通过按上述方式控制选择信号171、170及175可执行图42所示的加密。
另一方面,密钥扩展单元242在密钥准备时段后输出作为轮回密钥A 162的wkey0和作为轮回密钥B 163的wkey10。为此,wkey0在加密开始(T17)时被供给到修改轮回函数模块245。基于加密/解密开始信号158检测到加密开始时(T17),密钥扩展单元242使用在轮回密钥A寄存器中保持的wkey0产生wkey1,并且把wkey1保持在轮回密钥A寄存器中。因此,wkey1在时序T18供给到修改轮回函数模块245。轮回密钥以相同方式供给直到时序T26。在时序T26,用作轮回密钥B 163的wkey10也被供给。当wkey10被保持在轮回密钥A寄存器中,并且轮回密钥供给在时序T26结束时,密钥扩展单元242把从外部连续地供给的wkey0作为密码密钥152保持在轮回密钥A寄存器中以准备下次加密开始(T27)。
当密钥扩展单元242按上述方式操作时,修改轮回函数模块245可如图42所示在每个周期使用轮回密钥。
根据这个实施例在加密时段期间的操作按上述方式进行。第二块的加密操作以与对于第一块相同的方式进行。从那时起,加密操作被重复地进行与块的预定数量一样多次。在图27A和27B的时序图中,第二块的加密在距离第一块加密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述第六实施例的解密操作。图47A和47B是根据第六实施例的解密时序图。参照图47A和47B,横坐标代表时间。时序名称T01、T02、...、T33被赋予时钟脉冲的前沿。在图47A左端沿纵坐标的三位数指示信号线,并且与在图44至46中使用的信号线的附图标记具有一一对应性。
在图47A和47B的时序图中表示的解密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T17)。第三部分是第一块解密时段(T17至T27)。第四部分是第二块解密时段(从T27起)。
参数设置时段的作用、开始条件及结束条件与在这个实施例的加密中相同。然而,在解密中,声明加密/解密选择信号153。密钥准备时段是从T06至T17,并且开始条件和结束条件与在这个实施例的加密相同。每个电路的操作也与在这个实施例的加密中几乎相同。然而,在时序T16,wkey10被输出作为轮回密钥B 163。在密钥准备时段结束(T17)时,控制单元244声明选择信号175。
第一块解密时段是从T17到T27,并且开始条件和结束条件与在这个实施例的加密相同。每个电路的操作也与以上描述几乎相同。
控制单元244在解密的最后周期(T26)声明选择信号170,并且在第一周期解密(T18或T28)取消它。控制单元244还在解密结束(T17)时声明选择信号175,并且在解密结束(T17)时取消它。控制单元244还在解密的第一周期声明选择信号171,并且在解密结束时取消它。
如有关电路设置描述的那样,当选择信号171被取消时,选择器109选择输入信号150。当选择信号171被声明时,选择器109选择来自数据保持单元108的输出。当选择信号175被取消时,选择器137选择并输出来自MixColumns/InvMixColumns变换模块224的输出。当选择信号175被声明时,选择器137选择并输出输入信号165。当选择信号170被取消时,选择器115选择并输出来自ShiftRows/InvShiftRows变换模块223的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。
因此,在第0周期(T17至T18),修改轮回函数模块245对输入信号150执行AddRoundKey变换、InvShiftRows变换及InvSubBytes变换。从第一周期起,修改轮回函数模块输出通过对紧邻前一周期的结果执行AddRoundKey变换、InvMixColumns变换、InvShiftRows变换及InvSubBytes变换得到的结果。在第九周期(T26至T27),修改轮回函数模块输出通过执行AddRoundKey变换、InvMixColumns变换、InvShiftRows变换、InvSubBytes变换及AddRoundKey变换得到的结果。
修改轮回函数模块245通过按上述方式控制选择信号171、170及175可执行图42所示的解密。
另一方面,密钥扩展单元242在密钥准备时段后输出作为轮回密钥A 162的wkey10和作为轮回密钥B 163的wkey0。为此,wkey10在解密开始(T17)时被供给到修改轮回函数模块245。基于加密/解密开始信号158检测到解密开始时(T17),密钥扩展单元242使用在轮回密钥A寄存器中保持的wkey10′产生wkey9′,并且把wkey9′保持在轮回密钥A寄存器中。因此,wkey9′在时序T18供给到修改轮回函数模块245。以相同方式,wkey8′在T19供给,wkey7′在T20处供给,...,及wkey1′在T26供给。注意,在最后周期的处理中必需的wkey0被连续地供给作为轮回密钥B163。
在T26当轮回密钥供给结束时,密钥扩展单元242使用在密钥扩展单元242的内部寄存器中保持的wkey10产生wkey9′,并且在下个周期(T27)把wkey9′保持在轮回密钥A寄存器中以准备下次解密开始。
根据第六实施例的在解密时段期间的操作按上述方式进行。第二块的解密操作以与对于第一块相同的方式进行。从那时起,解密操作被重复地进行与块的预定数量一样多次。在图47A和47B的时序图中,第二块的解密在距离第一块解密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的解密可呈现其最大性能。然而,解密间隔基本上可设置到任意长度。
当预定数量的块的解密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
第六实施例能以上述方式实施。在第六实施例中,在一个周期中用于必须执行每个子块变换的信号处理时间总和的最大值稍微增大。然而,这在多数情况下几乎不成问题,因为在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值常常以足够的裕量设置为一个周期时间。为此,在多数情况下,AES加密所要求的时钟周期的数量可被减小一个。这把AES处理速度提高约10%。
上述第六实施例仅是本发明的例子,并且本发明的效果不限于上述实施例的那些。
<第七实施例>
在第一至第六实施例中,如果在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值等于或小于一个周期时间的1/2,则通过实现需要两个时钟周期的过程在一个时钟周期中执行,可以增大处理速度。在第七实施例中,通过举例说明第一实施例,来解释实施加速方法的例子。
根据第七实施例与加密/解密电路的加密相关联的设置包括第一修改轮回函数模块、第二修改轮回函数模块及数据保持单元。第一修改轮回函数模块包括第一AddRoundKey变换模块、第一ShiftRows变换模块、第一SubBytes变换模块、第一MixColumns变换模块及第二AddRoundKey变换模块。第二修改轮回函数模块包括第三AddRoundKey变换模块、第二ShiftRows变换模块、第二SubBytes变换模块及第二MixColumns变换模块。
根据第七实施例与加密/解密电路的解密相关联的设置包括第一修改轮回函数模块、第二修改轮回函数模块及数据保持单元。第一修改轮回函数模块包括第一AddRoundKey变换模块、第一InvShiftRows变换模块、第一InvSubBytes变换模块、第一InvMixColumns变换模块及第二AddRoundKey变换模块。第二修改轮回函数模块包括第三AddRoundKey变换模块、第二InvShiftRows变换模块、第二InvSubBytes变换模块及第二InvMixColumns变换模块。
加密和解密的设置由如下描述而清楚。
图48表示在第七实施例中在时钟周期中执行的加密过程内容与现有技术的那些之间的比较。
参照图48,周期计数指示在AES处理开始是“0”的时钟周期计数。轮回密钥wkeyi是FIPS197描述的轮回密钥(i是轮回数)。
在第七实施例中,第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二SubBytes变换、第二ShiftRows变换及第二MixColumns变换在第0至第三周期中被执行。在第四周期,第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二ShiftRows变换、第二SubBytes变换及第三AddRoundKey变换被执行。
至于轮回密钥,wkey0和wkey1被用在第0周期,wkey2和wkey3被用在第一周期,...,wkey8、wkey9及wkey10被用在第四周期。
在第七实施例中,与在现有技术中相同的处理被总体上执行。然而,在第七实施例中,AES加密可以少一个的时钟周期被执行。接着将描述根据第七实施例在每个时钟周期时段中用于每个子块变换的加密处理时间总和。图49是表示现有技术在每个时钟周期时段中用于每个子块变换的加密处理时间总和与第七实施例的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施第七实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图49所示,每个子块变换的处理时间在SubBytes变换中最长,并且按MixColumns变换、AddRoundKey变换及ShiftRows变换的顺序缩短。
在第七实施例中,在执行第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二SubBytes变换、第二ShiftRows变换及第二MixColumns变换的第0至第三周期的每一个周期中用于每个子块变换的信号处理时间总和比在执行第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二ShiftRows变换、第SubBytes变换及第三AddRoundKey变换的第四周期中用于每个子块变换的信号处理时间总和更长。因此,在第七实施例中在一个周期中用于执行每个子块变换的信号处理时间总和的最大值与现有技术的最大值相等。如果在一个周期中用于执行每个子块变换的信号处理时间总和的最大值比在现有技术中的一个周期时间短,则第七实施例也可实现。
本发明也适用于AES解密。
图50表示在第七实施例中在时钟周期中执行解密过程内容与现有技术的那些之间的比较。参照图50,周期计数指示在AES处理开始是“0”的时钟周期计数。
在第七实施例中,第一AddRoundKey变换、第一InvShiftRows变换、第一InvSubBytes变换、第二AddRoundKey变换、第一InvMixColumns变换、第二InvShiftRows变换、第二InvSubBytes变换及第三AddRoundKey变换在第0周期被执行。第一InvMixColumns变换、第一InvShiftRows变换、第一InvSubBytes变换、第一AddRoundKey变换、第二InvMixColumns变换、第二InvShiftRows变换、第二InvSubBytes变换及第二AddRoundKey变换在第一至第四周期被执行。至于轮回密钥,wkey10、wkey9及wkey8被用在第0周期,wkey7和wkey6被用在第一周期,wkey5和wkey4被用在第二周期,...,及wkey1和wkey0被用在第四周期。
在第七实施例中,与在现有技术中相同的处理被总体上执行。然而,在第七实施例中,AES解密可以少一个的时钟周期被执行。
接着将描述根据第七实施例在每个时钟周期时段中用于每个子块变换的解密处理时间总和。图51是表示第七实施例中每个时钟周期时段中用于每个子块变换的解密处理时间总和与现有技术的总和之间的比较图。纵坐标代表时间。条带越长,处理时间越长。为了实施第七实施例,在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值必须小于一个时钟周期时间。如图51所示,每个子块变换的处理时间在InvSubBytes变换中最长,并且按InvMixColumns变换、AddRoundKey变换及InvShiftRows变换的顺序缩短。
在第七实施例中,在执行第一InvMixColumns变换、第一InvShiftRows变换、第一InvSubBytes变换、第一AddRoundKey变换、第二InvMixColumns变换、第二InvShiftRows变换、第二InvSubBytes变换及第二AddRoundKey变换的第一至第四周期的每一个周期用于每个子块变换的信号处理时间总和比在执行第一AddRoundKey变换、第一InvShiftRows变换、第一InvSubBytes变换、第二AddRoundKey变换、第一InvMixColumns变换、第二InvShiftRows变换、第二InvSubBytes变换及第三AddRoundKey变换的第0周期用于每个子块变换的信号处理时间总和更长。因此,在第七实施例中在一个周期中用于执行每个子块变换的信号处理时间总和的最大值与现有技术的最大值相等。如果在一个周期中用于执行的每个子块变换的信号处理时间总和的最大值比在现有技术中的一个周期时间短,则这个实施例也可实现。
将概括这个实施例的上述特性特征。
在一般常规实施方法中,由标准定义的轮回函数被认为是在处理中的断点,并且加密和解密被分配给时钟周期。为此,在每个周期中用于每个子块变换的信号处理时间总和变化。另外,第一实施例描述了11个周期,即奇数个周期对于处理是必要的。如果两个周期的过程在一个周期中被执行,则一个周期的过程保持为零头。因此,处理要求六个周期。
另一方面,在本发明中,AES处理需要10个周期。即使当两个周期的过程在一个周期中被执行时,也没有零头剩下。当两个周期的过程在一个周期中被执行时,如第七实施例那样,一个周期的减少把AES处理速度提高约20%。
接着将描述用来实施AES加密和解密的AES芯的电路设置。
图52是根据第七实施例的AES芯的方块图。
参照图52,AES芯401执行AES处理。密钥扩展单元402从密码密钥产生对于AES加密和解密必需的轮回密钥,并且输出轮回密钥。加密/解密单元403使用从密钥扩展单元402供给的轮回密钥执行128-位明文数据的加密或128-位密文数据的解密。控制单元404从在AES芯401外部的单元接收信号,并且产生控制密钥扩展单元402和加密/解密单元403的操作的信号、向在AES芯401外部的单元通知操作完成的信号。
参照图52,轮回密钥A1 462是由密钥扩展单元402产生的轮回密钥之一。轮回密钥A2 463是由密钥扩展单元402产生的轮回密钥之一。
与第一实施例相同的附图标记在图52指示相同的构成元件和信号线,并将不重复其描述。
在以上设置中,轮回密钥A1 462从密钥扩展单元402输入到加密/解密单元403,并且轮回密钥A2 463从密钥扩展单元402输入到加密/解密单元403。
接着将描述加密/解密单元403。图53是加密/解密单元403的方块图。参照图53,修改轮回函数模块405使用轮回密钥A1 462执行加密。修改轮回函数模块407在选择信号170的控制下使用轮回密钥A2 463和轮回密钥B 163执行加密。修改轮回函数模块406在选择信号170的控制下使用轮回密钥A1 462和轮回密钥B 163执行解密。修改轮回函数模块408使用轮回密钥A2 463执行解密。
参照图53,修改轮回函数模块407接收输入信号475。修改轮回函数模块408接收输入信号476。与第一实施例相同的附图标记在图53中指示相同的构成元件和信号线,并将不重复其描述。
图54A是修改轮回函数模块405的方块图。图54B是修改轮回函数模块407的方块图。
接着参照图54A将描述修改轮回函数模块405。参照图54A,AddRoundKey变换模块110接收输入信号165和轮回密钥A1 462,并且执行AddRoundKey变换。SubBytes变换模块111接收来自AddRoundKey变换模块110的输出,并且执行SubBytes变换。ShiftRows变换模块112接收来自SubBytes变换模块111的输出,并且执行ShiftRows变换。MixColumns变换模块113接收来自ShiftRows变换模块112的输出,并且执行MixColumns变换。MixColumns变换模块113的输出信号是修改轮回函数模块405的输出。
接着参照图54B将描述修改轮回函数模块407。参照图54B,AddRoundKey变换模块110接收输入信号475和轮回密钥A2 463,并且执行AddRoundKey变换。SubBytes变换模块111接收来自AddRoundKey变换模块110的输出,并且执行SubBytes变换。ShiftRows变换模块112接收来自SubBytes变换模块111的输出,并且执行ShiftRows变换。MixColumns变换模块113接收来自ShiftRows变换模块112的输出,并且执行MixColumns变换。AddRoundKey变换模块114接收来自ShiftRows变换模块112的输出和轮回密钥B 163,并且执行AddRoundKey变换。选择器115按照选择信号170选择并输出来自MixColumns变换模块113的输出和来自AddRoundKey变换模块114的输出之一。选择器115的输出信号是修改轮回函数模块407的输出。
注意,上述变换名称与FIPS197描述的AES处理的子块变换的那些名称相同。
在以上设置中,当选择信号170被取消时,选择器115选择并输出来自MixColumns变换模块113的输出。当选择信号170被声明时,选择器115选择并输出来自AddRoundKey变换模块114的输出。
接着参照图55A和55B将描述修改轮回函数模块406和408。图55A是修改轮回函数模块406的方块图。
参照图55A,InvMixColumns变换模块116接收输入信号165,并且执行InvMixColumns变换。AddRoundKey变换模块121接收输入信号165和轮回密钥B 163,并且执行AddRoundKey变换。选择器118按照选择信号170选择并输出来自InvMixColumns变换模块116的输出和来自AddRoundKey变换模块121的输出之一。InvShiftRows变换模块119接收来自选择器118的输出,并且执行InvShiftRows变换。InvSubBytes变换模块120接收来自InvShiftRows变换模块119的输出,并且执行InvSubBytes变换。AddRoundKey变换模块117接收来自InvSubBytes变换模块120的输出和轮回密钥A1 462,并且执行AddRoundKey变换。AddRoundKey变换模块117的输出是修改轮回函数模块406的输出。
注意,上述变换名称与FIPS197描述的AES处理的子块变换的那些名称相同。
在以上设置中,当选择信号170被取消时,选择器118选择并输出来自InvMixColumns变换模块116的输出。当选择信号170被声明时,选择器118选择并输出来自AddRoundKey变换模块121的输出。
接着参照图55B的方块图将描述修改轮回函数模块408。
参照图55B,InvMixColumns变换模块116接收输入信号476,并且执行InvMixColumns变换。InvShiftRows变换模块119接收来自InvMixColumns变换模块116的输出,并且执行InvShiftRows变换。InvSubBytes变换模块120接收来自InvShiftRows变换模块119的输出,并且执行InvSubBytes变换。AddRoundKey变换模块117接收来自InvSubBytes变换模块120的输出和轮回密钥A2 463,并且执行AddRoundKey变换。AddRoundKey变换模块117的输出是修改轮回函数模块408的输出。
注意,上述变换名称与FIPS197描述的AES处理的子块变换的那些名称相同。
接着参照图56A和56B的时序图将描述以上设置中的加密操作。
参照图56A和56B,横坐标代表时间。时序名称T01、T02、...、T24被赋予时钟脉冲的前沿。在图56A左端沿纵坐标的三位数指示信号线,并且与在图52至55B中使用的信号线的附图标记具有一一对应性。
在图56A和56B的时序图中表示的加密操作大致划分成四部分。第一部分是用来设置诸如密码密钥之类的各种参数的参数设置时段(T01至T06)。第二部分是用来产生wkey0并把它保持在寄存器中的密钥准备时段(T06至T12)。第三部分是第一块加密时段(T12至T17)。第四部分是第二块加密时段(T17至T22)。
在参数设置时,除了密码密钥152和加密/解密选择信号153以外,按需要设置用于加密/解密所需的各种参数,如密钥长度和加密模式。参数设置时段是紧在复位之后具有任意长度的时段。当从AES芯401外的单元声明密钥准备开始信号155时(T06),参数设置时段结束。
参数设置时段的结束同时,下个密钥准备时段开始。在密钥准备时段中,密钥扩展单元事先产生轮回密钥。密钥准备时段是从密钥准备开始信号155的声明(T06)到6个周期后的时序(T12)的时段,在该时序(T12)时产生最后轮回密钥(wkey10)。
接着将描述在密钥准备时段期间每个电路的操作。在密钥准备时段中密钥扩展单元402把wkey0已经用作密码密钥152产生wkey1。与密钥准备开始信号155的声明同时,wkey1被保持在轮回密钥A2463的寄存器中并且输出。按照密钥准备开始信号155的声明,控制单元404从0依次向上计数计数器信号161。在T07,密钥扩展单元402使用作为轮回密钥A2 463保持的wkey1进行密钥扩展以产生wkey2和wkey3,并且输出它们分别作为轮回密钥A1 462和轮回密钥A2 463。在下个周期(T08),密钥扩展单元使用作为轮回密钥A2 463输出的wkey3产生wkey4和wkey5,并且输出它们分别作为轮回密钥A1 462和轮回密钥A2 463。轮回密钥以相同方式产生,从而在时序T09输出wkey6和wkey7,并且在时序T10输出wkey8和wkey9,分别作为轮回密钥A1 462和轮回密钥A2 463。在时序T11,密钥扩展单元402使用作为轮回密钥A2 463输出的wkey9产生wkey10,并且输出wkey10作为轮回密钥B 163。从那时,wkey10被连续地输出作为轮回密钥B 163,直到再次执行密钥准备。
在密钥准备时段的结束(T12)时,密钥扩展单元402使用作为密码密钥152供给的wkey0产生wkey1,并且输出初始轮回密钥(wkey0和wkey1)以在加密/解密中分别用作轮回密钥A1 462和轮回密钥A2463。轮回密钥A1 462和轮回密钥A2 463的值被保持,直到加密/解密开始信号158的声明。控制单元404停止向上计数计数器信号161,并且把计数器清除到0。
在密钥准备时段结束的附近,更明确地说,在密钥准备开始后的第五周期(T11),当预计到密钥准备将在下个周期(T12)中结束并启动加密时,控制单元404声明控制信号157。
在T12检测到控制信号157的声明时,设置在AES芯401外的输入信号供给单元把明文数据P0供给到AES芯401作为输入信号150。加密/解密开始信号158被声明,以开始输入信号150的加密(T12)。在时序图中,加密/解密开始信号158在最短周期中被声明。然而,时序在AES芯401外自由确定。
在加密时段,输入信号150被加密。加密时段是从加密/解密开始信号158的声明(T12)到五个周期后的时序(T17)的时段。
在检测到加密/解密开始信号158的声明时,控制单元404在下个周期(T13)取消控制信号157、有效信号159及输出保持控制信号160。同时,控制单元404开始向上计数计数器信号161。
密钥扩展单元402如在密钥准备时段那样产生轮回密钥,并且作为轮回密钥A1 462在时序T12输出wkey0、在时序T13输出wkey2、...及在时序T16输出wkey8。密钥扩展单元402在时序T12输出wkey1、在时序T13输出wkey3、...及在时序T16输出wkey9,作为轮回密钥A2 463。
从T12至T13,选择信号171被取消。因此,修改轮回函数模块405使用wkey0输出作为轮回密钥A1对输入信号150执行子块变换。从T13至T17,选择信号171被声明。因此,修改轮回函数模块405从T13到T14使用wkey2、从T14到T15使用wkey4、...及从T15到T16使用wkey6对来自数据保持单元108的输出信号执行子块变换。
另一方面,修改轮回函数模块407从T12到T13使用wkey1、从T13到T14使用wkey3、从T14到T15使用wkey5、...及从T15到T16使用wkey7对输入信号475执行子块变换。
在加密的最后周期(T16),控制单元404声明选择信号170。相应地,修改轮回函数模块407的选择器115选择来自使用轮回密钥B 163执行AddRoundKey变换的AddRoundKey变换模块114的输出,从而执行最后周期的子块变换。在T16,修改轮回函数模块407的输出信号166输出是作为输入信号的明文数据P0的加密结果的密文数据C0。一个周期后(T17),数据保持单元108向外部输出密文数据C0的值作为来自AES芯401的输出。同时,为了通知在AES芯401外部的单元加密被结束、以及输出信号151被启动,控制单元404声明有效信号159(T17)。在有效信号159被声明的同时,AES芯401保证输出信号151被启动。
另一方面,控制信号160保持取消,因为在时序T17有效信号159被声明,但在T17加密/解密开始信号158也被声明。如果在T17加密/解密开始信号158不被声明,则在T17控制信号160被声明,并且数据保持单元108的值保持密文数据C0。
在当加密结束时的T17,密钥扩展单元402输出作为轮回密钥A1 462的wkey0和作为轮回密钥A2463的wkey1。轮回密钥A1 462和轮回密钥A2463的值被保持,直到下一个加密/解密开始信号156的声明。
当预计到加密结束时(T17),控制单元404在结束前的一个周期(T16)声明控制信号157。当控制信号157被声明时,在AES芯401外部的单元把输入信号150的值设置到下个明文数据P1,从而第二块的加密可开始。在图56A和56B的时序图中,在AES芯401外部的单元在最短周期(T17)声明下一个加密/解密开始信号。第二块加密时段是从T17至T22,其中进行与对于第一块的操作相同的操作。从那时起,加密操作被重复地进行与块的预定数量一样多次。在图56A和56B的时序图中,第二块的加密在距离第一块加密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的加密可呈现其最大性能。然而,加密间隔基本上可设置到任意长度。
当预定数量的块的加密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
接着将描述第七实施例的解密操作。
图57A和57B是根据这个实施例的解密时序图。参照图57A和57B,横坐标代表时间。时序名称T01、T02、...、T24被赋予时钟脉冲的前沿。在图57A左端沿纵坐标的三位数指示信号线,并且与在图52至55中使用的信号线的附图标记具有一一对应性。
解密操作也大致划分成四部分:参数设置时段(T01至T06)、密钥准备时段(T06至T12)、第一块解密时段(T12至T17)及第二块解密时段(从T17起)。
参数设置时段的作用、开始条件及结束条件与在本实施例的加密中相同。然而,加密/解密选择信号153需要在解密中被声明。
密钥准备时段是从T06至T12,并且开始条件和结束条件与在本实施例的加密中相同。然而,在密钥准备时段的结束(T12)时,密钥扩展单元402使用作为轮回密钥B 163保持的wkey10反向地进行密钥扩展,并且输出在解密中分别用作轮回密钥A1 462和轮回密钥A2 463的初始轮回密钥(wkey9和wkey8)。轮回密钥A1 462和轮回密钥A2463的值被保持,直到加密/解密开始信号158的声明。控制单元404停止向上计数计数器信号161,并且把计数器清除到0。
在密钥准备时段结束的附近,当预计到密钥准备将在T12结束、并启动解密时,控制单元404在T11声明控制信号157。
在T12检测到控制信号157的声明时,设置在AES芯401外的输入信号供给单元把密文数据C0供给到AES芯401作为输入信号150。加密/解密开始信号158被声明,以开始输入信号150的解密(T12)。在时序图中,加密/解密开始信号158在最短周期中被声明。然而,时序在AES芯401外自由确定。
在解密时段中,输入信号150被解密。解密时段是从加密/解密开始信号158的声明(T12)到五个周期后的时序(T17)的时段。
在检测到加密/解密开始信号158的声明时,控制单元404在下个周期(T13)中取消控制信号157、输出保持信号159及控制信号160。同时,控制单元404开始向上计数计数器信号161。
在T13,密钥扩展单元402使用作为轮回密钥A2 463保持的wkey8进行密钥扩展以产生wkey7和wkey6,并且输出它们分别作为轮回密钥A1 462和轮回密钥A2 463。在下个周期(T14),密钥扩展单元使用作为轮回密钥A2 463输出的wkey6产生wkey5和wkey4,并且输出它们分别作为轮回密钥A1 462和轮回密钥A2 463。轮回密钥以相同方式产生,从而在T15输出wkey3和wkey2,并且在时序T16输出wkey1和wkey0分别作为轮回密钥A1 462和轮回密钥A2 463。
在解密的第一周期(T12),控制单元404取消选择信号171。为此,输入信号150的明文数据P0输入到修改轮回函数模块406。由于选择信号170被声明,所以修改轮回函数模块406切换选择器118以选择来自AddRoundKey变换模块121的输出,从而执行一个周期的解密。来自修改轮回函数模块406的输出直接输入到修改轮回函数模块408,从而执行多一个周期的解密。来自修改轮回函数模块408的输出结果由数据保持单元108保持。
在下个周期(T13)时,控制单元404声明选择信号171,并且把来自数据保持单元的输出输入到修改轮回函数模块406。由于选择信号170被取消,所以修改轮回函数模块406切换选择器118以选择来自InvMixColumns变换模块116的输出,从而执行一个周期的解密。来自修改轮回函数模块406的输出直接输入到修改轮回函数模块408,从而执行多一个周期的解密。处理以相同方式进行直到T16。修改轮回函数模块406在T12使用wkey10和wkey9,在T13使用wkey7,在T14使用wkey5,及在T16使用wkey1,作为轮回密钥。修改轮回函数模块408在T12使用wkey8,在T13使用wkey6,及在T16使用wkey0,作为轮回密钥。
在T16,修改轮回函数模块408的输出信号167输出是作为输入信号的密文数据C0的解密结果的明文数据P0。一个周期后(T17),数据保持单元108向外部输出明文数据P0的值作为来自AES芯401的输出。同时,为了通知在AES芯401外部的单元解密被结束、以及输出信号151被启动,控制单元404声明有效信号159(T17)。在有效信号159被声明的同时,AES芯401保证输出信号151被启动。
另一方面,控制信号160保持取消,因为在T17有效信号159被声明,但在T17加密/解密开始信号158也被声明。如果在T17加密/解密开始信号158不被声明,在T17控制信号160被声明,并且数据保持单元108的值保持明文数据P0。
在T17当解密结束时,密钥扩展单元402输出作为轮回密钥A1462的wkey9和作为轮回密钥A2 463的wkey8。轮回密钥A1 462和轮回密钥A2 463的值被保持,直到下一个加密/解密开始信号156的声明。
当预计到解密结束时(T17),控制单元404在结束前的一个周期(T16)声明控制信号157。当控制信号157被声明时,在AES芯401外部的单元把输入信号150的值设置到下个密文数据C1,从而第二块的解密可开始。
第二块解密时段是从T17至T22,其中进行与第一块的操作相同的操作。从那时起,解密操作被重复进行与块的预定数量一样多的次数。在图57A和57B的时序图中,第二块的解密在距离第一块解密结束的最短间隔处开始。AES芯通过以这样一种时序执行所有块的解密可呈现其最大性能。然而,解密间隔基本上可设置到任意长度。
当预定数量的块的解密已经完全结束,并且下个作业要使用诸如密码密钥之类的不同参数执行时,处理再次从参数设置开始。
第七实施例能以上述方式实施。在第七实施例中,对于AES加密和解密所要求的时钟周期的数量被减小一个,而不增大在每个时钟周期时段中用于每个子块变换的信号处理时间总和的最大值。这把AES处理速度提高约20%。
以上已经举例说明了第七实施例。然而,即使对于任何其它实施例相同的实施也是可能的。
上述第七实施例仅是本发明的例子,并且本发明的效果不限于上述实施例的那些。
<第八实施例>
作为第七实施例的一般形式,在第一实施例中的N个周期过程可以在一个周期中执行。N是2或更大的自然数。在第八实施例中,将描述用来实施这种方法的电路设置。
第一实施例中在一个时钟周期中用来执行N个周期过程的电路可分类成两种类型:一种类型是处理所需的周期总数可由N除尽而没有余数、一种类型是数字不能由N除尽。在例如AES-128中,处理必需的周期总数是10(图1)。其中N是2或5的情形分类成前者,其它情形分类成后者。
首先将描述周期总数可由N除尽而没有余数的情形。在这种情况下,对于加密和解密的每一种实施N个(N是2或更大的自然数)修改轮回函数模块,如在N=2的第七实施例中那样。在每个时钟周期中使用所有修改轮回函数模块执行处理。这时,处理必需的时钟周期数是10/N。
将描述当第一实施例的周期总数可由N除尽而没有余数时的加密/解密单元的电路设置。图58是根据第八实施例的加密/解密单元的方块图。参照图58,附图标记503指示加密/解密单元;550指示轮回密钥A1;及551指示轮回密钥A2。有N个轮回密钥A,包括轮回密钥A1 550和轮回密钥A2 551。与第七实施例相同的附图标记指示相同的构成元件和信号线,将不重复描述。
在以上设置中,选择器109的输出连接到修改轮回函数模块405上。(N-1)个修改轮回函数模块405串联连接。最后修改轮回函数模块405的输出连接到修改轮回函数模块407。选择器109的输出也连接到修改轮回函数模块406。修改轮回函数模块406的输出连接到修改轮回函数模块408。(N-1)个修改轮回函数模块408串联连接。最后修改轮回函数模块408的输出连接到选择器107。修改轮回函数模块405分别按连接顺序接收轮回密钥A1 550、轮回密钥A2 551及其余轮回密钥A。修改轮回函数模块407接收第N个轮回密钥A和轮回密钥B163。修改轮回函数模块406接收轮回密钥A1 550和轮回密钥B 163。修改轮回函数模块408分别按连接顺序接收轮回密钥A2 551和其余轮回密钥A。将省略图58中与第七实施例具有相同连接关系的构成元件的描述。
接着将描述第一实施例中周期总数不能由N除尽而没有余数的情形。在这种情况下,对于加密和解密各自实施N个修改轮回函数模块。在加密或解密的的特定周期中也必须绕过一些修改轮回函数模块。例如,当N=4时,图1表示的第一实施例中的第0至第三周期的过程在第0时钟周期中执行。在第一时钟周期,执行在图1中的第一实施例中的第四至第七周期的过程。在第二时钟周期,执行在图1中的第一实施例中的第八和第九周期的过程。就是说,如果周期总数不能由N除尽而没有余数,则在第0和第一时钟周期使用所有四个修改轮回函数模块。然而,在第二时钟周期,仅两个修改轮回函数模块就足够了。这时,处理所必需的时钟周期数是10/N(分数部分被四舍五入)。
当在第一实施例的周期总数不能由N除尽而没有余数时,各种电路设置是可用的。例如,选择器被提供在图58所示每个修改轮回函数模块紧之后以选择是否绕过修改轮回函数模块,并且每个选择器按照从加密或解密开始起的周期数切换。这种情形的电路设置容易从图58想象,并省略其方块图。
第八实施例能以上述方式实施。根据本发明的第一实施例,处理所必需的时钟周期总数在AES-128中是10,在AES-192中是12,及在AES-256中是14。所有电路可通过把它们分类成周期总数可由N除尽而没有余数的情形、或该数不能由N除尽的情形而实施,如这个实施例中描述的那样。用来实施所有AES-128、AES-192及AES-256的电路设置也是可能的。这种情况下,如果N=1、或N=2,则处理所必需的时钟周期总数在AES-128、AES-192及AES-256全部都可由N除尽而没有余数。因此,使用时钟周期总数的设置(这个实施例中可由N除尽而没有余数)来实施电路。即使当N取任何其它值时,使用本实施例的可把加密/解密单元中实施的N个修改轮回函数模块的任意一个的输出选作加密/解密单元的输出的设置,来形成能够实施所有AES-128、AES-192及AES-256的电路,如在第一实施例中的周期总数不能由N除尽而没有余数的情形那样。
<第九实施例>
在本发明的第一至第六实施例中,一个周期的处理不适应一些情况下定义的一个时钟周期。这样一种情况下,把新的数据保持单元添加到修改轮回函数模块,从而在第一至第六实施例的一个周期处理在多个时钟周期中执行。作为详细例子将描述在第一实施例中在一个周期中执行的处理被在两个时钟周期中执行的电路设置。
图59表示新数据保持单元添加到第一实施例的修改轮回函数模块的例子。参照图59,附图标记605指示修改轮回函数模块,并且数据保持单元608保持加密过程中的结果。
在以上设置中,来自SubBytes变换模块111的输出输入到数据保持单元608。来自数据保持单元608的输出输入到ShiftRows变换模块112。
添加新数据保持单元到加密单元使得能够在两个时钟周期中执行第一实施例的一个周期处理。在图59中,数据保持单元608添加在SubBytes变换模块111与ShiftRows变换模块112之间。然而,数据保持单元可连接到任意点。可选择地,SubBytes变换模块111可以包括数据保持单元。
在上述实施例中,对第一实施例的一个周期处理要求两个时钟周期。然而,处理可以在N个时钟周期中进行。这种情况下,把(N-1)个数据保持单元新添加到变换模块之间的任意点或者实施在变换模块中。
以上已经举例说明了第一实施例。然而,同样的实施甚至对于任何其它实施例也是可能的。
<第10实施例>
在本发明的第一至第九实施例中,数据保持单元的数据更新时段是一个时钟周期。然而,它不总是必需的。
一般地,CPU或DMA的操作时钟的频率在多数情况下很高。如果用于加密的数据保持单元使用相同时钟,则不可能保证在每个时钟周期时段中用于每个子块变换的信号处理时间总和,并且处理可能不适应一个时钟周期。
这样一种情况下,例如,如果在每个时钟周期时段中用于每个子块变换的信号处理时间总和是一个时钟周期的两倍或较少,则可以在两个时钟周期中进行数据保持单元的数据更新一次。
这种设置通过把启动信号新输入到数据保持单元而容易实施。
参照图61A和61B的时序图,将描述这个实施例。图61A表示当数据保持单元的更新与时钟周期同步时的时序图。与时钟周期的后沿同步,数据保持单元更新数据。
图61B表示当数据保持单元的更新与时钟周期不同步时的时序图。启动信号输入到数据保持单元,并且按1/2时钟的时段重复HIGH(高)和LOW(低)。只有当启动信号是HIGH时,数据保持单元才进行数据更新。因此,数据保持单元在两个时钟周期中在时钟后沿更新数据一次。
这种情况下,把一个周期处理在两个时钟周期中执行。
这个实施例描述的例子中,把一个周期处理在两个时钟周期中执行。然而,当然,可以把一个周期处理在N个时钟周期中执行。
在本发明的第一至第九实施例中,可以把N个时钟周期定义为一个周期。
以上已经描述了本发明的实施例。每个实施例中,已经举例说明了AES-128。然而,也可实施AES-192和AES-256。与AES-128的实施例的不同点是输入到密钥扩展单元的密码密钥的位数、由密钥扩展单元产生的轮回密钥的数量及控制信号的声明/取消时序。这些基于每个实施例中描述的相同概念可容易实施。加密/解密单元和修改轮回函数模块不要求与AES-128的实施例中描述的那些不同。
尽管参照示范实施例已经描述了本发明,但要理解,本发明不限于公开的示范实施例。如下权利要求要求书的范围要符合最广义解释,从而包容所有这样的修改和等效结构与功能。

Claims (12)

1.一种AES加密/解密电路,包括:
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
ShiftRows变换模块;
SubBytes变换模块;
MixColumns变换模块;及
数据保持单元,
其中在加密周期中,所述第一AddRoundKey变换模块和所述第二AddRoundKey变换模块使用不同的轮回密钥被执行。
2.根据权利要求1所述的电路,还包括:
密钥扩展单元,它从密码密钥产生轮回密钥,并且把轮回密钥供给到所述AddRoundKey变换模块;和
控制单元,它从加密开始计数时钟周期,并且产生控制信号以执行加密。
3.根据权利要求1所述的电路,其中
在加密的第一时钟周期,把通过对明文数据执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR-1)时钟周期,其中NR是轮回数,把通过对来自所述数据保持单元的输出数据执行AddRoundKey变换、SubBytes变换、ShiftRows变换及MixColumns变换得到的结果输出到所述数据保持单元,及
在第NR时钟周期,把通过对来自所述数据保持单元的输出数据执行第一AddRoundKey变换、SubBytes变换、ShiftRows变换及第二AddRoundKey变换得到的结果输出到所述数据保持单元。
4.根据权利要求1所述的电路,其中
在加密的第一时钟周期,把通过对明文数据执行第一AddRoundKey变换、SubBytes变换、ShiftRows变换、MixColumns变换及第二AddRoundKey变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR-1)时钟周期,其中NR是轮回数,把通过对来自所述数据保持单元的输出数据执行SubBytes变换、ShiftRows变换、MixColumns变换及AddRoundKey变换得到的结果输出到所述数据保持单元,及
在第NR时钟周期,把通过对来自所述数据保持单元的输出数据执行SubBytes变换、ShiftRows变换及AddRoundKey变换得到的结果输出到所述数据保持单元。
5.根据权利要求1所述的电路,其中
在加密的第一时钟周期,把通过对明文数据执行AddRoundKey变换、SubBytes变换及ShiftRows变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR(轮回数)-1)时钟周期,把通过对来自所述数据保持单元的输出数据执行MixColumns变换、AddRoundKey变换、SubBytes变换及ShiftRows变换得到的结果输出到所述数据保持单元,及
在第NR时钟周期,把通过对来自所述数据保持单元的输出数据执行MixColumns变换、第一AddRoundKey变换、SubBytes变换、ShiftRows变换及第二AddRoundKey变换得到的结果输出到所述数据保持单元。
6.一种AES加密/解密电路,包括:
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
InvShiftRows变换模块;
InvSubBytes变换模块;
InvMixColumns变换模块;及
数据保持单元,
其中在解密周期,所述第一AddRoundKey变换模块和所述第二AddRoundKey变换模块使用不同的轮回密钥被执行。
7.根据权利要求6所述的电路,其中
在解密的第一时钟周期,把通过对密文数据执行第一AddRoundKey变换、InvShiftRows变换、InvSubBytes变换及第二AddRoundKey变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR-1)时钟周期,其中NR是轮回数,把通过对来自所述数据保持单元的输出数据执行InvMixColumns变换、InvShiftRows变换、InvSubBytes变换及AddRoundKey变换得到的结果输出到所述数据保持单元,及
在第NR时钟周期,把通过对来自所述数据保持单元的输出数据执行InvMixColumns变换、InvShiftRows变换、InvSubBytes变换及AddRoundKey变换得到的结果输出到所述数据保持单元。
8.根据权利要求6所述的电路,其中
在解密的第一时钟周期,把通过对密文数据执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR-1)时钟周期,其中NR是轮回数,把通过对来自所述数据保持单元的输出数据执行AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及InvMixColumns变换得到的结果输出到所述数据保持单元,及
在第NR时钟周期,把通过对来自所述数据保持单元的输出数据执行第一AddRoundKey变换、InvSubBytes变换、InvShiftRows变换及第二AddRoundKey变换得到的结果输出到所述数据保持单元。
9.一种AES加密/解密电路,包括:
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
第三AddRoundKey变换模块;
第一ShiftRows变换模块;
第二ShiftRows变换模块;
第一SubBytes变换模块;
第二SubBytes变换模块;
第一MixColumns变换模块;
第二MixColumns变换模块;及
数据保持单元,
其中在加密周期,所述第一AddRoundKey变换模块、所述第二AddRoundKey变换模块及所述第三AddRoundKey变换模块使用不同的轮回密钥被执行。
10.根据权利要求9所述的电路,其中
在加密的第一时钟周期,把通过对明文数据执行第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二SubBytes变换、第二ShiftRows变换及第二MixColumns变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR/2-1)时钟周期,其中NR是轮回数,把通过对来自所述数据保持单元的输出数据执行第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二SubBytes变换、第二ShiftRows变换及第二MixColumns变换得到的结果输出到所述数据保持单元,及
在第(NR/2)时钟周期,把通过对来自所述数据保持单元的输出数据执行第一AddRoundKey变换、第一SubBytes变换、第一ShiftRows变换、第一MixColumns变换、第二AddRoundKey变换、第二SubBytes变换、第二ShiftRows变换及第三AddRoundKey变换得到的结果输出到所述数据保持单元。
11.一种AES加密/解密电路,包括:
第一AddRoundKey变换模块;
第二AddRoundKey变换模块;
第三AddRoundKey变换模块;
第一InvShiftRows变换模块;
第二InvShiftRows变换模块;
第一InvSubBytes变换模块;
第InvSubBytes变换模块;
第一InvMixColumns变换模块;
第InvMixColumns变换模块;及
数据保持单元,
其中在解密周期,所述第一AddRoundKey变换模块、所述第二AddRoundKey变换模块及所述第三AddRoundKey变换模块使用不同的轮回密钥被执行。
12.根据权利要求11所述的电路,其中
在解密的第一时钟周期,把通过对密文数据执行第一AddRoundKey变换、第一InvSubBytes变换、第一InvShiftRows变换、第一InvMixColumns变换、第二AddRoundKey变换、第二InvSubBytes变换、第二InvShiftRows变换及第二InvMixColumns变换得到的结果输出到所述数据保持单元,
从第二时钟周期至第(NR/2-1)时钟周期,其中NR是轮回数,把通过对来自所述数据保持单元的输出数据执行第一AddRoundKey变换、第一InvSubBytes变换、第一InvShiftRows变换、第一InvMixColumns变换、第二AddRoundKey变换、第二InvSubBytes变换、第二InvShiftRows变换及第二InvMixColumns变换得到的结果输出到所述数据保持单元,及
在第(NR/2)时钟周期,把通过对来自所述数据保持单元的输出数据执行第一AddRoundKey变换、第一InvSubBytes变换、第一InvShiftRows变换、第一InvMixColumns变换、第二AddRoundKey变换、第二InvSubBytes变换、第二InvShiftRows变换及第三AddRoundKey变换得到的结果输出到所述数据保持单元。
CN2008101698782A 2007-10-10 2008-10-10 Aes加密/解密电路 Active CN101409616B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2007264967 2007-10-10
JP2007-264967 2007-10-10
JP2007264967 2007-10-10
JP2008233094A JP5197258B2 (ja) 2007-10-10 2008-09-11 暗号処理回路
JP2008233094 2008-09-11
JP2008-233094 2008-09-11

Publications (2)

Publication Number Publication Date
CN101409616A true CN101409616A (zh) 2009-04-15
CN101409616B CN101409616B (zh) 2011-07-13

Family

ID=40572426

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101698782A Active CN101409616B (zh) 2007-10-10 2008-10-10 Aes加密/解密电路

Country Status (2)

Country Link
JP (1) JP5197258B2 (zh)
CN (1) CN101409616B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101969376A (zh) * 2010-09-23 2011-02-09 北京航空航天大学 一种具有语义安全的自适应加密系统及方法
CN102185692A (zh) * 2011-04-25 2011-09-14 北京航空航天大学 基于aes加密算法的多模式可重构加密方法
CN102801519A (zh) * 2012-07-10 2012-11-28 记忆科技(深圳)有限公司 一种实现aes加解密的方法及装置
CN104094553A (zh) * 2012-01-11 2014-10-08 英赛瑟库尔公司 防侧信道攻击的加密方法
CN108989018A (zh) * 2018-06-11 2018-12-11 安徽工程大学 一种aes加密单元、aes加密电路及加密方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3851115B2 (ja) * 2001-06-28 2006-11-29 富士通株式会社 暗号回路
CA2486713A1 (en) * 2002-05-23 2003-12-04 Atmel Corporation Advanced encryption standard (aes) hardware cryptographic engine
GB0214620D0 (en) * 2002-06-25 2002-08-07 Koninkl Philips Electronics Nv Round key generation for AES rijndael block cipher
KR100800468B1 (ko) * 2004-01-29 2008-02-01 삼성전자주식회사 저전력 고속 동작을 위한 하드웨어 암호화/복호화 장치 및그 방법
JP2008040244A (ja) * 2006-08-08 2008-02-21 Mitsubishi Electric Corp Aes暗号回路
CN1921382B (zh) * 2006-09-06 2010-05-12 华为技术有限公司 一种基于aes算法的加解密方法及加解密器
JP2008203306A (ja) * 2007-02-16 2008-09-04 Konica Minolta Business Technologies Inc 暗号処理装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101969376A (zh) * 2010-09-23 2011-02-09 北京航空航天大学 一种具有语义安全的自适应加密系统及方法
CN101969376B (zh) * 2010-09-23 2012-06-27 北京航空航天大学 一种具有语义安全的自适应加密系统及方法
CN102185692A (zh) * 2011-04-25 2011-09-14 北京航空航天大学 基于aes加密算法的多模式可重构加密方法
CN102185692B (zh) * 2011-04-25 2012-07-04 北京航空航天大学 基于aes加密算法的多模式可重构加密方法
CN104094553A (zh) * 2012-01-11 2014-10-08 英赛瑟库尔公司 防侧信道攻击的加密方法
CN104094553B (zh) * 2012-01-11 2018-08-31 英赛瑟库尔公司 防侧信道攻击的加密方法和装置
CN102801519A (zh) * 2012-07-10 2012-11-28 记忆科技(深圳)有限公司 一种实现aes加解密的方法及装置
CN108989018A (zh) * 2018-06-11 2018-12-11 安徽工程大学 一种aes加密单元、aes加密电路及加密方法
CN108989018B (zh) * 2018-06-11 2021-05-04 安徽工程大学 一种aes加密单元、aes加密电路及加密方法

Also Published As

Publication number Publication date
JP5197258B2 (ja) 2013-05-15
CN101409616B (zh) 2011-07-13
JP2009109988A (ja) 2009-05-21

Similar Documents

Publication Publication Date Title
CN101753292B (zh) 用于链接式加密模式的方法和设备
US9191197B2 (en) AES encryption/decryption circuit
US5381480A (en) System for translating encrypted data
Rodriguez-Henriquez et al. 4.2 Gbits/sec Single-Chip FPGA Implementation of the AES Algorithm.
CN103621007A (zh) 加密处理装置、加密处理方法和程序
CN101409616B (zh) Aes加密/解密电路
US20060147040A1 (en) Rijndael block cipher apparatus and encryption/decryption method thereof
EP2016524B1 (en) Robust cipher design
CN101702709B (zh) 一种适用于mips处理器的aes加密单元
CN102035641A (zh) 一种实现aes加解密的装置和方法
CN109495242A (zh) 一种数据加密方法及数据加密设备
CN101431407A (zh) 支持线程级加解密的密码处理器及其密码运算操作方法
US6272221B1 (en) Encryption apparatus and computor-readable recording medium containing program for realizing the same
CN103444125A (zh) 加密处理设备、加密处理方法和程序
CN104219045B (zh) Rc4 流密码生成器
CN105790926A (zh) 用于wia-pa安全的分组密码算法工作模式实现方法
EP1629626B1 (en) Method and apparatus for a low memory hardware implementation of the key expansion function
CN1833399B (zh) 瑞恩多尔块密码装置及其加密/解密方法
KR20010102684A (ko) 라운드 키 생성 및 암호처리용 암호화장치
SK286323B6 (en) Method for the cryptographic conversion of binary data blocks
KR100668664B1 (ko) Aes 라인달 블록 알고리즘을 이용하는 암호화/복호화장치 및 방법
KR101725127B1 (ko) 아리아 암복호화 장치 및 방법
CN106788968A (zh) 应用于wia-pa协议的安全协处理器的实现方法
CN111740818A (zh) 一种数据处理方法、装置、设备及存储介质
US11888964B1 (en) Device and method for data processing

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