CN1761185B - 乱序执行的数据流aes加密电路结构 - Google Patents

乱序执行的数据流aes加密电路结构 Download PDF

Info

Publication number
CN1761185B
CN1761185B CN200510086919.8A CN200510086919A CN1761185B CN 1761185 B CN1761185 B CN 1761185B CN 200510086919 A CN200510086919 A CN 200510086919A CN 1761185 B CN1761185 B CN 1761185B
Authority
CN
China
Prior art keywords
token
territory
key
signal
address
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.)
Expired - Fee Related
Application number
CN200510086919.8A
Other languages
English (en)
Other versions
CN1761185A (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.)
Tsinghua University
Original Assignee
Tsinghua University
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 Tsinghua University filed Critical Tsinghua University
Priority to CN200510086919.8A priority Critical patent/CN1761185B/zh
Publication of CN1761185A publication Critical patent/CN1761185A/zh
Application granted granted Critical
Publication of CN1761185B publication Critical patent/CN1761185B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

乱序执行的数据流Rijindael加密电路结构属于密码集成电路,抗差分功耗分析攻击的领域,其特征在于该电路结构集成在一个芯片上共包含:输入部分;输出部分;完成密钥扩展和密钥扩展环,其中包括:通道开关单元switch,初始密钥存储器、密钥扩展运算单元AK暂存器单元及匹配检查单元;完成对轮密钥作变换的轮变换环,包括:轮更新通道开关单元,AddKey运算单元、EU运算单元、AK暂存器单元及相应的检查单元,对轮密钥进行与状态信息的逐位混合运算、行移位运算、列混合变换运算以及轮迭代运算,以得到密文后通过输出部分输出。仿真实际表明:本发明使得其功耗差分比现有数降低了66%,提高了攻击的难度。

Description

