CN101366231A - 密码运算处理电路 - Google Patents

密码运算处理电路 Download PDF

Info

Publication number
CN101366231A
CN101366231A CNA2007800018592A CN200780001859A CN101366231A CN 101366231 A CN101366231 A CN 101366231A CN A2007800018592 A CNA2007800018592 A CN A2007800018592A CN 200780001859 A CN200780001859 A CN 200780001859A CN 101366231 A CN101366231 A CN 101366231A
Authority
CN
China
Prior art keywords
mentioned
circuit
operation instruction
control signal
crypto
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.)
Pending
Application number
CNA2007800018592A
Other languages
English (en)
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN101366231A publication Critical patent/CN101366231A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Abstract

具有接收来自CPU(109)等的密码运算指令(111)的执行已结束的信息之后取代CPU(109)等而对密码控制电路(101)发出伪运算指令(113)的伪运算指令电路(100)。在密码运算指令(111)的执行结束后,使通常处于停止状态的存储器、运算器和寄存器等运算资源(103~108)动作来消耗电流,因此很难用消耗电流的大小等来确定密码运算处理的结束或开始等的定时。伪运算指令(113)始终只在没有发送来自CPU(109)等的密码运算指令(111)的期间发出,因此不会使密码运算处理的性能降低。

Description

