发明内容
本发明可提供具有高安全性的卡部件等的抗干预的信息处理装置。
本发明的技术课题为减小卡部件,比如,IC卡用芯片中的数据处理和消耗电流的关联性。如果减小消耗电流和芯片处理的关联性,从观测到的消耗电流的波形推测IC卡用芯片内的处理及密钥就变得困难。
就是说,本发明可使卡部件等具有高安全性。
IC卡,由于是将程序及重要的信息密闭于IC卡用芯片之中,所以用来进行重要信息的存放及在卡中进行加密处理。历来认为解读IC卡中的加密的难度与解读加密算法的难度相同。然而,通过观测及分析IC卡进行加密处理时的消耗电流,有可能比解读加密算法更容易地推定加密处理的内容及密钥。消耗电流,可通过测定由读写器供给的电流进行观测。其理由如下。
构成IC卡用芯片的CMOS,在输出状态从1变成0或从0变成1时会消耗电流。特别是,在数据总线203中,由于总线驱动器的电流、布线及与布线相连接的晶体管的静电电容,在总线的值从1变成0或从0变成1时会有大电流流过。因此,如果对消耗电流进行观测,就可能了解到在IC卡用芯片中进行何种动作。
图3示出IC卡用芯片的一个循环中的消耗电流的波形。根据所处理的数据的不同,电流波形不同而分别为301或302。这种差别,是由于流过总线203的数据和在中央运算装置201中处理的数据而产生的。
协同处理器202,可与CPU并列地,比如,进行512位的模数运算。因此,可以长时间观测与CPU的消耗电流不同的消耗电流波形。通过观测该协同处理器的特征波形,可以很容易测定协同处理器的动作次数。在协同处理器的动作次数与密钥存在某种关系时,就可能通过动作次数推定密钥。另外,在协同处理器中的运算内容中存在取决于密钥的偏向时,有可能从消耗电流求出该偏向而推定密钥。
消耗电力依赖数据的典型例子是地址总线消耗的电力。地址总线,因为必须一直动作,其控制是静态方式。在静态方式中,不是每次都清除数据,消耗的电力是紧前一个值和现在的值的变化量。所以,比如,在地址(程序计数器)以每次2位变化时:
800C→800E→8010→8012→8014→8016→8018
其消耗电力大致分别与
800C→800E的变化位数=1
800E→8010的变化位数=4
8010→8012的变化位数=1
8012→8014的变化位数=2
8014→8016的变化位数=1
8016→8018的变化位数=3
成比例。此处,地址的值是以16进制数表示的(以下除了特别说明之外,都假设地址是以16进制数表示的)。由于电力消耗是根据二进制发生,以二进制数表示更容易了解。刚才的地址变化序列,因为高位8位不变,只以低位8位表示时如下所示。
00001100→00001110→00010000→00010010→00010100→
00100110→00011000
在连续的二值间进行“异或”运算时,可得到变化量的序列为:
00000010→00011110→00000010→00000110→00000010
→00001110
很容易理解,这些汉明权重与上述变化位数相对应。
在利用此这一性质时,不开封IC芯片通过研究消耗电力的变化就可以非法取出内部信息。特别是,如差分电力分析(DPA:DifferentialPower Analysis),对于多数数据进行统计处理而取出密钥的攻击,即使是在对加密程序的安装方法没有任何知识的场合也是有效的。
作为解决这一问题的方法,可以认为将汉明距离配置成为相等的方法是有效的。然而,一般在IC卡这样的小型器件中,RAM的大小受到严格的限制,在数据数多及数据大时,将汉明距离配置成为完全相等是困难的。
本发明的课题是在使消耗电力分析攻击变得困难的同时,使藉助硬件检验直接读出数据也变得困难,并且还对数据总线中的数据传送中的错误进行检测和校正。就是说,可以提供具有高安全性的信息处理装置。作为该信息处理装置可以举出的有计算机系统,特别是以微型计算机系统为代表例。此外,本发明可以提供具有高安全性的以IC卡(智能卡)为代表的卡部件以及卡/系统。
如果示出本发明的技术课题,那就是减少微型计算机芯片中的数据处理和消耗电力的关联性。另外,还有防止对在芯片内部传送的数据的检验引起的直接读入及篡改。特别是用于进行IC卡对要隐匿的重要信息的存放及在卡内的加密处理及数据的认证处理。这样,之所以将IC卡用于要求高安全性的用途,是因为将程序及重要信息密闭于IC卡芯片中并且实施种种信息隐蔽措施而使盗取秘密数据困难。
历来认为解读IC卡的加密处理与解读加密算法本身的难度相同。然而,令人注目的是通过对IC卡进行加密处理之际的消耗电力的分析,推测加密处理的内容及密钥的攻击方法,比直接解读加密算法的方法容易。
由P.Kocher等提议的称为消耗电力分析的这一方法,是利用在IC卡处理的数据的位状态和消耗电力之间的存在关联性这一点的攻击。所以,如果消耗电力和芯片的处理的关联性小时,从观察到的消耗电力推测IC卡用芯片内的处理及密钥就变得困难。本发明的着眼点就是使微型计算机的消耗电力和处理的数据之间的关联性减小。该手段的主要之点就是将产生消耗电力的差的原因之一的信号线(比如,总线、RAM内的位线、字线等)的充放电变得与原来的数据不同。
下面首先对成为本发明的背景的利用对消耗电力的观测解读处理的可能性予以说明。理解这一点就容易理解本发明的主旨。
上述的消耗电力分析的关键如下。构成IC卡用芯片的CMOS(互补金属氧化物半导体)的门电路在输出状态从1变成0或从0变成1时消耗电力。特别是由于信号线具有大布线电容,门电路在总线的数据值从1变成0或从0变成1时由于其充放电而消耗很大的电力。如果观测这种消耗电力,就可能解读IC卡用芯片中的信息处理的内容。
图3示出IC卡用芯片的一个循环中的消耗电力的时间序列波形。根据处理的数据值的不同,消耗电力的波形不同而分别为301或302。这种对多个消耗电力的波形的差,是由于流过信号线的数据及在中央运算装置中处理的数据等不同而产生的。
现在,IC卡用芯片的信号线的控制方式大体上可分为两种。一种是静态信号线控制方式,还有一种是预充电信号线控制方式。静态信号线控制方式是不对总线保持的数据进行清除的方式。另一方面,预充电信号线控制方式,是为了在每次结束一次处理时清除数据,使信号线的数据全部成为1或0之后,装载下一个数据的控制方式。另外,将预充电变成为信号值的0或1的哪一个,因逻辑电路是正逻辑或负逻辑而异。所以其动作本质不变。
从对上述的基本动作的说明可知,由于此控制方式的不同,消耗电力的波形也不同。由消耗电力的波形的不同,可以判断采用哪一种控制方式。如果了解信号线的控制方式,对于固定的密钥,改变处理的数据,通过对与其相应的消耗电力的变化的观测,可以观测到密钥的位值的影响。此外,通过分析这些消耗电力的波形,可以产生推定密钥的可能性。为了决定消耗电力的具体分析方法,关于作为分析对象的处理方式的信息是必需的,通过对作为现代加密的成果之一的加密算法的公开和标准化,易于得到关于加密方式的信息。
如上所述,关于减少利用总线数据加密的消耗电流和真实数据的相关性的方法,存在由专利文献2公开的技术。专利文献2的方法有(a)在总线的两端设置加密和解密装置,利用同一密钥在发送侧进行加密,而在接收侧进行解密和(b)在与信息处理装置相连接的总线中,在数据发送侧设置加密和解密装置,将利用同一密钥在发送侧进行加密的数据存储于信息处理装置中。在从信息处理装置中读出数据之际,利用先前的密钥进行解密的这样两种方法。(还公开了其他方法,但由于与本发明无关,此处不进行叙述。)
的确,在使用这一方法时,可以减少消耗电力和真实数据的相关性。然而,对于(a),因为是将真实数据对信息处理装置进行数据写入和读出,可以观测在其时产生的取决于真实数据的消耗电力。另外,通过检验可以直接读出解密后的数据。对于(b),在进行由于总线的检验产生的数据的读出时,可以了解存储于信息处理装置中的数据。此时,尽管由于一次发送大量的数据而不能捕捉到全部的数据,在将一部分数据作为标记,读出存储于信息处理装置中的信息时,可以顺序取得一系列的数据。虽然取得的数据是经过加密的,只要利用加密处理的安装方法,判定同一数据是在哪一定时使用,就可以取得密钥。另外,由于密钥是在发送侧和接收侧所共有的,必须准备为此目的专用的总线,大概也必须注意通过对该总线进行检验可以取得密钥这一点。
一方面对消耗电力分析的对策是必需的,另一方面对于利用对总线的直接检验的数据读出的对策是必需的。数据通过IC芯片内部的总线在各模块间收发。通过直接对流过该总线的数据进行检验,可以读入和收发数据。检验是一般在LSI的调试和测试时使用的方法。根据安装方法的不同,有时不需要一次将全部的总线数据读取,对通过一部分布线交换的数据进行观测就足够了。比如,作为安装RSA加密的方式之一公知的有二进制法,在二进制法中,在依次判定在某一定时使用的数据是两种中的任何一种时,最终可以确定密钥。如果是两种判定,最少监视一根总线就可以。所以,只观测一部分布线,也必须不能对加密进行解读。
另外,由于数据是以电学方式进行收发,比如,通过FIB加工将物理布线与GND相连接等等,有可能有意使一部分或全部的数据变化。在攻击者有意瞄准的加密处理定时可进行这种攻击时,如在专利文献3、4中所记载,有可能读入密钥。因此,必须确保通过布线传送的数据的完整性。
本发明可以获得使通过对消耗电力的分析推定微型计算机内部的状态,通过检验总线进行数据的读出及对传送数据进行篡改变得困难的效果。其结果,可以提高对称为消耗电力分析及差分故障分析的加密处理的攻击的抵抗。
在本申请中公开的发明之中,代表性的内容的概要可简单说明如下。
本发明的信息处理装置的特征在于具有对运算装置在运算中使用的逻辑地址和从上述逻辑地址和随机数通过运算决定的上述存储器的物理地址进行变换的变换部。
通过上述构成,可能使数据和地址的关系随机化,减小消耗电力和信息处理装置内的处理的关联性,使信息处理装置内的处理及密钥的推测变得困难。
本发明的信息处理装置的特征在于具有运算装置;存放从上述运算装置发送的数据的存储装置;连接上述运算装置和上述存储装置的(N+r)位的数据总线;随机数生成装置;以及数据变换装置;上述数据变换装置,对上述运算装置发送的N位的数据,将由上述随机数生成装置所生成的r位的随机数组成的数据作为密钥对上述N位的数据加密而生成N位的加密数据,通过连接上述加密数据和上述随机数而生成(N+r)位的数据,并将上述(N+r)位的数据输出到数据总线。
通过上述构成,为了对抗通过对消耗电力的分析推定微型计算机内部的状态,对通过检验总线进行数据的读出及对数据进行篡改的攻击,进行对内部数据的随机化。提供用于此目的的数据变换装置及数据总线构成及信息处理装置构成。
本发明,保持物理地址和由程序指定的地址之间一对一的对应关系原样不变并在适当的定时将其改变。因此,地址不具有连续性,可得到高加扰效果,可减小在信息处理装置内的数据处理和消耗电流的关联性。如果减小消耗电流和芯片的处理的关联性,从观测的消耗电流和波形推测信息处理装置内的处理及密钥就变得困难。
就是说,根据本发明,可以提供具有高安全性的IC卡等的抗干预的信息处理装置。
本发明可以获得使通过对消耗电力的分析推定微型计算机内部的状态,通过检验总线进行数据的读出及对传送数据进行篡改变得困难的效果。其结果,可以提高对称为消耗电力分析及差分故障分析的加密处理的攻击的抵抗。
具体实施方式
本发明的本质是保持物理地址和由程序指定的地址之间原封不动地保持一对一的对应关系并在适当的定时将其改变。从安全性的观点而言,对应关系复杂为佳,在上述的差分电力分析(DPA)这样的统计性攻击的防卫中,每次只改变物理地址是重要的。于是,在实施时,可以选择进行地址映射的电路尽可能单纯。
为了解决上述问题,在本发明中,对于加密计算等,包含秘密信息的处理,每次执行该加密计算的一部分时都在物理上改变配置数据的地址。在配置地址的决定方法中有以下这样的方法。一种是不能从外部预测的方法,即看上去是随机的进行加扰配置的方法,另外一种是以使从外部不能判别差异的均匀配置的方法。除此之外是将两者组合使用的方法。任何一种都是基于在消耗电力中表现处理数据的汉明权重或汉明距离的实验事实的对策技术。在这些实现方法中,可以考虑种种形态。
最典型的方法如下。
与程序指定的数据的地址为ADDR(USER)相对,将物理地址ADDR(PHYS)利用随机数R(R为整数)改变如下:
ADDR(PHYS)=ADDR(START)+(((ADDR(USER)-
ADDR(START))+R)mod M) (式1)
其中,ADDR(START)是随机化的地址的开始位置,M是适当的自然数(随机化RAM区域的大小),X mod M是将X除以M得到的余数。基于(式1)改变物理地址的是专用的运算装置。另外,随机数R的生成,使用内置于IC卡中的随机数发生装置是最一般的情况,但也可以代之以使用线性叠合法等伪随机数生成算法。在内置于IC卡中的随机数生成装置中有利用物理噪声的真随机数生成装置及使用LFSR的伪随机数生成装置等。特别是,由于伪随机数生成装置既可以作为硬件安装,也可以以软件安装,所以也可以是在CPU上生成伪随机数并使用其结果的构成。
由于原来的地址是ADDR(USER),只要R不是M的倍数,由(式1)决定的物理地址与ADDR(USER)不同。R的改变,既可以在每次复位时进行,也可以在每次执行加密处理时进行。
下面示出根据(式1)改变物理地址的数值例。
比如,设M为128。最初,在每次执行程序时R改变,当R依次改变为50、4、120、56时,用户指定的地址ADDR(USER)=2000在每次执行时变化为2050、2004、2120及2056。据此,可以防止利用DPA的统计性攻击。比如,在如DES(DATA ENCRYPTIONSTANDARD:美国的标准加密)的SBOX的处理这种藉助查表参照数据的场合,可以得到数据和地址之间的对应关系,在上述方法中此对应关系可以随机化,可使秘密密钥取出困难。
地址改变也可以使用(式1)以外的方法。本质上,ADDR(USER)和ADDR(PHYS)是一对一的对应关系,(式1)只不过是其一例而已。
作为本发明的实施例,除了(式1)的方法之外,可举出以下的示例作为另外的例子。即:
对于从RAM的地址ADDR_L对ADDR_H(ADDR_L<ADDR_H)进行访问(即ADDR_L≤ADDR(USER)≤ADDR_H),
考虑是以概率1/2随机选择ADDR(PHYS)=ADDR_H-ADDR(USER)(式2)
还是原封不动地选择ADDR(PHYS)=ADDR(USER)的电路。利用这一方法,如DPA这样的统计性攻击是困难的。
自然,也有除此之外的方法。在使随机数R成为具有与地址空间相同位长时,使
ADDR(PHYS)=ADDR(USER)XOR R (式3)
也是有效的方法。其中,XOR是每位的“异或”。很明显,由(式3)ADDR(USER)和ADDR(PHYS)一一对应。
上述,因为安装比较容易并且效果好,对其他各种地址映射的方法也进行考虑是自不待言的。
通过分别使用这种对策和部分地使用将地址间的汉明距离取得一致的方法,可以获得灵活有效的对策。
下面对本发明的各种实施例予以详细的说明。
首先,图9示出本发明的整体构成。本构成具有中央处理装置(CPU)901、协同处理器902、地址变换部903、地址总线904、数据总线905、输入输出(I/O)端口906、存储器部907、EEPROM908、ROM911、RAM914及随机数发生装置915。另外,EEPROM908具有EEPROM的程序区909及数据区910,ROM911具有ROM程序区912及ROM数据区913。
CPU201是进行逻辑运算和算术运算的装置,在优选实施例中,CPU读出存放于EEPROM908、ROM911等非易失性存储器中的程序并按照该程序进行固定的处理。
存储器部906是存放程序及数据的装置。输入输出端口是进行读写和通信的装置。
地址变换部903在CPU和地址总线904之间,判定发送到地址总线904的地址值是否是指EEPROM、ROM、RAM等的位置,如果是RAM的指定区域,则CPU发出的地址信号利用如图4、7的结构进行变换。905是数据总线,不进行变换。
图4、图7的PC通常在CPU的内部。就是说,地址变换部,在图4中,是除掉401、402的部分,在图7中,是除掉701、702的部分。
另外,CPU,为了使程序计数器改变,具有计算PC+displacement(相当于转移命令等之中的跳转目的地)的电路。所以,有时连减法器(与加法器相同)都在CPU的内部。
在构成上,ADDR-BUF与地址总线904相连接,将经过变换的地址输出到地址总线。数据输出用的驱动器连接到ADDR-BUF,将ADDR-BUF的数据输出到地址总线。在变换中,由于随机数是必需的,随机数发生装置915与地址变换部相连接。此随机数发生装置,与图4的402、图7的702相对应。随机数发生装置,由于在利用CPU901及协同处理器902生成密钥等的时候也使用,根据信息处理装置有时在内部具有一个共用的随机数发生装置或多个随机数发生装置的情况。也可以使这些随机数发生装置与连接到本地址变换部的随机数发生装置915完全共用或一部分共用。通过这样的构成,可以抑制由于硬件的安装面积或软件安装导致的程序设置容量的增加引起的成本增加。
协同处理器是高速进行加密处理或加密处理所必需的运算的装置。根据系统有时也没有协同处理器。在实施例中,由于CPU的存储器(RAM)和协同处理器是独立的,地址变换部和协同处理器没有关系。在协同处理器共有CPU和存储器(RAM)的情况下,在协同处理器上也必须连接地址变换部。在该情况下,在地址变换中使用的随机数R,与在CPU的地址变换部中使用的相同。因此,成为共有存放随机数R的缓冲器的构成。
<实施例1>
首先利用图4、5、6对按照(式1)对物理地址进行映射的实施例及其动作予以说明。
首先,示出最简单的M=2m(2的m次方)的形式的场合的实施例。
图4所示的本发明的实施例由以下的部分构成。就是说,其构成包括程序计数用缓冲器401、随机数发生装置402、随机数用的缓冲器403、加法器404、存放2m-1=M-1(在二进制表示中m个1并列)的缓冲器(PC)405、计算逻辑积(逻辑AND)的电路406、物理地址缓冲器407、判定程序计数器的位置是否在指定区域的判定电路408、选择器409、零缓冲器410、起始地址缓冲器411、减法器412及结束地址缓冲器413。其中,在零缓冲器中存放值0。因为这是固定值,不需要是寄存器,为了简单起见,这样就可以。程序计数器,是存放微型计算机执行程序之际的执行命令或数据的位置的。判定电路408,是在程序计数器的值在指定区域(即ADDR(START)和ADDR(END)之间)时,将1发送到选择器409,在不在指定区域时,将0发送到选择器409,以及将程序计数器的值发送到加法器404的装置。另外,选择器409是当判定电路408的输出信号为1时将403的值发送到加法器404,当判定电路408的输出信号为0时将401的值发送到加法器404的装置。为了避免繁杂,关于这些的构成不予叙述,在具有关于逻辑电路的基本知识时,很容易构成,本发明的实现性不会受到损害。另外,要注意的是在本实施例中计算的是从ADDR(START)的相对位置,不是ADDR(PHYS)本身。根据系统可在ADDR-BUF的结果上加上ADDR(START)使用,此处为了简单起见而省略。
在图4中,首先,按照控制信号随机数发生装置402生成随机数,在R-BUF中存放该值。此处,在将随机数发生装置402生成的随机数R重新存放到R-BUF中的定时有二个:(1)在复位后在重新进行包含秘密信息的处理之前;(2)在其以后的处理中不利用存储器上(随机偏置的区域)的数据的情况下,在将存储器上的数据释放之后重新进行包含秘密信息的处理之前。
R-BUF的值,在控制信号重新来到之前一直固定。ADDR(USER)临时存放于PC中,由判定电路408判定是否在该地址区域中。假如不在指定区域,判定电路408在将0发送到选择器409的同时,将PC-ADDR(START)的值发送到加法器404。如果在指定区域,408在将1发送到409的同时,向加法器404发送PC-ADDR(START)的值。选择器409,在接收到该信号时将存放于R-BUF中的随机数发送到加法器404,而加法器404计算两者的和,将该值发送到逻辑积运算电路406,计算与405的值的逻辑积并存放到ADDR-BUF。(因为这与只取出加法器404的输出的低位m位一样,所以在加法器404中的计算可以一直到第m位。在m固定时,这种构成也可能。)ADDR-BUF的值与
(ADDR(USER)-ADDR(START)+R)mod M
一致。
在指定区域以外时,选择器409接受判定电路408的信号0,将零缓冲器410的值0发送到加法器404。此时,ADDR-BUF的值成为ADDR(USER)-ADDR(START)。就是说,地址不变。
因为这些示出的是与ADDR(START)的相对位置关系,实际的物理地址ADDR(PHYS),成为从本来的位置算起循环地仅相差R的位置。比如,在ADDR(USER)+R包含于指定区域中时,如图5所示,可直接成为ADDR(PHYS)。在ADDR(USER)+R超出指定区域时,超出指定区域的部分,如图6所示,从ADDR(START)偏移剩余部分的位置上设置物理地址。
此处,处理的是M为2的乘方的场合,而在将其扩展到不是2的乘方的一般的M时,也可以设置除法器代替405和406。这是扩展M的实施例,具有精细进行指定区域的优点。
在本实施例中,是在原封不动地保持物理地址和由程序指定的地址之间一对一的对应关系的情况下,使其随机改变。据此,地址不具有连续性,可得到高加扰效果,可以减小信息处理装置内的数据处理和消耗电流的关联性。如果减小消耗电流和芯片的处理的关联性,从观测到的消耗电流的波形推测信息处理装置内的处理及密钥就会变得困难。
就是说,根据本实施例,可以提供具有高安全性的卡部件等的抗干预的信息处理装置。
另外,在本实施例中,示出的是对IC卡的应用例,当然也可以应用于IC卡以外的信息处理装置。
<实施例2>
下面,示出在物理地址和逻辑地址的对应关系最单纯加扰效果高的实施例。假设地址的位数是n。通常,存储器的差异由地址的高位的位决定。在本实施例中,为了简单起见,设RAM区域全部成为最高位的位为1的区域。就是说,RAM区域为具有2n-1位的大小的区域。
本实施例,由以下的部分构成。即程序计数用缓冲器701、随机数发生装置702、随机数用的缓冲器703、判定程序计数器的位置是否在指定区域的判定电路704、选择器705、零缓冲器706、计算异或值的电路707以及物理地址缓冲器708。其中,在零缓冲器中存放值0。因为这是固定值,不需要是寄存器,为了简单起见,使其这样。707进行n位的异或运算。另外,R-BUF是n位的缓冲器,最高位永远为0。各构成单元间的联系如图7所示。
程序计数器的值,存放于程序计数用缓冲器701中。判定电路704,在该程序计数器的值的最高位为0时,向选择器705发送0,而在最高位为1时,在向705发送1的同时,将该程序计数器的值发送到“异或”运算电路707。705在该信号为1时,将R-BUF703的值(随机数)发送到707。R-BUF的值由随机数发生装置702供给。此处,在将随机数发生装置702生成的随机数R重新存放到R-BUF中的定时有二个:(1)在复位后在重新进行包含秘密信息的处理之前;(2)在其以后的处理中不利用存储器上(随机偏置的区域)的数据的情况下,在将存储器上的数据释放之后重新进行包含秘密信息的处理之前。
现在,因为在PC(程序计数器(逻辑地址))的最高位是1时(在地址指的是RAM时),判定电路704将信号1发送到选择器705,所以选择器将存放于R-BUF中的随机数发送到707。在707中,计算R-BUF的随机数R和程序计数器PC地址的异或值,存放到ADDR-BUF708。这成为物理地址。此物理地址只要R不为0,就成为与逻辑地址不同的值。
因为在PC的最高位是0时(在地址指的是RAM以外时),判定电路704将信号0发送到选择器705,所以选择器将存放于ZERO-BUF中的值0发送到707。在707中,计算0和程序计数器PC的值的异或值,存放到ADDR-BUF708。由于和0的异值不改变原来的值,原来的PC的值成为物理地址。本实施例,可指定的RAM的区域受到限定,但一般地址不具有连续性,可得到高加扰效果。
<实施例3>
本发明,通过使用与配置数据使地址变化为一定的技术的组合,可以更加提高安全性。比如,可以认为,通过在RAM中,在对成为DPA攻击的对象的区域应用本发明的方式,对于成为不利用统计方法而是直接观测取出内部信息的攻击方式的对象的部分,配置数据使地址变化为一定,可对更广范围的内部数据安全地进行处理,可以提高安全性。
本实施例,比如,内容如下。
现在,RAM区域的地址以十六进制数表示时为从C000至CFFF。下面考虑在上述实施例1示出的M的扩展例中,应用于从C900起至CFFF止的区域的信息处理装置。在此条件下,考虑以下的程序。
(以下,实施例的程序,是以H8微型计算机的汇编语言写成的,但微型计算机的构成本质上是相同的,利用命令集合没有本质差别的其他汇编语言编写也可以获得同样的效果。关于H8微型计算机和汇编程序,比如,可参照藤泽幸穗的“H8微型计算机完全手册”欧姆社2000年出版。)
下面,在2位的数据d为′00′、′01′、′10′、′11′时,分别考虑将数据Y0、Y1、Y2、Y3传送到某一协同处理器的数据寄存器CDB的程序。Y0、Y1、Y2、Y3,是具有同一长度DATA_LENGTH的数据,预先存放于RAM的规定位置(图8,804-807)。各数据的起始地址,分别为Y0_TOP、Y1_TOP、Y2_TOP、Y3_TOP。另外,CDB的起始地址为CDB_TOP(图8,808)。
还有,规定满足
Ham(Copy,Y0_TOP)
=Ham(Copy,Y1_TOP)
=Ham(Copy,Y2_TOP)
=Ham(Copy,Y3_TOP)
(条件1)
比如,在规定DATA_LENGTH=1024/16=64,Copy=0100,Y0_TOP=C200、Y1_TOP=C400、Y0_TOP=C700、Y0_TOP=C800时,为
Ham(Copy,Y0_TOP)=Ham(0100,C200)=4
Ham(Copy,Y1_TOP)=Ham(0100,C400)=4
Ham(Copy,Y2_TOP)=Ham(0100,C700)=4
Ham(Copy,Y3_TOP)=Ham(0100,C800)=4
并且,各数据不重复地配置于RAM上,在字传送的各阶段满足(条件1)。
以下所示的程序由三个部分构成。第一部分是以起始地址(标号)为MAIN的主要部,第二部分是以Copy为起始地址的传送子程序,第三部分是以table为起始地址的数据部。第一、第二部分配置于ROM或EEPROM(图8,802,803)。在程序执行中,最初程序计数器的值作为MAIN设置。
[程序1]
/***MAIN***/
MAIN:
0000 MOV.W@d,R2
<!-- SIPO <DP n="20"> -->
<dp n="d20"/>
0002 SHLL R2
0004 MOV.W@(table,R2),R0
0006 MOV.W#CDB_TOP,R1
0008 MOV.B#DATA_LENGTH,R3H
000A JSR Copy
/***Copy Routine***/
Copy:
0100 MOV.W@R0,R4
0102 MOV.W R4,@R1
0104 ADDS#2,R0
0106 ADDS#2,R1
0108 DEC.B,R3H
010A BNE Copy
010C RTS
/***table***/
table:
0200.DATA.W Y0_TOP;(=C200)
0202.DATA.W Y1_TOP;(=C400)
0204.DATA.W Y2_TOP;(=C700)
0206.DATA.W Y3_TOP;(=C800)
下面基于上述[程序1]及图8对此程序的动作予以说明。
程序及数据的定位如图8所示。CDB是用作RAM的一部分。
最初,因为程序计数器指向MAIN=0000,微型计算机从MOV.W@d,R2顺序执行命令。
在0000,从该地址读出2位的d,将其存放于寄存器R2,在0002,将寄存器R2的值左移1位。这等于将R2的值乘以2倍。在0004,将存放于在table=0200上加上R2的值的地址的数据传送到寄存器R0。比如,在d的值为3时,存放于0200+2*3=0206的地址的数据Y3_TOP所指示的地址C800存放到R0。
在0006,CBD的起始地址CDB_TOP存放于寄存器R1。在0008,数据的字长DATA_LENGTH=64存放于R3H中。在000A,利用称为JSR Copy的命令,将程序计数器的值改变为0100(标号名“Copy”)。在0100,将存放于R0的地址的数据传送到寄存器R4,在0102,将R4的值传送到存放于R1的地址位置。在0104、0106,将地址递增2,在0108,将存放于寄存器R3H中的计数值递减1。在010A,在计数值不为0时,再次将程序计数变更为复制子程序的起始,重复上述操作一直到寄存器R3H的值成为0为止。当R3H的值成为0时,程序计数变成010C,从子例程中退出,变更为000A的下一个地址,即000C,于是处理结束。
在利用地址0100的传送命令读出数据Y0、Y1、Y2、Y3之际的程序计数,从0100变化为R0。此时,包含于R0中的值与0100的汉明距离永远相同。
就是说,在d=0的场合,变化如下:
0100→C200(汉明距离4)
0100→C202(汉明距离5)
0100→C204(汉明距离5)
…
0100→C080(汉明距离4)
在d=1的场合,为:
0100→C400(汉明距离4)
0100→C402(汉明距离5)
0100→C404(汉明距离5)
…
0100→C480(汉明距离4)
汉明距离的变化方式与d=0的场合完全相同。可知在d=2,3时也同样地变化。
据此,从C900起到CFFF止,由于上述实施例1所示的M的扩展例的场合的效果,每次都产生伴随随机地址变化的电流,关于使用从C000起到C900止的区域的一部分(存储从Y0起到Y4止的部分)的处理(程序1),如上述说明所示,伴随地址变化的电流与数据无关而成为一定。由此,在使用从C000起到C900止的处理中,由于地址的变化小,从电流读出地址很困难,在C900起到CFFF止的区域中,根据以DPA为首的电流统计处理读出内部数据是很困难。
此处,为了容易理解以下的说明,下面对作为在本申请说明书中的特征用语“加密”和“随机化”予以说明。
所谓的“加密”指的是利用某一密钥,某一数据按照某一规则改变的动作。在“加密”中,由于密钥保持于加密装置的内部,故不与加密数据一起发送和传送。一般的加密算法,由于加密的安全性取决于密钥,基本上不将密钥输出到装置外部。因此,在即使是加密装置的外部观察加密数据,攻击者也不能获得关于密钥的信息。为了在两者间安全地共有密钥,使用Diffe-Hellman键(密钥)共有方式(参照非专利文献5(Alfred.J.Menezes,Paul C.van Oor.Vanstone,“HANDBOOK of APPLIED CRYPTOGRAPHY”,CRC Press,p.516))及使用公钥的方法。
另一方面,本申请说明书所谓的“随机化”,指的是以下的(1)~(3)中的任何一种。(1)将数据利用随机化键(密钥)加密的结果和随机化键(密钥)进行连接。(2)利用非线性变换对通过数据和随机化键(密钥)的连接得到的数据进行变换。(3)将利用随机化键(密钥)对数据加密的结果和随机化键(密钥)进行连接,并进行非线性变换。
另外,在上述(1)、(3)的“随机化”中,在对数据加密这一点上,随机化键(密钥)和密钥的作用相同,但在与加密数据一起传送这一点上与“加密”的密钥不同。因此,在攻击者充分精密地取得数据时,原理上可确定随机化键(密钥)、数据或加密的数据。在这一点上,加密可以说本质上不同。但是,本提案的随机化装置,进行当由随机化数据和随机化键(密钥)构成的传送数据的观测不充分,推定随机化键(密钥)及数据困难的随机化。在随机化中,由于随机化键(密钥)与数据或加密数据一起传送,所以传送数据一般成为随机化键(密钥)位长n和数据位长m之和的n+m位的数据。
为解决此课题,本发明的基础考虑方法可以分为以下三类。
(1)数据的随机化
第一形态是通过使数据总线通过信息处理装置和信息存储装置之间收发的数据随机化而使原来的数据和消耗电力之间不产生相关性的形态。在总线的发送侧A设置有随机化和复原装置1,而在接收侧B设置有随机化和复原装置2。接收侧还与信息存储装置相连接。此处假设设置于接收侧B的随机化和复原装置2,有时也设置于信息存储装置内部。在数据发送时,在发送侧A,利用随机化和复原装置1,进行依靠设定的随机化键(密钥)KA的随机化并将随机化数据发送到接收侧B。接收侧B利用随机化和复原装置2,依靠所设定的随机化键(密钥)KB进行复原并将复原数据发送到信息存储装置。信息存储装置将接收到的数据进行记录。通过将在发送侧A和接收侧B使用的随机化键(密钥)KA和KB设定为不同,接收侧B的复原处理输出与先前随机化的真实数据D不同的值D′。即使将发送数据在总线上检验读出,实际上也不可能了解记录于信息存储装置中的数据是什么形态。因此,基于在总线上的读出的数据,不能确定记录于信息存储装置中的数据的位置。在从信息存储装置读出数据之际,通过随机化和复原装置2利用随机化键(密钥)KB使读出的数据随机化并通过总线发送到随机化和复原装置1。由于随机化和复原装置1利用随机化键(密钥)KA进行复原,结果可以获得先前的真实数据D。
作为随机化数据,有以下三种形态。第一种形态是通过将应该随机化的数据通过随机化键(密钥)加密的结果和随机化键(密钥)进行连接而得到的形态。第二种形态是通过将应该随机化的数据和随机化键(密钥)进行连接而得到的数据利用非线性变换装置进行变换的结果而得到的形态。第三种形态是将第一种形态的随机化数据再利用非线性变换装置进行变换的结果而得到的形态。
在第一种形态和第三种形态中,由于数据依靠随机化键(密钥)变换为不可预测的形态,攻击者不能预测传送数据的形态。因此,可以有效地防止预测传送数据的形态所必需的消耗电流分析等等。第二种形态,由于汉明权重不改变,不能说是完全的消耗电流分析的对策,但通过连接随机化键(密钥),使消耗电流的数据依赖分量的S/N比变小,可以获得使攻击变得困难的效果。就是说,利用随机化键(密钥)进行位扩展可以获得提高对消耗电流分析的抵抗性的效果。
在本发明中公开的方式,与专利文献2不同,在接收侧,即信息存储装置侧,也设置随机化和复原装置,并且随机化键(密钥)也设定为在发送侧和接收侧不同。另外,专利文献2是利用随机化键(密钥)进行加密,但本发明公开的方式进行与加密在本质上不同的随机化。
于是,比如,考虑到必须对于随机布线的微细的总线进行正确的硬件检验等物理制约,攻击者很难充分正确地观测传送数据,实际进行攻击是很困难的。
接收侧B还与信息存储装置相连接,有时也通过在其间设置外部通信装置而在保持随机化的状态下将数据传送到外部。
(2)位传送时的布线选择的随机化
第2形态是在收发数据之际从多个布线中随机选择在收发某一位所使用的布线的方法。布线和数据位的对应依靠随机化键(密钥)决定。
在信息处理装置内部处理的数据一般是以8的倍数为单位。在一般的信息处理装置中,从数据d的高位位起表示为d0、d1、…、d7,与总线的编号0至7相对应。这是由于通过使布线长度尽可能缩短而极力减小数据传送的延迟,并且通过使布线整然有序而使得调试和测试时的总线编号容易判别之故。在本发明中,使数据收发之际的数据d和总线编号的对应关系在每次数据传送时都改变。此外,两者的对应构成非线性关系。通过使对应关系成为非线性关系,可以做到即使是在不同的定时对总线进行多次观测,也不容易获得有关随机化之前的数据的信息,可以提高抗干预性。
由于每次数据传送时数据的位编号和总线编号的对应关系都改变,即使是攻击者通过对单个总线的检验进行观测,也了解不到现在观测的是数据的第几位。这就是说,即使是攻击者观测全部总线,如果不了解规定数据位编号和总线编号的对应关系的算法,所得到的信息只是数据的汉明权重。如果是64位总线,与汉明权重h相对应的数据有大约64Ch。比如,在最可能发生的场合的h=32的场合,对应的数据的候选为约64C32=264.7,全部地检索事实上是不可能的。此外,由于微型计算机是微细加工产物,受到探针的尺寸的制约,一次可观测的总线的根数是受到限制的,实际进行攻击是显著困难。
(3)利用检错用符号的传送时位出错的检测
增加数据收发之际的数据总线宽度,与数据一起合并发送检错用符号。在接收侧,检查检错用符号的合法性,必要时,进行检错处理,如果包含错误,就发出出错信号。
检错用符号,也可以作为独立于发送的数据的随机数,在此场合,在接收侧也共有或生成相同的随机数。在注意到根据先前的对策方式,取决于发送数据而在数据传送中使用的总线编号和数据的位编号不同时,由于通过使检错用符号成为随机数,即使是在传送同一数据时,位编号和总线编号的对应每次都改变,所以可以提高抗干预性。为了共用随机数,也可以将在发送侧生成的随机数通过总线传送到接收侧,可以使用LFSR等众所周知的伪随机数生成器。在将在发送侧生成的随机数通过总线传送到接收侧时,即使发送的随机数在总线中受到攻击者的攻击而变化时,在传送继续数据时,由于发送侧和接收侧的共有随机数不一致,可迅速发现错误。因此,对于保障在随机数共有之际的总线的数据的完整性,不需要采用特别的对策。这一点在使用现有的加密方式中不能实现是本申请发明的特征。在采用伪随机数生成器的场合,其构成为进行初始化以使各个伪随机数生成器输出同一伪随机数组,在同一定时可以获得同一数。作为这种方法最容易的构成方法是从同一初始值开始动作,在同一时钟定时顺序输出随机数组的。
不使用随机数而是根据发送数据生成检错符号并使用也可以。在此场合,由于对于相同的数据可生成相同的检错符号,不能获得数据随机化效果。然而,此外,按照(1)通过一并进行发送数据的随机化,可以进行数据的随机化。在使用纠错符号代替检错符号时,在接收侧检查纠错用符号的合法性,如果包含数据错误,可以尝试从错误恢复。
<实施例1>
在本实施例中,记述了对于在从CPU向记录装置记录数据之际的数据变换装置的配置。
此处,数据变换装置是进行数据的非线性变换的装置,有时具有使数据的位模式本身改变的功能,也有时具有使数据的位模式本身改变的功能及数据的位编号与总线的编号的对应关系变换的序列的变换功能。所谓的使位模式改变指的是至少大于等于一个的某一数据D通过变换F的像(D)的汉明权重与D不同,所谓的序列的变换指的是对所有的D,进行变换使D和F(D)的汉明权重永远一致。数据的变换,因为一般是使此位模式改变的场合和使序列改变的场合的合集合,所以在本申请发明中将两者总称为数据变换装置。特别是在分开称呼的场合,将前者称为位模式变换装置,而将后者称为位序列变换装置。
由于即使是在只使用数据序列变换装置的场合,也可以得到对于硬件检验的抗干预性,所以在作为构成要素单称数据变换装置的场合,也指该构成为将该部分改称为数据序列变换装置。
如图13所示,在从CPU1301向存储装置1302记录数据时,数据D是从CPU1301向数据总线1304发送。数据D首先输入到数据变换装置1303,数据变换装置1303通过变换处理F对数据D进行变换并输出数据D′。数据D′,经数据总线1304输入到变换装置1305。在变换装置1305中,通过变换处理F将数据D′变换为数据D输出。数据D记录于存储装置1302中。
此处,关于数据变换装置1303及1305,利用相同的变换处理F,在403中得到D′作为D′=F(D),在1305中得到作为D=F(D′)。在为了使变换和复原作为不同的处理进行的构成中,必须在CPU1301侧和存储装置1302侧分别设置变换及复原用的装置,与本实施例的构成的场合相比装置规模约大一倍。作为本实施例所述的变换F的示例,可以举出改变数据D的位的位置的置换处理。|I|=|J|=n/2,对于作为I∩J=φ并且I∪J={1,…,n}的I{1,…,n}、J{1,…,n},D[i]作为表示D的第i位,改换D[i](i∈I),D[j](j∈J)的处理是其一例。很清楚,在重复此改换两次时,返回到原来的状态。另外,如图14所示,可将求GF(2n)的反元的变换INV用作变换F。所谓的求反元,指的是对某一数据D求出使DxD′=1的D′。一般,D′也表示为D-1。在数据D是32位的数时,将数据D作为GF(232)的元,比如,利用不可约多项式m(x)=x32+x7+x6+x2+1得到D′使D′=F(D)=D-1mod m(x)。将数据D′通过数据总线1403传送到数据变换装置1404,在数据变换装置1404中可通过以F对D′进行处理而得到D。这是因为如下的关系成立之故:
F(D′)=D′-1mod m(x)=(D-1)-1mod m(x)=D
<实施例2>
在图15所示的本实施例中,是扩展数据变换装置,在数据变换部的数据变换处理之前,在进行反元计算INV之前,通过与密钥数据R相加进行数据扩展,进而进行数据的加扰的例子。此处所谓的加法,指的是逻辑加D′=D xor R。此外,通过数据和D′和R的连接扩展数据位长,得到对作为数据变换部的反元计算INV的输入。所谓的连接,指的是通过将数据D′和R平行连接,得到位长为两数据的位长的和的数据。这表示为D′|R。从CPU1501输出的数据D0输入到数据变换装置1502。数据变换装置1502,还由密钥加法部1503和数据扩展部1504、反元计算部1505构成,数据D0在密钥加法部1503中与密钥R0相加而成为D0′。在得到利用数据扩展部1504将D0′和R0连接的D1之后,D1经过数据变换部,即此处为经过反元计算部1505变成D2。D2通过数据总线1506输入到下一个数据变换装置1507。数据变换装置1507在内部具有密钥加法部1508及反元计算部1509。数据D2在密钥加法部1508中与密钥R1相加而成为D3,D3经反元计算部1509而成为D4。D4记录于存储装置1510中。此处,要注意加法处理和反元计算是通过GF(2n)进行。就是说,加法是与异或运算相对应。异或运算具有进行两次就互相抵消的性质。
在数据读出时,可以将上述步骤完全逆向应用。这一点,因为从
D4=(((D0+R0)|R0)-1+R1)-1mod m(x)
逆向的处理结果成为
t((D4-1+R1)-1mod m(x))+R0=t(((((D0+R0)-1+R1)-1)-1+R1)-1modm(x))+R0
=t(((D0+R0)-1+R1+R1)-1mod m(x))+R0
=t((D0+R0)|R0))+R0
=D0+R0+R0
=D0
而得到确认。此处,t(x|y)是去掉y缩短位长的处理,与数据扩展的逆变换相对应。
通过如本实施例这样构成装置,利用密钥不同的数据变换装置1502及1507,使通过数据总线1506的数据的保护和记录到存储装置1510的数据的隐匿成为可能。在本实施例中,将数据变换装置1502及1507作为独立的装置那样地予以记述,由于密钥加法和数据扩展可以更改顺序,所以将数据扩展部1504置于数据变换装置1502的外部时,数据变换装置1502和1507就可以成为一样的构成。此时,由于只有密钥不同这一性质,处理部的大部分可以通用化,其构成也可以是只有保持密钥的寄存器的不同,通过这样的构成,还可以缩小装置的电路规模。
<实施例3>
在本实施例中示出数据变换装置的构成例。基本的数据变换装置,只由数据变换装置1601构成,如图16所示,接受数据D,进行数据变换之后,输出数据D′。然而,如图17所示,数据变换装置1701也可以是如下的构成,还接受数据R作为输入,将数据R看作密钥,保持于密钥数据保持用的寄存器1702中,密钥在密钥加法部1703中与数据D相加,将其结果与密钥R合并由数据扩展部1704进行数据扩展后输入到数据变换部1705并将变换后的数据作为D′输出。在图18中示出的是还可以读出数据R的构成例。在由于攻击与数据连接的密钥数据发生变化的场合,不能进行将数据D′返回到D的变换。密钥数据有可能变化时,密钥数据的读出在适当的定时进行,确认未发生变化,而在发生变化的场合,通过写入线进行密钥数据的写入。另一方面,如图19所示,数据变换装置1901的构成为将接受密钥数据的对象作为随机数源1902,根据来自密钥更新指示信号线的信号更新保持于密钥保持部1903中的密钥。通过这样的构成,就不会有可以预测或操作通过数据变换装置1901进行数据变换的人,可以进一步提高通过总线传送的数据D′的安全性。此时,希望的构成是密钥保持部的数据不能读出。数据D′生成时和数据D复原时的密钥不同所产生的数据破坏,可以利用奇偶及检错符号等检出。当然,在这种情况下也可以采用可能使密钥保持部1903的数据可以读写,随机地决定密钥更新定时等的进行更复杂的密钥利用提高数据的安全性的方法。
以上,对数据变换装置的数据变换进行了描述。下面,图20示出利用数据变换装置进行数据变换解消。所谓的数据变换解消指的是由数据变换部从经过数据变换的数据D′取出原来的数据D的处理。输入到数据逆变换部的D′,由数据逆变换部2002变换之后,输入到数据缩小部2003。数据缩小部将输入分割为数据和密钥数据,分别输入到密钥加法部2004。在密钥加法部中,将数据和密钥数据相加,其结果作为D输出。此处,数据逆变换部的处理与数据变换时的数据变换部的处理相同。经过数据逆变换的数据,因为是进行密钥相加的数据和密钥数据连接而成的,将其由数据缩小部分割为各自本身。密钥加法部2004的处理是逻辑加。由于数据变换时的加法是逻辑加,通过此处理可以获得原来的数据D。在作为数据变换时的密钥加法使用通过公共密钥进行加密时,此处的密钥加法,与使用相同公共密钥的解密处理相对应。数据缩小部得到的密钥数据在后面的密钥加法部中被使用的同时,如后面的实施例所示,也有废弃和应用于数据传送中的数据检错和纠错的时候。
<实施例4>
在图21示出的本实施例中,数据变换装置2101具有多个数据变换部2107。数据R保持于密钥保持部2102中,数据C保持于选择信息保持部2103中,数据D输入到数据变换装置2101。数据D在密钥加法部2104中与保持于密钥保持部2102中的数据R相加,其结果输入到数据扩展部2105。数据扩展部2105的结果,由处理选择部2106传递到基于保持于选择信息保持部2103中的数据C从多个之中所选择的大于等于一个的数据变换部2107。数据变换部2107对接收到的数据进行变换,作为数据D′输出。此时,为了防止从装置的工作电流等的情况泄漏选择的是哪一个数据变换部2107,也可以不管数据C如何,使全部数据变换部1至N工作而使噪声增加。
另一方面,如图22所示,也可以是如下的构成:在密钥加法部2204中与保持于密钥保持部2202中的数据R相加的数据D,经过数据扩展部2205输入到数据变换部2206的1至N之中,基于保持于选择信息保持部2203中的数据C由输出选择部2207在N个输出之中选择一个,将其结果作为D′输出。在此场合,由于输出选择部2207的动作与数据变换部12206的动作比较是很小的动作,利用消耗电流进行判别很困难。
在图23中示出与图21相对应的数据变换解消时的数据变换装置。数据变换装置2301,接受数据D′,基于处理选择部在数据变换时使用的处理选择信息C,选择数据逆变换部2304中的某一个。数据逆变换部2304与上述的实施例一样,进行数据变换时的逆变换。经过数据逆变换的数据,由数据缩小部2305分离为数据和密钥数据,在下一个密钥加法部2306中相加。相加的结果成为原来的数据D。关于加法可利用公共密钥代替这一点已如前述。与图22相对应的数据变换解消时的数据变换装置也可同样地构成。另外,很显然,没有必要将图21和23组合,也可以是将图22的数据变换与图23的数据变换解消相组合,将图21的数据变换装置与图22相对应的数据变换解消相组合。
在本实施例中,示出的是在数据变换装置上合并密钥保持部及密钥加法部、数据扩展部的示例,但在实际规格中,不一定是将这些集合安装。之所以这样说的原因是由于只有数据变换部是攻击者发生众多试行错误所必需的,可以判断即使不进行密钥加法安全性也足够之故。
<实施例5>
在图24示出的本实施例中,在通过数据总线2404传送数据D之际,由数据变换装置2403使数据D和数据R一起变形。经过变形的数据在通过数据总线2404之后,输入到数据变换装置2405。数据变换装置2405进行数据变换装置2403的逆变换,得到数据R和数据D。此处,通过将数据R作为从随机数源得到的随机数,通过数据总线2404的数据由于即使是对于同一数据D也每次都改变,所以在数据D和通过数据总线2404的数据之间无相关性,可以防止消耗电流分析等的攻击。另外,即使是进行利用检验数据总线2404的数据读出,由于数据R不明,推定数据D很困难。在图24中,示出的是设数据D为具有32位的数,数据R为8位的数的示例。数据变换装置2403的输出为了在数据变换装置2405将数据D和R复原,必须大于等于40位。此时,即使是数据R不明,由于通过检验数据总线2404获得的40位,可以将数据D限定为约256。然而,在由多个块构成的数据中,32位n块的数据,具有约256n的候选数,实用上推定大于等于8块(大于等于256位)的数据是困难的。自然,本实施例,并不限制数据D和数据R的位长,通过加大数据R的位长或由于使块数增加而使数据D的位长变小,总体上进行数据推定是困难的。在本实施例中,作为数据变换装置2405的输出的数据R也可以原封不动地予以废弃。
另一方面,如图25所示,在构成为通过数据总线2503传送数据R,在比较装置2509中进行与数据变换装置2506的输出的比较时,可以在检测通过数据总线2505所传送的数据的随机化效果的同时一起检测传送时的数据变化等。数据变化的原因有由于电气条件发生的数据破损和由于攻击者有意造成的数据破坏等的情况。特别是,存在通过数据破坏进行解密的例子,如图25的实施例所示,通过验证数据的正确性,基于比较结果进行适当的错误处理,可以防止这种解密。通过加大数据R的位长,可以得到更高的检错性能。
此处,示出的是在数据的发送侧和接收侧利用数据总线传送共有数据R的示例,但通过使用两个同步的伪随机数生成装置,可以省略数据传送。在设定伪随机数生成装置的初始值的场合,可以使用依据本发明的数据总线。
<实施例6>
在图26示出的本实施例中,数据D从数据总线2601分路与纠错码(ECC)生成装置2602相连接,生成与数据D相对应的ECC码,通过数据总线2603与数据D一起输入到数据变换装置2604。经过数据变换装置2604变换的数据,通过数据总线2605输入到数据变换装置2606,而数据变换装置2606将输入数据分离为数据D与ECC码。ECC码和数据D,分别通过数据总线2607和2608输入到ECC检查装置2609,而ECC检查装置2609根据必要和可能对包含于数据D中的错误进行纠正并将经过纠错的数据D输出。另外,在数据D中包含错误时,通过出错信号输出线将发生错误一事进行传达。此处,出错信号输出线并不一定只输出出错信号,在不包含错误时,也可输出正常进行数据传送的表示信号以及输出在发生错误时是否可以纠错的表示信号,通过这种构成,可以对数据进行更合适的管理。
<实施例7>
在图27示出的本实施例中,在传送数据D时,在密钥加法装置2701中加上密钥K0,其结果通过数据总线2703输入到数据变换装置2704。另外,数据总线2703与ECC生成装置2702相连接,ECC生成装置2702基于输入数据生成纠错码。同一纠错码通过数据总线输入到数据变换装置2704。数据变换装置2704进行基于两个输入的数据变换,经过变换的数据,通过数据总线2705传送到数据变换装置2706。数据变换装置2706,将输入的数据分离为两个,通过数据总线2707及2708发送到ECC检查装置2709。此处,两个数据,与输入到数据变换装置2704的两个数据相对应。就是说,一个是在数据D上加上密钥K0的数据,另一个是与其相对应的纠错码。根据这两个数据,ECC检查装置2709根据需要进行纠错并将结果传送到密钥加法装置2710。ECC检查装置2709,在数据中检测到错误时,通过出错信号输出线通知有错误发生。密钥加法装置2710,将接收到的数据与密钥K1相加而输出数据D′。在本实施例中,通过使密钥K0随机变化,即使是数据D是固定值,由于通过数据总线2705的数据是随机化的,即使攻击者对数据总线2705进行监视,也得不到数据D。另外,通过使密钥K0和密钥K1相等,数据D和数据D′变为相等。此时,在本实施例中,是在利用密钥加法装置2701在数据D上加上密钥K0,进行利用ECC生成装置2702的纠错码的生成,但如果构成为改变顺序,生成关于数据D的纠错码,其后将在数据D上加上密钥K0的结果输入到数据变换装置2704,并且对于数据变换装置2706的输出,也在数据上加上密钥K1(其中现在假设K1=K0)之后,进行利用ECC检查装置2709的检错及纠错,也同样可以确保传送数据的安全性。
图28所示的实施例特别是数据D的发送目的是存储装置2806。存储装置2806内部具有数据变换装置2807、ECC检查装置2808及密钥加法装置2809。通过数据总线2805送交存储装置2806的数据,由数据变换装置2807分离为数据部及纠错码部,在ECC检查装置2808中,进行数据部的正确性的验证或数据部的校正。ECC检查装置2808的输出,传输到密钥加法装置2809,在密钥加法装置2809中,输出作为在接收到的数据上加上密钥K1的结果的数据D′。存储装置2806存储数据D′。此时,通过使密钥K0和密钥K1成为互相独立的值,可以获得数据D的发送侧对实际记录的数据D′的形式不可能了解,即使是读出存储于存储装置2806中的数据D′也不能推定数据D的这种高安全性。
在图29所示的实施例中,将在密钥加法装置2901中在数据D上加上密钥K的结果和基于由ECC生成装置2902所生成的纠错码利用数据变换装置2903进行变形而得到的数据D′,通过数据总线2904记录到存储装置2905。在数据D′读出时,通过数据总线2906输入到数据变换装置2907,将利用数据变换装置2907分离为数据部和纠错码部的结果输入到ECC检查装置2908。根据需要进行校正过的数据,在密钥加法装置2909中加上密钥K的结果可以作为数据D被得到。这一方式的特点是不限于数据总线2904及2906,在存储装置2905上的数据变化也可以在ECC检查装置2908中检测或校正这一点。密钥K与数据D相对应,不一定需要由系统固定。比如,在利用自动生成依赖存储装置的存储器地址及系统的时钟计数的临时密钥的密钥生成装置来生成密钥K的构成时,可以提供用户完全不需要对密钥K进行管理,不需要意识到加密的有无的安全装置。
在图30中示出具有数据变换装置的信息处理装置。对信息处理装置的中央运算装置3001及协同处理器3002、输入输出端口3007、存储装置3004设置有数据变换装置3008,作为对数据通过内部总线3003时的上述的各种攻击的对策。此处,数据变换装置3008的构成可以是内部包含图28所示的密钥加法装置2801、ECC生成装置2803及ECC检查装置2808、图25所示的比较装置2509。另外,不一定需要在所有的装置中都设置数据变换装置,如从图29所示的实施例可知,也可以是在存储装置中不设置数据变换装置的构成。通过输入输出端口3007收发的数据,因为基本上是攻击者已知的信息,不一定必须进行数据的随机化。
于是,为输入输出端口设置的数据变换装置,只是可进行检错纠错的最低限度的构成,所以可以减轻装置的安装负载。此时,进行输入输出端口的收发的装置,备有只进行检错纠错的特别模式。
在以上的实施例中,叙述的是关于进行数据传送或存放及读出时的处理,但也不一定只限于数据。比如,将数据原样不变改读为地址,利用同样的构成可以得到地址的抗干预性。此处,示出进行地址的随机化时的一实施例,如图31所示。在图31所示的本实施例中,在将地址A通过地址总线3105传送时,将地址A与数据R一起由数据变换装置3104进行变形。经过变形的数据,在通过地址总线3105之后,输入到数据变换装置3106。数据变换装置3106进行数据变换装置3104的逆变换,得到数据R和地址A。此处,通过将数据R变成从随机数源得到的随机数,因为通过地址总线3105的数据,对于同一地址D也每次都改变,故在地址A和通过数据总线3105的数据之间无相关性,可以防止消耗电流分析等的攻击。另外,即使是进行利用检验数据总线3105的数据读出,由于数据R不明,所以推定数据D很困难。在图31中,示出的是设地址A为具有32位的数,数据R为8位的数的示例。数据变换装置3104的输出,为了在数据变换装置3106将地址A和R复原,必须大于等于40位。此时,即使是数据R不明,由于通过检验地址总线3105获得的40位,可以将数据D限定为约256。然而,在由多个块构成的数据中,32位n块的数据,具有约256n的候选数,实用上推定大于等于8块(大于等于256位)的数据是困难的。自然,本实施例,并不限制地址A和数据R的位长,通过加大数据R的位长或由于分割为多个块进行传送而使地址A在各传送时的位长变小,通过总体上进行数据推定是困难的。在本实施例中,作为数据变换装置3106的输出的数据R也可以原封不动地予以废弃。在构成为通过地址总线3105传送数据R,在比较装置3109中进行与数据变换装置3106的输出的比较的话,可以在检测通过地址总线3105传送的数据的随机化效果的同时检测传送时的数据变化等。数据变化的原因,有由于电气条件发生的数据破损和由于攻击者有意造成的数据破坏。特别是,存在通过数据破坏进行解密的例子,如图31的实施例所示,通过验证数据的正确性,基于比较结果进行适当的错误处理,可以防止这种解密。通过加大数据R的位长,可以得到更高的检错性能。
下面利用图32对数据流予以描述。数据D从信息处理装置的外部,通过输入输出端口3208给予信息处理装置。此时,从输入输出端口给予的数据D,有时存储于存储装置3209,有时存储于中央运算装置3201及协同处理器3202备有的寄存器中。在存储于存储装置的情况下,从输入输出端口给予的数据D,接受数据变换装置3206的变换,通过内部总线3205,接受设置于存储装置侧的数据变换装置3207的逆变换并存储于存储装置。在存储于中央运算装置的寄存器的情况下,从输入输出端口给予的数据D,接受数据变换装置3206的变换,通过内部总线3205,接受设置于中央运算装置侧的数据变换装置3203的逆变换并存储于中央运算装置的寄存器中。在存储于协同处理器的寄存器的情况下,从输入输出端口给予的数据D,接受数据变换装置3206的变换,通过内部总线3205,接受设置于协同处理器侧的数据变换装置3204的逆变换并存储于协同处理器的寄存器中。在利用中央运算装置对存储于存储装置中的数据进行处理的情况下,存储于存储装置的数据存放部3211中的数据由数据变换装置3207进行变换,通过内部总线3205,接受中央运算装置侧的数据变换装置3203的逆变换,传送到中央运算装置的寄存器。在将处理结果存放于存储装置时,由数据变换装置3203对处理结果进行变换,通过内部总线3205由存储装侧的数据变换装置3207进行逆变换并存储于存储装置。在利用协同处理器进行处理时也一样,接受由数据变换装置3207进行的变换的数据,接受协同处理器侧的数据变换装置3204的逆变换,传送到协同处理器的寄存器。在将处理结果经过数据变换装置3204的变换,由存储装侧的数据变换装置3207进行逆变换之后,存储于存储装置。中央运算装置在从存储装置中读出命令码进行处理的情况下,从存储装置的程序存放部3210读出命令码,命令码在数据变换装置3207进行变换,通过内部总线3205由中央运算装置侧的数据变换装置3203进行逆变换,传送到中央运算装置。在将数据D取出到信息处理装置的外部的情况下,使用输入输出端口3208。此时,也与数据输入时一样,存储取出的数据场所有中央运算装置及协同处理器的寄存器和存储装置。在从中央运算装置的寄存器读出时,数据接受由数据变换装置3203进行的变换,通过内部总线3205,在输入输出端口侧的数据变换装置3206进行逆变换并通过输入输出端口传送到信息处理装置的外部。在从协同处理器的寄存器读出时,数据接受由数据变换装置3204进行的变换,通过内部总线3205,在输入输出端口侧的数据变换装置3206进行逆变换并通过输入输出端口传送到信息处理装置的外部。在从存储装置读出时,数据接受由数据变换装置3207进行的变换,通过内部总线3205,在输入输出端口侧的数据变换装置3206进行逆变换并通过输入输出端口输出到外部。另外,写入到存储装置的数据和从存储装置读出的数据,有作为命令码进行处理和作为数据进行处理的情况,为此有将其各自用存放地址明确分离和不加特别区别进行存储的情况。另外,至少在访问存储装置时,指定作为数据的存放目的的地址。该地址也与数据一样由数据变换装置进行变换和逆变换。
如上所述,通过内部总线3205上的数据及地址,是接受由数据变换装置进行变换的数据及地址,即使攻击者对消耗电力进行观测,在攻击中也不能取得可利用的信息。除此之外,通过将数据变换装置形成为可以对数据错误进行检测或校正的构成,可以针对攻击者有意使数据改变的攻击确保处理的安全性。