乱序执行的数据流AES加密电路结构
技术领域:
本发明用于解决密码集成电路抗差分功耗分析攻击的问题
背景技术:
随着智能卡、付费电视卡等密钥存储数据安全集成电路的广泛应用,功耗分析攻击,特别是差分功耗攻击(DPA)开始出现,并迅速成为数据存储密码芯片的重要威胁。功耗分析攻击是通过采集芯片处理数据工程中的电源电流变化,并从中获得数据信息的面向硬件的攻击手段。其中应用最普遍的差分功耗分析攻击是采集多条芯片的工作电流数据,通过对各个时刻的功耗样本值进行统计检验的办法提前部分密钥的。使得电路各个操作的执行时刻具有随机性是对抗差分功耗分析的重要途径之一。现有的时序随机性方法又分为随机延时插入和乱序执行两种。前者运算执行的顺序固定,但是在各不执行之间会随机的插入一些延时,造成运算执行时刻的不确定性;后者则是将执行先后顺序无关的一些运算以随机的顺序执行,相对于前者具有更高的安全性。目前公布的乱序执行技术有:随机寄存器重命名技术——参见:May,D.,H.L.Muller等的论文“Random register renaming to foil DPA,Paris,France,Springer-Verlag.”(《随机化寄存器重命名以抵挡差分功耗攻击》)。还有论文“Irwin,J.,D.Page,等2002年发表的论文“Instruction stream mutation for non-deterministic processors,San Jose,CA,USA,IEEE Comput.Soc.”(《不确定性处理器的指令流变异》)介绍了一种“不确定处理器”技术。这两个技术都是应用于密码专用处理器或实现密码算法的通用处理器。“随机寄存器重命名技术”只在寄存器重命名环节上引入了随机选择;不确定性处理器则是挖掘程序内部的指令级并行性,将可并行执行的指令随机的串行执行。前者只在局部引入不确定性,后者的不确定性则局限于相邻的指令之间,且受原程序描述的限制。本发明的数据流乱序执行技术则应用于专用集成电路密码芯片。数据流模式是一种根据数据依赖关系执行运算的操作,它不附加任何其它执行顺序的限制,因此能够挖掘算法本身的最大并行性,从而具有更大的执行顺序的可变空间。且由于数据流模式采用分布控制,因此内部的总线分散,总线负载电容小,根据功耗差分的公式:ΔP=(α12)CV2,功耗差分的大小与负载电容成正比,因此小的负载电容有利于降低功耗差分。下面对数据流及乱序执行抗差分功耗攻击的基本原理:
1.乱序执行对抗差分功耗攻击
集成电路的处理数据时的功耗与被处理的数据相关,当数据中某位b取0和1时,
对应的功耗具有不同的条件分布,分别用随机过程P0(t)和P1(t)表示,其中t表示时间。DPA检验计算b时刻的两个功耗的均值差 ϵ = | P 0 ( t ) ‾ - P 1 ( t ) ‾ | . 根据DPA理论,如果设被测功耗中含有噪声σ,则所需的样本数N应满足:
N > ( 2 σ ϵ ) 2
对于乱序执行的集成电路,计算b的操作有可能在多个时刻随机出现。现假设该操作在时刻t执行的概率为pb,则t时刻的功耗均值 P new ‾ = p b P ‾ + ( 1 - p b ) P other ‾ , 其中, 是t时刻执行的其它操作的平均功耗,假设与b的取值无关。由此公式求得的新的功耗差分
ϵ new = | P new 0 ‾ - P new 1 ‾ |
= | p b P 0 ‾ + ( 1 - p b ) P other ‾ - [ p b P 1 ‾ + ( 1 - p b ) P other ‾ ] |
= | p b ( P 0 ‾ - P 1 ‾ ) |
= p b gϵ
所以,功耗差分变成了原来的pb倍,相应地,样本数就提高到原来的 倍。因此
乱序执行可以提高DPA攻击的成本,且不确定度越高,即pb越小所需样本数越大。
2.数据流工作模式
首先介绍数据依赖关系的概念。对于一个算法,存在一系列操作,假设操作A的输出是操作B的输入,则B与A就存在数据依赖关系,B必须在A执行后才能执行。
数据流模式就是一种没有控制流,除了数据依赖关系之外没有其它执行顺序限制的计算模式。它将被处历的操作数据封装成令牌,一个令牌是按照某个规定格式的定长二进制串,每一位有固定的含义。例如,如下一个令牌就包含了数据域、源地址、目标地址3个域,它们在令牌中的位置是约定的:低32位是数据域;第37位到第35位和第34位到第32位分别是3位的目标地址和源地址。
Figure S05186919820051124D000029
数据流电路实现算法的各个操作,以及操作之间的令牌传递。对于一个操作,当它的所有输入令牌都到达(即该操作所依赖的运算都已经执行)则可以被“激活”——开始处理数据,并将产生的结果打包成新的令牌,传给它的后继操作。各操作之间的控制信息也通过灵牌传达——例如例子中的数据地址就指示了数据的来源和处理后应该发送的目的地;一些控制信号、选择信号也被封装成令牌(控制令牌),作为一个操作数传递给被控制的运算。
因此,数据流电路没有一个中央控制电路,各个子系统是相对独立的,所以数据交换也具有局域性,所以数据总线和存储单元也是分布式的。数据运算的触发是以操作数令牌是否全部到达为条件的,因此是数据驱动的,异步工作。且没有数据依赖关系的操作只要运算条件满足就可以执行,彼此没有影响,所以能够充分发挥算法自身的并行性。
基于数据流计算的以上特征,可将其特点概括如下:
并行性、函数性(即每个操作相对独立,且无关操作可以按任意顺序执行。)、分布性、异步性。
3.异步电路和异步通道:
一个异步电路系统,各部分电路之间通过异步的通讯接口连接,称为异步传输通道。传输通道与外部的接口称为通道端口,其是对一组信号的抽象:包括一组数据总线和请求、应答信号。一个异步传输通道包括数据锁存器和锁存器的控制端电路。结构如图1其工作方式是一种称为“握手协议”的通信协议:
“异步集成电路没有时钟,这就需要一种相应的方式来控制时序,这种控制时序的方式叫做握手协议。绝大部分异步集成电路使用的握手协议包含两种控制信号:请求(request)信号和应答(acknowledge)信号。请求信号启动一个工作,应答信号表示工作完成。这两个信号可以完成系统中所有运算的时序控制。
用电路实现握手信号,需要把交替出现的请求和应答信号编码成控制线上的电平或电平变化,下面以常用的一种4相位握手协议为例(见图2)。
请求信号的上升沿通知接收方有数据到达,接收方准备好接受数据后升高应答信号,表示准备就绪,同时开始读取数据,请求信号又被应答信号复位,请求信号的下降沿再把应答信号复位,准备接受下一个数据。其中传输通道上的数据存储在一个锁存器中。(锁存器有一个控制端,当控制端为低电平时输出随输入变化,当控制端为高时输出端的数据保持不变。)在4相位握手的异步传输通道中,锁存器的控制端与应答信号相连,即当应答信号升高后将发送方的数据锁存入锁存器,待一次通信过程结束后才可以接受输入端的数据。
在异步电路中经常用到一种称为C单元的时序控制电路,此种电路有2个输入一个输出,一般还有一个复位端,当两个输入全为1时,输出为1;当两个输入全为0时输出0;当两个输入不同时,输出保持原来的状态。可以由C单元实现4相位握手协议的异步传输通道,如图3所示:
4.数据流与密码芯片的抗DPA安全性
数据流方式不显式定义执行顺序,因此,执行顺序具有最大的灵活性。函数性使得乱序执行更加方便。分布性降低了总线的负载,减小了功耗特征。异步性使得数据流方式更易于以异步电路实现,而在Simon Moore 1999年的论文“Balanced Self-CheckingAsynchronous Logic for Smart Card Applications”(《用于智能卡的平衡自检查异步逻辑》)中阐述了异步电路在实现密码芯片方面具有优势。因此本发明利用数据流的上述特点,实现了一个数据流的AES集成电路实现方案。
5.数据流AES的基本工作原理
(1)  Rijndael算法和AES加密标准:
Rijndael是一种对称的分组密码算法,AES,即高级加密标准,是美国国家标准与技术研究所(NIST)制定的新的高级数据加密标准(Advanced Encryption Standard)规范,此标准于1997年开始公开征集以取代DES,在2002年最终确定为采用128位明文分组 长度的Rijndael算法,密钥长度支持128位、192位和256位三种。本发明可以实现3种密钥长度的AES加密算法。
i.AES算法设计原理
AES算法是以Rijndael算法为核心制定的,但是,Rijndael算法的一些特征没有被接纳为AES标准,Rijndael算法支持128位到256位之间任意32位跨度的分组长度,但AES标准仅支持128位的明文长度,128、192或256位的密钥长度。
AES算法的运算是定义在有限域GF(28)上的。所谓的GF(28),是指由一组从(00)16 到(FF)16的256个值组成,并定义了加法和乘法的数域。GF(28)加法就是异或(XOR)操作。GF(28)的乘法可以按下面方法计算:首先,任何值乘0x01等于其自身;对于乘0x02,则当被乘的值小于0x80时,结果是该值左移1位,否则结果就是先左移1位,再与0x1b异或的结果。它防止了“域溢出”并保持乘法的乘积在范围以内。与(03)16相乘,可以将(03)16分解为2的幂之和,即b×(03)16=b×((02)16+(01)16)=(b×(02)16)+(b×(01)16)。
ii.加密流程
本节将以Rijndael标准进行介绍,Rijndael算法的数据处理单元为字节,一个明文分组信息被分为4×Nb个字节,Nb=4,5,6,7,8,它们按顺序被放入一个4×Nb的矩阵中,这个矩阵被称为“状态(State)”。状态的一列称为一个“状态字”。密码密钥也以4个字节为一列,每列叫做一个“密钥字”,密码密钥的列数用Nk表示。
Rijndael所有的变换都是基于状态的变换。Rijndael变换是通过轮函数的多次迭代实现的,根据密钥长度的不同,迭代次数也不同。迭代轮次用Nr表示,它的取值与Nb和Nk有关,具体情况见表1。
加密算法的流程可用图4表示:
其中,虚线框内的操作组成一个轮变换函数,
表1  不同Nb和Nk的迭代轮数Nr
下面来解释图中各模块的意义:
iii.轮密钥混合-AddKey
对应图中的“+”操作,它是轮密钥的混合运算就是将轮密钥与当前的状态进行对应字节的异或(XOR),实现密码与密钥的混合。轮密钥由原始密钥通过一定的规则扩展而成,产生 的轮密钥总长为Nb(Nr+1)个字,在每一轮的密钥混合变换中,都要从轮密钥Nb(Nr+1)中按顺序依次取出Nb个字与状态的各字节异或。
iv.字节代换运算-Srd
字节代换运算是一个可逆的非线性字节代换操作,这种变换要对分组中的每个字节进行,对字节的操作遵循一个代换表,即S盒。对于一个字节,取其前4位作为x座标,后4位作为y座标,即可在S盒中查找到一个对应项来替换原来的数据。这就是Srd()所完成的功能。S盒的内容如下所示:
v.  行位移变换-ShiftRow
行变换在状态的每行间进行,是将每一行进行循环移位。移动位数以字节为单位,循环左移,移动的字节数根据行数来确定。不同Nb情况下各行的位移量见表2,表中第0行至第3行的位移量依次用C0,C1,C2,C3表示。图5给出了Nb=4的ShiftRow作用效果。
表2 ShiftRow位移量表
Figure 2005100869198A00800052
vi.列混合变换-MixCol
列混合用状态字节列的值进行数学域加和域乘的结果代替每个字节。对于状态中的一列,a0,a1,a2,a3依次是第0行到第3行的字节,所得的结果的4个字节依次是b0,b1,b2,b3,变换关系用矩阵运算的形式表示如式B-1所示。结果列代替对应的输入列。
b 0 b 1 b 2 b 3 = 02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02 a 0 a 1 a 2 a 3 - - - ( 1 )
需要申明的是,此矩阵运算中的加法和乘法都为有限域GF(28)中的加法和乘法。
vii.密钥扩展——KeyExpansion
密钥扩展是将初始的密码密钥扩展为轮密钥的过程。扩展密钥按扩展顺序排列,Rijndael算法每轮需要4行Nb列字节,每列4个字节称为一个密钥字或扩展密钥字,第i轮的轮密钥由扩展密钥序列的第Nbg列到第Nbg(i+1)-1列给出,扩展密钥的总数为Nb(Nr+1)个字。
密钥扩展函数依赖于Nk的值:扩展密钥序列的前Nk列是密码密钥(或称初始密钥),后面的各列由先前的各列按递归方式确定。递归函数依赖与列的位置,如果i不是Nk的倍数,则第i列是第i-Nk列与第i-1列的逐位异或;否则,第i列是第i-Nk列与第i-1列的一个非线性函数的逐位异或。这个非线性函数可以通过以下方式来实现:将Srd作用在列的4个字节,附加一个列内字节的循环移位,增加一个轮常量。这个轮常量独立于Nk,而且被GF(28)中的一个递归规则所定义:
RC[1]=x0(即01)
RC[2]=x(即02)
RC[j]=x·RC[j-1]=xj-1,j>2
这里的乘2运算也是有限域GF(28)内的运算。
对于密码密钥长度之Nk>6,当i mod Nk=4时,第i列也是第i-Nk列与第i-1列的一个非线性函数的逐位异或,这个非线性函数是将Srd作用在列的4个字节上。
为了叙述方便,在文中将j mod Nk=0时所执行的非线性变换用字母f表示;将Nk>6且j mod Nk=4时的非线性变换用字母g表示。
对于AES标准而言,上述Nb=4。
(2)  令牌的暂存-匹配-发射(HMF):
数据流计算的内容就是对于令牌的处理,具体的包括令牌的创建(发射)、解析、处理,以及令牌的暂存和各个令牌的匹配。对于多个操作数的操作,各个操作数的令牌往往不是同时到达,因此需要一个暂存单元把到达的令牌暂存起来,然后对所有已到达的令牌进行“匹配”,当发现一对(或多个)就绪的操作数令牌就打包成新的令牌发射到处理单元。
本发明采用了一种新的电路实现令牌匹配,称为令牌暂存-匹配-发射结构,用HMF表示。所述的乱序执行控制即在HMF结构中实现,当暂存单元中同时有多个或多组匹配 成功的令牌时,电路从中随机选取一个发送,如果只有一个或一组令牌匹配成功则发送匹配成功的令牌。
在本发明中的每个运算单元和结果输出都有各自的一个暂存-匹配-发射结构。
(3)一种特殊的密钥扩展结构:
如果把附录A中所述的轮密钥序列每Nk个字(即一列轮密钥,一个字有4个字节)分为一组,称为“密钥分组”,则各密钥分组间的计算关系可用图6表示,图中的“+”是逐位异或运算,ki,j,i=0,1,…, 
Figure S05186919820051124D000071
j=0,1,…,Nk-1表示第i个密钥分组的第j列密钥字,f和g是密钥扩展中的非线性变换(见附录A)。为了叙述方便,本文把扩展密钥的中间结果f和g命名为中间密钥字。如图6所示,每个密钥分组可以分为两部分:序号在前的4个密钥字为低段(图中右侧部分),其余的(Nk-4)个密钥字属于高段(图中左侧部分),当Nk=4时,每个密钥分组只有低段部分的计算。由此,密钥扩展可用图7所示的运算结构迭代实现。此结构中包含连续异或运算与非线性变换f和g,我们将5输入-4输出的连续异或运算用图8所示的电路实现,并命名为KeySch运算,其中k3,k2,k1,k0和f是输入密钥字,y3,y2,y1,y0是输出密钥字。
Nk不同取值时的密钥扩展的具体实现算法如图9所示,其中标有*的运算是每次迭代执行的第一个运算。Nk>4时,低段KeySch计算的结果作为新分组的低段,高段KeySch计算的结果作为新分组的高段;Nk=4时,低段KeySch计算的结果作为新分组的高段,高段KeySch计算的结果作为新分组的低段。Nk=6时,k3的结果直接参与KeySch运算,没有经过g变换,但是为了统一表示,我们也用g来表示,在单独表示直接复制的运算时,用“pass”表示。
为了叙述方便,本文中命名产生中间密钥字的扩展密钥为变换密钥字,分别称产生f和g的变换密钥字为变换密钥字1和变换密钥字2。
(4)轮函数部分
本发明中将密钥扩展的非线性变换也放在轮函数执行单元中执行,共享Srd运算单元。根据乱序执行的需要,发明中以状态的一列(称为状态字)和轮密钥的一列(称为密钥字)作为基本操作数,即每个令牌的数据域都是由状态字或密钥字组成的,将这两类令牌分别称为状态令牌和密钥令牌。
上述密钥扩展方法的令牌处理流程如图10a所示。初始密钥保存到缓存单元后,首先进行检查,如果发现变换密钥字则将其转发到“轮变换环”中,经过相应的非线性变换,f或g,结果写入到密钥暂存器中的中间密钥字单元。另一方面,密钥变换环中对密钥缓存器中的令牌反复检验,发现待执行KeySch运算的令牌组即对它们执行KeySch操作,结果写回密钥缓存单元相应的地址。如果发现密钥扩展已经完成则停止,其中的停机条件是轮变换环的令牌轮次达到了最后一轮。
状态令牌的处理流程如图10b所示。一列状态的令牌首先与对应的轮密钥列执行AddKey运算,随后检验结果令牌的轮次,如果轮次等于Nr,则将令牌数据缓存在输出 缓存单元中,当输出缓存单元写满后则将密文输出,运送结束;如果轮次小于Nr,则检查完成AddKey运算的令牌能否组成执行MixCol运算的新令牌(由AES算法知,一列状态的MixCol运算依赖于4列的AddKey结果。),如果匹配成功则把相关的4个状态字节重新打包成一个新的状态字令牌,依次执行Srd和MixCol运算。这4个状态字的地址是按照它们经过ShiftRow之后在同一列的关系逆推而得。所以被发送的令牌是ShiftRow后的结果。对于最后一轮的令牌则只执行Srd运算。轮变换执行后的结果状态被返回到状态令牌暂存单元,开始执行新的一轮计算。
发明内容:
本发明是一个具有乱序执行特点,能够抵抗差分功耗分析攻击的数据流模式AES加密集成电路结构。这一结构一次处理一个数据分组,待前一个分组处理完毕,才可以处理下一个分组。其主要特征在于:
1.乱存执行的数据流AES加密电路结构,其特征在于,该电路结构是在一个数据流加密专用集成电路上实现的,该电路结构遵从以Rijndael算法为最终算法的高级数据加密标准,记为AES,使用数据流模式实现乱序加密,该电路结构含有:
a.传输通道,是两个部件间的数据传输接口,所传输的数据是相应编号的令牌,其中包括一个令牌输入数据总线、一个数据输出总线和输入请求与应答信号、输出请求与应答信号,该传输通道与外部的接口就是通道端口;
b.输入单元,是芯片内核与外部的接口,实现把明文和密钥按照协议要求的时序输入并通过4#传输通道将明文送入内核部分、把密钥写入初始密钥存储器的功能,同时产生该电路结构中内核的各个单元所需的复位信号InterRst和初始密钥置入信号load;所述的4#通道传输的令牌,命名为令牌4包括一个32位的数据域,一个2位的column域;
c.通道开关单元Switch,是一个2传输通道输入-2传输通道输出的交换开关,此外还接收来自工作状态寄存器的输入信号WK,当WK=0时,该通道开关单元处于空闲状态,接收所述输入单元经4#通道送来的明文数据,经过解析后,把其中的数据重新打包成状态字令牌,发送给5#通道,所述的5#通道传输的令牌,命名为令牌5包括一个32位的数据域,一个4位的表示轮次的color域和一个2位的地址域,根据令牌4打包时,令牌5的数据域直接复制令牌4的数据域,令牌5的color域设为0,令牌5的地址域复制令牌4的column域;当WK=1时,处于工作状态,把3#通道发来的令牌解析后,根据不同的类型,把状态字令牌重新打包成一个令牌发给5#通道,把密钥字令牌重新打包成一个令牌发送给通道6;所述的3#通道传输的令牌,命名为令牌3包括一个1位的属性域和一个32位的数据域,当属性域等于0时,是状态字令牌,还包括一个1位的操作符域、一个2位的column域、一个4位的color域,把它重新打包成令牌5时,其中的数据域直接复制令牌3的数据域,color域直接复制令牌3的color域,地址域直接复制令牌3的column域,当令牌3属性域等于1时,是密钥字令牌,还包括一个1位的fadd位和6位不关心的数据, 所述发送到6#通道的令牌,命名为令牌6,是下述的中间密钥字令牌,包括一个32位的数据域和一个1位的地址域,把它打包成令牌6时,令牌3的数据域直接复制到令牌6的数据域,fadd域复制到令牌6的地址域;
d.初始密钥存储器是一个256位的寄存器组,从所述输入单元接收时钟信号和输入的密码密钥数据,把来自所述输入单元的密码密钥直接接收存入;
e.AK暂存器单元,是待执行AddKey运算的令牌暂存单元,包括密钥字存储器、状态字存储器以及令牌解析和打包电路,其中,密钥字存储器有8个密钥字存储单元,2个中间密钥字存储单元、两个5位内部存储器:BLOCKH和BLOCKL及一个2位状态寄存器KES,该密钥字存储区有3位地址,二进制表示的地址空间是000-111,依次存储序号模密钥分组列数Nk等于0-7的扩展密钥字,高段为100-111,低段为000-011,每条存储记录包括一个32位的数据域、一个1位的fadd域、一个轮变换标记位和一个扩展标记位;所述密钥字存储器中地址等于Nk-1的单元存储的数据称为变换密钥字1,Nk不等于4时地址等于3的记录数据称为变换密钥字2,Nk等于4时的变换密钥字2是地址等于7的记录数据;该状态字存储区有2位地址,二进制表示的地址空间是00-11,依次存储状态中的第0-3列,每条记录包括一个32位的数据域、一个4位的color域;该中间密钥字存储区,有一位地址空间:0-1,依次存储从通道端口6来的中间密钥字,该中间密钥字是AES密钥扩展算法中定义的非线性函数的计算结果,每条存储记录包括一个32位的数据域;所述的暂存单元的每个存储单元都对应一个标记为flag的“满/空”标记位,当单元写入时flag置1,表示满,当数据读出后flag复位,表示空;该BLOCKH存储高段密钥字的“分组值”,BLOCKL存储低段密钥字的“分组值”,所述“分组值”是指所有轮扩展密钥序列按所述Nk个一组分组后,所得到的组的序号,该扩展密钥由初始密钥扩展而成,该扩展密钥的总长为4(Nr+1),Nr为迭代轮数;该AK暂存器单元有三个输入通道端口:通道5端口接收令牌5并写入状态字存储区,写入的地址是令牌5的地址域的值,状态字记录的数据域和color域分别等于令牌5的数据域和color域,通道6端口接收令牌6,写入中间密钥字区,写入地址是令牌6的地址域的值,写入记录的数据域直接复制令牌6的数据域,通道9端口接收新的扩展密钥字令牌并写入密钥字存储区,另外,密钥字存储区还有一个置数端口,与所述初始密钥寄存器的输出端相连,256位宽,由所述load信号作置位信号;该AK暂存器单元有两个输出通道端口;通道7端口发送作AddKey运算或变换密钥字转发用的操作数令牌,通道10端口发送密钥扩展运算用的操作数令牌;
e1.所述的通道9端口传输的令牌,命名为令牌9,包括4个32位的数据域k0-k3、一个5位的BLOCK域和一个1位的part域,令牌9part等于0则k0-k3依次写入密钥字存储区地址为000-011的单元,所述地址用二进制表示,令牌9的BLOCK值赋给BLOCKL,同时将所有低段单元的轮变换标记位和扩展标记位复位为0,令牌9part等于1则k0-k3依次写入密钥字存储区二进制表示的地址 为100-111的单元,令牌9的BLOCK值赋给BLOCKH,同时将所有高段单元的轮变换标记位和扩展标记位复位为0;
e2.所述通道7端口发送的令牌,命名为令牌7,包括2个32位的数据域data1和data2、一个1位的属性域,属性域的值等于发送时下述的AorT信号的取值:当AorT等于0时,执行AddKey操作,令牌7是状态字令牌,它还包括一个4位的color域、一个2位的column域,打包时,把下述的ssel信号的值复制到它的column域、地址等于ssel的状态字存储记录的数据域复制到令牌7的data1域、该状态记录的color域复制到令牌7的color域,地址等于下述ksel值的密钥存储记录的数据域复制到令牌7的data2域,通道7端口的应答信号将读取的状态字记录情空,把读取的密钥字记录的轮变换位变成1;当AorT等于1时,执行变换密钥字转发操作,令牌7是密钥令牌,除数据域和属性域外还包括一个1位的操作符域、一个1位的fadd域与4位不关心的数据,打包时,data1域等于0,地址等于下述ksel值的密钥存储记录的数据域复制到它的data2域;ksel等于Nk-1时,转发变换密钥字1,fadd等于0,操作符域等于0,表示此令牌将执行下述f变换,Nk等于4时,若ksel等于7,则表示转发变换密钥字2,fadd域等于1,操作符域等于0,表示此令牌将执行下述f变换,若Nk不等于4且ksel等于3,则表示转发变换密钥字2,fadd等于1,操作符域等于1,表示此令牌将执行下述g变换;通道7端口的应答信号将读取的状态字记录清空;
e3.所述通道10端口发送的令牌命名为令牌10,包括一个32位的中间密钥字域、4个32位的密钥字域k0-k3、一个5位的BLOCK域和一个1位的step域,打包时令牌10的step域等于令牌发送时所述的step信号的值,当令牌发送时刻所述step信号等于0时,令牌10的中间密钥字域等于中间密钥字存储区中地址等于0的记录的数据,令牌10的BLOCK域的值等于所述BLOCKL寄存器的值,通道10端口的应答信号把密钥存储区低段的4个密钥字的扩展位都置成1,当令牌发送时刻所述step信号等于1时,令牌10的中间密钥字域等于中间密钥字存储区中地址等于1的记录的数据,令牌10的BLOCK域的值等于所述BLOCKH寄存器的值,通道10端口的应答信号把密钥存储区高段的所有密钥字的扩展位都置成1;
e4.该KES控制密钥扩展的时序,状态都采用二进制编码表示,KES的初始状态二进制编码是00,即准备计算f的状态,在此状态下执行变换密钥字1转发后,KES二进制编码变为01,进入执行f变换的状态,在01状态下读取低段密钥进行密钥扩展时,KES的状态变化为11,处于准备计算g的状态,在11的状态下执行变换密钥字2操作后,KES的状态变化为10,进入执行g变换的状态,在10状态下读取高段密钥进行密钥扩展时,KES的状态变化为00;
f.工作状态寄存器,向所述输入单元发送WK信号,向所述通道开关单元Switch发送 WK信号,接收来自下述Matcher OK单元的OK信号;当OK信号上升时WK复位;
g.Matcher II匹配单元,检查AK暂存器单元中的状态字存储区和密钥字存储区,发现就绪的状态字-密钥字对或就绪的变换密钥则随机选取其中之一,把相应的地址所选择信号传送给所述AK暂存器单位,随后触发令牌发射信号fetch_II,所述的选择信号包括标记为了ssel的AddKey状态字读地址、标记为ksel的密钥字读地址、标记为AorT的表示发送令牌将执行的操作的信号:0表示AddKey运算,1表示变换密钥字转发,标记为Trans该Matcher II匹配单元的输入包括:AK暂存器单元的状态字存储区和密钥字存储区的观测信号,其中包括状态字记录的color位与flag位,密钥字记录的轮变换标记位和扩展标记位、flag域,BLOCKL和BLOCKH,KES,另外还有密钥分组列数Nk;所述的“就绪”是指:计算所有被观测状态字和密钥字的序列号,寻找序列号相同且flag都为1的状态字-密钥字对,或者根据KES状态检测并发现相应的变换密钥字;所述fetch_II信号到来,则触发所述AK暂存单元把令牌发送给7#通道;当被发送的状态字被清空,或者KES状态改变,则fetch_II复位;
h.Matcher K匹配单元,检查密钥字存储区和中间密钥字存储区的观测信号:轮变换标记位和扩展标记位、flag和KES状态;当KES处于密钥扩展状态下,且相应的密钥字段和中间密钥字段已准备就绪则把标记为step的密钥扩展读地址变为相应的值:1为高段扩展,0为低段扩展,并触发令牌发射信号fetch_K,所述的AK暂存器单元根据step信号把密钥区的相应数据以及BLOCK值打包成令牌等待发送,当fetch_K信号来到时,触发所述AK暂存单元把该令牌经通道10发出;如果下述的exp_stop信号有效,Matcher K匹配单元则停止工作;
i.密钥扩展运算单元,用Key Schedule标记,接收并解析来自通道10的令牌,经过下述Key Schedule处理后打包成内含所述新的扩展密钥的令牌经通道9发出,所述的Key Schedule的处理含有以下运算:
i1.把所述令牌10的中间密钥字域和k0-k3域作为输入,执行KeySch运算:中间密钥字与k0逐位异或,结果输出作为令牌9的k0域,并与令牌10的k1逐位异或,结果输出作为令牌9的k1,并与令牌10的k2逐位异或,结果输出作为令牌9的k2,并与令牌10的k3逐位异或,结果输出作为令牌9的k3
i2.把所述令牌10的BLOCK域加1后的结果作为令牌9的BLOCK值;
i3.当Nk=4时,把所述令牌10的step域的逻辑反作为所述令牌9的part域,如果Nk>4,则把所述令牌10的step域直接复制到所述令牌9的part域;
j.AddKey运算单元,在接收并解析通道7发来的操作数令牌后,对其中的数据执行AddKey运算后,打包成轮密钥混合令牌,经通道8发送,所述AddKey运算即AES算法定义的轮密钥加法操作作用于状态的一列;所述经通道8发送的令牌,命名为令牌8,包括一个32位的数据域和一个1位的属性域,当属性域等于0时,是状态字令牌,还包括一个4位的color域和一个2位的column域,当属性域等于1时, 是密钥令牌,还包括一个1位的操作数域和一个1位的fadd域,打包时,把令牌7的data1与data2逐位异或的结果作为令牌8的结果,令牌7的其余域直接复制到令牌8中与之同名的域中;
k.轮更新通道开关单元,对来自通道8的令牌进行轮次检查,若是状态字令牌且轮次已经达到迭代轮次Nr,则经通道11转发到下述输出暂存单元;否则,把其轮次加1经通道1转发到下述EU暂存器单元执行后续处理;若到达的令牌轮次为Nr,且上述与其相加的扩展密钥属于密钥分组的高段,即表示密钥扩展已经完成,则触发exp_stop信号;若是密钥字令牌则直接由通道1转发到下述EU暂存器单元执行后续处理;所述令牌处理包括如下3情况:
k1.通道11传输的令牌,命名为令牌11,包括一个32位的数据域和一个2位的column域,打包时,令牌8的数据域直接复制到令牌11的数据域,令牌8的column域直接复制到令牌11的column域;
k2.当令牌8的属性域为0时,所述通道1发送的令牌,命名为令牌1,是状态字令牌,包括一个32位的数据域、一个4位的color域、一个2位的column域一个1位的操作符域和一个1位的属性域打包时,令牌8的数据域和column域直接复制到令牌1中同名的域中,令牌8的color域加1后的结果作为令牌1的color域,令牌1的属性域等于0,若令牌8的color域等于Nr-1,则令牌1的操作符域标记为Srd操作,否则令牌1的操作符域标记位SM操作;
k3.如果令牌8的属性域等于1,所述通道1发送的令牌1是变换密钥字令牌,包括一个32位的数据域、一个1位的操作符域、一个1位的fadd域和5位不关心的数据,打包时,令牌8的各域分别直接复制到令牌1中同名的域中;
l.输出暂存单元,是一个密文重排的暂存单元,由一个4×32比特的存储单元和令牌解析电路组成,该单元接收通道11来的乱序到达的结果令牌所携带的密文数据并暂存,写入的地址是所述令牌11的column域,写入的数据是所述令牌11的数据域,在接收到下述接收单元的读地址信号后输出对应的密文状态字;所述的暂存单元的每个存储单元都对应一个标记为flag的“满/空”标记位,当单元写入时flag置1,表示满,当数据读出后flag复位,表示空;
m.输出单元,该单元是所述芯片与外部的接口、实现把密文按要求的时序输出的功能;
n.Matcher OK匹配单元,检查所述输出暂存单元中的所有flag信号,当所有的flag都为1则表示全部密文字都已到达,则把结束信号OK变成高电位,在通知所述工作状态存储器的同时也通知所述输出单元读取所述输出暂存单元的密文状态字,当flag被复位后,OK信号变为低电位;
o.EU暂存器单元,由一个密钥字存储区和两个完全相同的状态存储区组成,依次标记为key store、store0和store1;其中,key store存储密钥扩展的变换密钥字,一条存储记录包括一个32位的数据域、一个1位的fadd域和一个1位的操作符域,store0/store1依次存储行移位之前“状态”中的第0-第3列,每列存储单元又分为4 行,第0行的记录包括1个8位的数据域、一个4位的color域和一个1位的操作符域,第1行至第3行的记录包含一个8位的数据域;所述两个状态存储单元按照乒乓式读写的流水线方式工作:根据输入令牌的轮次标记,当轮次为偶数时写入store0,store1中的数据必是前一轮的状态,从store1中读取数据处理;当令牌的轮次为奇数,则写入store1,store0必是前一轮状态的待处理数据,从store0中读取数据处理;该EU暂存器单元设有一个传输通道端口,接收所述轮更新通道开关单元经通道1发出的令牌1,从中解析出令牌类型:状态令牌还是密钥令牌、写地址和记录数据,并把记录写入相应的存储单元中;一个输出传输通道端口,与通道2相连,根据下述Matcher I匹配单元输入的读地址、store0/store1选择信号以及状态/变换密钥选择信号输出相应的状态字或变换密钥字,与其他控制信号一起打包成令牌,经通道2发送给下述EU运算单元;上述3个暂存区的每个存储单元都对应一个标记为flag的“满/空”标记位,当单元写入时flag置1,表示满,当数据读出后flag复位,表示空;
o1.所述的令牌解析方法是:当所述令牌1的属性域为0时,是状态字令牌,写入地址是令牌1的column域,写入记录的第0行的数据域是令牌1数据域的7至0位,第0行的color域是令牌1的color域,第0行的操作符域是令牌1的操作符域,写入记录的第1行到第3行的数据分别依次是令牌1数据域的15位至8位、23位至16位和31至24位;当所述令牌1的属性域为1时,是密钥令牌,令牌1的数据域复制到所述变换密钥字存储记录的数据域,令牌1的fadd域和操作符域直接复制到所述变换密钥字存储记录的同名域中;
o2.所述的经通道2发送的令牌被命名为令牌2,它的打包方法是:当所述的状态/变换密钥选择信号等于0时,令牌2是状态字令牌,属性域等于0,数据域的7到0位是地址等于所述的Matcher I匹配单元输入的读地址的第0行记录的数据域,数据域的15到8位是经过AES算法定义的行移位运算后的地址等于所述读地址的第1行记录的数据域,数据域的23到16位是经过AES算法定义的行移位运算后的地址等于所述读地址的第2行记录的数据域,数据域的31到24位是经过AES算法定义的行移位运算后的地址等于所述读地址的第3行记录的数据域,令牌2的color域和操作符域分别是地址等于所述读地址的第0行记录的color域和操作符域,令牌2的column域是所述读地址的值;当所述的状态/变换密钥选择信号等于0时,令牌2是密钥自令牌,属性域等于1,数据域是变换密钥存储记录的数据域,fadd域和操作符域分别是变换密钥存储记录的fadd域和操作符域;
p.Matcher I匹配单元,检查key store和store0/store1中的令牌信息,在考虑行移位变换之后发现就绪的状态字或者发现变换密钥则随机选取一个,把地址信息送给所述EU暂存器单元,并通过fetch_I信号触发通道2端口的触发信号,把所述EU暂存单元的令牌2发送给所述EU运算单元;所述Matcher I匹配单元的输入包括来自所 述EU暂存器单元的观测端口的信号,通道2端口的应答信号以及所述控制选择的随机信号;同时,向EU暂存器单元输出所述fetch_I令牌发送信号;
q.全局存储器,存储密钥分组列数Nk,迭代轮数Nr,其中,向EU暂存器、下述EU运算单元、Matcher II两个单元和密钥扩展运算单元输出Nk,向轮更新通道开关单元输出Nr,
r.EU运算单元,接收来自通道2的令牌2,解析后根据令牌2的属性域和操作符域以及所述密钥分组列数Nk对数据域执行相应的计算,操作结果打包到令牌3的数据域中通过通道3发送;其中,所述令牌3除数据域外,还有一个1位的属性域,其值等于所述令牌2的属性域值:当属性域等于0时,是状态字令牌,还有一个4位的color域和一个2位的column域;当属性域等于1时,是密钥字令牌,还有一个1位的fadd域,还有5位不关心的数据,打包时,令牌2的fadd域直接复制到令牌3的fadd域中;所述对于令牌数据域的计算包括:
r1.Srd操作,当令牌2的属性域等于0且操作符域为所述的Srd标记时或当令牌2的属性域等于1且操作符域为1且所述密钥分组列数Nk大于6时执行,即对数据域的每个字节执行AES算法定义的Srd查表操作;所述令牌2属性域等于1且操作符域为1时的操作即是上述的g变换在Nk大于6时的操作;
r2.Srd-MixCol操作,当令牌2的属性域等于0且操作符域为所述的SM标记时执行,即先对数据域的每个字节执行AES算法定义的Srd查表操作,再对4个字节的结果向量左乘一个4×4的常数矩阵,其中所述的常数矩阵为AES算法中定义的列混合操作对应的常数矩阵;
r3.Srd-循环移位-轮常量相加计算,是上述的f变换当令牌2的属性域等于1且所述密钥令牌的操作符域为0时执行,即先对数据域的每个字节执行AES算法定义的Srd查表操作,再将4个字节的结果循环左移8位,最后,所得结果的低8位与一个8位的轮常量RC逐位异或;所述轮常量初值为0,每执行一次轮常量加法运算后,其值乘以2,所述乘2操作是定义在GF(28)域上的;
r4.直接专发操作,当令牌2的属性域等于1且所述状态令牌的操作符域为1且Nk小于等于6时执行,即令牌2的数据域直接复制到所述令牌3的数据域;
所述令牌2属性域等于1且操作符域为1时的操作即是上述的g变换在Nk下与等于6时的操作;
s.Matcher II随机控制码产生电路,随机产生控制所述Matcher II匹配单元中仲裁电路的3位随机选择码,每次fetch_II下降时产生一个新的随机控制码;
t.Matcher I随机控制码产生电路,随机产生控制所述Matcher I匹配单元中仲裁电路的3位随机选择码,每次fetch_I下降时产生一个新的随机控制码;
u.2.上述的Matcher II单元与AK暂存单元构成了AddKey运算单元的令牌暂存-匹配-发射结构,简称为HMF结构,Matcher I单元与EU暂存单元构成了EU运算单元的HMF结构,Matcher K与AK暂存单元的密钥存储区构成了KeySchedule单元的HMF 结构,Matcher OK与输出暂存单元构成了输出的HMF结构;所述HMF结构具有如下特征:
u1.包含一个令牌暂存单元,由寄存器堆实现,写端口采用异步握手协议;写地址和写入数据由输入令牌解析得出,写入时钟由输入通道端口的请求信号触发;读端口的地址由下述匹配单元输出的选择信号决定,输出数据随读地址即时变化;内部存储单元对应有表示记录是否存在的“满/空”标志位,所有单元的满空标志位和记录与下述匹配条件相关的域的数据组成观测信号,可被下述匹配单元读取;所述输出数据可被下述令牌打包逻辑读取;所述满空标志位由一个C单元产生,该C单元的一端接对应记录的写入时钟,另一输入端接记录的清空信号信号的反信号;所述各个记录的写入时钟由写端口的接收应答信号经过写地址选择产生,所述各个记录的清空信号由所述读端口的应答信号经读地址选择产生;
u2.包含一个匹配单元,由匹配逻辑和选择逻辑电路两部分组成,暂存单元各个记录的观测信号输入匹配逻辑电路中按照匹配条件对应的布尔表达式算出各自的匹配结果值,匹配成功则值为1,否则等于0;每个匹配结果信号通过一级C单元输出到所述选择逻辑的输入端成为请求信号,所述C单元的另一输入端与所有请求信号的或信号相连,只有请求信号全为0时等于1的匹配结果才能传递到选择逻辑电路,当请求信号中存在有效请求,即为1的请求信号,在它之后产生的成立的匹配结果就无法通过C单元;请求对应的令牌被发送后,请求复位,C单元对成立的匹配结果导通;所述Matcher I和Matcher II单元的选择逻辑是一个仲裁逻辑电路,对每个被检测的令牌组的请求信号进行随机选择,输出的是选中请求的序号,并由此产生令牌暂存器的读地址;所述的Matcher K单元的选择电路是计算匹配成功的请求对应的所述step信号;所述Matcher OK没有选择电路;匹配单元的选择电路输出的请求序号通过锁存器输出成为令牌的选择信号;根据所述选择信号的选择选择对应的所述的请求信号成为令牌发射触发信号,如所述的fetch_II、fetch_I、fetch_K信号;
u3.令牌发射触发信号经过长度等于选择电路输出稳定所需的最长时间的延时后触发所述选择信号的锁存器的控制端将锁存器锁存,同时触发发送令牌的请求信号;所述暂存单元的复位应答信号将所述选择信号的锁存器的控制端复位,使锁存器导通,选择信号重新随所述匹配单元的选择逻辑电路输出变化;
在上述各单元中,
所有传输通道都采用异步握手协议;
所有运算单元的数据处理和令牌打包由组合逻辑电路实现;
所述通道开关单元Switch,初始密钥寄存器、AK暂存器单元、Matcher K匹配单元、密钥扩展运算单元共同构成了密钥扩展环,而通道开关单元Switch、MatcherII匹配单元、AddKey运算单元、轮更新通道开关单元、EU暂存器单元,Matcher I匹配单元、EU运算单 元构成轮变换环,环内用传输通道相连,环间用开关单元Switch相连。仿真结果
a)功能验证:
对最终的流片电路进行verilog和电路及仿真。其中verilog测试涵盖了AES标准官方网站提供的全部已知答案验证,全部通过。
b)乱序水平估计:
对采用发明结构和令牌传输关系实现的电路芯片处理128位明文、128位密文的情况做如下功耗差分测试:分别在乱序执行和确定顺序执行情况下采集密钥所有位等于0和所有位等于1时加密同一组明文的功耗曲线,求出它们的样本差分曲线,进行比较。实验中,加密的明文是1200个随机产生的128位分组。
使用功耗仿真的专门工具进行功耗仿真,完成上述测试。
图11是测试所得到的乱序执行和确定时序执行的功耗差分曲线。图中乱序执行的曲线尖峰峰值比较接近,分布范围广,确定顺序执行的曲线尖峰间的高度差较大,且分布集中,可以明显分辨出运算轮次。这体现了乱序执行对于功耗差分的平均化效果,经过平均化,乱序执行的最大差分小于确定时序的结果。由于最大差分是抗DPA的决定因素,因此乱序执行比确定执行有更高的实现安全性。乱序执行的最大功耗差分约是确定时序执行的66%。
附图说明:
图1 4相位握手协议传输通道。
图2 4相位异步握手协议。
图3 4相位握手协议异步传输通道实现电路。
图6 Rijndael算法的密钥分组间的计算关系。
图4 Rijndael的轮变换定义。
图5 ShiftRow图解(128位)。
图7 Rijndael密钥扩展结构。
图8 KeySch单元逻辑图。
图9密钥扩展实现方法流程图(a)Nk=4(b)Nk=6(c)Nk=8。
图10本发明的AES实现算法流程(a)密钥令牌处理流程;(b)状态令牌出来流程。
图11全0密钥与全1密钥的功耗差分曲线(Nb=4,Nk=4)。
图12结构图。
图13输入模块电路结构。
图14输出模块电路结构。
图15 HMF结构示意图。
图16令牌暂存器基本结构(4单元)。
图17匹配单元结构。
图18 4选1仲裁器电路(a)R-box0(b)R-box1(c)整体电路。
图19发射电路的逻辑图。
图20密钥扩展状态机。
图21pp信号产生电路。
图22Switch电路结构。
图23轮更新单元结构。
图24令牌1至EU暂存单元的转移关系(a)状态令牌(b)密钥令牌。
图25EU暂存器单元存储记录到令牌2的转移关系(a)状态令牌(b)密钥令牌。
图26令牌2到令牌3的转移关系(a)状态令牌(b)密钥令牌。
图27EU单元的各种运算的流程:(a)Srd运算(b)SM运算(c)RC运算。
图28令牌3到令牌5和令牌3到令牌6的转移关系(a)令牌3到令牌5(b)令牌3到令牌6。
图29令牌4到令牌5的转移关系。
图30令牌5到SR的转移关系。
图31令牌6到AK暂存单元的KR的转移关系。
图32AK暂存单元存储的数据到令牌7的转移关系(a)AddKey操作令牌发射(b)变换密钥字令牌转发(Nk>4)(c)变换密钥字令牌转发(Nk=4)。
图33令牌7到令牌8的转移关系。
图34令牌8到令牌1和令牌11的转移关系(a)密文令牌发送(b)状态令牌轮次更新(c)密钥令牌转发。
图35令牌10到令牌9的转移关系。
具体实施例
我们按照本发明实现了一个数据流AES加密芯片(THDFAES04),并进行了投片实验。下面以此为例介绍具体实施办法:
1.工作方式
芯片每次处理一个分组,在开始加密前首先通过数据输入总线将密钥列数(Nk)和初始密钥分别送入芯片内部的设置寄存器和初始密钥存储器中。然后再将明文分组送入芯片。启动信号触发芯片开始工作。最终运算结果先被暂存在输出寄存器中,当输出寄存器被填满——即整个分组都产生之后,结束信号(OK)变高,结果数据可以从数据输出总线读出。每次开始输入新的分组时,初始密钥存储器的数据都会被重新写入内部的密钥暂存器。
2.电路结构
它的整体电路结构如图12所示。它包含:输入模块、输出模块、密钥扩展运算单元(KeySchedule)、AddKey和EU三个运算单元、AK暂存单元、EU暂存单元和输出暂存单元三个令牌暂存单元,Matcher I、Matcher II、Matcher K和Matcher OK四个匹配单元以及Switch和轮更新两个通道开关单元,构成了“轮变换环”和“密钥扩展环”两个环状结构,环上各部件用异步传输通道相连。此外,还包含一些全局寄存器存储全局变量。其中AK暂存单元又 分为密钥字存储区和状态字存储区两部分;EU暂存单元由一个密钥字存储区和两个完全相同的状态字存储单元组成。电路中有两个相同、彼此独立的随机控制码产生电路,分别为MatcherI和Matcher II的仲裁电路提供随机控制码,其中WK表示工作状态寄存器,Nk,Nr分别是密钥分组的列数和迭代轮数,都是内部的全局寄存器,还有保存初始密钥的初始密钥存储器。
图中每个传输通道都标了一个编号,每个通道上传输固定的令牌格式,这些编号就是对应的令牌编号。
各个部件的功能描述如下:
传输通道与通道端口:
在图12中用空心宽箭头表示传输通道,箭头表示数据传输方向。所传输的数据是相应编号的令牌。THDFAES04采用4相位捆绑数据握手协议的异步传输通道。
输入模块:
芯片内核与外部的接口,实现将明文按照要求的时序输入的功能,对内分别按照令牌4格式输出明文数据,将初始密码密钥直接存入初始密钥存储器。此外,还产生对内的复位信号InterRst_,初始密钥加载信号load。
图13是输入模块的电路结构图,其中CKIN信号是输入时钟,外部输入信号还包括输入数据总线和复位信号、地址信号和使能信号,复位信号可以复位整个芯片,控制电路根据输入的地址控制输入数据分配逻辑,将输入数据存储到相应寄存器中:明文存入明文缓存器,它是一个串行输入、并行输出的移位寄存器,可以存储32位的明文数据;密钥存入内核部分的初始密钥存储器;Nk值存入Nk寄存器;随机顺序控制序列分别存入内核部分的随机顺序控制序列寄存器I和入随机顺序控制序列寄存器II。使能信号控制芯片的输入是否有效。控制电路中包括一个计数器记录当前明文序号,明文缓存器的输出与打包逻辑电路相连,将计数器的低2位作为令牌4的column域,将明文缓存器的输出作为令牌4的数据域,当写入的明文数达到32位,则触发通道4端口将打包电路输出的令牌4发送到通道4中。启动信号触发load信号将初始密钥存储器中的数据置入AK暂存器单元的密钥存储区,load信号触发WK信号变为高电平。InterRst_信号是内核电路的复位信号,不能复位初始密钥存储器,在开始输入明文数据的时候,InterRst_信号出现一个负脉冲将内核电路复位,准备执行新的加密任务,但是初始密钥仍然保留。
芯片内核与外部的接口,实现将密文按照要求的时序输出的功能。其功能是从输出暂存单元中读取结果,并按要求输出。输入信号包括输出暂存单元的数据输出、OK信号和外部读数时钟CKOUT;输出除了密文等对外接口外,还有输出暂存单元的2位读地址和读取擦除信号(OUTACK)。
输出模块:
芯片内核与外部的接口,实现将密文按照要求的时序输出的功能。其功能是从输出暂存单元中读取结果,并按要求输出。输入信号包括输出暂存单元的数据输出、OK信号和外部读数时钟CKOUT;输出除了密文等对外接口外,还有输出暂存单元的2位读地址和读取擦除信号(OUTACK)。
图14是输出模块的电路结构图,其中的控制电路接收OK的上升沿后即触发cpl信号,使地址累加器开始工作——从0开始每2个时钟周期加1,地址累加器的输出即是输出暂存单元的读地址,输出缓存是一个并行输入串行输出的移位寄存器,ren信号是它的置数控制端。ren在每次地址变化前有效,此时,在下降沿将输出暂存单元的输出置入输出缓存,随后ren 复位,每个CKOUT的上升沿将输出缓存的数据串行输出到输出数据端口。每次ren信号复位即触发OUTACK信号的正脉冲,清除输出暂存单元中的记录。
初始密钥存储器:
初始密钥存储器是一个256位的寄存器组,保存着由输入模块写入的密钥。它的时钟端由输入模块控制。
HMF结构:
发明结构中共包括AddKey单元的HMF结构,由AK暂存单元、Matcher II组成,EU单元的HMF结构,由EU暂存单元、Matcher I组成,KeySchedule单元的HMF结构,由AK暂存单元的状态存储区、Matcher K组成,输出HMF结构,由输出暂存单元和Matcher OK组成。THDFAES04中采用的HMF电路的典型结构如所示:
它由令牌暂存器、匹配单元和发射电路组成,其中Matcher电路又分为匹配电路和选择电路两部分。选择电路一般是一个仲裁器,由顺序控制码(rand)控制。图中实心宽箭头表示HMF与外部间的传输通道。WA和WD分别表示暂存器的写地址和输入数据端口,RA和RD分别表示读地址和输出数据端口。
其工作方式是:外部输入的令牌先存储于暂存器中。暂存器中每个令牌记录都有相应的“满/空”标志位(flag),在数据写入时flag置1,读出后CLR信号的高电平则将RA所指的记录清空(对应的flag位复位)。CLR_done是CLR信号的应答信号,它的下降沿表示flag复位完成。
匹配单元读取暂存器内部所有令牌的flag位以及与匹配条件相关的令牌标签域(Tags)并计算它们的匹配函数(匹配条件的命题公式)值。每个匹配函数值是一个“请求”信号,匹配函数值为真则表示请求有效。如果存在有效的请求,则fetch=1。匹配单元中的仲裁单元按照rand的值,从所有有效请求中选择一个,并把选中请求的序号(select)输出。
发射电路在空闲状态时如果发现fetch上升,则锁存select信号,并根据select产生读地址address,再将得到的输出数据data与地址以及其它需要的信息打包成新的令牌发送到执行单元。执行单元的应答信号触发clear将读出的令牌记录清空,此时,发射电路再次进入空闲状态。发射电路在发送操作过程中不处理新的发送请求。
令牌暂存器
THDFAES04中令牌暂存器的存储单元由寄存器实现。图16是一个4单元暂存器的示意图,图中仅画出了一组存储单元。每组单元由一组寄存器和一个flag标志电路组成,寄存器时钟(clk)的上升沿在clr为0时将flag置1,清除信号(clr)的正脉冲在clk为0时可以将flag复位。WA和WD由输入令牌解析,reqin和ackin分别表示输入通道端口的写请求和写应答信号。只有当flag信号为0时才能接受请求,数据在写请求被接受后写入寄存器。输出数据则通过一级多路选择器(MUX)直接输出,RD随RA即时变化。CLR信号经过RA的选择触发对应单元的clr信号,当所有clr信号都降低后CLR_done下降,作为记录清除过程结束的标志。
匹配单元
图17是一个基本的4请求匹配单元结构,其由匹配逻辑部分、请求仲裁部分和选择保持-请求阻塞电路三部分组成。
匹配逻辑部分实现匹配函数计算,由组合电路实现,计算结果通过C单元送达仲裁器成为请求信号。
THDFAES04中的仲裁器采用了May D.论文中的R-box电路,如图18所示,这是一个4选1的仲裁逻辑。I0~I3表示输入的请求,A0、A1是被选中的请求的序号。
暂存器进行数据读写的时刻不确定,设计时认为观测端口的信号随时可能变化,仲裁器的输出端也随之不断变化,因此需要同步select信号与令牌发送,以保证输出通道的请求信号有效时,发射电路的输出数据是稳定的。因此在仲裁器输出端设置select锁存器。假设初态fetch=0,锁存器导通(lock=0),当select信号变为有效请求的序号,fetch上升,发射电路接收到fetch信号后则将lock信号变高,锁存select,待发射完毕,对应令牌清空后,被选中的请求信号复位——此时select仍然没有变化——fetch也随之复位。发射电路转入空闲状态后,lock变低,锁存器透明,直至再次出现fetch=1的情况。另一方面,图中的C单元和4输入或门组成了反馈阻塞电路。只要请求信号中存在有效请求就会阻塞新请求的通过,但是请求的复位不被阻塞,只有所有仲裁输入端的有效请求都复位后C单元才重新导通。阻塞电路使得仲裁器输出经过一定时间后必然能够稳定,在fetch上升后经过相同的延时再采样select即可避免“冒险”。显然,此时的select值可能已经不是触发fetch的请求的序号,但是必定对应一个有效请求,因此并不影响电路功能。
发射电路
图19是发射电路部分的逻辑图与主要信号波形图。
图19a中R与C单元是令牌的接收通道;阴影部分的电路是地址锁存信号lock的产生电路;req和ack分别是输出通道端口的请求信号和应答信号,ackout是下一级电路的应答信号。其余信号与图15对应;d1是用于延时匹配的延时单元。
电路中所有时序单元的初始状态全为0,fetch的上升沿经过d1(select的稳定时间)延时后成为fetch_d信号,fetch_d上升则发射电路进入发射状态(对应图中带阴影的区域)。fetch_d的上升沿首先触发lock信号,将有效请求的序号锁存。req由lock门控输出。lock信号在req的上升沿至clr_ack下降沿之间的时间内始终保持高电平。
THDFAES04中各个HMF结构都是在上述典型结构的基础上稍加变化而来的,首先实际实现中各个发射电路都合并到各暂存单元的暂存器输出部分中了,下面具体介绍它们的具体参数和变化之处——在下文没有特别说明的内容即与上述典型结构相同:
√AddKey的HMF结构:
a)AK暂存单元:
AK暂存单元是待执行AddKey运算的令牌暂存单元其中的存储部分分为密钥字存储区和状态字存储区两部分,另外还包含了令牌解析和打包电路。
(1)密钥字存储区有8个密钥字记录存储单元和两个中间密钥字存储单元。
密钥字存储空间的地址空3位地址,地址空间是(000)2-(111)2
依次存储前述“密钥分组”模Nk等于0-7的密钥字,如果Nk<8,则高地址单元空闲;按照地址此部分分为高低两段,高段为(100)2-(111)2;低端为(000)2-(011)2
中间密钥字部分有1位地址,地址空间是0-1;依次存储f和g。
另有两个5位内部存储器:BLOCKH,BLOCKL和1个2位操作标记寄存器KES。BLOCKL是低段密钥字的“分组值”;BLOCKH存储高段密钥字的“分组值”。KES用来控制密钥扩展的时序,其状态机如图20所示。
在每次读取相应的密钥字进行f/g变换和读取密钥进行密钥扩展时KES的状态发生变化。它的初始状态是00,即准备计算f的状态。
密钥字部分和中间密钥字部分的记录格式如下:
密钥字记录(KR):
每个记录的满/空标志位(flag)是当数据被写入时(op=(11)2)置1,当op=(11)2时被复位。
f/g记录(FR):
Figure 2005100869198A00800212
它含有两个写端口,分别是密钥字和中间密钥字的写入端口,包含写入数据总线和写地址;两个读端口,分别对应令牌7和令牌9的数据域,都是包含数据总线和读地址,对应令牌7数据域的总线宽度为32位,从Nk个密钥字和2个中间密钥字中选择一个读出,对应令牌9数据域的总线宽度160位,一次读出一个密钥段和一条中间密钥字。
(2)状态字存储区有4个状态字存储单元:
地址空间:(00)2-(11)2
依次存储“状态”中的第0-第3列.
记录格式(SR)
Figure 2005100869198A00800213
状态字区有一个写端口,包括数据总线(宽度为26)、写地址、写信号;一个置数端口,与初始密钥存储器的输出相连,256位宽,由load信号作为置位信号;有一个读端口,数据总线是36位,对应令牌7的data域与color域。当AorT为1时,输出地址所指的状态字,当AorT为0时,则输出0。
AK暂存单元端口包括:三个输入通道端口,通道5端口接收状态字令牌;通道6端口接收经过非线性变换的中间密钥字f,g令牌;通道9端口接收新的扩展密钥字;有两个输出通道端口:通道7端口发送AddKey的操作数令牌(令牌7);通道10端口发送密钥扩展的操作数令牌。各令牌的打包函数见令牌传输部分。此外,还有置数端口:包括初始密钥输入总线、load、WK信号。
b)MatcherII:
它检查AK暂存单元中的状态区和密钥区,发现就绪的状态字-密钥字对,或就绪的变换密钥则随机选取其中之一,将相应的地址和选择信号(ssel,ksel,AorT)传给AK暂存单元。Matcher II读取的观测信号包括状态字记录的color域与flag标志,密钥字的op域与flag标志。匹配条件表达式见后面的令牌传输关系部分;它的仲裁逻辑分为两级,第一级是从满足AddKey运算条件的请求中选择一个,第二级是选择执行AddKey操作还是执行变换密钥字的转发;对应的发射令牌接收通道是通道7,输出的请求选择信号包括状态字读地址(ssel)和密钥字读地址(ksel)与令牌类型标志信号AorT,对应的令牌发射信号是fetch_II信号;当发送的是变换密钥字令牌时,通道7的应答信号将密钥字记录的op域的轮变换位置1,而不是复位flag标志。如果exp_stop=1,则Matcher II不发送变换密钥字转发的操作请求。
上述匹配单元中的仲裁器的随机控制码由随机顺序控制序列寄存器I提供。
√密钥扩展的HMF结构
密钥扩展的HMF结构的令牌暂存器与AddKey的HMF结构共用AK暂存单元的密钥区,此外,它的暂存器还包括AK暂存单元的中间密钥字单元。
Matcher K的观测信号包括:密钥字的op域与flag标志、中间密钥字的flag、KES、BLOCKL和BLOCKH;匹配条件见后面令牌转移关系部分;输出的请求选择信号是段标记step,打包逻辑根据step,将密钥区的相应数据以及BLOCK值打包成令牌10待发送,具体打包逻辑见令牌传输关系部分;由于密钥扩展运算不会同时存在多个待执行操作的令牌组,所以内部没有仲裁电路;令牌发射信号是fetch_k;当收到通道10的应答信号则将step所指段内所有记录的op域的扩展位置1。在Wk为0时,即非工作状态,load信号的上升沿将初始密钥存储器中的数据写入密钥字区。
√EU单元的HMF结构
a)EU暂存单元:
EU暂存单元中包含一个变换密钥字存储单元key store和两个相同的状态存储单元store0,store1.
(1)store0/store1:
地址空间:(00)2-(11)2,依次存储ShiftRow前“状态”中的第0-第3列,每列又分为4行,对应状态中的行和列;
store0和store1中包括两种单元,它们的记录形式不同。头记录(HDR)——对应状态的第0行,存储记录格式如下:
Figure 2005100869198A00800231
普通记录(DR)对应第1行到第3行,记录格式如下:
Figure 2005100869198A00800232
store0和store1各包含一个读端口,一个写端口,都有各自的地址和数据总线。写入时各行的地址相同,读出时每行有独立的读地址。
(2)key store:
只有一个存储单元。存储密钥扩展的中间结果
记录格式(KR)
Figure 2005100869198A00800233
EU暂存单元中的两个状态存储单元是按照乒乓式读写的流水作业方式:根据输入令牌的轮次标记,当轮次为偶数时写入store0,store1中的数据必是前一轮的状态,从store1中读取数据处理;当令牌的轮次为奇数,则写入store1,store0是前一轮状态其中有待处理的数据,从store0中读取数据处理。在一个单元中无待处理的数据,另一个单元中出现待处理数据时store0和store1的角色交换。图12中的pp信号即是输出状态暂存单元的选择信号,它为1 store1输出,为0 store0输出。
EU暂存单元有一个输入传输通道端口,与通道1相连;一个输出传输通道端口,与通道2相连,令牌的打包函数见令牌传输关系部分。EU暂存单元的功能是接收通道1发来的令牌1,从中解析出令牌类型(状态令牌还是密钥令牌)、写地址和记录数据,并将记录写入相应的存储单元中;根据pp,s_f,raddr输出相应的状态字或变换密钥字,与其它控制信息一起打包成令牌2;fetch_I信号触发2#通道端口的请求信号,将打包好的令牌发送给通道2,通道端口2的应答信号到来,则将被发送令牌对应的记录的flag复位。
b)MatcherI
Matcher I包括Matcher I内部包括两个状态令牌匹配单元和一个密钥令牌匹配单元。store0的匹配结果matched0和store1的匹配结果matched1被送到乒乓控制信号pp的产生电路,pp的产生电路如图21所示:
store0/store1的观测信号包括:每个单元的flag位,以及各个HDR的color域、op域;输出的请求选择信号包括store0/store1的读地址raddr(2位);具体匹配条件见令牌传输关系部分;状态匹配单元内部有一个4选1的仲裁电路,从匹配的待执行EU单元运算的令牌中随机选取一个。
密钥匹配单元的观测信号是密钥存储单元的flag标志;匹配条件是flag=1。在MatcherI中还有一个2选1的仲裁电路,从状态匹配单元的请求和密钥匹配单元的请求中随机选取一个,对应的操作选择信号是s_f;对应的令牌发送信号为fetch_I。
上述匹配单元中的仲裁器的随机控制码由随机顺序控制序列寄存器I提供。
√输出HMF:
a)输出暂存单元:
输出暂存单元是密文重排的暂存单元,其作用是将乱序到达的结果令牌(11#)携带的密文数据暂存,然后再由输出模块按正确顺序读出。其由一个4X32的存储单元和令牌解析电路组成。其中存储单元地址空间为(00)2-(11)2。分别对应密文状态中的0-3列。
记录格式为:4个字节的数据。每个记录同样对应一个满/空标志位flag。
它有一个输入通道端口:与传输通道11相连;输出端口包括来自输出模块的2位读地址和清空信号OUTACK。
b)Matcher OK:
它检查输出暂存单元的4个flag信号,当所有的flag都为1时表示4个密文字都已到达。则将结束信号OK变高,通知输出模块开始读取数据,当flag被复位后,OK变低。由于没有多个请求同时出现的情况,因此没有仲裁电路和请求选择信号,也没有对应的令牌发射信号。
密钥扩展运算单元(KeySchedule):
KeySchedule单元输入令牌10,解析令牌10后,经过Key Schedule计算后将结果打包成令牌9输出。具体处理操作见后面的“令牌传输协议部分”。由输入传输通道端口、逻辑部分(包括令牌解析、处理和打包)与输出传输通道端口三级组成。
AddKey:
AddKey单元输入令牌7,解析令牌7后,对其中的数据执行AddKey操作,将结果重新打包成令牌8发送。具体处理操作见后面的“令牌传输协议部分”。由输入传输通道端口、逻辑部分(包括令牌解析、处理和打包)与输出传输通道端口三级组成。
EU:
EU单元输入令牌2,解析令牌2后,根据令牌类型和轮次对其中的数据执行相应的操作,将结果重新打包成令牌3发送。具体处理操作见后面的“令牌传输协议部分”。由输入传输通道端口、逻辑部分(包括令牌解析、处理和打包)与输出传输通道端口三级组成。
Switch:
Switch是一个2通道输入-2通道输出的交换开关,两个输入通道开端口分别是来自轮变换轮的3#通道端口和来自输入模块的4#通道端口;此外还有输入信号:WK。其在空闲状态 (WK=0)将4#通道端口发来的令牌4解析后,将其中的数据重新打包成令牌5发送给通道5;在工作状态(WK=1)将3#通道发来的令牌3解析后根据类型,将状态令牌重新打包成令牌5发送给通道5;将中间密钥字令牌重新打包成令牌6发送给通道6。其电路结构如图22所示,其中的箭头表示异步传输通道,图中的DEMUX和MUX也是异步控制部件,DEMUX在传来的Key的数据等于1的情况下,把输入端令牌数据复制到通道6,否则复制到MUX的输入通道,MUX在WK=0时,把通道4的数据传递到通道5,否则传递DEMUX的0输出端数据到通道5;在输入端,通道3来的令牌3被分解为两个令牌请求,分别送到DEMUX的输入端和控制端,控制端是令牌3的属性域;MUX的控制端则是WK信号。令牌间的各个域的映射关系,见后面的令牌传输协议部分。
轮更新单元:
图23是轮更新单元的电路结构。其中第一级DEMUX与图22相同,判断令牌属性,如果是密钥令牌则直接复制到通道1,如果是状态令牌,则经过第二级DEMUX,如果输入令牌的color域等于Nr,则把令牌的一部分复制到通道11,同时对令牌的column域检查(即图中的exp_stop?单元),如果column>3,则则表示所有的扩展密钥已经全部产生(因为扩展密钥是一次产生一个“段”的。)则触发exp_stop信号(exp_stop信号在新一轮运算启动时复位。);如果令牌的color<Nr则将令牌的color域加1后复制到通道1;图中与通道1相连的矩形是异步电路中的基本部件——“Join”控制部件:它的两路输入不会同时有令牌到达,它把到达的令牌复制到输出通道。
随机顺序控制序列寄存器I
THDFAES04的随机顺序控制序列采用外部输入的方法,图12中的随机顺序控制序列寄存器I对应发明内容中的Matcher I随机控制码产生电路,它是一个环形的移位寄存器,在运算开始前通过外部输入数据端口把一组随机序列输入到随机顺序控制序列寄存器I中;在工作过程中寄存器中的数据循环移位——每次fetch_I的下降沿移位一次,其中有一级寄存器的输出连接到Matcher I的随机码输入端。
随机顺序控制序列寄存器II
THDFAES04的随机顺序控制序列采用外部输入的方法,图12中的随机顺序控制序列寄存器I对应发明内容中的Matcher II随机控制码产生电路,它是一个环形的移位寄存器,在运算开始前通过外部输入数据端口把一组随机序列输入到随机顺序控制序列寄存器II中;在工作过程中寄存器中的数据循环移位——每次fetch_II的下降沿移位一次,其中有一级寄存器的输出连接到Matcher II的随机码输入端。
补充说明:为了突出重点在上述描述中没有提到复位信号InterRst_的连接关系,事实上上述各单元除了输入模块产生InterRst_外,其余模块都有InterRst_的输入,用于电路初始化。
3.令牌传输协议
如下的令牌传输协议在上述部件和结构上执行,以实现AES加密算法:
可参见介绍异步电路的书籍
5.13令牌定义:
Figure S05186919820051124D000261
令牌1:
Figure 2005100869198A00800262
Figure S05186919820051124D000262
令牌2:同令牌1
令牌3:
Figure S05186919820051124D000264
令牌4:
Figure 2005100869198A00800266
Figure S05186919820051124D000265
令牌5:
Figure 2005100869198A00800268
Figure S05186919820051124D000266
令牌6:
Figure S05186919820051124D000267
令牌7:
Figure 2005100869198A00800271
Figure S05186919820051124D000271
令牌8:
令牌9
Figure 2005100869198A00800275
Figure S05186919820051124D000273
令牌10:
Figure 2005100869198A00800277
令牌11:
Figure 2005100869198A00800283
5.14  数据、令牌转移关系
Figure S05186919820051124D000282
令牌1至EU暂存单元记录的变换协议
如果令牌1的key等于0,则当color为偶数时写入store0,color为奇数时写入store1,写入地址为令牌1的column域的值,令牌1各个域与HDR、DR1-3各个域的映射关系如图24(a)所示,其中令牌1的data域的最低字节(第7到第0位)至最高字节(第31位到第24位)依次分别写入第0行至第3行的存储单元中;如果令牌1的key域等于1,则令牌写入EU暂存单元的key store中,令牌1各个域与KR各域的映射关系如图24(b)所示。
EU暂存单元记录至令牌2
Matchr I对store0或store1中的数据进行匹配,匹配条件是:存在列数i,满足:第一行第i列、第二行第i-C1列,第三行第i-C2列,第四行第i-C3列的存储记录都是“满”,对应的匹配单元输出,即store0和store1的读地址等于i。它同时对key store中的变换密钥字进行匹配,匹配条件是:FR记录是“满”。当符合上述条件的数据多于一个时,则随机选取一个发送,对于状体令牌,如果pp=1则当store1中的数据满足匹配条件时由store1的相应数据打包成令牌2发射,否则当store0中的数据满足匹配条件时由store0的相应数据打包成令牌2发射;如果pp选择的状态存储区中没有满足条件的令牌数据,而另一个状态存储区中存在满足匹配条件的令牌数据,则pp取反。状态存储区中的HDR、DR记录与令牌2的各个域的映射关系如图25(a)所示。FR记录各个域与令牌2的各个域的映射关系如图25(b)所示。
令牌2->令牌3
令牌2到令牌3的各个域间的映射关系如
图26所示。其中令牌2的data域经过EU单元计算后,结果作为令牌3的data域。
EU计算的具体操作根据令牌2的其它域的取值而定:
当key=0且op=Srd时,执行Srd操作;
当key=0且op=SM时,执行SM操作;
当key=1且remain=0时,执行RC操作;
当key=1且remain=1时,若Nk>6,执行Srd操作;若Nk<=6,结果即等于令牌2的data域。上述各个操作的流程图如图27所示。RC运算中用到的轮常量RC在线产生,即芯片初始化时将RC寄存器复位为初值“(01)16”,每次执行RC运算后(通 道3端口应答信号的上升沿表示运算结束)触发寄存器时钟上升即把当前RC值乘2后存入RC寄存器(此处的乘法是定义在GF(28)域上的乘法);Srd用ROM实现附录A所述的S盒查表操作;MixCol即实现附录A式1的计算;
Figure S05186919820051124D000291
令牌3->令牌5和令牌6
当令牌3的key=0时,产生令牌5,当令牌3的key=1时,产生令牌6。令牌3到令牌5和令牌6的各个域间的映射关系如图28所示
Figure S05186919820051124D000292
令牌4->令牌5
令牌4各个域到令牌5的各个域间的映射关系如图29所示。
Figure S05186919820051124D000293
令牌5->AK暂存单元中的SR
令牌5的内容存储到AK暂存单元的状态暂存区中,存储地址是令牌5的address,其它各个域与SR的各个域的映射关系如图30所示。
Figure S05186919820051124D000294
令牌6->AK暂存单元中的KR
令牌6的数据存入AK暂存单元的中间密钥字存储区,地址是它的address域,其它各个域与KR的各个域的映射关系如图31所示。
Figure S05186919820051124D000295
AK暂存单元->令牌7
Matcher II对应的匹配条件有两个,AddKey匹配条件是:存在一对状态令牌(用SR[i]表示)和密钥令牌(用KR[j]表示),它们的存储地址分别是i和j,满足:
SR[i].color·Nb+i=BLOCKX·Nk+j且SR[i]的op=0且KR[j]的轮变换位等于0,
其中SR[i].color表示SR[i]的color域,对于j<4时,BLOCKX=BLOCKL,j≥4时,BLOCKX=BLOCKH。相应的匹配输出ssel=i,ksel=j,AorT=0;
Trans匹配条件是:KES=(00)2且地址等于Nk-1的密钥存储单元不空,且exp_stop=0。相应的匹配输出ssel=0,ksel=Nk-1,AorT=1;或者Nk>4时KES=(11)2 且地址等于3的密钥存储单元不空,相应的匹配输出ssel=0,ksel=3,AorT=1;或Nk=4时KES=(11)2且地址等于7的密钥存储单元不空且exp_stop=0,相应的匹配输出seel=0,ksel=7,AorT=1;
如果同时有多个令牌(或令牌对)满足上述条件,则随机选择一个。当发送状态令牌,即发送AddKey操作令牌时的令牌7打包映射关系如图32a所示;当发送密钥令牌,即进行变换密钥字转发时的令牌7打包映射关系如图32b-c所示,它们分别对应Nk>4和Nk=4的情况。
Figure S05186919820051124D000296
令牌7->令牌8
令牌7与令牌8的各个域间的映射关系如图33所示。其中,令牌7的data1和data2逐位异或的结果作为令牌8的data域。
令牌8->令牌1或令牌11
当令牌8的key=0且color=Nr时产生令牌11,各个域的映射关系如图34a所示;当令牌8的key=0且color<Nr时,执行轮次更新后产生令牌1,各个域的映射关系如图34(b)所示,其中令牌8的color域加1后作为令牌1的color值,当令牌8的 color=Nr-1时,令牌1的op=Srd,否则op=SM;当令牌8的key=1时,即密钥令牌,产生令牌1,令牌8的内容直接复制到令牌1种,映射关系如图34c所示。
Figure S05186919820051124D000301
令牌10->令牌9
令牌10到令牌9的各个域间的映射关系如图35所示。其中令牌10的f,k0,k1,k2,k3经过KeySch计算的结果作为令牌9的data域,BLOCK加1后作为令牌9的BLOCK值。当Nk=4时,令牌9的part等于令牌10的step的反,Nk>4时,令牌9的part=令牌10的step。
令牌9->KR
如果令牌9的part=0,则令牌9的data写入密钥暂存区的低段,令牌9的BLOCK值赋给BLOCKL,写入的同时将低段暂存单元的op域的两位都复位成0;如果令牌9的part=1,则令牌9的data写入密钥暂存区的高段,令牌9的BLOCK值赋给BLOCKH,写入的同时将高段暂存单元的op域的两位都复位成0。
令牌9写入时要更新KES的状态,具体状态转移关系是:
当KES=(01)2时,如果Nk>4且令牌9的part=0,或者Nk=4且令牌9的part=1,则KES变为(11)2
当KES=(10)2时,如果Nk>4且令牌9的part=1,或Nk=4且令牌9的part=0,则KES变为(00)2
Figure S05186919820051124D000303
MatchingUnit->令牌10
Matcher K对AK暂存单元的密钥暂存区中的数据进行匹配,匹配条件是:所有低段密钥记录的op的低位都为0且中间密钥字1存在,相应的匹配单元输出step=0;或者存储地址为4到存储地址为Nk-1的密钥记录的op的低位都为0且中间密钥字2存在,相应的匹配单元输出step=1;
当step=0时,令牌10的f等于中间密钥字1的data,k0,k1,k2,k3依次分别等于存储地址为0,1,2,3的KR的data,BLOCK等于BLOCKL;当step=1时,令牌10的f等于中间密钥字2的data,k0,k1,k2,k3依次分别等于存储地址为4,5,6,7的KR的data,BLOCK等于BLOCKH。