密码运算处理电路
技术领域
本发明涉及密码运算处理电路,更详细地说是涉及具有防止密钥等隐匿数据的分析的手段的密码运算处理电路。
背景技术
近来,随着使用IC卡或带有IC卡功能的携带式电话机等进行电子交易或自动检票等的发展,IC卡等的安全保证成为重要问题。
但是,已经发现了通过观测和分析IC卡进行密码运算处理期间的消耗功率(消耗电流)来分析IC卡内部的密钥或密码运算处理内容的方法。作为代表性的分析手段,有将消耗电流的变化用于直接分析的方法即简单功率分析(Simple Power Analysis;SPA)或通过对观测数据进行统计处理来推断机密密钥的方法即功率差分分析(Differential Power Analysis;DPA)等。
作为现有的简单功率分析对策,已知在通常处理期间插入用于使密码运算处理步骤的定时改变的虚拟处理的手法、或使动作(工作)时钟周期改变从而使消耗电流在时间轴上改变的手法。这些手法,每次都使密码运算处理的步骤或定时改变、并使从时间轴看去时的消耗电流波形改变,因此,使在时间轴上对电流波形进行比较的这种数据依存性的分析实际上变得不可能,从而实现了机密保护(参照专利文献1)。
作为现有的功率差分分析对策,已知由噪声生成电路将噪声电流重叠在通常处理的消耗电流上的手法。在这种手法中,即使反复进行多次相同的运算,电流波形也不相同,因此使差分分析很难进行,从而实现了机密保护(参照专利文献2)。
专利文献1:日本特开2000—259799号公报
专利文献2:日本特开2005—252705号公报
发明内容
作为简单功率分析对策,当过多地追加用于使密码运算处理步骤的定时改变的虚拟处理时,则存在着直到密码运算执行结束为止的时间延长、密码运算处理的性能显著降低的问题。相反,在用于使密码运算处理步骤的定时改变的虚拟处理较少时,密码运算处理的性能降低较小,但存在着很容易在外部读取由通常密码处理引起的电流波形变化这样的问题。
作为简单功率分析对策,对于使动作时钟周期改变从而使消耗电流在时间轴上改变的手法,存在着易于从外部观测时钟周期等信息并可通过数字信号处理将所观测到的电流波形作为一定的时钟周期的电流波形进行修复分析这样的问题。
作为功率差分分析对策,对于由噪声生成电路将噪声电流重叠在通常处理的消耗电流上的手法,可利用近来的作为LSI分析技术的液晶分析、发光分析等在LSI内部确定消耗了电流的物理位置。按照液晶分析,可将特定部位的电流变化作为液晶的透射率变化进行观测,因而存在着可进行电流分析的问题。
为解决上述课题,本发明的密码运算处理电路的特征在于,包括存储密码运算用数据的存储器;用于对该密码运算用数据进行运算的运算器;用于暂时存储对该运算器的输入输出数据的寄存器;接收密码运算指令并为了对密码运算用数据进行密码处理而对存储器、运算器和寄存器进行控制的密码控制电路;接收用于指示密码运算指令的执行已结束的运算完成信号并对密码控制电路发出用于使存储器、运算器和寄存器动作的伪运算指令的伪运算指令电路。
本发明的密码运算处理电路,在来自CPU等的密码运算指令的执行结束后,由伪运算指令电路发出使如果是通常则停止着的存储器、运算器和寄存器动作的伪运算指令,从而使存储器、运算器或寄存器以与密码运算指令相同的指令进行动作并消耗电流,因此,很难用消耗电流的大小等确定密码运算处理的结束或开始等的定时,因而保密性提高。进而,伪运算指令始终只在没有发送来自CPU等的密码运算指令的期间发出,因此决不会使来自CPU等的密码运算指令的发送延迟,因此不会使密码运算处理的性能降低。
附图说明
图1是表示本发明的密码运算处理电路的结构例的框图。
图2是表示图1的密码运算处理电路的动作的时序图。
图3是表示图1的密码运算处理电路中没有伪运算指令电路时的动作的时序图。
图4是表示图1中的伪运算指令电路的详细结构例的框图。
图5是表示图4中的密码运算指令存储电路的存储内容的例子的图。
图6是表示图1中的密码控制电路的详细结构例的框图。
图7是表示具有图6的密码控制电路的密码运算处理电路的动作的时序图。
图8是表示具有图6的密码控制电路的密码运算处理电路的动作的另一个时序图。
图9是表示具有图6的密码控制电路的密码运算处理电路的动作的又一个时序图。
图10是表示具有图6的密码控制电路的密码运算处理电路的动作的其他的时序图。
图11是将图7~图10汇总后示出的时序图。
图12是表示图6中的伪控制电路的详细结构例的框图。
图13是表示图12中的通常控制信号存储电路的存储内容的例子的图。
图14是表示图1的密码运算处理电路的变形例的框图。
图15是表示图14中的密码运算指令存储电路的存储内容的例子的图。
图16是表示图14中的通常控制信号存储电路的存储内容的例子的图。
图17是表示图6的变形例的密码控制电路和运算部的结构的框图。
图18是表示具有图17的密码控制电路和运算部的密码运算处理电路的动作的时序图。
图19是表示图17的变形例的运算部的结构的框图。
图20是表示具有图19的运算部的密码运算处理电路的动作的时序图。
标号说明
100  伪运算指令电路                                 101  密码控制电路
102  运算部                                         103  存储器A
104  存储器B                                        105  运算器
106  寄存器A                                        107  寄存器B
108  寄存器C                                        109  CPU
110  时钟                                           111  密码运算指令
112  密码运算完成信号                               113  伪运算指令
114  运算完成信号                                   115  存储器A控制信号
116  寄存器A控制信号                                117  寄存器B控制信号
118  运算器控制信号                                 119  寄存器C控制信号
120  存储器B控制信号                                121  存储器A输出数据
122  存储器A输出数据                                123  寄存器B输出数据
124  运算器输出数据                                 125  寄存器C输出数据
400  密码运算指令存储电路                           401  伪运算指令生成电路
402  密码运算指令履历信息                           600  动作状况通知电路
601  通常控制电路                                   602  伪控制电路
603  选择器
604  通常控制电路存储器A控制信号
605  通常控制电路寄存器A控制信号
606  通常控制电路寄存器B控制信号
607  通常控制电路运算器控制信号
608  通常控制电路寄存器C控制信号
609  通常控制电路存储器B控制信号
610  伪控制电路存储器A控制信号
611  伪控制电路寄存器A控制信号
612  伪控制电路寄存器B控制信号
613  伪控制电路运算器控制信号
614  伪控制电路寄存器C控制信号
615  伪控制电路存储器B控制信号
616  动作状况通知信号                              800  通常控制信号存储电路
801  伪控制信号生成电路                            802  通常控制信号履历信息
1000 位值0计数电路                                 1001 位值0计数信息
1300 预置电路A                                     1301 预置电路B
1302 预置电路A控制信号                             1303 预置电路B控制信号
1304 预置电路A输出数据                             1305 预置电路B输出数据
1306 脉冲信号发生电路                              1500 延迟电路A
1501 延迟电路B                                     1502 延迟电路A输出数据
1503 延迟电路B输出数据
具体实施方式
以下,参照附图说明用于实施本发明的优选方式。此外,对图中相同或相当的部分标以相同的符号,并不再重复其说明。
图1示出本发明的密码运算处理电路的结构例。图1的密码运算处理电路具有伪运算指令电路100、密码控制电路101、运算部102、存储器A103、存储器B104。运算部102具有运算器105、寄存器A106、寄存器B107、寄存器C108。
伪运算指令电路100根据从CPU109输出的密码运算指令111识别开始密码运算的情况,然后接收指示密码运算指令111的执行已结束的信号即运算完成信号114,并对CPU109输出密码运算完成信号112,并且对密码控制电路101发出伪运算指令113。之后,当接收还作为指示伪运算指令113的执行已结束的信号的运算完成信号114并识别出伪运算已完成时,再次发出伪运算指令113。伪运算指令113的发送反复进行直到从CPU109输出新的密码运算指令111为止。
密码控制电路101接收来自CPU109的密码运算指令111或来自伪运算指令电路100的伪运算指令113,为了控制存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107、寄存器C108而输出存储器A控制信号115、存储器B控制信号120、运算器控制信号118、寄存器A控制信号116、寄存器B控制信号117、寄存器C控制信号119。而且,当密码运算指令111或伪运算指令113的执行结束时,密码控制电路101输出运算完成信号114。当伪运算指令113的处理正在执行中而从CPU109发出了密码运算指令111时,强制性地结束基于伪运算指令113进行的控制,并开始密码运算指令111的处理。
存储器A103,例如是与时钟脉冲110的下降沿同步的存储器,从由来自密码控制电路101的存储器A控制信号115指示的地址输出存储器A输出数据121。
存储器B104,例如是与时钟脉冲110的下降沿同步的存储器,对由来自密码控制电路101的存储器B控制信号120指示的地址写入寄存器C输出数据125。
运算器105是组合电路,将存储器A输出数据122和寄存器B输出数据123作为输入进行基于运算器控制信号118的运算,并将结果输出为运算器输出数据124。
寄存器A106,将存储器A输出数据121作为输入,当来自密码控制电路101的寄存器A控制信号116变为有效时,保持存储器A输出数据121,并输出为存储器A输出数据122。
寄存器B107,将存储器A输出数据121作为输入,当来自密码控制电路101的寄存器B控制信号117变为有效时,保持存储器A输出数据121,并输出为存储器B输出数据123。
寄存器C108,将运算器输出数据124作为输入,当来自密码控制电路101的寄存器C控制信号119变为有效时,保持运算器输出数据124,并输出为寄存器C输出数据125。
CPU109对密码控制电路101发出密码运算指令111来实施密码运算处理,而且接收来自伪运算指令电路100的密码运算完成信号112来识别密码运算处理的结束。
图2示出图1的密码运算处理电路的动作。在此,作为一例,首先假定从CPU109发出称为指令1的密码运算指令111。
密码控制电路101对指令1进行解码,分别从存储器A103的地址A1、地址A2读出数据D1、数据D2,并将数据D1存储在寄存器A106、将数据D2存储在寄存器B107。存储器A消耗电流II是存储器A103进行了读出动作而产生的消耗电流,形成与地址A1、地址A2的读出动作对应的消耗电流波形。
密码控制电路101对指令1进行解码并输出运算1作为运算器控制信号118。在该例中,运算1是在确定输出结果之前最低需要5个时钟周期的指令。运算器105对存储器A输出数据122的输出D1和寄存器B输出数据123的输出D2进行运算,并在3个时钟周期后输出DA作为运算器输出数据124。每当对作为组合电路的运算器105的输入寄存器即寄存器A106和寄存器B107存储数据时,运算部消耗电流II发生变化,在确定了寄存器A106和寄存器B107的值之后,运算也要执行3个时钟周期,因此将消耗电流。
密码控制电路101对指令1进行解码后输出用于在运算1结束的定时将运算结果存储在寄存器C108中的寄存器C控制信号119,并将DA存储在寄存器C108。然后,密码控制电路101对指令1进行解码后发出存储器B控制信号120,将寄存器C输出数据125即DA存储在存储器B104的地址AA。存储器B消耗电流II是对存储器B104进行了写入动作而产生的消耗电流,形成与对地址AA的写入动作对应的消耗电流波形。
之后,密码控制电路101将指示来自CPU109的指令1的执行已结束的运算完成信号114输出到伪运算指令电路100。
伪运算指令电路100在根据从CPU109输出的密码运算指令111识别出已开始了指令1的密码运算之后,接收作为指示指令1的执行已结束的信号的运算完成信号114,并对CPU109输出密码运算完成信号112。以下,将该指令1的密码运算的从开始到结束的期间定义为“密码运算处理1”。
在CPU109中,在接收到密码运算完成信号112后为了发出新的密码运算指令111即指令2,需要几十个时钟周期作为程序处理期间。但是,在图2中示出从接收指令1的密码运算完成信号112起在8时钟周期后发出了指令2的例子。
伪运算指令电路100对密码控制电路101发出指令G作为伪运算指令113。在此,假定指令G为从伪运算指令电路100固定输出的指令,分别从存储器A103的地址a1、地址a2读出数据d1、数据d2,并将数据d1存储在寄存器A106、将数据d2存储在寄存器B107,在运算器105中进行需要2个时钟周期的运算直到输出结果确定为止,在将dx作为运算结果存储在寄存器C108并将dx存储在存储器B104的地址ax之后,向伪运算指令电路100输出运算完成信号114并结束指令G的处理。此外,由于需要存储器B控制信号120的数据存储用地址ax不破坏密码运算指令111等使用的存储空间,因此,将CPU109不使用的地址用作数据存储用地址。
伪运算指令电路100根据指示伪运算指令113的执行已结束的运算完成信号114反复进行伪运算指令113的发送,直到从CPU109输出新的密码运算指令111为止,但在图2的例子中,由于在同一定时从CPU109发出了作为新的密码运算指令111的指令2,因此,中止伪运算指令113的发送。以下,将从该伪运算指令113的实行开始到结束的期间定义为“伪运算处理”。
在图2中,图1的密码运算处理电路的总体的消耗电流波形为存储器A消耗电流II、运算器消耗电流II和存储器B消耗电流II之和,因而“电路总体的消耗电流II”是合计后的消耗电流波形。在图2中,电路总体的消耗电流II在“密码运算处理1”期间和“伪运算处理”期间,为大致连续的消耗电流波形。
图3示出图1的密码运算处理电路中没有作为本发明的构成要素的伪运算指令电路100时的动作。在图3中可以看出,在相当于图2的“伪运算处理”期间的时钟周期期间,密码运算处理电路不动作,所以电路总体的消耗电流I的波形持续地成为LOW(低)电平期间,可从消耗电流波形的变化明确指令执行的结束、开始的定时。
如上所述,在图1的密码运算处理电路中,在来自CPU109等的密码运算指令111的执行结束后,由伪运算指令电路100发出使如果是通常则停止着的存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107、寄存器C108进行动作的伪运算指令113,存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107、寄存器C108与发出了密码运算指令111时相同的方式进行动作并消耗电流,因此,很难用消耗电流的大小等来确定出密码运算处理的结束或开始等的定时,因而保密性提高。
进而,伪运算指令113只在没有发送来自CPU109等的密码运算指令111的期间被发送,因此不会使来自CPU109等的密码运算指令111的发送延迟,所以不会降低密码运算处理的性能(performance)。
在此,假定伪运算指令113是固定的且总是发出相同的指令,但也可以将与此前从CPU109发出的密码运算指令111相同的指令作为伪运算指令113来发出。由此,即使在密码运算指令111的执行结束,也要执行具有相同的消耗电流波形的伪运算指令113,因此很难分析出密码运算指令111的执行在哪个定时结束这一情况,对电流分析的保密性进一步提高。
此外,存储器A103和存储器B104也可以是相同的存储器。而且,运算器105的输入和保持其输入数据的寄存器也可以是3个以上。而且,运算器105也可以由加法器、乘法器等多个运算要素构成。
图4示出图1中的伪运算指令电路100的详细结构例。图4的伪运算指令电路100包括存储来自CPU109的密码运算指令111的密码运算指令存储电路400、和从过去的密码运算指令历史生成伪运算指令113的伪运算指令生成电路401。
密码运算指令存储电路400存储CPU109输出的密码运算指令111来作为密码运算指令历史信息402。
伪运算指令生成电路401接收指示密码运算指令111的执行已结束的信号即运算完成信号114,根据从密码运算指令存储电路400输出的密码运算指令历史信息402生成伪运算指令113。
图5示出图4中的密码运算指令存储电路400的存储内容的一例。如图5所示,密码运算指令存储电路400将过去发送的多个密码运算指令111存储在由RAM形成的FIFO(FIRST-IN FIRST-OUT:先进先出)存储器中。在此,将存储有密码运算指令111的FIFO地址称为存储槽(slot)。
在图5中具有5个存储槽,从存储槽1开始依次存入过去的密码运算指令111,当存储槽占满时从存储于存储槽5的密码运算指令111起废除。在此,在存储槽1中存储有通过进行以分别来自地址2和地址3的160位长的数据作为输入的乘法运算来将结果输出到地址0的指令,在存储槽2中存储有通过进行以分别来自地址0和地址1的160位长的数据作为输入的加法运算来将结果输出到地址1的指令,在存储槽3中存储有通过以分别来自地址4和地址5的160位长的数据作为输入的乘法运算来将结果输出到地址0的指令,在存储槽4中存储有通过以分别来自地址0和地址1的160位长的数据作为输入的加法运算来将结果输出到地址1的指令,在存储槽5中存储有通过以分别来自地址1和地址6的160位长的数据作为输入的减法运算来将结果输出到地址1的指令。
伪运算指令生成电路401接收指示密码运算指令111的执行已结束的信号即运算完成信号114,检索存储槽1~存储槽5中所存储的密码运算指令111,识别出以160位作为输入的乘法运算为2次、以160位作为输入的加法运算为2次、以160位作为输入的减法运算为1次,在出现频率上乘法运算和加法运算的次数相同,但在最后发送的存储槽1中存储有乘法运算,因此决定选择加法运算,并选择存储槽4,根据存储槽4的密码运算指令111生成通过进行将分别来自地址0和地址1的160位长的数据作为输入的加法运算来将结果输出到地址AX的伪运算指令113。由于需要数据存储用地址AX不破坏密码运算指令111等使用的存储空间,因此,将CPU109不使用的地址用作数据存储用地址。
如上所述,在图4的结构中,将从CPU109逐次发出的密码运算指令111存储在RAM等中,并从所存储的密码运算指令111中选择出现频率高的密码运算指令111作为伪运算指令113发出,因此,即使实施电流分析,也很难分清是执行着逐次发出的密码运算指令111、还是作为伪运算指令113执行着出现频率高的密码运算指令111,因而对电流分析的保密性进一步提高。
此外,伪运算指令生成电路401也可以从所存储的密码运算指令111中随机地选择密码运算指令111来作为伪运算指令113发出。由此,即使实施电流分析,也很难分清是执行着逐次发出的密码运算指令111、还是作为伪运算指令113随机地执行着过去的密码运算指令111,因而对电流分析的保密性进一步提高。
另外,密码运算指令存储电路400也可以由非易失性存储器构成。由此,将从CPU109逐次发出的密码运算指令111存储在非易失性存储器中,即使在电源断电后也仍能存储过去的密码运算指令111的历史,并从所存储的密码运算指令111中选择密码运算指令111来作为伪运算指令113发出,因此,即使是在接通电源后执行密码运算并反复执行电源断电等程序借以观测电流波形变化的电流分析手法中,也很难分清是执行着密码运算指令111、还是作为伪运算指令113执行着过去的密码运算指令111,因而对电流分析的保密性进一步提高。
此外,密码运算指令存储电路400的存储槽数在此设为5个,但存储槽数也可以增减。
其次,即使是正在执行来自CPU109的密码运算指令111的过程中,也存在着存储器103、104、运算器105和寄存器106、107、108以时钟周期为单位停止的期间。而且,即使是伪运算指令113正在执行中,也存在着存储器103、104、运算器105和寄存器106、107、108以时钟周期为单位停止的期间。着眼于这一点,在以下说明的例子中,通过使这些运算资源103~108总是进行动作来消耗电流,从而使对电流分析的保密性进一步提高。
图6示出图1中的密码控制电路101的详细结构例。图6的密码控制电路101具有动作状况通知电路600、通常控制电路601、伪控制电路602、选择器603。
通常控制电路601接收密码运算指令111或伪运算指令113,对选择器603输出通常控制电路存储器A控制信号604、通常控制电路寄存器A控制信号605、通常控制电路寄存器B控制信号606、通常控制电路运算器控制信号607、通常控制电路寄存器C控制信号608、通常控制电路存储器B控制信号609(以下将这些控制信号称为通常控制信号)。而且,当根据密码运算指令111或伪运算指令113进行的控制结束时,对伪运算指令电路100输出运算完成信号114。
伪控制电路602对选择器603输出伪控制电路存储器A控制信号610、伪控制电路寄存器A控制信号611、伪控制电路寄存器B控制信号612、伪控制电路运算器控制信号613、伪控制电路寄存器C控制信号614、伪控制电路存储器B控制信号615(以下将这些控制信号称为伪控制信号)。
即使是密码运算指令111或伪运算指令113正在执行中,动作状况通知电路600也对选择器603输出指示来自通常控制电路601的通常控制信号不需要占有存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107或寄存器C108的时钟周期期间的6位的动作状况通知信号[5:0]616。
选择器603根据动作状况通知信号[5:0]616进行选择,由动作状况通知信号[0]从通常控制电路存储器A控制信号604或伪控制电路存储器A控制信号610中选择存储器A控制信号115,由动作状况通知信号[1]从通常控制电路寄存器A控制信号605或伪控制电路寄存器A控制信号611中选择寄存器A控制信号116,由动作状况通知信号[2]从通常控制电路寄存器B控制信号606或伪控制电路寄存器B控制信号612中选择寄存器B控制信号117,由动作状况通知信号[3]从通常控制电路运算器控制信号607或伪控制电路运算器控制信号613中选择运算器控制信号118,由动作状况通知信号[4]从通常控制电路寄存器C控制信号608或伪控制电路寄存器C控制信号614中选择寄存器C控制信号119,由动作状况通知信号[5]从通常控制电路存储器B控制信号609或伪控制电路存储器B控制信号615中选择存储器B控制信号120。
以下,参照图7~图11说明如上述那样构成的密码运算处理电路的动作。此外,在图7~图10中,将为正确执行密码运算指令111而来自密码控制电路101的各种控制信号必须占有存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107或寄存器C108的期间分别表示为“存储器A控制占有期间”、“存储器B控制占有期间”、“运算器控制占有期间”、“寄存器A控制占有期间”、“寄存器B控制占有期间”、“寄存器C控制占有期间”。
图7是根据来自动作状况通知电路600的动作状况通知信号[0]616而从通常控制电路存储器A控制信号604或伪控制电路存储器A控制信号610中选择存储器A控制信号115的例子。
动作状况通知信号[0]616是作为对密码运算指令111进行解码后的结果在2个时钟周期选择通常控制电路存储器A控制信号604、并在除此以外的期间选择伪控制电路存储器A控制信号610的信号。通常控制电路存储器A控制信号604是地址A1、地址A2的读出信号,伪控制电路存储器A控制信号610输出按每个时钟周期增1的从地址A6到地址A16的读出信号。
选择器603根据动作状况通知信号[0]616,从通常控制电路存储器A控制信号604或伪控制电路存储器A控制信号610中输出在每个时钟周期访问存储器A103那样的存储器A控制信号115。根据该存储器A控制信号115,从存储器A103读出存储器A输出数据121,作为其结果,得到如存储器A消耗电流III那样的每个时钟周期消耗电流的消耗电流波形。
图8是根据来自动作状况通知电路600的动作状况通知信号[1]616从通常控制电路寄存器A控制信号605或伪控制电路寄存器A控制信号611中选择寄存器A控制信号116、且根据动作状况通知信号[2]616从通常控制电路寄存器B控制信号606或伪控制电路寄存器B控制信号612中选择寄存器B控制信号117的例子。
动作状况通知信号[1]616是作为对密码运算指令111进行解码后的结果在6个时钟周期选择通常控制电路寄存器A控制信号605、在除此之外的期间选择伪控制电路寄存器A控制信号611的信号。通常控制电路寄存器A控制信号605是用于将来自存储器A输出数据121的值D1存储在寄存器A106中的信号,伪控制电路寄存器A控制信号611是由于在每个时钟周期都将存储器A输出数据121取入到寄存器A106中,因此总是输出High(高)电平的信号。
动作状况通知信号[2]616,是作为对密码运算指令111进行解码后的结果在5个时钟周期选择通常控制电路寄存器B控制信号606、在除此之外的期间选择伪控制电路寄存器B控制信号612的信号。通常控制电路寄存器B控制信号606是用于将来自存储器A输出数据121的数据D2存储在寄存器B107中的信号,伪控制电路寄存器B控制信号612是由于在每个时钟周期都将存储器A输出数据121取入到寄存器B107中,因此总是输出High电平的信号。
选择器603根据动作状况通知信号[1]616,输出如将来自存储器A输出数据121的数据D6、数据D7、数据D1、数据D14、数据D15、数据D16取入到寄存器A106那样的寄存器A控制信号116。并且,选择器603还根据动作状况通知信号[2]616,输出如将来自存储器A输出数据121的数据D6、数据D7、数据D1、数据D2、数据D14、数据D15、数据D16取入到寄存器B107那样的寄存器B控制信号117。
图9是根据来自动作状况通知电路600的动作状况通知信号[3]616从通常控制电路运算器控制信号607或伪控制电路运算器控制信号613中选择运算器控制信号118、且根据动作状况通知信号[4]616从通常控制电路寄存器C控制信号608或伪控制电路寄存器C控制信号614中选择寄存器C控制信号119的例子。
动作状况通知信号[3]616是作为对密码运算指令111进行解码后的结果在5个时钟周期选择通常控制电路运算器控制信号607、在除此之外的期间选择伪控制电路运算器控制信号613的信号。通常控制电路运算器控制信号607是用于由运算器105以来自存储器A输出数据122的值D1和来自寄存器B输出数据123的值D2作为输入来执行运算1的信号,伪控制电路运算器控制信号613是用于将存储器A输出数据122和寄存器B输出数据123作为输入并使运算器105动作的信号,在该例中,输出用于以每个时钟周期为单位执行运算0~运算10的信号。
动作状况通知信号[4]616是作为对密码运算指令111进行解码后的结果在1个时钟周期选择通常控制电路寄存器C控制信号608、在除此之外的期间选择伪控制电路寄存器C控制信号614的信号。通常控制电路寄存器C控制信号608是用于将作为来自运算器输出数据124的运算结果的值DA存储在寄存器C108的信号,伪控制电路寄存器C控制信号614是由于在每个时钟周期都将运算器输出数据124取入到寄存器C108中,因此总是输出High电平的信号。
选择器603根据动作状况通知信号[3]616,输出如将存储器A输出数据122和寄存器B输出数据123作为运算器105的输入而由运算器105执行运算0、运算1、运算2、运算1、运算8、运算9、运算10那样的运算器控制信号118。并且,选择器603还根据动作状况通知信号[4]616,输出如在每个时钟周期将运算器输出数据124取入到寄存器C108那样的寄存器C控制信号119。根据上述运算器控制信号118和寄存器C控制信号119,由运算器105在每个时钟周期执行某些运算并存储在寄存器C108中,因此能够得到如运算部消耗电流III那样的每个时钟周期消耗电流的消耗电流波形。
图10是根据来自动作状况通知电路600的动作状况通知信号[5]616从通常控制电路存储器B控制信号609或伪控制电路存储器B控制信号615中选择存储器B控制信号120的例子。
动作状况通知信号[5]616是作为对密码运算指令111进行解码后的结果在1个时钟周期选择通常控制电路存储器B控制信号609、在除此之外的期间选择伪控制电路存储器B控制信号615的信号。通常控制电路存储器B控制信号609是对存储器B104的地址AA写入寄存器C输出数据值DA的写入信号,伪控制电路存储器B控制信号615是在每个时钟周期对存储器B104的固定地址AX写入寄存器C输出数据125的写入信号。关于根据伪控制电路存储器B控制信号615进行的对存储器B104的写入动作,按照地址有可能盖写密码运算指令111等所需的数据,所以将CPU109不使用的地址AX用作数据存储用地址。
选择器603根据动作状况通知信号[5]616,从通常控制电路存储器B控制信号609或伪控制电路存储器B控制信号615输出在每个时钟周期对存储器B104进行写入的存储器B控制信号120。根据该存储器B控制信号120,将寄存器C输出数据125写入存储器B104,作为其结果,能够得到如存储器B消耗电流III那样的每个时钟周期消耗电流的消耗电流波形。
图11是将图7~图10汇总后的图。在图11中,密码运算处理电路的消耗电流波形为存储器A消耗电流III、运算部消耗电流III和存储器B消耗电流III之和,因而“电路总体的消耗电流III”是合计后的消耗电流波形。电路总体的消耗电流III与图2的总体的消耗电流II的“密码运算处理1”期间相比,是更为连续的消耗电流波形。
此外,在图7~图11中说明了在密码运算指令111的执行中的密码控制电路101的动作,但伪运算指令113的执行情况也相同。
如上所述,在图6的结构中,包括产生用于执行密码运算指令111或伪运算指令113的通常控制信号604~609的通常控制电路601、即使正在执行在密码运算指令111或伪运算指令113也指示通常控制电路601不需要占有存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107或寄存器C108的时钟周期期间的动作状况通知电路600、产生用于强制性地使存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107或寄存器C108进行动作的伪控制信号610~615的伪控制电路602、以及根据来自动作状况通知电路600的通知切换通常控制信号604~609和伪控制信号610~615的选择器603,因此,在通常控制电路601不需要占有存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107或寄存器C108的期间,能够将控制从通常控制电路601切换到伪控制电路602,从而使存储器A103、存储器B104、运算器105、寄存器A106、寄存器B107或寄存器C108总是进行动作来消耗电流,即使是密码运算指令111或伪运算指令113正在执行中也能够使消耗电流变得更均匀,从而对电流分析的保密性进一步提高。
图12示出图6中的伪控制电路602的详细结构例。图12的伪控制电路602包括通常控制信号存储电路800、和伪控制信号生成电路801。通常控制信号存储电路800根据通常控制电路601输出的通常控制信号604~609来存储通常控制信号历史信息802。伪控制信号生成电路801读出通常控制信号存储电路800所存储的通常控制信号历史信息802,生成并输出伪控制信号610~615。
图13示出图12中的通常控制信号存储电路800的存储内容的例子。如图13所示,通常控制信号存储电路800在其内部具有多个用于存储数据的存储槽。各存储槽具有以1个集合来存储通常控制电路601输出的通常控制电路运算器控制信号607、从通常控制电路存储器A控制信号604和通常控制电路寄存器A控制信号605得到的存储器A地址(寄存器A用)、从通常控制电路存储器A控制信号604和通常控制电路寄存器B控制信号606得到的存储器A地址(寄存器B用)、从通常控制电路存储器B控制信号609得到的存储器B地址的结构。
伪控制信号生成电路801读出存储在这些存储槽的每1个内的通常控制信号历史信息802,并生成伪控制信号610~615。对于该伪控制信号生成电路801读出哪个存储槽的数据的算法,可以是(1)按照在存储槽中所存储的顺序来读出、(2)选择频率最高的密码运算指令的存储槽、(3)随机地选择存储槽等的任何一种算法。
在用如上所述的算法进行读出时,即使在时钟周期单位中也能够进行过去实施过的运算资源103~108的动作、或过去的具有频率高的消耗电流波形的运算资源103~108的动作、或过去的消耗电流波形的状态随机出现的运算资源103~108的动作,密码运算指令或伪运算指令113的消耗电流变得均匀,因此对电流分析的保密性进一步提高。
另外,通常控制信号存储电路800也可以由非易失性存储器构成。在这种情况下,即使在电源断电后也仍能存储过去的通常控制信号历史信息802,并从所存储的通常控制信号604~609中选择并输出伪控制信号610~615,因此,即使是在如接通电源后执行密码运算并反复执行电源断电等程序借以观测电流波形变化那样的电流分析手法中,密码运算指令111执行中或伪运算指令113执行中所呈现的消耗电流波形取决于所存储的过去的通常控制信号604~609,因此对电流分析的保密性进一步提高。
其次,在该运算器105中的处理相同的情况下,运算器105的消耗电流在很大程度上取决于作为运算对象的输入数据。具体地说,当在输入数据中位值0较多时和较少时,在消耗电流上就出现了差别。因此,在以下说明的例子中,通过利用位值0的计数来提高对电流分析的保密性。
图14示出图1的密码运算处理电路的变形例。在图14中,除图1所示的密码运算处理电路的结构以外,还具有位值0计数电路1000。位值0计数电路1000将存储器A输出数据121作为输入,对该输入数据的位值为0的位数进行计数,并将其作为位值0计数信息1001输出到密码运算指令存储电路400和通常控制信号存储电路800。
例如,当存储器A输出数据121具有32位的数据宽度并以十六进制数表示而输出了39DF7EB6的数据时,该数据以二进制数表示为0011_1001_1101_1111_0111_1110_1011_0110,所以位值为0的位的数为10个。因此,位值0计数信息1001输出10。
图15示出图14中的密码运算指令存储电路400的存储内容的例子。如图15所示,密码运算指令存储电路400除了密码运算指令111以外,还具有将位值0计数信息1001存储在相同存储槽的结构。在此,假定从存储槽序号小的开始依次为最近存储的数据。
当假定存储器A输出数据121具有32位的数据宽度时,存储在图15的存储槽1的密码运算指令111,将地址A1和地址A2的各数据作为输入并进行指令3的运算,将其结果存储在地址A3中,此时由位值0计数电路1000计数所得到的位值0计数信息1001,在地址A1中为17、在地址A2中为14。
存储在存储槽2的密码运算指令111,将地址A5和地址A6的各数据作为输入并进行指令3的运算,将其结果存储在地址A7中,此时由位值0计数电路1000计数所得到的位值0计数信息1001,在地址A5中为14、在地址A6中为16。
存储在存储槽3中的密码运算指令111,将地址A7和地址A8的各数据作为输入并进行指令3的运算,将其结果存储在地址A9中,此时由位值0计数电路1000计数所得到的位值0计数信息1001,在地址A7中为5、在地址A8中为3。即,可看出从地址A7和地址A8读出的数据都是相对于32位的数据宽度其位值0的计数非常少的数据。
存储在存储槽4中的密码运算指令111,将地址A3和地址A4的各数据作为输入并进行指令3的运算,将其结果存储在地址A5中,此时由位值0计数电路1000计数所得到的位值0计数信息1001,在地址A3中为18、在地址A4中为19。
存储在各存储槽中的密码运算指令111都是向运算器105发出指令3的指令,存储在各存储槽中的0值计数具有存储槽3较少的特征,存储槽1、存储槽2、存储槽4为类似的数字。在存在相对于数据宽度0值计数非常少、或非常多的数据的情况下,使用了这种数据的密码运算所激活的位数非常少,因此在密码运算处理中的消耗电流波形上产生独特的峰值。
对于伪运算指令生成电路401,当接收指示密码运算指令111的执行已结束的信号即运算完成信号114后检索存储槽1~存储槽4中所存储的密码运算指令111并识别出所有存储槽都是指令3时,进一步检索位值0计数信息1001。在存在相对于数据宽度0值计数非常少、或非常多的数据的情况下,使用了这种数据的运算所激活的位数非常少,所以在密码运算处理中的消耗电流波形上产生独特的峰值,因此生成有意图地使该峰值增加的伪运算指令113。由此,选择使用了位于最小的位值0计数的存储槽即存储槽3来生成伪运算指令113。
如上所述,在具有图14的结构的密码运算处理电路中,伪运算指令生成电路401判断存储在密码运算指令存储电路400中的位值0计数的分布并选择使用了位于最大或最小的位值0计数的密码运算指令111来生成伪运算指令113,因此,所生成的伪运算指令113能够表示出过去的异常的消耗电流波形,从而很难分清是执行着密码运算指令111、还是作为伪运算指令113执行着表示出过去的异常的消耗电流波形的密码运算指令111,因而对电流分析的保密性进一步提高。
此外,伪运算指令生成电路401也可以判断存储在密码运算指令存储电路400的位值0计数的分布并选择使用了位于平均值的位值0计数的密码运算指令111来生成伪运算指令113。由于选择使用了位于平均值的位值0计数的密码运算指令111来生成伪运算指令113,因此,所生成的伪运算指令113能够表示出平均的消耗电流波形,从而很难分清是执行着密码运算指令111、还是作为伪运算指令113执行着数据中所包含的位值0计数的频率较高的密码运算指令111,因而对电流分析的保密性进一步提高。
图16示出图14中的通常控制信号存储电路800的存储内容的例子。如图16所示,通常控制信号存储电路800除了通常控制电路运算器控制信号607、存储器A地址和存储器B地址以外,还具有以1个集合来存储位值0计数信息1001的结构。在此,假定从存储槽序号小的开始依次为最近存储的数据。
当假定存储器A输出数据121具有32位的数据宽度时,按照图16的存储槽1,对从存储器A地址(寄存器A用)A1和存储器A地址(寄存器B用)A2读出的数据,作为通常控制电路运算器控制信号607发出运算2,并将运算结果写入存储器B地址AA。这时由位值0计数电路1000计数所得到的寄存器A用和寄存器B用的位值0计数信息1001分别为31和32。即,可以看出是是位值0的计数相对于32位的数据宽度非常多的数据。
另外,相反,在图16的存储槽3所存储的数据中,由位值0计数电路1000计数所得到的寄存器A用和寄存器B用的位值0计数信息1001分别为0和1,因此,可以看出是位值0的计数相对于32位的数据宽度非常少的数据。
如上所述,当存在0值计数相对于数据宽度非常少、或非常多的数据时,由于使用了这种数据的密码运算所激活的位数非常少,所以在密码运算处理中的消耗电流波形上产生独特的峰值。
由于存储槽1中所存储的数据是最新的数据,所以由通常控制电路601输出了产生如上所述的独特的峰值的通常控制信号604~609。在这种情况下,如果接在其后的伪控制信号610~615不是产生同样的独特峰值的控制信号,就不能有效地进行伪装。而与此相反,当由通常控制电路601输出了不产生如上所述的独特的峰值的通常控制信号604~609时,如果接在其后的伪控制信号610~615不是不产生独特的峰值的控制信号,就不能有效地进行伪装。因此,伪控制信号生成电路801判断最新存储的存储槽的位值0计数信息1001,并读出具有平均、最大或最小的位值0计数信息1001的存储槽的数据来生成伪控制信号610~615。
通过执行这种伪运算,很难区分与执行着原来的密码运算的定时的消耗电流波形的差别,因而很难分析出原来的密码运算的执行定时。
如上所述,在具有图14的结构的密码运算处理电路中,通过由位值0计数电路1000对存储器A输出数据121的位值0的个数进行计数并将其计数值存储在密码运算指令存储电路400和通常控制信号存储电路800中,就能够再现与过去发生过的异常的消耗电流波形或平均的消耗电流波形具有相同的特征的消耗电流波形,因此,很难判断基于消耗电流分析的密码运算处理和伪运算处理,因而对消耗电流分析的保密性提高。
其次,即使在运算器105的连续的控制中输入数据是从存储器A103不同地址读出的数据,当数据的值本身完全相同时,在运算器105中也不会消耗电流。因此,在以下说明的例子中,通过预先设定构成运算器105的电路的电位,从而提高对电流分析的保密性。
图17示出了图6的变形例的密码控制电路101和运算部102的结构。图17的运算部102除了图1中示出的运算部102的结构以外,为了预先设定构成运算器105的电路的电位,还具有预置电路A1300和预置电路B1301。在图17的例子中,两个预置电路1300、1301例如是反相电路。另外,图17的密码控制电路101除了图6中示出的密码控制电路101的结构以外,还具有用于产生与动作开始时钟脉冲沿同步的脉冲信号来使两个预置电路1300、1301动作的脉冲信号产生电路1306。
预置电路A1300,当来自脉冲信号产生电路1306的预置电路A控制信号1302变为有效时,使来自寄存器A106的存储器A输出数据122翻转,并对运算器105输出预置电路A输出数据1304。
预置电路B1301,当来自脉冲信号产生电路1306的预置电路B控制信号1303为有效时,使来自寄存器B107的存储器B输出数据123翻转,并对运算器105输出预置电路B输出数据1305。
脉冲信号产生电路1306是利用时钟110来产生脉冲信号的电路,所产生的信号作为预置电路A控制信号1302和预置电路B控制信号1303输出到预置电路A1300和预置电路B1301。
图18示出具有图17的密码控制电路101和运算部102的密码运算处理电路的动作。
按照图18,密码控制电路101,根据来自CPU109的密码运算指令111接收指令4。在此,指令4为在一系列的密码运算处理中运算器105反复进行4次2个时钟周期的运算4。
密码控制电路101对指令4进行解码,读出存储器A103的地址A1~地址A8的各数据D1、数据D2,并将数据D1存储在寄存器A106内、将数据D2存储在寄存器B107内。存储器A消耗电流IV是由存储器A103进行了读出动作而产生的消耗电流,成为与从地址A1~地址A8的读出动作对应的消耗电流波形。
然后,密码控制电路101利用运算器控制信号118对运算器105进行控制使其实施运算4,这时,脉冲信号产生电路1306控制预置电路A控制信号1302,使寄存器A输出数据122翻转一次并输出为预置电路A输出数据1304。由此,运算器105在用原来的数据D1和D2实施运算之前,暂时实施D1的翻转数据与D2的运算。每当对作为组合电路的运算器105的输入寄存器即寄存器A106和寄存器B107存储数据时,运算部消耗电流IV改变,寄存器A106和寄存器B107的值确定之后,运算也要执行2个时钟周期,因此要消耗电流。
在从地址A1~A8读出的存储器A输出数据121如图18所示那样为D1和D2连续的情况下,寄存器A输出数据122和寄存器B输出数据123的值不变。在这种情况下,在以往的结构中运算器105的输入不变,实际上运算器105不动作,因此不消耗电流,但在本发明中,通过由脉冲信号产生电路1306控制预置电路A1300和预置电路B1301并使输入数据翻转一次,每次都实施运算处理,从而运算器105消耗电流。
接着,密码控制电路101对指令4进行解码并在运算4结束的定时输出用于将运算结果存储在寄存器C108的寄存器C控制信号119,并将DA存储在寄存器C108中。并且,密码控制电路101对指令4进行解码并发出存储器B控制信号120,将作为寄存器C输出数据125的DA存储在存储器B104的地址AA~地址AD。存储器B消耗电流IV是对存储器B104进行了写入动作而产生的消耗电流,形成与地址AA~地址AD的写入动作对应的消耗电流波形。
如上所述,按照图17的结构,通过由脉冲信号产生电路1306控制预置电路A控制信号1302和预置电路B控制信号1303,使对运算器105输入的数据翻转一次,即使对运算器105的输入数据在每个时钟周期都是相同的值,也要在每个时钟脉冲沿强制性地改变运算器105内部的电位并其消耗电流,因此对电流分析的保密性提高。
此外,在图17中,作为预置电路1300、1301的例子说明了反相电路,但也可以是如将运算部102内部的各信号预先设定为固定值那样的电路。
图19示出图17的变形例的运算部102的结构。图19的运算部102除了图17中示出的运算部102的结构以外,还具有为了使对运算器105输入的输入数据按每个位延迟值不同而设置的延迟电路A1500、延迟电路B1501。此外,在图19中,省略了控制信号的图示。
延迟电路A1500在每个时钟周期对来自预置电路A1300的预置电路A输出数据1304在每个位附加不同的延迟量,并对运算器105输出不是所有的位在同一定时改变的数据来作为延迟电路A输出数据1502。
延迟电路B1501在每个时钟周期对来自预置电路B1301的预置电路B输出数据1305在每个位附加不同的延迟量,并对运算器105输出不是所有的位在同一定时改变的数据来作为延迟电路B输出数据1503。
图20示出具有图19的运算部102的密码运算处理电路的动作。按照图20,密码控制电路101根据来自CPU109的密码运算指令111接收指令4。在此,指令4是指在一系列的密码运算处理中运算器105反复进行4次2个时钟周期的运算4。
密码控制电路101对指令4进行解码,分别读出存储器A103的地址A1~地址A8的数据D1、数据D2,并将数据D1存储在寄存器A106、将数据D2存储在寄存器B107中。存储器A消耗电流V是使存储器A103进行了读出动作而产生的消耗电流,形成与从地址A1~地址A8的读出动作对应的消耗电流波形。
然后,密码控制电路101利用运算器控制信号118向运算器105进行指令使其实施运算4,这时,脉冲信号产生电路1306控制预置电路A控制信号1302,使寄存器A输出数据122翻转一次并输出为预置电路A输出数据1304。而且,延迟电路A1500在每个时钟周期对预置电路A输出数据1304在每个位附加不同的延迟量,在不是所有的位在同一定时改变的状态下,输出为延迟电路A输出数据1502。由此,运算器105在用原来的数据D1和D2实施运算之前,暂时实施D1的翻转数据与D2的运算,且在数据的变化点使每个位的延迟量改变,因此连续地实施使用不同数据的运算。每当对作为组合电路的运算器105的输入寄存器即寄存器A106和寄存器B107存储数据时,运算部消耗电流V改变,寄存器A106和寄存器B107的值确定之后,运算也要执行2个时钟周期,因此要消耗电流。
当从地址A1~A8读出的存储器A输出数据121如图20所示那样为D1和D2连续时,寄存器A输出数据122和寄存器B输出数据123的值不变。在这种情况下,在以往的结构中运算器105的输入不变,实际上运算器105不动作,因此不消耗电流,但在本发明中,通过由脉冲信号产生电路1306控制预置电路A1300和预置电路B1301并使输入数据翻转一次、进而由延迟电路A1500和延迟电路B1501在每个时钟周期对每个位附加不同的延迟量来使输入数据连续变化,能够使运算器105连续地实施运算。
接着,密码控制电路101对指令4进行解码并在运算4结束的定时输出用于将运算结果存储在寄存器C108的寄存器C控制信号119,并将DA存储在寄存器C108中。并且,密码控制电路101对指令4进行解码并发出存储器B控制信号120,将作为寄存器C输出数据125的DA存储在存储器B104的地址AA~地址AD。存储器B消耗电流V是对存储器B104进行了写入动作而产生的消耗电流,形成与地址AA~地址AD的写入动作对应的消耗电流波形。
如上所述,按照图19的结构,通过由脉冲信号产生电路1306控制预置电路A控制信号1302和预置电路B控制信号1303,使输入到运算器105的数据翻转一次,进而,通过由延迟电路A1500和延迟电路B1501在每个时钟周期对输入到运算器105的数据在每个位附加不同的延迟量而使其变化,使运算器105中的消耗电流波形受输入数据的延迟的影响,因而对消耗电流分析的保密性提高。
如上所述,本发明的密码运算处理电路作为要求密码运算等的保密性的数据处理电路是有用的,能够应用于IC卡等。
权利要求书(按照条约第19条的修改)1.(删除)2.(删除)3.(修改后)一种密码运算处理电路,其特征在于,包括:存储密码运算用数据的存储器;用于对上述密码运算用数据进行运算的运算器;用于暂时存储对上述运算器的输入输出数据的寄存器;接收密码运算指令并为了对上述密码运算用数据进行密码处理而对上述存储器、上述运算器和上述寄存器进行控制的密码控制电路;以及接收指示上述密码运算指令的执行已结束的运算完成信号并对上述密码控制电路发出用于使上述存储器、上述运算器和上述寄存器动作的伪运算指令的伪运算指令电路,其中,上述伪运算指令电路具有:存储上述密码运算指令的密码运算指令存储电路;和根据过去的密码运算指令历史来生成上述伪运算指令的伪运算指令生成电路。4.根据权利要求3所述的密码运算处理电路,其特征在于,上述伪运算指令生成电路选择存储于上述密码运算指令存储电路的密码运算指令历史中的出现频率高的密码运算指令来生成上述伪运算指令。5.根据权利要求3所述的密码运算处理电路,其特征在于,上述伪运算指令生成电路随机地选择存储于上述密码运算指令存储电路的密码运算指令历史中的密码运算指令来生成上述伪运算指令。6.根据权利要求3所述的密码运算处理电路,其特征在于,上述密码运算指令存储电路由非易失性存储器构成,即使在电源断电以后也仍保持过去的密码运算指令历史以生成上述伪运算指令。7.根据权利要求3所述的密码运算处理电路,其特征在于,上述密码控制电路具有:产生用于执行上述密码运算指令或上述伪运算指令的通常控制信号的通常控制电路;即使在执行上述密码运算指令或上述伪运算指令的过程中也指示上述通常控制电路不需要占有上述存储器、上述运算器或上述寄存器的期间的动作状况通知电路;在上述存储器、上述运算器和上述寄存器的动作处于停止的期间产生用于强制性地使上述存储器、上述运算器和上述寄存器动作的伪控制信号的伪控制电路;以及根据来自上述动作状况通知电路的通知来切换上述通常控制信号和上述伪控制信号的选择器。8.根据权利要求7所述的密码运算处理电路,其特征在于,上述伪控制电路具有:存储上述通常控制电路所输出的上述存储器的地址和控制上述运算器的运算器控制信号的通常控制信号存储电路;和根据过去的通常控制信号历史来生成上述伪控制信号的伪控制信号生成电路。9.根据权利要求8所述的密码运算处理电路,其特征在于,上述伪控制信号生成电路选择存储于上述通常控制信号存储电路的通常控制信号历史中的出现频率高的通常控制信号来生成上述伪控制信号。10.根据权利要求8所述的密码运算处理电路,其特征在于,上述伪控制信号生成电路随机地选择存储于上述通常控制信号存储电路的通常控制信号历史中的通常控制信号来生成上述伪控制信号。11.根据权利要求8所述的密码运算处理电路,其特征在于,上述通常控制信号存储电路由非易失性存储器构成,即使在电源断电以后也仍保持过去的通常控制信号历史来生成上述伪控制信号。12.根据权利要求8所述的密码运算处理电路,其特征在于,还具有对从上述存储器读出的数据中所包含的位值0的个数进行计数的位值0计数电路,上述密码运算指令存储电路还具有:存储来自上述位值0计数电路的位值0计数值的功能。13.根据权利要求12所述的密码运算处理电路,其特征在于,上述伪运算指令生成电路判断存储在上述密码运算指令存储电路中的位值0计数的分布,并选择使用了位于平均值的位值0计数的密码运算指令来生成上述伪运算指令。14.根据权利要求12所述的密码运算处理电路,其特征在于,上述仂运算指令生成电路判断存储在上述密码运算指令存储电路中的位值0计数的分布,并选择使用了位于最大值或最小值的位值0计数的密码运算指令来生成上述伪运算指令。15.根据权利要求12所述的密码运算处理电路,其特征在于,上述通常控制信号存储电路还具有:存储来自上述位值0计数电路的位值0计数值的功能。16.根据权利要求15所述的密码运算处理电路,其特征在于,上述伪控制信号生成电路判断存储在上述通常控制信号存储电路中的位值0计数的分布,并选择使用了位于平均值的位值0计数的通常控制信号来生成上述伪控制信号。17.根据杈利要求15所述的密码运算处理电路,其特征在于,上述伪控制信号生成电路判断存储在上述通常控制信号存储电路中的位值0计数的分布,并选择使用了位于最大值或最小值的位值0计数的通常控制信号来生成上述伪控制信号。18.根据权利要求7所述的密码运算处理电路,其特征在于,还具有预先设定构成上述运算器的电路的电位的预置电路,上述密码控制电路还具有:用于产生与上述运算器的动作开始时钟脉冲沿同步的脉冲信号来使上述预置电路动作的脉冲信号产生电路。19.根据权利要求18所述的密码运算处理电路,其特征在于,上述预置电路仅在上述脉冲信号产生电路的脉冲信号期间使上述寄存器的输出数据翻转。20.根据权利要求18所述的密码运算处理电路,其特征在于,还具有:使对于向上述运算器输入的输入数据的每个位的延迟值不同的延迟电路。

