CN101350038A - 一种异步分组密码算法协处理器的设计方法 - Google Patents
一种异步分组密码算法协处理器的设计方法 Download PDFInfo
- Publication number
- CN101350038A CN101350038A CNA200810143205XA CN200810143205A CN101350038A CN 101350038 A CN101350038 A CN 101350038A CN A200810143205X A CNA200810143205X A CN A200810143205XA CN 200810143205 A CN200810143205 A CN 200810143205A CN 101350038 A CN101350038 A CN 101350038A
- Authority
- CN
- China
- Prior art keywords
- submodule
- door
- signal
- inputs
- input
- 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
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种异步分组密码算法协处理器的设计方法,要解决的技术问题是提供一种异步分组密码算法协处理器的设计方法。技术方案是将分组密码算法中每一轮迭代作为独立的子模块;采用HDL设计各子模块并对各子模块进行逻辑综合,得到静态单轨网表;将静态单轨网表转换为仅由互补的二输入与门和或门组成的复合逻辑网表;对各子模块进行延时匹配,增加与子模块延时相同的延时匹配模块,并保证各子模块的输入信号至输出信号的延时相同,且任意与门和或门的输入到达时间相同;将各子模块顺序连接,得到完整网表;进行后端布局布线,得到GDS版图。采用这种方法设计的协处理器具有较高的抗功耗攻击防护能力,同时具有高运算性能与低功耗特性。
Description
技术领域
本发明涉及一种微处理器的设计方法,尤其是一种密码算法协处理器的设计方法。
背景技术
密码算法的安全性包括两个方面,一是密码算法数学意义上的安全性,二是密码算法实现上的安全性。传统的密码分析就是针对密码算法本身实施的破解手段,比如差分和线性密码分析,常规的密码分析和暴力破解对现有的广泛应用的密码算法而言是无效的。功耗攻击是一种利用密码算法具体实现中的薄弱环节实施的破解密钥的有效手段,是旁路攻击中具有最高安全威胁的攻击手段。因为安全芯片内的私有密钥与密码算法运行时所消耗的功耗之间存在统计意义上的相关性,攻击者在采集大量功耗样本的基础上,运用数理统计方法可推导出片内私有密钥。从功耗攻击的角度,功耗攻击可分为三类:简单功耗攻击(Simple PowerAnalysis:SPA)、差分功耗攻击(Differential PowerAnalysis:DPA)以及高阶功耗攻击(High Order DPA:HODPA)。功耗攻击所需的代价小,且可适用于几乎所有的密码算法,如DES(Data Encryption Standard:数据加密标准)、AES(Advanced Encryption Standard:高级加密标准)、RSA(Rivest-Shamir-Adlemen)以及ECC(Elliptic Curve Crypto-system:椭圆曲线密码算法)等。
以智能卡为代表的安全芯片在各领域得到了非常广泛的应用。安全芯片的主要作用包括:数据的安全存储、数据加解密、数字签名与认证以及身份鉴别等。上述各种功能的实现有赖于现代密码算法,包括公钥密码算法、分组密码算法以及流密码算法等。公钥密码算法主要用于数字签名与认证以实现身份鉴别,如RSA和ECC;分组密码算法用于数据加解密,如DES和AES;而流密码算法主要用于数据流的加解密,如RC4(RivestCipher 4)。各种不同类型的密码算法部件(软件模块或硬件协处理器)是安全芯片中不可缺少的组成部分。受非法利益驱使,安全芯片的安全环境较为恶劣,易遭受各种类型的攻击与破解。其中针对密码算法部件的功耗攻击是一种破解安全芯片的有效手段;已有文献报道,采用功耗攻击技术成功破解了多款不同类型的安全芯片。因此,安全芯片中的密码算法部件必须具有有效的抗功耗攻击防护能力。
根据防护技术的目标,可将各种防护技术分为两类:一是消除密码算法具体实现中可被功耗攻击的漏洞,二是增大功耗攻击的难度。消除功耗攻击漏洞指的是消除密钥与功耗之间的相关性,最常见的技术手段为随机掩码技术。随机掩码就是服从均匀分布的随机数掩盖密码运算过程中的中间结果,使得被掩码的中间结果同样为随机数,且其概率分布与密钥无关,进而使得功耗与密钥无关,从而消除了功耗攻击漏洞。从另一角度来看,如果实施功耗攻击所需代价和时间太高,几乎无法实施,也可认为达到了事实上的抗功耗攻击的目的。为增大功耗攻击的难度,常见的技术手段包括:随机化技术,比如在密码算法实现过程中插入随机冗余伪操作、运算流程随机化、插入随机的延时以及引入随机的功耗噪声等;恒定化技术,即使得安全芯片执行密码算法时所消耗的功耗几乎为恒定值,即大幅度削弱功耗与密钥之间的相关性,比如采用新型的具有功耗恒定特性的动态双轨逻辑单元,如基于敏感放大器的逻辑(Sense Amplifier Based Logic:SABL)等;功耗平滑技术,即保证安全芯片工作时的功耗在预定范围之内,增加额外电路对整个芯片的功耗进行动态补偿。
无论何种防护技术,都是以一定的代价来达到一定的防护能力,主要体现在如下方面:
1)运算性能下降,比如在密码运算过程中插入冗余操作不可避免造成运算性能下降;在基于动态双轨逻辑的功耗恒定密码算法部件中,每个时钟周期内仅有一半时间做有效运算,另一半需要进行预充,因此运算性能至少下降一半;2)芯片面积增大,比如引入动态补偿电路以平滑功耗、引入随机功耗噪声产生模块、以及动态双轨逻辑等防护技术都不可避免增加芯片面积;3)功耗增大,功耗噪声、功耗恒定化和功耗平滑等防护技术都使得功耗大幅增加;比如以动态双轨逻辑实现密码算法时,因为所有逻辑单元都以时钟作为预充信号,使得时钟的负载大幅增加,与时钟相关的功耗也不可避免的增加。
目前,也有研究采用异步电路实现密码算法协处理器以达到抗功耗攻击的目标,这主要是因为异步电路也具有一定的功耗恒定特性。异步电路的功耗恒定特性主要来源于信号的双轨编码和互补的电路结构。但是,与上述的功耗恒定逻辑单元如基于敏感放大器的逻辑单元相比,异步电路的功耗恒定特性相对较差,也就是防护能力相对较低。与同步电路相比,异步电路的最显著优势在于其低功耗性质,基于异步电路的低功耗设计与实现技术也是当前集成电路领域的前沿研究内容;但异步电路并不具有运算性能和芯片面积等方面的优势。另外,异步电路的实现较为困难,缺乏成熟的辅助设计工具。
分组密码算法是一种用于大数据量快速加解密的算法,是解决信息系统安全问题的关键技术,典型的分组密码算法包括DES和AES,均为多轮迭代型密码算法。分组密码算法运算模块(包括软件实现和硬件实现)是各种安全芯片中的必要组成部分,其具体实现也必须具有有效的抗功耗攻击防护能力。目前还没有采用异步电路设计实现既具有较高的抗功耗攻击防护能力,又具有高运算性能和低功耗特性的异步分组密码算法协处理器的公开报道。
发明内容
本发明要解决的技术问题是:在现有技术条件下,提供一种异步分组密码算法协处理器的设计方法,采用这种方法设计的协处理器具有良好的功耗恒定特性即较高的抗功耗攻击防护能力,同时具有高运算性能与低功耗特性。
为了解决上述技术问题,本发明的技术方案为:将分组密码算法中每一轮迭代作为独立的子模块;采用硬件描述语言HDL(Hardware Description Language)分别设计各子模块,且各子模块完全为组合电路;运用现有的综合工具对各子模块进行逻辑综合,得到仅包括反相器、二输入与门和或门的网表;将网表转换为仅由互补的二输入与门和或门组成的网表;对各子模块进行延时匹配,增加与子模块的延时相同的延时匹配模块,并保证各子模块的任意输入信号至输出信号的延时相同,且电路中任意二输入与门和或门的两个输入的到达时间相同;将各子模块顺序连接,得到异步分组密码算法协处理器的完整网表;进行后端布局布线,得到异步分组密码算法协处理器的GDS(Graphic DataSystem)版图。
具体技术方案为:
第一步,对分组密码算法进行子模块划分,将分组密码算法中每一轮迭代作为独立的子模块。分组密码算法由若干轮迭代组成,如DES算法由16轮迭代组成,128位密钥的AES算法由10轮迭代组成。将每一轮迭代作为独立的子模块,其主要功能包括轮变换和轮密钥编排。各子模块分别记为S1,S2,…Si,…,Sn(n≥1),n表示分组密码算法的迭代轮数,1≤i≤n。设M为初始明文,K为密钥,C为密文,Rj表示第j(1≤j≤n-1)轮变换的结果,Kk表示第k(2≤k≤n)轮变换的轮密钥;各子模块之间的连接关系可用如下方式描述:(R1,K2)=F1(M,K),(R2,K3)=F2(R1,K2),…,(Rn-1,Kn)=Fn-1(Rn-2,Kn-1),C=Fn(Rn-1,Kn),其中Fj表示第i轮变换的功能函数。
第二步,子模块设计。对各子模块Sj(1≤i≤n)依次执行如下步骤:
2.1采用硬件描述语言HDL(如VHDL和Verilog)设计子模块,即描述子模块的功能,完全以组合电路实现各子模块的所有算术和逻辑运算,不包括时序电路,得到子模块的HDL代码。
2.2运用现有的综合工具对各子模块的HDL代码进行逻辑综合,且仅使用反相器、二输入与门和或门这三种标准单元,得到子模块的逻辑网表;网表中所有逻辑单元均为静态单轨单元,因此将其称为静态单轨网表。由于{∧,∨}即(逻辑非、逻辑与和逻辑或)是布尔代数中完备联结词集,可以实现任意的布尔函数,因此反相器、二输入与门和或门即可实现任意的逻辑运算。本步骤未引入特殊标准单元,并且无额外约束,可以使用目前成熟的商用综合工具,如Synopsys Design CompilerTM等。
2.3将静态单轨网表转换为仅由互补的二输入与门和或门组成的复合逻辑网表;一对互补的二输入与门和或门组成了复合逻辑单元,转换后的网表称为复合逻辑网表。具体转换方法为:
2.3.1为静态单轨网表中任意的信号(包括输入信号、输出信号和内部的互联信号)增加对应的反相信号,这样所有的信号均为双轨编码。设w为静态单轨网表中的任意信号,则增加其反相信号w。
2.3.2删除静态单轨网表中所有的反相器。由于步骤2.3.1为所有信号增加了对应的反相信号,因此复合逻辑网表中无需反相器。设静态单轨网表中的某个反相器为INV u1(a,z),其中INV表示反相器,u1表示反相器的名称,a为输入信号,z为输出信号,即z为a的反相,则删除网表中的反相器u1,并将网表中的信号z替换为a(a表示a的反相)。
2.3.3为静态单轨网表中任意的二输入与门增加与之互补的或门。设静态单轨网表中某个二输入与门为AND2u2(x1,x2,y1),其中AND2表示二输入与门,u2表示二输入与门的名称,x1和x2为输入信号,y1为输出信号,即y1=(x1∧x2);增加与u2互补的二输入或门OR2ui2(x1,x2,y1),其中OR2表示二输入或门,ui2表示二输入或门的名称,x1和x2为输入信号,y1为输出信号,即y1=(x1∨x2)。
2.3.4为静态单轨网表中任意的二输入或门增加与之互补的与门。设静态单轨网表中某个二输入或门为OR2u3(x3,x4,y2),即y2=(x3∨x4);增加与u3互补的二输入与门AND2ui3(x3,x4,y2),即y2=(x3∧x4)。
2.4增加与子模块的延时相同的延时匹配模块进行延时匹配,保证各子模块的任意输入信号至输出信号的延时相同,且电路中任意二输入与门和或门的两个输入的到达时间相同。具体方法为:
2.4.1增加与子模块的延时相同的延时匹配模块。延时匹配模块由顺序连接的缓冲单元BUF组成,BUF同样为互补的二输入与门和或门组成的复合逻辑单元,BUF的级数与子模块的关键路径所包含的逻辑单元的级数相同。在延时匹配模块中,BUF中与门的两个输入均为e,或门的两个输入均为e,双轨信号(e,e)称为运算触发控制信号;当执行有效运算时,将运算触发控制信号置为(1,0);当不执行有效运算时,将运算触发控制信号置为(0,0);运算触发控制信号在延时匹配模块中逐级传递;当运算触发控制信号(1,0)由延时匹配模块的输入端逐级传递至输出端时,即延时匹配模块的输出为(1,0)时,对应子模块也完成了有效的逻辑运算,子模块的输出为正确的计算结果。
2.4.2为不在子模块的关键路径中的输出信号增加缓冲单元BUF,保证从输入信号至任意输出信号的延时均相同。设子模块的所有输出信号为O1,O2,…,Om(m≥1),且输入信号至各输出信号的关键路径包含的逻辑单元的级数分别为H1,H2,…,Hm,设其中最大的逻辑单元级数为H;则为各输出信号添加(H-Hp)(1≤p≤m)级顺序连接的缓冲单元。在被插入的缓冲单元中,除被缓冲的信号外,另一组输入来自延时匹配模块中上一级缓冲单元的输出。这样所有输入信号至被缓冲后的输出信号之间的关键路径所包含的逻辑单元级数均相同,其最大延时也相等。
2.4.3为不在子模块关键路径中的输入信号增加缓冲单元BUF以保证所有逻辑单元的两个输入端的到达时间相同。子模块的任意输出信号的运算电路(相当于逻辑表达式)均可以用一棵二叉树来表示:二又树中每个结点表示网表中的信号,其子结点要么为空(表明该信号为子模块的输入信号),要么为对应逻辑单元的两个输入端;二叉树的高度表示从输入信号到输出信号所经过的逻辑单元级数。从二叉树的根结点(即输出信号)开始,按层序遍历二叉树,保证同一层次信号的到达时间相同,同一层次的逻辑单元同步执行有效运算。设与输出信号o对应的二叉树的高度为h,第2层结点(即o的两个子结点o1和o2)的子树的高度应为h-1,如果o1或o2为子模块的输入信号,则直接为之增加h-2级顺序连接的缓冲单元;第d(1<d<h)层的任意结点x的子树的高度应为h-d+1,且如果x为输入信号,则直接为之增加h-d级顺序连接的缓冲单元;直至遍历至第h-1层的结点,如果该层某个结点为输入信号,则直接为之增加一级缓冲单元。
第三步,将经过延时匹配的子模块集成,即将S1,S2,…,Sn顺序连接,子模块S1接受初始输入信号即明文M和密钥K;S1(2≤1≤n-1)接受S1-1产生的输出,其结果作为S1+1的输入;Sn产生最终的运算结果即密文C;同时将各子模块对应的延时匹配模块顺序连接,因此S1至Sn之间的逻辑单元级数就同顺序连接的所有延时匹配单元的逻辑级数一致,也就是实现了整个协处理器的延时匹配。所有子模块集成之后,就得到了异步分组密码算法协处理器的完整网表。
第四步,进行后端布局布线,得到异步分组密码算法协处理器的GDS版图。在后端设计时,需要保证所有双轨信号具有相同的负载,以使得互补的二输入与门和或门具有与输入无关的功耗恒定特性。在现有集成电路工艺条件下,由互联线引起的寄生效应在整个电路中占主要部分,只要双轨信号的互联线的负载相同,则双轨信号的负载相同。因此将所有互补的二输入与门和或门成轴对称放置,使双轨信号具有对称的走线和相同的互联线长度,从而使双轨信号的负载几乎完全相同。
从本质上看,按照上述步骤设计的异步分组密码算法协处理器为一组合电路。但与传统意义上的组合电路不同的是,每组数据在各层次逻辑单元中逐级(流水化)传递,且无需等当前数据处理完毕才能输入下一组数据,即当第一组输入从第一层次的逻辑单元传递到下一层次的逻辑单元时,即可输入第二组数据;依此类推,当第一组输入处理完毕即得到相应的运算结果时,第二组输入被传递到倒数第二层次的逻辑单元。也就是说,协处理器可视为一种流水线,其工作方式为:当包括运算触发控制信号在内的所有输入信号均为0时,协处理器中逻辑单元逐级进入无翻转的状态,不消耗动态功耗;当运算触发控制信号置为(1,0)且输入有效数据时,经过协处理器中逻辑单元的逐级传递,当与子模块Sn对应的延时匹配模块的输出变为(1,0)时,Sn的输出端即为有效运算结果;在满足最小时间间隔条件下,可连续输入多组数据;协处理器在同一时刻可处理多组数据,相邻输入数据进入协处理器的最小时间间隔取决于协处理器中单个逻辑单元的最大延时;为达到更好的功耗恒定特性,令全0输入和有效输入数据交替进入协处理器。
协处理器相当于多层次互联网络结构,每一级逻辑单元仅接受上一级逻辑单元的输出;协处理器仅存在相邻层次的局部互联,不存在跨层次的互联;同一级的逻辑单元同步执行有效运算。从宏观上看,各子模块作为流水线的一段;从微观上看,同一层次的逻辑单元构成流水线的一段。只要相邻输入数据的时间间隔不小于流水线中具有最大负载的逻辑单元的延时(记为Δt),就可以保证不同输入数据的信号在流水线中不会发生穿透,即保证了同一层次的逻辑单元在同一时刻只可能处理同时输入的一组数据。从这一角度看,流水线中具有最大负载的逻辑单元的延时决定了流水线能够达到的最高等价时钟频率(1/Δt),即最大延时的倒数。实际上,单个逻辑单元的最大延时远远小于一轮迭代的延时,协处理器不包括寄存器和锁存器,也就避免了由寄存器和锁存器引起的延时;与采用常规方式实现的分组密码算法协处理器(包括同步电路和异步电路,一轮迭代作为流水线的一段)相比,采用本发明设计的异步分组密码算法协处理器能够达到远远高于前者的最高等价时钟频率。当协处理器满负荷工作时,所能达到的最高加解密吞吐率为(1/Δt)。
采用本发明可以达到以下的技术效果:
1.在第二步子模块设计时仅采用互补的二输入与门和或门实现异步分组密码算法协处理器,当全0输入和有效数据交替输入互补的二输入与门和或门时,二者组成的复合逻辑具有良好的功耗恒定特性;因此由互补的二输入与门和或门构成的分组密码算法协处理器同样具有良好的功耗恒定特性,密钥与协处理器的功耗之间的相关性趋近于0,协处理器具有较高的抗功耗攻击防护能力。
2.在第二步子模块设计时为各子模块进行延时匹配,使得同一层次的逻辑单元同步执行有效运算,同一层次的逻辑单元构成了流水线的一段;只要满足一定的时间间隔,就可以连续向协处理器输入多组数据;且相邻输入数据的最小时间间隔取决于协处理器中单个逻辑单元的最大延时,由于单个逻辑单元的最大延时远远小于一轮迭代的延时,协处理器不包括寄存器和锁存器,也就避免了由寄存器和锁存器引起的延时;采用本发明设计的异步分组密码算法协处理器的最高等价时钟频率能够远远高于采用常规实现方式(包括同步电路和异步电路,一轮迭代作为流水线的一段)设计的协处理器,运算性能大大提高。
3.采用本发明设计的异步分组密码算法协处理器无时钟信号和寄存器等时序逻辑,无长互联线;协处理器不工作时,所有输入信号保持为0,协处理器中无信号翻转,仅存在静态功耗,因此采用本发明设计的异步分组密码算法协处理器具有低功耗特性。
4.采用本发明不需要设计任何特殊的逻辑单元,可直接使用现有的标准单元;最大限度的使用现有的成熟集成电路设计方法,包括HDL设计、逻辑综合以及后端设计等;采用延时匹配(即在各子模块的复合逻辑网表中插入必要的缓冲单元)的方法使异步流水线正确,无须设计常规的异步电路中的握手电路(握手电路必须检测电路中的组合逻辑单元是否完成运算进而到达稳态,并向前一级发出应答信号,向后一级发出请求信号);因此本发明充分利用了现有技术和工具,简单易行。
本发明适用于可能受到功耗攻击的各种安全芯片中分组密码算法协处理器的设计与实现,可以达到抗功耗攻击防护能力和运算性能及功耗的良好折衷。
附图说明
图1为采用本发明设计异步分组密码算法协处理器的总体流程图;
图2为第二步中第三个步骤网表转换过程的示意图;
图3为第二步中第四个步骤延时匹配过程示意图;
图4为采用本发明设计的异步分组密码算法协处理器的总体结构图;
图5为异步分组密码算法协处理器的工作方式示意图。
具体实施方式
图1为采用本发明进行异步分组密码算法协处理器的设计流程图,主要包括如下步骤:
1.对分组密码算法进行子模块划分,得到子模块;
2.子模块设计,包括如下步骤:
2.1HDL设计,得到子模块的HDL代码。
2.2对子模块的HDL代码进行逻辑综合,得到子模块的静态单轨网表。
2.3将静态单轨网表转换为仅由互补的二输入与门和或门组成的网表,得到复合逻辑网表。
2.4增加与子模块的延时相同的延时匹配模块,保证各子模块的任意输入信号至输出信号的延时相同,且电路中任意二输入与门和或门的两个输入的到达时间相同。
3.将各子模块经延时匹配后的网表集成,得到异步分组密码算法协处理器的完整网表。
4.后端布局布线,得到异步分组密码算法协处理器的GDS版图。
图2为第二步中第三个步骤网表转换过程的示意图。i1,i2,…,i8表示输入信号,o1和o2表示输出信号,n1,n2,…,n5为内部互联信号。图2的箭头左边为网表转换之前的逻辑电路图(即静态单轨网表),各输出信号的逻辑运算表达式分别为:o1=((i1∧i2)∧(i3∨i4))∨(i5∧i6),o2=(i7∧i8)。图2的箭头右边为经过网表转换后的逻辑电路图,各输出信号的逻辑表达式为:o1=((i1∨i2)∨(i3∧i4))∧(i5∨i6),o2=(i7∨i8),o2=(i7∧i8)。网表转换的具体过程为:
1.为所有的信号增加对应的反相信号,如图2中箭头右边的i1,…,i8,o1,o2,n1,…,n5。
2.删除静态单轨网表中所有的反相器,并将反相器的输出信号替换为反相器输入信号的反相。如图2中箭头右边所示,删除图2中箭头左边的反相器6,并将o2替换为n4。
3.为静态单轨网表中任意的二输入与门增加与之互补的或门。如图2中箭头右边所示,为图2中箭头左边的第一与门1、第三与门3、第四与门4及第五与门5分别增加互补的第八或门8、第十或门10、第十一或门11及第十二或门12。
4.为静态单轨网表中任意的二输入或门增加与之互补的与门。如图2中箭头右边所示,为图2中箭头左边的第二或门2及第七或门7分别增加互补的第九与门9及第十三与门13。
图3为第二步中第四个步骤延时匹配过程示意图。延时匹配主要包括如下步骤:
1.增加与子模块的延时相同的延时匹配模块。在如图3箭头左边的电路中,关键路径为输入信号i1(或i2)至o1的数据通路,包含3级逻辑单元。因此,与该电路相对应的延时匹配模块就包含3级顺序连接的缓冲单元BUF;如图3箭头右边所示,第十四与门14和第十五或门15、第十六与门16和第十七或门17、以及第十八与门18和第十九或门19分别组成3个顺序连接的BUF。延时匹配模块的输入即运算触发控制信号记为(e1,e1),输出记为(e4,e4),中间结果记为(e2,e2)和(e3,e3)。在延时匹配模块中,与门的两个输入均相同,分别为e1,e2,e3;或门的两个输入也相同,分别为e1,e2,e3。
2.为不在子模块关键路径上的输出信号增加缓冲单元BUF,保证从输入信号至任意输出信号的延时均相同。在如图3箭头左边的电路中,由输入信号至输出信号o2和o2的逻辑单元级数为1,小于输入信号至o1的逻辑单元级数,因此为o2和o2添加两级缓冲单元;如图3箭头右边所示,第二十与门20和第二十一或门21、以及第二十二与门22和第二十三或门23分别组成两级顺序连接的BUF,前者为(n4,n4)进行缓冲得到(n6,n6),后者为(n6,n6)进行缓冲得到(o2,o2)。第二十与门20的两个输入为n4和e2;第二十一或门21的两个输入为n4和e2;第二十二与门22的两个输入为n6和e3;第二十三或门23的两个输入为n6和e3。
3.为不在子模块关键路径上的输入信号增加缓冲单元以保证所有逻辑单元的两个输入端的到达时间相同。在如图3箭头左边的电路中,(i5,i5)和(i6,i6)不在关键路径上,因此为二者分别增加一级缓冲单元。如图3箭头右边所示,第二十四与门24和第二十五或门25组成的BUF为(i5,i5)进行缓冲,得到(n7,n7);第二十六与门26和第二十七或门27组成的BUF为(i6,i6)进行缓冲,得到(n8,n8)。第二十四与门24的两个输入为i5和e1;第二十五或门25的两个输入为i5和e1;第二十六与门26的两个输入为i6和e1;第二十七或门27的两个输入为i6和e1。
图4为采用本发明设计的异步分组密码算法协处理器的总体结构图,此图也说明了本发明第三步子模块集成的过程。子模块S1,S2,…,Sn顺序连接,S1接受初始明文M和密钥K,Sn产生运算结果即密文C;Si(1<i<n)接受Si-1的输出,产生的结果提供给Si+1;相邻子模块之间无锁存器。各子模块具有对应的延时匹配模块,延时匹配模块由顺序连接的缓冲单元组成,缓冲单元的级数与子模块关键路径所包含的逻辑单元级数相同。延时匹配模块的输入为运算触发控制信号,与各子模块对应的延时匹配模块的运算触发控制的输入信号分别记为(ei1,ei1),(ei2,ei2),…,(ein,ein),输出信号分别记为(eo1,eo1),(eo2,eo2),…,(eon,eon)。同时输入的一组数据在各子模块之间逐级传递,而运算触发控制信号在各段延时匹配模块之间逐级传递。当明文、密钥和运算触发控制信号均为0时,协处理器逐级进入无翻转状态,仅消耗静态功耗;当(ei1,ei1)为(1,0)且明文和密钥为有效值时,协处理器开始执行有效处理,经过逐级传递之后,当(eon,eon)变为(1,0)时,Sn的输出即为相应密文C。
图5为采用本发明设计的异步分组密码算法协处理器的工作方式示意图。设异步分组密码算法协处理器包含N级逻辑单元,且协处理器中单个逻辑单元的最大延时为Δt,即相邻输入数据进入协处理器的最小时间间隔为Δt;不同输入数据之间的间隔记为a×Δt,则a为不小于1的任意值;完成一次有效密码运算所需时间为N×Δt;在同一时刻,可能存在多组数据被处理。当协处理器的所有输入均为0时,协处理器逐级进入无翻转的状态;为达到更好的功耗恒定特性,可以将全0输入与有效数据输入交替进入协处理器;有效数据也可以连续进入协处理器以达到更高的运算性能即吞吐率。当协处理器满负荷工作时,如果全0输入和有效数据输入交替进入协处理器,吞吐率(1/2Δt);如果有效数据输入连续进入协处理器水线,吞吐率为(1/Δt)。由于单个逻辑单元的最大延时即Δt远远小于一轮迭代的延时,协处理器不包括寄存器和锁存器,也就避免了由寄存器和锁存器引起的延时;与采用常规方式实现的分组密码算法协处理器(包括同步电路和异步电路,一轮迭代作为流水线的一段)相比,采用本发明设计的异步分组密码算法协处理器的运算性能远远高于前者。
Claims (2)
1.一种异步分组密码算法协处理器的设计方法,其特征在于包括如下步骤:
第一步,对分组密码算法进行子模块划分,将分组密码算法中每一轮迭代作为独立的子模块,各子模块分别记为S1,S2,…Si,…,Sn(n≥1),n表示分组密码算法的迭代轮数;设M为初始明文,K为密钥,C为密文,Rj表示第j轮变换的结果,Kk表示第k轮变换的轮密钥,1≤j≤n-1,2≤k≤n,各子模块之间的连接关系为:(R1,K2)=F1(M,K),(R2,K3)=F2(R1,K2),…,(Rn-1,Kn)=Fn-1(Rn-2,Kn-1),C=Fn(Rn-1,Kn),其中Fi表示第i轮变换的功能函数,1≤i≤n;
第二步,子模块设计,对各子模块Si依次执行如下步骤:
步骤一,采用硬件描述语言HDL描述子模块的功能,完全以组合电路实现各子模块的所有算术和逻辑运算,得到子模块的HDL代码;
步骤二,运用现有的综合工具对各子模块的HDL代码进行逻辑综合,且仅使用反相器、二输入与门和或门这三种标准单元,得到子模块的静态单轨网表;
步骤三,将静态单轨网表转换为仅由互补的二输入与门和或门组成的复合逻辑网表,转换方法为:
步骤1,为静态单轨网表中任意的信号增加对应的反相信号:设w为静态单轨网表中的任意信号,则增加其反相信号w;
步骤2,删除静态单轨网表中所有的反相器:设静态单轨网表中的某个反相器为INVu1(a,z),其中INV表示反相器,u1表示反相器的名称,a为输入信号,z为输出信号,即z为a的反相,则删除网表中的反相器u1,并将网表中的信号z替换为a;
步骤3,为静态单轨网表中任意的二输入与门增加与之互补的或门:设静态单轨网表中某个二输入与门为AND2u2(x1,x2,y1),其中AND2表示二输入与门,u2表示二输入与门的名称,x1和x2为输入信号,y1为输出信号,即y1=(x1∧x2);增加与u2互补的二输入或门OR2 ui2(x1,x2,y1),其中OR2表示二输入或门,ui2表示二输入或门的名称,x1和x2为输入信号,y1为输出信号,即y1=(x1∨x2);
步骤4,为静态单轨网表中任意的二输入或门增加与之互补的与门:设静态单轨网表中某个二输入或门为OR2u3(x3,x4,y2),即y2=(x3∨x4),增加与u3互补的二输入与门AND2ui3(x3,x4,y2),即y2=(x3∧x4);
步骤四,增加与子模块的延时相同的延时匹配模块进行延时匹配,方法为:
步骤1),增加与子模块的延时相同的延时匹配模块,延时匹配模块由顺序连接的缓冲单元BUF组成,BUF为互补的二输入与门和或门组成的复合逻辑单元,BUF的级数与子模块的关键路径所包含的逻辑单元的级数相同;BUF中与门的两个输入均为e,或门的两个输入均为e,双轨信号(e,e)称为运算触发控制信号;当执行有效运算时,将运算触发控制信号置为(1,0);当不执行有效运算时,将运算触发控制信号置为(0,0);运算触发控制信号在延时匹配模块中逐级传递;当运算触发控制信号(1,0)由延时匹配模块的输入端逐级传递至输出端时,即延时匹配模块的输出为(1,0)时,对应子模块也完成了有效的逻辑运算,子模块的输出为正确的计算结果;
步骤2),为不在子模块的关键路径中的输出信号增加缓冲单元BUF:设子模块的所有输出信号为O1,O2,…,Om,m≥1,且输入信号至各输出信号的关键路径包含的逻辑单元的级数分别为H1,H2,…,Hm,设其中最大的逻辑单元级数为H;则为各输出信号添加H-Hp级顺序连接的缓冲单元,1≤p≤m;在被插入的缓冲单元中,除被缓冲的信号外,另一组输入来自延时匹配模块中上一级缓冲单元的输出;
步骤3),为不在子模块关键路径中的输入信号增加缓冲单元BUF:子模块的任意输出信号的运算电路用一棵二叉树来表示时,二叉树中每个结点表示网表中的信号,其子结点要么为空即该信号为子模块的输入信号,要么为对应逻辑单元的两个输入端;二叉树的高度表示从输入信号到输出信号所经过的逻辑单元级数,从二叉树的根结点即输出信号开始,按层序遍历二叉树,保证同一层次信号的到达时间相同,同一层次的逻辑单元同步执行有效运算;设与输出信号o对应的二叉树的高度为h,第2层结点即o的两个子结点o1和o2的子树的高度为h-1;如果o1或o2为子模块的输入信号,则直接为之增加h-2级顺序连接的缓冲单元;第d层的任意结点x的子树的高度应为h-d+1,1<d<h,且如果x为输入信号,则直接为之增加h-d级顺序连接的缓冲单元;直至遍历至第h-1层的结点,如果该层某个结点为输入信号,则直接为之增加一级缓冲单元;
第三步,将经过延时匹配的子模块集成,即将S1,S2,…,Sn顺序连接,子模块S1接受初始输入信号即明文M和密钥K;S1接受S1-1产生的输出,其结果作为S1+1的输入,2≤1≤n-1;Sn产生最终的运算结果即密文C;同时将各子模块对应的延时匹配模块顺序连接,所有子模块集成之后,得到异步分组密码算法协处理器的完整网表;
第四步,进行后端布局布线,得到异步分组密码算法协处理器的GDS版图。
2.如权利要求1所述的异步分组密码算法协处理器的设计方法,其特征在于在进行后端布局布线时,将所有互补的二输入与门和或门成轴对称放置,使双轨信号具有对称的走线和相同的互联线长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200810143205XA CN100573540C (zh) | 2008-09-16 | 2008-09-16 | 一种异步分组密码算法协处理器的设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200810143205XA CN100573540C (zh) | 2008-09-16 | 2008-09-16 | 一种异步分组密码算法协处理器的设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350038A true CN101350038A (zh) | 2009-01-21 |
CN100573540C CN100573540C (zh) | 2009-12-23 |
Family
ID=40268828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200810143205XA Expired - Fee Related CN100573540C (zh) | 2008-09-16 | 2008-09-16 | 一种异步分组密码算法协处理器的设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100573540C (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447556A (zh) * | 2010-10-14 | 2012-05-09 | 上海华虹集成电路有限责任公司 | 一种基于随机偏移的抗差分功耗分析des加密方法 |
CN102546160A (zh) * | 2010-12-08 | 2012-07-04 | 上海华虹集成电路有限责任公司 | 用于椭圆曲线密码防御差分功耗攻击的方法 |
CN102609556A (zh) * | 2011-01-25 | 2012-07-25 | 深圳市证通电子股份有限公司 | 抗功耗攻击aes模块功能设计的方法和电路 |
CN103384197A (zh) * | 2012-05-03 | 2013-11-06 | 国家电网公司 | 一种防御对分组算法能量攻击的电路、芯片和方法 |
CN103986571A (zh) * | 2014-01-15 | 2014-08-13 | 上海新储集成电路有限公司 | 一种智能卡多核处理器系统及其防御差分功耗分析的方法 |
CN104158651A (zh) * | 2014-07-15 | 2014-11-19 | 南京航空航天大学 | 基于数据冗余实时检错机制的全展开结构aes加/解密电路 |
CN104158652A (zh) * | 2014-07-15 | 2014-11-19 | 南京航空航天大学 | 基于数据冗余实时检错机制的循环展开结构aes加/解密电路 |
CN105069215A (zh) * | 2015-07-31 | 2015-11-18 | 中国人民解放军国防科学技术大学 | 一种基于宽线的双轨信号布线方法 |
CN106233660A (zh) * | 2014-03-28 | 2016-12-14 | 索尼公司 | 加密处理设备、加密处理方法和程序 |
CN107241324A (zh) * | 2017-06-01 | 2017-10-10 | 东南大学 | 基于机器学习的密码电路功耗补偿抗旁路攻击方法及电路 |
CN110688813A (zh) * | 2019-08-19 | 2020-01-14 | 上海亿算科技有限公司 | 降低芯片逻辑翻转率的方法及结构 |
-
2008
- 2008-09-16 CN CNB200810143205XA patent/CN100573540C/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102447556A (zh) * | 2010-10-14 | 2012-05-09 | 上海华虹集成电路有限责任公司 | 一种基于随机偏移的抗差分功耗分析des加密方法 |
CN102546160B (zh) * | 2010-12-08 | 2016-03-02 | 上海华虹集成电路有限责任公司 | 用于椭圆曲线密码防御差分功耗攻击的方法 |
CN102546160A (zh) * | 2010-12-08 | 2012-07-04 | 上海华虹集成电路有限责任公司 | 用于椭圆曲线密码防御差分功耗攻击的方法 |
CN102609556A (zh) * | 2011-01-25 | 2012-07-25 | 深圳市证通电子股份有限公司 | 抗功耗攻击aes模块功能设计的方法和电路 |
CN103384197A (zh) * | 2012-05-03 | 2013-11-06 | 国家电网公司 | 一种防御对分组算法能量攻击的电路、芯片和方法 |
CN103384197B (zh) * | 2012-05-03 | 2016-08-31 | 国家电网公司 | 一种防御对分组算法能量攻击的电路、芯片和方法 |
CN103986571A (zh) * | 2014-01-15 | 2014-08-13 | 上海新储集成电路有限公司 | 一种智能卡多核处理器系统及其防御差分功耗分析的方法 |
CN103986571B (zh) * | 2014-01-15 | 2018-04-20 | 上海新储集成电路有限公司 | 一种智能卡多核处理器系统及其防御差分功耗分析的方法 |
CN106233660A (zh) * | 2014-03-28 | 2016-12-14 | 索尼公司 | 加密处理设备、加密处理方法和程序 |
CN104158652A (zh) * | 2014-07-15 | 2014-11-19 | 南京航空航天大学 | 基于数据冗余实时检错机制的循环展开结构aes加/解密电路 |
CN104158651A (zh) * | 2014-07-15 | 2014-11-19 | 南京航空航天大学 | 基于数据冗余实时检错机制的全展开结构aes加/解密电路 |
CN104158651B (zh) * | 2014-07-15 | 2017-05-24 | 南京航空航天大学 | 基于数据冗余实时检错机制的全展开结构aes加/解密电路 |
CN104158652B (zh) * | 2014-07-15 | 2017-05-24 | 南京航空航天大学 | 基于数据冗余实时检错机制的循环展开结构aes加/解密电路 |
CN105069215A (zh) * | 2015-07-31 | 2015-11-18 | 中国人民解放军国防科学技术大学 | 一种基于宽线的双轨信号布线方法 |
CN107241324A (zh) * | 2017-06-01 | 2017-10-10 | 东南大学 | 基于机器学习的密码电路功耗补偿抗旁路攻击方法及电路 |
CN107241324B (zh) * | 2017-06-01 | 2020-07-31 | 东南大学 | 基于机器学习的密码电路功耗补偿抗旁路攻击方法及电路 |
CN110688813A (zh) * | 2019-08-19 | 2020-01-14 | 上海亿算科技有限公司 | 降低芯片逻辑翻转率的方法及结构 |
CN110688813B (zh) * | 2019-08-19 | 2023-04-25 | 青芯半导体科技(上海)有限公司 | 降低芯片逻辑翻转率的方法及结构 |
Also Published As
Publication number | Publication date |
---|---|
CN100573540C (zh) | 2009-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100573540C (zh) | 一种异步分组密码算法协处理器的设计方法 | |
Popp et al. | Masked dual-rail pre-charge logic: DPA-resistance without routing constraints | |
Soltani et al. | An ultra-high throughput and fully pipelined implementation of AES algorithm on FPGA | |
Sokolov et al. | Design and analysis of dual-rail circuits for security applications | |
Morioka et al. | A 10-Gbps full-AES crypto design with a twisted BDD S-Box architecture | |
Nassar et al. | BCDL: A high speed balanced DPL for FPGA with global precharge and no early evaluation | |
Satoh et al. | ASIC-hardware-focused comparison for hash functions MD5, RIPEMD-160, and SHS | |
Mane et al. | High speed area efficient FPGA implementation of AES algorithm | |
JP5509485B2 (ja) | プログラマブル暗号回路を保護する方法、およびその方法で保護される回路 | |
Ahmad et al. | Hardware implementation analysis of SHA-256 and SHA-512 algorithms on FPGAs | |
Danger et al. | Overview of dual rail with precharge logic styles to thwart implementation-level attacks on hardware cryptoprocessors | |
TWI299134B (en) | Wide adder with critical path of three gates | |
McEvoy et al. | Isolated WDDL: A hiding countermeasure for differential power analysis on FPGAs | |
CN114640454A (zh) | 一种后量子密码Crystals Kyber协议的密码系统 | |
Joshi et al. | Implementation of S-Box for advanced encryption standard | |
Elkhatib et al. | Accelerated RISC-V for post-quantum SIKE | |
Popp et al. | Implementation aspects of the DPA-resistant logic style MDPL | |
CN101304312A (zh) | 一种适用于精简指令集处理器的加密单元 | |
Rafiev et al. | Mixed radix reed-muller expansions | |
Akishita et al. | A practical DPA countermeasure with BDD architecture | |
CN201039199Y (zh) | 一种抗功耗攻击的字节替换电路 | |
US20050134319A1 (en) | Logic circuit | |
Atani et al. | On DPA-resistive implementation of FSR-based stream ciphers using SABL logic styles | |
Hulle et al. | Compact Reconfigurable Architecture for Sosemanuk Stream Cipher | |
Praveena et al. | Bus encoded LUT multiplier for portable biomedical therapeutic devices |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091223 Termination date: 20120916 |