Claims (1)

1.乱存执行的数据流AES加密电路结构,其特征在于,该电路结构是在一个数据流加密专用集成电路上实现的,该电路结构遵从以Rijndael算法为最终算法的高级数据加密标准,记为AES,使用数据流模式实现乱序加密,该电路结构含有:
a.传输通道,是两个部件间的数据传输接口,所传输的数据是相应编号的令牌,其中包括一个令牌输入数据总线、一个数据输出总线和输入请求与应答信号、输出请求与应答信号,该传输通道与外部的接口就是通道端口;
b.输入单元,是芯片内核与外部的接口,实现把明文和密钥按照协议要求的时序输入并通过4#传输通道将明文送入内核部分、把密钥写入初始密钥存储器的功能,同时产生该电路结构中内核的各个单元所需的复位信号InterRst_和初始密钥置入信号load;所述的4#通道传输的令牌,命名为令牌4包括一个32位的数据域,一个2位的column域;
c.通道开关单元Switch,是一个2传输通道输入-2传输通道输出的交换开关,此外还接收来自工作状态寄存器的输入信号WK,当WK=0时,该通道开关单元处于空闲状态,接收所述输入单元经4#通道送来的明文数据,经过解析后,把其中的数据重新打包成状态字令牌,发送给5#通道,所述的5#通道传输的令牌,命名为令牌5包括一个32位的数据域,一个4位的表示轮次的color域和一个2位的地址域,根据令牌4打包时,令牌5的数据域直接复制令牌4的数据域,令牌5的color域设为0,令牌5的地址域复制令牌4的column域;当WK=1时,处于工作状态,把3#通道发来的令牌解析后,根据下述属性域的取值不同,重新打包成一个令牌发给5#通道或6#通道;所述的3#通道传输的令牌,命名为令牌3,一共40位,包括一个1位的属性域和一个32位的数据域,当属性域等于0时,是状态字令牌发送给5#通道,余下的7位包括一个1位的操作符域、一个2位的column域、一个4位的color域,令牌3重新打包成令牌5时,其中的数据域直接复制到令牌5的数据域,color域直接复制到令牌5的color域,column域直接复制到令牌5的地址域;当令牌3的属性域等于1时,是密钥字令牌发送给6#通道,除了属性域和数据域之外还包括一个1位的fadd位,其余的6位是不关心的数据;所述发送到6#通道的令牌,命名为令牌6,是下述的中间密钥字令牌,包括一个32位的数据域和一个1位的地址域,把令牌3打包成令牌6时,令牌3的数据域直接复制到令牌6的数据域,fadd域复制到令牌6的地址域;
d.初始密钥存储器是一个256位的寄存器组,从所述输入单元接收时钟信号和输入的密码密钥数据,把来自所述输入单元的密码密钥直接接收存入;
e.AK暂存器单元,是待执行AddKey运算的令牌暂存单元,包括令牌解析电路、令牌打包电路和下述5组寄存器:具体有4个状态字存储单元组成的状态字存储区、8个密钥字存储单元组成的密钥字存储区,2个中间密钥字存储单元组成的中间密钥字存储区、两个5位BLOCK值寄存器BLOCKH和BLOCKL及一个2位状态寄存器KES,所述密钥字存储区有3位地址,二进制表示的地址空间是000-111,依次存储序号模密钥分组列数Nk等于0-7的扩展密钥字,地址范围在100-111之间的称为高段,地址范围在000-011之间的称为低段,每条存储记录包括一个32位的数据域、一个1位的fadd域、一个轮变换标记位和一个扩展标记位;所述密钥字存储器中地址等于Nk-1的单元存储的数据称为变换密钥字1,Nk不等于4时地址等于3的记录数据或Nk等于4时地址等于7的记录数据被称为变换密钥字2;所述状态字存储区有2位地址,二进制表示的地址空间是00-11,依次存储状态中的第0-3列,每条记录包括一个32位的数据域、一个4位的color域;该中间密钥字存储区,有一位地址空间:0-1,依次存储从通道端口6来的中间密钥字,该中间密钥字是AES密钥扩展算法中定义的非线性函数的计算结果,每条存储记录包括一个32位的数据域;所述的密钥字存储区、中间密钥字存储区和状态字存储区的每个存储单元都对应一个名为flag的“满/空”标记位,当存储单元写入时flag置1,表示满,当数据读出后flag复位,表示空;该BLOCKH存储高段密钥字的“分组值”,BLOCKL存储低段密钥字的“分组值”,所述“分组值”是指所有轮扩展密钥序列按所述Nk个一组分组后,所得到的组的序号,该扩展密钥由初始密钥扩展而成,该扩展密钥的总长为4(Nr+1),Nr为迭代轮数;该AK暂存器单元有三个输入通道端口:通道5端口接收令牌5并写入状态字存储区,写入的地址是令牌5的地址域的值,状态字记录的数据域和color域分别等于令牌5的数据域和color域,通道6端口接收令牌6,写入中间密钥字存储区,写入地址是令牌6的地址域的值,写入记录的数据域直接复制令牌6的数据域,通道9端口接收新的扩展密钥字令牌并写入密钥字存储区,另外,AK暂存器单元还有一个输入总线端口,该总线端口是密钥字存储区的置数端口与所述初始密钥存储器的输出端相连,256位宽,所述的来自输入单元的load信号是初始密钥置入密钥字存储区的置位信号;该AK暂存器单元有两个输出通道端口;通道7端口发送执行AddKey运算或下述变换密钥字转发运算的操作数令牌,通道10端口发送密钥扩展运算用的操作数令牌;
e1.所述的通道9端口传输的令牌,命名为令牌9,包括4个32位的数据域k0-k3、一个5位的BLOCK域和一个1位的part域,令牌9的part域等于0则k0-k3依次写入密钥字存储区地址为000-011的单元,所述地址用二进制表示,令牌9的BLOCK值赋给BLOCKL,同时将所有低段单元的轮变换标记位和扩展标记位复位为0,令牌9的part域等于1则k0-k3依次写入密钥字存储区二进制表示的地址为100-111的单元,令牌9的BLOCK值赋给BLOCKH,同时将所有高段单元的轮变换标记位和扩展标记位复位为0;
e2.所述通道7端口发送的令牌,命名为令牌7,包括2个32位的数据域data1和data2、一个1位的属性域,属性域的值等于发送时下述的AorT信号的取值:当AorT等于0时,执行AddKey操作,令牌7是状态字令牌,它还包括一个4位的color域、一个2位的column域,打包时,把下述的ssel信号的值复制到它的column域、状态字存储区中地址等于ssel的状态字存储记录的数据域复制到令牌7的data1域、该状态记录的color域复制到令牌7的color域,密钥字存储区中地址等于下述ksel值的密钥存储记录的数据域复制到令牌7的data2域,通道7端口的应答信号将读取的状态字记录清空,把读取的密钥字记录的轮变换位变成1;当AorT等于1时,执行变换密钥字转发运算,令牌7是密钥令牌,除数据域和属性域外还包括一个1位的操作符域、一个1位的fadd域与4位不关心的数据,打包时,data1域等于0,密钥字存储区中地址等于下述ksel值的密钥存储记录的数据域复制到它的data2域;ksel等于Nk-1时,转发变换密钥字1,fadd等于0,操作符域等于0,表示此令牌将执行下述f变换,Nk等于4时,若ksel等于7,则表示转发变换密钥字2,fadd域等于1,操作符域等于0,表示此令牌将执行下述f变换,若Nk不等于4且ksel等于3,则表示转发变换密钥字2,fadd等于1,操作符域等于1,表示此令牌将执行下述g变换;通道7端口的应答信号将读取的状态字记录清空;所述f变换是将Srd作用在扩展密钥字的4个字节上再附加一个字内字节的循环移位,最后增加一个轮常量,f变换的结果标记为f,所述g变换当Nk>6时是将Srd作用在扩展密钥字的4个字节上,当Nk小于等于6时不执行任何变换,g变换的结果标记为g;
e3.所述通道10端口发送的令牌命名为令牌10,包括一个32位的中间密钥字域、4个32位的密钥字域k0-k3、一个5位的BLOCK域和一个1位的step域,打包时令牌10的step域等于令牌发送时下述的step信号的值,令牌10的中间密钥字域等于AK暂存器单元中的中间密钥字存储区中地址等于step信号值的中间密钥字存储单元存储的数据,当令牌发送时刻下述step信号等于0时,令牌10的BLOCK域的值等于所述BLOCKL寄存器的值,通道10端口的应答信号把AK暂存器单元密钥字存储区低段的4个密钥字记录的扩展位都置成1;当令牌发送时刻下述step信号等于1时,令牌10的BLOCK域的值等于所述BLOCKH寄存器的值,通道10端口的应答信号把AK暂存器单元密钥字存储区高段的所有密钥字记录的扩展位都置成1;
e4.该KES控制密钥扩展的时序,状态都采用二进制编码表示,KES的初始状态二进制编码是00,即准备计算f的状态,在此状态下执行变换密钥字1转发后,KES二进制编码变为01,进入执行f变换的状态,在01状态下读取低段密钥进行密钥扩展时,KES的状态变化为11,处于准备计算g的状态,在11的状态下执行变换密钥字2操作后,KES的状态变化为10,进入执行g变换的状态,在10状态下读取高段密钥进行密钥扩展时,KES的状态变化为00;
f.工作状态寄存器,其状态信号标记为WK,所述WK信号是通道开关单元Switch的状态控制信号,向所述输入单元发送WK信号,触发load信号有效,向所述通道开关单元Switch发送WK信号,接收来自下述MatcherOK匹配单元的OK信号;WK由输入单元触发为高电平,具体的触发条件根据外部控制协议定义,当OK信号上升时WK复位;
g.Matcher II匹配单元,检查AK暂存器单元中的状态字存储区和密钥字存储区,发现就绪的状态字-密钥字对或就绪的变换密钥字则随机选取其中之一,把相应的地址选择信号传送给所述AK暂存器单元,随后触发令牌发射信号fetch_II,所述的选择信号包括标记为了ssel的AddKey状态字读地址、标记为ksel的密钥字读地址、标记为AorT的表示发送令牌将执行的操作的信号:0表示AddKey运算,1表示变换密钥字转发;该Matcher II匹配单元的输入包括:AK暂存器单元的状态字存储区和密钥字存储区的观测信号,其中包括状态字记录的color位与flag位,密钥字记录的轮变换标记位和扩展标记位、flag域,BLOCKL和BLOCKH,KES,另外还有密钥分组列数Nk和下述的Matcher II随机控制码信号;所述的“就绪”是指:计算所有被观测状态字和密钥字的序列号,寻找序列号相同且flag都为1的状态字-密钥字对,或者根据KES状态检测并发现相应的变换密钥字;所述fetch_II信号到来,则触发所述AK暂存器单元把令牌发送给7#通道;当被发送的状态字被清空,或者KES状态改变,则fetch_II复位;
h.Matcher K匹配单元,检查AK暂存器单元中的观测信号:密钥字存储区各存储单元的轮变换标记位和扩展标记位、密钥字存储区和中间密钥字存储区的各存储单元的flag和KES状态,Matcher K匹配单元的输出信号有step信号和fetch_K信号,step信号表示密钥扩展运算读出的密钥字存储区地址,1为高段扩展,0为低段扩展,fetch_K信号是AK暂存器单元通道10端口发射令牌的触发信号;当KES处于密钥扩展状态下,且密钥字存储区相应地址范围的密钥字和中间密钥字已准备就绪则把step变为相应的值,并触发令牌发射信号fetch_K;所述的AK暂存器单元根据step信号把密钥字存储区相应的数据、中间密钥字存储区相应的数据以及相应的BLOCK值寄存器的数值打包成令牌等待发送,当fetch_K信号来到时,触发所述AK暂存器单元把该令牌经通道10发出;如果下述的exp_stop信号有效,Matcher K匹配单元则停止工作;
i.密钥扩展运算单元,用Key Schedule标记,接收并解析来自通道10的令牌,经过下述Key Schedule处理后打包成内含所述新的扩展密钥的令牌经通道9发出,所述的Key Schedule的处理含有以下运算:
i1.把所述令牌10的中间密钥字域和k0-k3域作为输入,执行KeySch运算:中间密钥字与k0逐位异或,结果输出作为令牌9的k0域,该新令牌9的k0的值与令牌10的k1逐位异或,结果输出作为令牌9的k1,该新令牌9的k1的值与令牌10的k2逐位异或,结果输出作为令牌9的k2,该新令牌9的k2的值与令牌10的k3逐位异或,结果输出作为令牌9的k3
i2.把所述令牌10的BLOCK域加1后的结果作为令牌9的BLOCK值;
i3.当Nk=4时,把所述令牌10的step域的逻辑反作为所述令牌9的part域,如果Nk>4,则把所述令牌10的step域直接复制到所述令牌9的part域;
j.AddKey运算单元,在接收并解析通道7发来的操作数令牌后,对其中的数据执行AddKey运算后,打包成轮密钥混合令牌,经通道8发送,所述AddKey运算即AES算法定义的轮密钥加法操作作用于状态的一列;所述经通道8发送的令牌,命名为令牌8,共39位,其中包括一个32位的数据域和一个1位的属性域,当属性域等于0时,是状态字令牌,其余的6位由4位的color域和2位的column域组成,当属性域等于1时,是密钥令牌,令牌8其余的6位由1位的操作数域、1位的fadd域和不关心的6位组成;打包时,把令牌7的data1与data2逐位异或的结果作为令牌8的数据域,令牌7的其余域直接复制到令牌8中与之同名的域中;
k.轮更新通道开关单元,对来自通道8的令牌进行轮次检查,若是状态字令牌且轮次已经达到迭代轮次Nr,则经通道11转发到下述输出暂存单元;否则,把其轮次加1经通道1转发到下述EU暂存器单元执行后续处理;若到达的令牌是状态字令牌,该令牌的轮次为Nr,且与该状态字令牌一起执行AddKey运算的扩展密钥字在AK暂存器单元的密钥字存储区中的存储地址属于高段,即表示密钥扩展已经完成,则触发exp_stop信号;若是密钥字令牌则直接由通道1转发到下述EU暂存器单元执行后续处理;所述令牌处理包括如下3情况:
k1.通道11传输的令牌,命名为令牌11,包括一个32位的数据域和一个2位的column域,打包时,令牌8的数据域直接复制到令牌11的数据域,令牌8的column域直接复制到令牌11的column域;
k2.当令牌8的属性域为0时,所述通道1发送的令牌,命名为令牌1,是状态字令牌,包括一个32位的数据域、一个4位的color域、一个2位的column域一个1位的操作符域和一个1位的属性域,打包时,令牌8的数据域和column域直接复制到令牌1中同名的域中,令牌8的color域加1后的结果作为令牌1的color域,令牌1的属性域等于0,若令牌8的color域等于Nr-1,则令牌1的操作符域标记为Srd操作,否则令牌1的操作符域标记位SM操作;
k3.如果令牌8的属性域等于1,所述通道1发送的令牌1是变换密钥字令牌,包括一个32位的数据域、一个1位的操作符域、一个1位的fadd域和5位不关心的数据,打包时,令牌8的各域分别直接复制到令牌1中同名的域中;
l.输出暂存单元,是一个密文重排的暂存单元,由一个4×32比特的密文存储区和令牌解析电路组成,该输出暂存单元接收通道11来的乱序到达的结果令牌所携带的密文数据并暂存,写入的地址是所述令牌11的column域,写入的数据是所述令牌11的数据域,在接收到下述输出单元的读地址信号后输出对应的密文状态字;所述的密文存储区的每个存储单元都对应一个标记为flag的“满/空”标记位,当单元写入时flag置1,表示满,当数据读出后flag复位,表示空;
m.输出单元,该单元是所述芯片与外部的接口、实现把密文按要求的时序输出的功能;
n.Matcher OK匹配单元,检查所述输出暂存单元中的所有flag信号,当所有的flag都为1则表示全部密文字都已到达,则把结束信号OK变成高电位,在通知所述工作状态寄存器的同时也通知所述输出单元读取所述输出暂存单元的密文状态字,当flag被复位后,OK信号变为低电位;
o.EU暂存器单元,由一个密钥字存储区和两个完全相同的状态存储区组成,依次标记为key store、store0和store1;其中,key store存储密钥扩展的变换密钥字,一条存储记录包括一个32位的数据域、一个1位的fadd域和一个1位的操作符域,store0/store1依次存储行移位之前“状态”中的第0-第3列,每列存储单元又分为4行,第0行的记录包括1个8位的数据域、一个4位的color域和一个1位的操作符域,第1行至第3行的记录包含一个8位的数据域;EU暂存器单元包含的两个状态存储区按照乒乓式读写的流水线方式工作:根据输入令牌的轮次标记,当轮次为偶数时写入store0,store1中的数据必是前一轮的状态,从store1中读取数据处理;当令牌的轮次为奇数,则写入store1,store0必是前一轮状态的待处理数据,从store0中读取数据处理;该EU暂存器单元设有一个传输通道端口,接收所述轮更新通道开关单元经通道1发出的令牌1,从中解析出令牌类型:状态令牌还是密钥令牌、写地址和记录数据,并把记录写入相应的存储单元中;一个输出传输通道端口,与通道2相连,根据来自下述Matcher I匹配单元输入的读地址、store0/store1选择信号以及状态/变换密钥选择信号输出相应的状态字或变换密钥字,与其他控制信号一起打包成令牌,经通道2发送给下述EU运算单元;EU暂存器单元的3个存储区的每个存储单元都对应一个标记为flag的“满/空”标记位,当单元写入时flag置1,表示满,当数据读出后flag复位,表示空;
o1.所述的令牌解析方法是:当所述令牌1的属性域为0时,是状态字令牌,写入地址是令牌1的column域,写入记录的第0行的数据域是令牌1数据域的7至0位,第0行的color域是令牌1的color域,第0行的操作符域是令牌1的操作符域,写入记录的第1行到第3行的数据分别依次是令牌1数据域的15位至8位、23位至16位和31至24位;当所述令牌1的属性域为1时,是密钥令牌,令牌1的数据域复制到所述变换密钥字存储记录的数据域,令牌1的fadd域和操作符域直接复制到所述变换密钥字存储记录的同名域中;
o2.所述的经通道2发送的令牌被命名为令牌2,它的打包方法是:当所述的状态/变换密钥选择信号等于0时,令牌2是状态字令牌,属性域等于0,数据域的7到0位是地址等于所述的Matcher I匹配单元输入的读地址的第0行记录的数据域,数据域的15到8位是经过AES算法定义的行移位运算后的地址等于所述读地址的第1行记录的数据域,数据域的23到16位是经过AES算法定义的行移位运算后的地址等于所述读地址的第2行记录的数据域,数据域的31到24位是经过AES算法定义的行移位运算后的地址等于所述读地址的第3行记录的数据域,令牌2的color域和操作符域分别是地址等于所述读地址的第0行记录的color域和操作符域,令牌2的column域是所述读地址的值;当所述的状态/变换密钥选择信号等于1时,令牌2是密钥字令牌,属性域等于1,数据域是变换密钥存储记录的数据域,fadd域和操作符域分别是变换密钥存储记录的fadd域和操作符域;
p.Matcher I匹配单元,检查所述EU暂存器单元中的key store和store0/store1中的令牌信息,在考虑行移位变换之后发现就绪的状态字或者发现变换密钥字则随机选取一个,把地址信息送给所述EU暂存器单元,并通过fetch_I信号触发通道2端口的触发信号,把所述EU暂存单元的令牌2发送给所述EU运算单元;所述Matcher I匹配单元的输入包括来自所述EU暂存器单元的观测端口的信号,通道2端口的应答信号以及下述的Matcher I随机控制码信号;同时,向EU暂存器单元输出所述fetch_I令牌发送信号;
q.全局存储器,存储密钥分组列数Nk,迭代轮数Nr,其中,向EU暂存器单元、下述EU运算单元、Matcher II匹配单元、Matcher K匹配单元和密钥扩展运算单元输出Nk,向轮更新通道开关单元输出Nr,
r.EU运算单元,接收来自通道2的令牌2,解析后根据令牌2的属性域和操作符域以及所述密钥分组列数Nk对数据域执行相应的计算,操作结果打包到令牌3的数据域中通过通道3发送;其中,所述令牌3除数据域外,还有一个1位的属性域,其值等于所述令牌2的属性域值:当属性域等于0时,是状态字令牌,还有一个4位的color域和一个2位的column域;当属性域等于1时,是密钥字令牌,还有一个1位的fadd域,还有5位不关心的数据,打包时,令牌2的fadd域直接复制到令牌3的fadd域中;所述对于令牌数据域的计算包括:
r1.Srd操作,当令牌2的属性域等于0且操作符域为所述的Srd标记时或当令牌2的属性域等于1且操作符域为1且所述密钥分组列数Nk大于6时执行,即对数据域的每个字节执行AES算法定义的Srd查表操作;所述令牌2属性域等于1且操作符域为1时的操作即是上述的g变换在Nk大于6时的操作;
r2.Srd-MixCol操作,当令牌2的属性域等于0且操作符域为所述的SM标记时执行,即先对数据域的每个字节执行AES算法定义的Srd查表操作,再对4个字节的结果向量左乘一个4×4的常数矩阵,其中所述的常数矩阵为AES算法中定义的列混合操作对应的常数矩阵;
r3.Srd-循环移位-轮常量相加计算,是上述的f变换当令牌2的属性域等于1且令牌2的操作符域为0时执行,即先对数据域的每个字节执行AES算法定义的Srd查表操作,再将4个字节的结果循环左移8位,最后,所得结果的低8位与一个8位的轮常量RC逐位异或;所述轮常量初值为0,每执行一次轮常量加法运算后,其值乘以2,所述乘2操作是定义在GF(28)域上的;
r4.直接转发操作,当令牌2的属性域等于1且令牌2的操作符域为1且Nk小于等于6时执行,即令牌2的数据域直接复制到所述令牌3的数据域;所述令牌2属性域等于1且操作符域为1时的操作即是上述的g变换在Nk小于等于6时的操作;
s.Matcher II随机控制码产生电路,随机产生控制所述Matcher II匹配单元中仲裁电路的3位随机选择码,每次fetch_II下降时产生一个新的随机控制码;
t.Matcher I随机控制码产生电路,随机产生控制所述Matcher I匹配单元中仲裁电路的3位随机选择码,每次fetch_I下降时产生一个新的随机控制码;
u.上述的Matcher II匹配单元与AK暂存器单元构成了AddKey运算单元的令牌暂存-匹配-发射结构,简称为HMF结构,Matcher I匹配单元与EU暂存器单元构成了EU运算单元的HMF结构,Matcher K匹配单元与AK暂存器单元的密钥字存储区、中间密钥字存储区、BLOCK值寄存器和KES构成了KeySchedule单元的HMF结构,Matcher OK匹配单元与输出暂存器单元构成了输出的HMF结构;所述HMF结构具有如下特征:
u1.包含一个令牌暂存单元,由寄存器堆实现,写端口采用异步握手协议;写地址和写入数据由输入令牌解析得出,写入时钟由输入通道端口的请求信号触发;读端口的地址由下述匹配单元输出的选择信号决定,输出数据随读地址即时变化;内部存储单元有表示记录是否存在的“满/空”标志位,所有单元的满/空标志位和记录中与下述匹配条件相关的域的数据组成观测信号,能够被下述匹配单元读取;所述输出数据能够被下述令牌打包逻辑读取;所述满/空标志位由一个C单元产生,该C单元的一个输入端接对应记录的写入时钟,另一个输入端接记录的清空信号的反信号;所述各个记录的写入时钟由写端口的接收应答信号经过写地址选择产生,所述各个记录的清空信号由所述读端口的应答信号经读地址选择产生;
u2.包含一个匹配单元,由匹配逻辑和选择逻辑电路两部分组成,暂存单元各个记录的观测信号输入匹配逻辑电路中按照匹配条件对应的布尔表达式算出各自的匹配结果值,匹配成功则值为1,否则等于0;选择逻辑根据请求信号直接产生或者经过仲裁后产生令牌暂存器的读地址和选中的请求序号;匹配单元的选择电路输出的请求序号通过锁存器输出成为令牌的选择信号;根据令牌的选择信号选择对应的请求信号成为令牌发射触发信号;
u3.令牌发射触发信号经过长度等于选择电路输出稳定所需的最长时间的延时后触发所述选择信号的锁存器的控制端将锁存器锁存,同时触发发送令牌的请求信号;所述暂存单元的复位应答信号将所述选择信号的锁存器的控制端复位,使锁存器导通,选择信号重新随所述匹配单元的选择逻辑电路输出变化;
在上述各单元中,
所有传输通道都采用异步握手协议;
所有运算单元的数据处理和令牌打包由组合逻辑电路实现;
所述通道开关单元Switch,初始密钥存储器、AK暂存器单元、Matcher K匹配单元、密钥扩展运算单元共同构成了密钥扩展环,而通道开关单元Switch、Matcher II匹配单元、AddKey运算单元、轮更新通道开关单元、EU暂存器单元,Matcher I匹配单元、EU运算单元构成轮变换环,环内用传输通道相连,环间用开关单元Switch相连。
CN200510086919.8A 2005-11-18 2005-11-18 乱序执行的数据流aes加密电路结构 Expired - Fee Related CN1761185B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200510086919.8A CN1761185B (zh) 2005-11-18 2005-11-18 乱序执行的数据流aes加密电路结构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200510086919.8A CN1761185B (zh) 2005-11-18 2005-11-18 乱序执行的数据流aes加密电路结构