Claims (20)

1.一种密码运算处理电路,其特征在于,包括:
存储密码运算用数据的存储器;
用于对上述密码运算用数据进行运算的运算器;
用于暂时存储对上述运算器的输入输出数据的寄存器;
接收密码运算指令并为了对上述密码运算用数据进行密码处理而对上述存储器、上述运算器和上述寄存器进行控制的密码控制电路;以及
接收用于指示上述密码运算指令的执行已结束的运算完成信号并对上述密码控制电路发出用于使上述存储器、上述运算器和上述寄存器动作的伪运算指令的伪运算指令电路。
2.根据权利要求1所述的密码运算处理电路,其特征在于,
上述伪运算指令电路将与上述密码运算指令相同的指令作为上述伪运算指令而发出。
3.根据权利要求1所述的密码运算处理电路,其特征在于,
上述伪运算指令电路具有:
存储上述密码运算指令的密码运算指令存储电路;和
根据过去的密码运算指令历史来生成上述伪运算指令的伪运算指令生成电路。
4.根据权利要求3所述的密码运算处理电路,其特征在于,
上述伪运算指令生成电路选择存储于上述密码运算指令存储电路的密码运算指令历史中的出现频率高的密码运算指令来生成上述伪运算指令。
5.根据权利要求3所述的密码运算处理电路,其特征在于,
上述伪运算指令生成电路随机地选择存储于上述密码运算指令存储电路的密码运算指令历史中的密码运算指令来生成上述伪运算指令。
6.根据权利要求3所述的密码运算处理电路,其特征在于,
上述密码运算指令存储电路由非易失性存储器构成,即使在电源断电以后也仍保持过去的密码运算指令历史以生成上述伪运算指令。
7.根据权利要求3所述的密码运算处理电路,其特征在于,
上述密码控制电路具有:
产生用于执行上述密码运算指令或上述伪运算指令的通常控制信号的通常控制电路;
即使在执行上述密码运算指令或上述伪运算指令的过程中也指示上述通常控制电路不需要占有上述存储器、上述运算器或上述寄存器的期间的动作状况通知电路;
在上述存储器、上述运算器和上述寄存器的动作处于停止的期间产生用于强制性地使上述存储器、上述运算器和上述寄存器动作的伪控制信号的伪控制电路;以及
根据来自上述动作状况通知电路的通知来切换上述通常控制信号和上述伪控制信号的选择器。
8.根据权利要求7所述的密码运算处理电路,其特征在于,
上述伪控制电路具有:
存储上述通常控制电路所输出的上述存储器的地址和控制上述运算器的运算器控制信号的通常控制信号存储电路;和
根据过去的通常控制信号历史来生成上述伪控制信号的伪控制信号生成电路。
9.根据权利要求8所述的密码运算处理电路,其特征在于,
上述伪控制信号生成电路选择存储于上述通常控制信号存储电路的通常控制信号历史中的出现频率高的通常控制信号来生成上述伪控制信号。
10.根据权利要求8所述的密码运算处理电路,其特征在于,
上述伪控制信号生成电路随机地选择存储于上述通常控制信号存储电路的通常控制信号历史中的通常控制信号来生成上述伪控制信号。
11.根据权利要求8所述的密码运算处理电路,其特征在于,
上述通常控制信号存储电路由非易失性存储器构成,即使在电源断电以后也仍保持过去的通常控制信号历史来生成上述伪控制信号。
12.根据权利要求8所述的密码运算处理电路,其特征在于,
还具有对从上述存储器读出的数据中所包含的位值0的个数进行计数的位值0计数电路,
上述密码运算指令存储电路还具有:存储来自上述位值0计数电路的位值0计数值的功能。
13.根据权利要求12所述的密码运算处理电路,其特征在于,
上述伪运算指令生成电路判断存储在上述密码运算指令存储电路中的位值0计数的分布,并选择使用了位于平均值的位值0计数的密码运算指令来生成上述伪运算指令。
14.根据权利要求12所述的密码运算处理电路,其特征在于,
上述伪运算指令生成电路判断存储在上述密码运算指令存储电路中的位值0计数的分布,并选择使用了位于最大值或最小值的位值0计数的密码运算指令来生成上述伪运算指令。
15.根据权利要求12所述的密码运算处理电路,其特征在于,
上述通常控制信号存储电路还具有:存储来自上述位值0计数电路的位值0计数值的功能。
16.根据权利要求15所述的密码运算处理电路,其特征在于,
上述伪控制信号生成电路判断存储在上述通常控制信号存储电路中的位值0计数的分布,并选择使用了位于平均值的位值0计数的通常控制信号来生成上述伪控制信号。
17.根据权利要求15所述的密码运算处理电路,其特征在于,
上述伪控制信号生成电路判断存储在上述通常控制信号存储电路中的位值0计数的分布,并选择使用了位于最大值或最小值的位值0计数的通常控制信号来生成上述伪控制信号。
18.根据权利要求7所述的密码运算处理电路,其特征在于,
还具有预先设定构成上述运算器的电路的电位的预置电路,
上述密码控制电路还具有:用于产生与上述运算器的动作开始时钟脉冲沿同步的脉冲信号来使上述预置电路动作的脉冲信号产生电路。
19.根据权利要求18所述的密码运算处理电路,其特征在于,
上述预置电路仅在上述脉冲信号产生电路的脉冲信号期间使上述寄存器的输出数据翻转。
20.根据权利要求18所述的密码运算处理电路,其特征在于,
还具有:使对于向上述运算器输入的输入数据的每个位的延迟值不同的延迟电路。
CNA2007800018592A 2006-11-09 2007-06-19 密码运算处理电路 Pending CN101366231A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP304068/2006 2006-11-09
JP2006304068 2006-11-09