Publications (2)

Publication Number Publication Date
CN1761185A CN1761185A (zh) 2006-04-19
CN1761185B true CN1761185B (zh) 2011-08-17

Family

ID=36707145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200510086919.8A Expired - Fee Related CN1761185B (zh) 2005-11-18 2005-11-18 乱序执行的数据流aes加密电路结构

Country Status (1)

Country Link
CN (1) CN1761185B (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1921382B (zh) * 2006-09-06 2010-05-12 华为技术有限公司 一种基于aes算法的加解密方法及加解密器
CN101187963B (zh) * 2006-11-15 2010-05-12 北京同方微电子有限公司 一种对抗差分功耗分析的逻辑单元
WO2008061395A1 (fr) * 2006-11-23 2008-05-29 Tsinghua University Circuit de cryptage aes d'un flot de données exécuté lors d'un déséquencement
CN101114903B (zh) * 2007-03-05 2011-10-26 中兴通讯股份有限公司 一种吉比特无源光网络系统中高级加密标准加密装置及其实现方法
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
CN101374043B (zh) * 2007-08-24 2010-09-22 管海明 密钥协商的方法、加/解密的方法及签名/验证的方法
CN101478392B (zh) * 2009-01-19 2010-12-08 山东大学 利用vlsi实现128位密钥长度aes算法的装置
CN101692216B (zh) * 2009-10-15 2013-05-22 清华大学 动态数据流结构中存储-匹配-转发单元电路
CN101782956B (zh) * 2010-02-09 2012-06-13 杭州晟元芯片技术有限公司 一种基于aes实时加密的数据保护方法及装置
CN101969376B (zh) * 2010-09-23 2012-06-27 北京航空航天大学 一种具有语义安全的自适应加密系统及方法
CN102448059B (zh) * 2011-11-23 2014-02-05 南京航空航天大学 应用于ZigBee协议的加解密电路结构及其控制方法
CN102665203B (zh) * 2012-04-16 2015-03-25 南京航空航天大学 应用于ZigBee协议安全机制的电路结构及其控制方法
CN102665202B (zh) * 2012-04-16 2015-03-25 南京航空航天大学 应用于ZigBee协议的安全协处理器电路结构及其控制方法
CN102710413A (zh) * 2012-04-25 2012-10-03 杭州晟元芯片技术有限公司 一种抗dpa/spa攻击的系统和方法
CN103384197B (zh) * 2012-05-03 2016-08-31 国家电网公司 一种防御对分组算法能量攻击的电路、芯片和方法
CN103729602B (zh) * 2013-12-18 2016-08-17 东莞市乐升电子有限公司 利用电源管理控制器对系统进行加密保护的方法
CN103944712B (zh) * 2014-05-16 2017-01-18 西北大学 一种mbe‑ssp控制码序列产生方法
FR3040513B1 (fr) * 2015-09-02 2018-11-16 Stmicroelectronics (Rousset) Sas Protection d'un algorithme de rijndael
CN105871536B (zh) * 2016-06-14 2019-01-29 东南大学 一种基于随机延时的面向aes算法的抗功耗攻击方法
US10218497B2 (en) * 2016-08-31 2019-02-26 Intel Corporation Hybrid AES-SMS4 hardware accelerator
CN107516053B (zh) * 2017-08-25 2020-05-15 四川巧夺天工信息安全智能设备有限公司 针对主控芯片ps2251的数据加密方法
CN107483182B (zh) * 2017-09-21 2020-08-21 东南大学 一种基于乱序执行的面向aes算法的抗功耗攻击方法
CN107908359B (zh) * 2017-11-03 2020-12-29 清华大学深圳研究生院 一种otp存储器及其数据写入和读取方法、安全芯片
CN108521327B (zh) * 2018-03-06 2021-02-12 宁波大学 一种断电存储型simon加密电路
CN108650075B (zh) * 2018-05-11 2020-09-08 中国科学院信息工程研究所 一种抗侧信道攻击的软硬结合aes快速加密实现方法和系统
CN117061092B (zh) * 2023-10-12 2023-12-15 仰恩大学 一种Simon加密算法的可逆电路构造方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1485857A (zh) * 2002-09-27 2004-03-31 北京华虹集成电路设计有限责任公司 加密集成电路防电源攻击方法
CN1614533A (zh) * 2003-11-04 2005-05-11 上海华虹集成电路有限责任公司 一种防简单功耗分析攻击的方法
CN1641649A (zh) * 2004-12-24 2005-07-20 清华大学 Cmos功耗平衡延时不敏感加法器用的进位产生电路

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1485857A (zh) * 2002-09-27 2004-03-31 北京华虹集成电路设计有限责任公司 加密集成电路防电源攻击方法
CN1614533A (zh) * 2003-11-04 2005-05-11 上海华虹集成电路有限责任公司 一种防简单功耗分析攻击的方法
CN1641649A (zh) * 2004-12-24 2005-07-20 清华大学 Cmos功耗平衡延时不敏感加法器用的进位产生电路

Also Published As

Publication number Publication date
CN1761185A (zh) 2006-04-19

Similar Documents

Publication Publication Date Title
CN1761185B (zh) 乱序执行的数据流aes加密电路结构
Kaps Cryptography for ultra-low power devices
Gross et al. Ascon hardware implementations and side-channel evaluation
WO2013172790A1 (en) Methods for determining a result of applying a function to an input and evaluation devices
CN107800532A (zh) 低成本密码加速器
CN108959168B (zh) 基于片上内存的sha512全流水电路及其实现方法
US7260217B1 (en) Speculative execution for data ciphering operations
Cheng et al. Efficient implementation of the SHA-512 hash function for 8-bit AVR microcontrollers
EP1244077A2 (en) Tamper resistant device
Mandal et al. Sycon: a new milestone in designing ASCON-like permutations
Khalid et al. RC4-AccSuite: A hardware acceleration suite for RC4-like stream ciphers
Fang et al. SIFO: secure computational infrastructure using FPGA overlays
WO2008061395A1 (fr) Circuit de cryptage aes d'un flot de données exécuté lors d'un déséquencement
Lin et al. Optimized quantum implementation of AES
Li et al. Automatic preimage attack framework on ascon using a linearize-and-guess approach
Ajmi et al. Efficient and lightweight in-memory computing architecture for hardware security
Kiningham et al. Cipher Implementation for CESEL
Pauls et al. A latency-optimized hash-based digital signature accelerator for the tactile internet
Dasgupta et al. An Asic for cellular automata based message authentication
Heath New Directions in Garbled Circuits.
Stefan Analysis and implementation of eSTREAM and SHA-3 cryptographic algorithms
Jeon One-way hash function based on cellular automata
Niu et al. Related-tweak impossible differential cryptanalysis of reduced-round TweAES
Sheng et al. Research on the maritime communication cryptographic chip’s compiler optimization
CN109995506A (zh) Skinny算法优化实现方法、系统、终端、存储介质

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110817

Termination date: 20181118

CF01 Termination of patent right due to non-payment of annual fee