Publications (1)

Publication Number Publication Date
CN101366231A true CN101366231A (zh) 2009-02-11

Family

ID=39364287

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2007800018592A Pending CN101366231A (zh) 2006-11-09 2007-06-19 密码运算处理电路

Country Status (6)

Country Link
US (1) US20090279687A1 (zh)
EP (1) EP2081316A1 (zh)
JP (1) JPWO2008056461A1 (zh)
CN (1) CN101366231A (zh)
TW (1) TW200822665A (zh)
WO (1) WO2008056461A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102254110A (zh) * 2010-05-20 2011-11-23 中国人民解放军国防科学技术大学 寄存器翻转时刻随机化控制电路

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9213835B2 (en) * 2010-04-07 2015-12-15 Xilinx, Inc. Method and integrated circuit for secure encryption and decryption
US8522052B1 (en) 2010-04-07 2013-08-27 Xilinx, Inc. Method and integrated circuit for secure encryption and decryption
GB2487901B (en) * 2011-02-03 2019-12-04 Advanced Risc Mach Ltd Power signature obfuscation
US8958550B2 (en) * 2011-09-13 2015-02-17 Combined Conditional Access Development & Support. LLC (CCAD) Encryption operation with real data rounds, dummy data rounds, and delay periods
US10389520B2 (en) * 2014-10-03 2019-08-20 Cryptography Research, Inc. Exponent splitting for cryptographic operations
US9870810B2 (en) * 2016-05-18 2018-01-16 Sidense Corp. Method and system for power signature suppression in memory devices

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
JP2000165375A (ja) * 1998-11-30 2000-06-16 Hitachi Ltd 情報処理装置、icカード
JP3827050B2 (ja) 1999-03-09 2006-09-27 株式会社ルネサステクノロジ Icカードと半導体集積回路装置
JP2000305453A (ja) * 1999-04-21 2000-11-02 Nec Corp 暗号化装置,復号装置,および暗号化・復号装置
FR2796477B1 (fr) * 1999-07-15 2001-10-12 Gemplus Card Int Procede d'amelioration d'un generateur aleatoire en vue de le rendre resistant contre les attaques par mesure de courant
US7000111B1 (en) * 2000-11-07 2006-02-14 Ericsson Inc. Method for masking secret multiplicands
JP2004198566A (ja) * 2002-12-17 2004-07-15 Oki Electric Ind Co Ltd 演算処理装置
JP2004212828A (ja) * 2003-01-08 2004-07-29 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2004260508A (ja) * 2003-02-26 2004-09-16 Hitachi Ltd 暗号化データ送信システム
FR2857804B1 (fr) * 2003-07-17 2006-05-26 Atmel Corp Procede et appareil pour lisser la consommation de courant d ans un circuit integre
US7555787B2 (en) * 2004-02-24 2009-06-30 Nxp B.V. IC intrusion detection
JP4674440B2 (ja) 2004-03-04 2011-04-20 ソニー株式会社 データ処理回路
JP2005346373A (ja) * 2004-06-02 2005-12-15 Renesas Technology Corp 演算回路、論理回路、読出し専用メモリ、レジスタ、および半導体回路

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102254110A (zh) * 2010-05-20 2011-11-23 中国人民解放军国防科学技术大学 寄存器翻转时刻随机化控制电路

Also Published As

Publication number Publication date
US20090279687A1 (en) 2009-11-12
TW200822665A (en) 2008-05-16
EP2081316A4 (en) 2009-07-22
WO2008056461A1 (fr) 2008-05-15
JPWO2008056461A1 (ja) 2010-02-25
EP2081316A1 (en) 2009-07-22

Similar Documents

Publication Publication Date Title
May et al. Random register renaming to foil DPA
CN101366231A (zh) 密码运算处理电路
US20130101112A1 (en) Method and apparatus for minimizing differential power attacks on processors
EP0823085A2 (en) Method and apparatus for improved branch prediction accuracy in a superscaler microprocessor
CA2258338C (en) Method and apparatus for minimizing differential power attacks on processors
CN112445729B (zh) 操作地址确定方法、PCIe系统、电子设备及存储介质
CN102591621B (zh) 使用计算历史进行预测
EP1244077A2 (en) Tamper resistant device
US6092183A (en) Data processor for processing a complex instruction by dividing it into executing units
US20050268040A1 (en) Cache system having branch target address cache
US7428632B2 (en) Branch prediction mechanism using a branch cache memory and an extended pattern cache
US11449642B2 (en) Attack protection by power signature blurring
US7062607B2 (en) Filtering basic instruction segments in a processor front-end for power conservation
JP2006072961A (ja) 演算処理装置のメモリ回路
JP2007520729A (ja) 改良された低減計算
EP0661648A2 (en) Digital signal processing circuit
US8074081B2 (en) Method for replacing contents of a data storage unit
US20240111908A1 (en) Cryptographic hardware accelerator with dummy block addressing for protection against side channel attacks
US6922767B2 (en) System for allowing only a partial value prediction field/cache size
CN117688564B (zh) 一种用于智能合约事件日志的检测方法、装置和存储介质
US5854919A (en) Processor and its operation processing method for processing operation having bit width exceeding data width of bit storage unit
EP0307957B1 (en) Central processing unit having instruction prefetch function
EP1069499A2 (en) Data processing apparatus and method for simultaneously executing plural instructions
JPH0383139A (ja) ファジイ演算処理装置
US7594119B2 (en) System for managing time rights linked to a digital content

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090211