伽罗瓦域中相乘的方法和设备与求逆设备及字节替换设备的制作方法

文档序号:6637140阅读:332来源:国知局
专利名称:伽罗瓦域中相乘的方法和设备与求逆设备及字节替换设备的制作方法
技术领域
本发明涉及在例如一个智能卡的微电子组件中的密码安全处理,更具体的说,涉及在高级加密标准的执行中采用微分功率(differential power)分析攻击时的密码安全侵犯的防止。
背景技术
微分功率分析(DPA)是非常强的攻击技术,它采用了通过由使用密钥来处理数据的设备的功率消耗所泄漏的信息。然而,攻击者也能够使用一个称为“边通道”的辅助泄漏通道,例如电磁辐射、错误输出、时间等等。
密钥块密码对于所有外围功能使用一个密钥执行计算。当使用一个密钥执行访问时,攻击者可以使用另外一个边通道,并且获取关于该密钥的信息。随后,攻击者采用一种数字处理和统计的方法就能够发现所泄漏的信息和实际密钥值之间的相互关系。
对称块密码广泛地用于密码块中,例如一个智能卡中。对称块密码采用固定数量的输入比特而工作,这些比特被加密/解密为固定数量的输出比特。采用一种称为“循环函数(round function)”的简单的函数建立加密/解密功能。按照一定的次数来反复使用循环函数,就能够获得加密算法的安全性。这种密码也称为“迭代块密码”。
可以知道rijndael算法是迭代块密码算法的一个常见例子。rijndael算法被建立作为高级加密标准(AES),用于对通过网络传输的或者存储在计算机的智能卡和存储设备中的文件和数据信息进行加密。根据AES算法,rijndael算法通过使用128比特、192比特和256比特的加密密钥来处理128比特的数据块而执行对称块加密,并且输出128比特的加密数据。尽管所述数据块可能有128比特之外的比特数量,但是AES标准采用了128比特。
图1中的视图描述了在一个普通AES rijndael算法中的输入数据的结构、转换输入数据的状态队列的结构和加密或者解密后的输出数据的结构。
参看图1,输入数据101、状态数据102和输出数据103的128比特块有一个由四个32比特列组成的矩阵结构。对输入数据101进行加密或者解密以生成输出数据103。对输入数据执行一个加密处理或者解密处理的相应运算所生成的数据为状态数据102。
通常,AES rijndael算法重复执行一系列处理,每一次处理称为一个“循环”。图2A和2B是描述在普通rijndael算法中的一个循环的流程图。
参看图2A,对输入状态数据执行由若干运算组成的处理,该处理称为一个AES循环。通过一个rijndael字节置换运算S201、一个行移位运算S203、一个混合列S205和一个循环密钥加法S207执行输入状态数据的一个AES循环。
在字节置换运算S201中,采用一个称为“S-box”的置换表,对数据的各个字节独立地执行一个非线性字节置换运算。通过执行在有限域GF(28)中的乘法和GF(28)中的仿射变换的逆运算构建该“S-box”。
在行移位运算S203中,不改变除状态数据102的第一列之外的三列中各个字节的值,而是仅仅改变它们的位置。
在混合列运算S205中,将状态数据102的各列看作GF(28)中一个拥有四个项的多项式中的各个项的系数,然后将其转换为一个多项式中的四个项的系数,所述系数对应于由一个预先设定的多项式“a(x)={03}x3+{01}x2+{01}x+{02}”与该多项式相乘,然后除以“x4+1”所获得的余数。
在循环密钥加法S207中,通过按比特为单位来执行一个XOR操作,将一个循环密钥加在状态数据102上。AES rijndael算法中一个循环的各个步骤的详细运算过程是在现有技术中公知的,因此省略其详细的解释。
同时,在图2B中,叙述了另外一种AES循环。参看图2B,该AES循环包括一个行移位运算S211、一个字节置换运算S213、一个混合列运算S215和一个循环密钥加法S217。
在图2B中的AES循环与图2A中的AES循环相同,除了行移位运算S211和字节置换运算S213的顺序颠倒了。与图2A中的AES循环相比,即使是按照颠倒的顺序执行移位运算S211和字节置换运算S213,通过图2B中的AES循环也可以获得相同的结果。
根据AES算法,通过按照指定的次数来反复执行AES循环,对数据进行加密。根据加密密钥的长度确定AES循环的次数Nr。对于128比特、192比特和256比特的加密密钥,分别有“Nr=10”、“Nr=12”和“Nr=14”。
在最后的AES循环中,在通过按照指定的次数来反复执行AES循环后,依序执行或者按照颠倒的顺序执行行移位步骤和字节置换运算步骤,然后不执行混合列步骤而直接执行循环密钥加法步骤,从而生成如图1所示的输出数据103。
同时,根据AES rijndael算法的一个解密处理对应于上述根据AESrijndael算法的加密处理的逆处理。因此,通过一个rijndael字节置换逆运算步骤、一个行移位逆运算、一个列混合逆运算步骤和循环密钥加法运算S207,对输入数据进行解密。根据另外一个AES运算的解密处理类似于上述AES运算的解密处理,因此省略详细的叙述。
到目前为止,提出了很多用于执行AES rijndael算法的设备。它们中一个设备拥有一种结构,其中,一个处理模块反复执行所有的AES循环。因此,由于在执行了“Nr”次循环时通过该数据处理模块对一个数据执行“Nr”次运算,因此执行所有循环所需要的时间就是执行一次循环的“Nr”倍。
有很多方法和设备用于防止针对AES的信息泄露攻击。这些方法和设备包括一个特定寄存器备份充电,实际数据和随机数据的交叉处理和数据掩模(masking)技术。能够防止信息泄露攻击的最重要的技术是数据掩模技术。该技术采用XOR运算等,用一个不可预知的掩模将数据掩蔽。在该情况下,必要的计算被包含在被掩蔽(masked)的数据中。为了获得最终数据,被掩蔽的计算的结果应该是“未被掩蔽的”。为此,应该用一种特定的方法来处理用于掩蔽输入数据的掩模。这种掩模处理方法称为一个“掩模校正”。
如果假设AES加密块被集成在一个资源受限的环境中,例如一个智能卡中,一个加密/解密电路所需要的功能是在电路维持在小规模的情况下,保证一个特定级别的处理速度。一个AES循环函数包括线性部分和非线性部分。线性部分的掩模校正是直接执行的,但是非线性部分的被掩蔽数据处理和掩模校正,即在非线性部分的字节置换,需要进行一个特殊计算。用于字节置换的被掩蔽计算的传统技术涉及掩模乘法运算、AND运算掩蔽、表查询等等。
影响电路规模的一个主要部分是字节置换运算部分。如果在相同的电路执行字节置换运算和字节置换逆运算,则电路的尺寸几乎要翻倍。用于字节置换运算和字节置换逆运算的通常设备采用在GF(28)中的运算,并且包括字节置换、字节置换逆运算和从一个查询表中直接逻辑合成。
然而,传统的字节置换运算和字节置换逆运算设备的电路规模并不适合资源受限的环境。可以知道,字节置换运算和字节置换逆运算需要大规模电路。为掩蔽数据的字节置换运算生成特殊的交叉器(crossbar)和多路复用器的一个解决方法导致电路规模变得巨大。
为了在硬件的掩模字节置换中执行逆运算,需要将数据从域GF(28)转换到相反域GF((24)2)中,并执行相反域的计算。这种技术使得有可能降低用于字节置换的门的数量。在计算相反域的字节置换中最重要的工作之一是相反域的操作数的逆(inversion)运算。
执行逆运算的通常技术需要在GF(2n)中的各种不同的运算,例如乘法、平方运算、常数乘法、加法和逆运算。消耗资源的最重要的运算之一就是在GF(2n)中的乘法运算。
为了实现掩模字节置换,需要对所有的运算执行掩模运算。如果用上述传统方法执行乘法运算,执行掩模字节置换所需要的硬件规模就会变得很大。

发明内容
本发明被开发来用于解决与传统设计相关联的上述缺点和其它问题。本发明的一个方面提供了一种用于在伽罗瓦域(GF)中的乘法运算的方法和设备,该乘法运算在GF(2n)中执行掩模数据的高效的乘法运算。
本发明的另外一个方面提供了一种设备,用于在伽罗瓦域进行逆运算,该逆运算使用GF(24)中的一个被掩模乘法,在GF((24)2)中执行被掩蔽数据的逆运算。
本发明的另外一个方面提供了一种设备,用于AES字节置换运算,该运算使用GF((24)2)中的一个被掩蔽逆运算执行被掩蔽数据的AES字节置换运算。
根据本发明的另外一个方面,提供了一种在伽罗瓦域中的进行乘法运算的方法,用于通过在GF(2n)中对被掩蔽数据和掩模执行一种变换,防止信息泄露攻击,所述方法包括接收若干第一和第二被掩蔽输入数据,若干第一和第二输入掩模和一个输出掩模;通过在GF(2n)中对该若干被掩蔽输入数据和该若干输入掩模执行乘法,计算若干中间值;对中间值和输出掩模执行XOR运算,计算一个最终的被掩蔽输出值。
第一输入数据可以是指通过执行对第一输入操作数和第一输入掩模执行XOR运算得到的值,第二输入数据可以是指通过对第二输入操作数和第二输入掩模执行XOR运算得到的值。
中间值的计算可以包括通过对第一输入数据和第二输入数据执行XOR运算来计算第一中间值,通过对第二输入数据和第一输入掩模执行XOR运算得到第二中间值,通过对第一输入数据和第二输入掩模执行XOR运算得到第三中间值,通过对第一输入掩模和第二输入掩模执行XOR运算得到第四中间值。
可以通过以下等式计算最终的输出值MP=OMA4A3A2A1,其中,代表XOR运算,OM为输出掩模,A1为第一中间值,A2为第二中间值,A3为第三中间值,A4为第四中间值。
根据本发明的另外一个方面,提供了一种在伽罗瓦域中进行乘法运算的设备,用于通过在GF(2n)中对被掩蔽数据和掩模执行一种变换,防止信息泄露攻击,包括若干乘法器,用于从外部接收若干第一和第二被掩蔽的输入数据、若干第一和第二输入掩模和一个输出掩模,并且通过在GF(2n)中对该若干被掩蔽输入数据和该若干输入掩模执行乘法来计算中间值;XOR运算单元,用于通过对中间值和输出掩模执行XOR运算,计算最终的被掩蔽输出值。
第一输入数据可以是指通过对第一输入操作数和第一输入掩模执行XOR运算得到的一个值,第二输入数据可以是通过对第二输入操作数和第二输入掩模执行XOR运算得到的一个值。
这些乘法器可以包括第一乘法器,通过对第一输入数据和第二输入数据执行XOR运算,计算得到第一中间值;第二乘法器,通过对第二输入数据和第一输入掩模执行XOR运算,计算得到第二中间值;第三乘法器,通过对第一输入数据和第二输入掩模执行XOR运算,计算得到第三中间值;第四乘法器,通过对第一输入掩模和第二输入数据执行XOR运算,计算得到第四中间值。
可以通过以下等式计算最终的输出值MP=OMA4A3A2A1,其中,代表XOR运算,OM为输出掩模,A1为第一中间值,A2为第二中间值,A3为第三中间值,A4为第四中间值。
根据本发明的另外一个方面,提供了一种在伽罗瓦域中进行逆运算的设备,用于从外部接收第一到第五输入数据,并且在GF((24)2)中执行输入数据的逆运算,包括第一异或(XOR)运算单元,通过对由8个比特组成的第五输入数的高位部分和低位部分进行接收并进行XOR运算,计算得到第一结果值T1;第二异或(XOR)运算单元,通过对由8个比特组成的第三输入数据的高位部分和低位部分进行接收并进行XOR运算,计算得到用于执行第一结果T1的掩模校正的第一校正值M1;第一被掩模蔽的乘法器,通过在GF(24)中对第一结果值T1、第五输入数据的低位部分、第一校正值M1、第三输入数据的低位部分和第四输入数据进行接收并进行乘法运算,计算得到第二运算值T2;第一运算单元,通过对第五输入数据的高位部分进行接收并进行特定运算,计算得到第三运算值T3;第二运算单元,通过对第三输入数据的高位部分进行接收并进行特定运算,计算得到用于校正第三运算值T3的第二校正值M2;第三XOR运算单元,通过对第三运算值T3和第二运算值T2进行接收并进行XOR运算,计算得到第四运算值T4;第四XOR运算单元,通过对第二校正值M2和第四输入数据进行接收并进行XOR运算,计算得到用于执行对第四运算值T4的掩模校正的第三校正值M3;一个被掩蔽的逆运算器,通过在GF(24)中对第四运算值T4、第三校正值M3和第一输入数据的低位部分进行接收并进行逆运算,计算得到第五运算值T5;第二被掩蔽的乘法器,通过在GF(24)中对第五运算值、第一运算值、第二输入数据、第一校正值和第一输入数据的低位部分进行接收并进行乘法运算,计算得到一个最终输出值的低位部分;第三被掩蔽的乘法器,通过在GF(24)中对第五运算值、第五输入数据的低位部分、第二输入数据、第三输入数据的高位部分和第一输入数据的高位部分进行接收并进行乘法运算,计算得到一个最终输出值的高位部分。
根据本发明的另外一个方面,提供了一种设备,执行用于防止信息泄露攻击的一个AES字节置换运算,包括第一输入域转换单元,接收在GF(28)中的被掩蔽的输入数据和转换选择数据,根据转换选择数据的一个值,通过一个特定转换生成第一转换值,并输出第一转换值;第二输入域转换单元,接收一个用于输入数据的掩模和转换选择数据,通过一个特定转换,生成用于对第一转换值执行一个掩模校正的第二转换值,并输出第二转换值;一个GF((24)2)中的被掩蔽求逆设备,通过对一个输出掩模、若干随机输入掩模和第一、二个转换值进行接收并进行逆运算,计算一个被掩蔽逆值;第一输出域转换单元,接收逆值和转换选择数据,并通过一个特定运算,计算一个在GF(28)中被转换的被掩蔽输出值;第二输出域转换单元,接收输出掩模和转换选择数据,并计算根据转换选择数据的值、通过一个特定转换来对输出值执行掩模校正的校正值。
根据本发明的其他方面,提供了对应于上述设备的方法。
本发明的其他方面和/或优点将部分地在后面的说明书中给出,并且部分地从所述说明书显而易见,或者可以通过本发明的实践来学习。


图1中的视图描述了在一个普通AES rijndael算法中,输入数据的结构,转换输入数据的状态队列的结构和加密或者解密后的输出数据的结构;图2A和2B是描述在普通rijndael算法中的一个循环的流程图;图3中的方框图描述了根据本发明的第一实施例的一个在GF(2n)中被掩蔽乘法设备的结构;图4中的流程图解释了根据本发明的第一实施例的一个在GF(2n)中被掩蔽乘法设备的运算过程;图5中的方框图描述了根据本发明的第二实施例的一个在GF((24)2)中被掩蔽求逆设备的结构;和图6中的方框图描述了根据本发明的第三实施例的一个被掩蔽AES字节置换运算设备的结构。
具体实施例方式
以下将要涉及本发明的实施例的详细内容,在附图中说明了本发明的例子,其中,相同的附图标号对应相同的元件。以下将要参考附图描述实施例,以便解释本发明。
本发明的各种实施例在进行一个字节置换运算过程中,防止信息泄露攻击。通过利用一种数据掩模技术随机地提取输入数据,可以提高AES计算的安全性。由于一个访问该泄漏信息的监视者无法从随机提取的数据中辨别出想要的信息,因此信息泄漏被降到最小程度。数据掩模技术包括使用一个随机提取的掩模(以下称为“随机掩模”)变换数据的一个处理过程。该随机掩模通过一个异或(XOR)运算作用于数据。
智能卡使用一种AES加密算法,利用一个密钥执行数据处理。在执行该AES加密算法时,本发明的各种实施例为了防止信息泄漏,使用了一种对输入数据进行掩蔽的方法。由于在一个AES循环算法中,除字节置换运算之外的所有的运算都是线性的,因此,能够以一种直接的方式对一个被掩蔽数据计算进行掩模校正。被掩蔽字节置换运算需要经过非线性处理的掩模数据。
在本发明的一个实施例中,为了降低在合成GF中的字节置换运算的复杂度,使用一个诸如GF((24)2)的伽罗瓦域。如果使用该伽罗瓦域,则字节置换运算被表示为在GF(2n)中的若干组合乘法,加法,平方运算,常数乘法和逆运算。很多在GF(24)中的乘法保证了在字节置换运算的重要部分。
通过接收和在GF(2n)中执行在两个被掩蔽数据的乘法运算,计算得到被掩蔽输出值,因此并不泄露实际输入和输出值。
图3中的方框图描述了根据本发明的第一实施例的一个在GF(2n)中被掩蔽乘法设备的结构,图4中的流程图解释了根据本发明的第一实施例的一个在GF(2n)中被掩蔽乘法设备的运算过程。参考图3,在伽罗瓦域中的被掩蔽乘法设备300包括第一到第四的各个乘法器307到310和XOR运算单元311。
第一到第四的各个乘法器307到310对由n比特组成的若干个数据进行接收并对其执行一个乘法运算,并且分别计算n比特的中间值A1到A4。
XOR运算单元311从第一到第四的各个乘法器307到310接收第一到第四中间值A1到A4和来自外部的输出掩模(OM)305,并执行中间值和输出掩模的XOR运算,计算得到一个最终输出值(MP)306。这里,MP是一个被掩蔽值。
参考图3到图4,假设所有输入被掩蔽乘法设备300的输入数据都有n比特的大小(步骤S410)。输入数据可以是第一操作数OP1,第二操作数OP2,第一操作数掩模(IMO1)303,第二操作数掩模(IMO2)304和输出掩模(OM)305。
然后,选择n比特的第一操作数随机掩模(IMO1),第二操作数随机掩模(IMO2)和输出随机掩模(OM)(步骤S420)。
然后,通过执行第一随机掩模(IMO1)和第一操作数OP1的XOR运算,计算得到被掩蔽值TMP1,通过执行第二随机掩模(IMO2)和第二操作数OP2的XOR运算,计算得到一个被掩蔽值TMP2(步骤S430)。
将被掩蔽的TMP1和TMP2和三个掩模(IMO1)303,(IMO2)304,(OM)305作为操作数输入各个乘法器,用于计算中间值A1到A4(步骤S440)。
通过在GF(2n)中将TMP1和TMP2相乘,而计算得到第一中间值A1。通过在GF(2n)中以相同方式将TMP2和IMO1 303相乘,而计算得到第二中间值A2。通过在GF(2n)中将TMP1和IMO2 304相乘,而计算得到第三中间值A3。通过在GF(2n)中将IMO1 303和IMO2 304相乘,而计算得到第四中间值A4。
通过XOR运算单元311执行OM、A4、A3、A2和A1的XOR运算,计算得到最终的输出值(MP)306(步骤S450)。
即,MP=OMA4A3A2A1。
图5中的方框图解释了根据本发明的第二实施例的一个在GF((24)2)中被掩蔽求逆设备的结构。
本实施例使用在GF(2n)(这里,n=4)中的一个被掩蔽乘法,执行在GF((24)2)中的一个被掩蔽字节置换运算。为了在GF((24)2)中执行字节置换运算,本实施例提供了一种在GF((24)2)中进行被掩蔽逆运算的设备。
根据图5,根据本发明的被掩蔽求逆设备500包括第一到第四的各个XOR运算单元506、507、511和512,第一到第三在GF(24)中的各个乘法器508、514、515,第一到第二的各个运算单元509和510和一个在GF(24)中的被掩蔽逆运算器513。
在GF((24)2)中的被掩蔽求逆设备500从外部接收一个8比特输出掩模(OM)501,一个4比特随机掩模(IM2)502,一个8比特输入操作数掩模(IMO)503,一个4比特随机掩模(IM1)504和一个8比特被掩蔽操作数(ID)505,并通过特定的运算过程计算一个8比特输出值(MOR)516。
这里,8比特被掩蔽操作数(ID)505按如下表示ID=OPIMO其中,OP表示一个在GF((24)2)中被逆运算的实际数值。
在没有泄露所述实际被求逆的数据值OP的状态下,按如下输出8比特输出值(MOR)516。
MOR=OP-1OM每个8比特输入数据501、503和505都通过一个特定的运算过程被划分为两个4比特数据。通过提取8比特输入数据的4个低位数据,构成划分数据中的一个,如图5中索引L所示。通过提取8比特输入数据的4个高位数据,构成划分数据中的另一个,如图5中索引H所示。例如,在图5中,通过从OM 501提取4个高位数据,构成OMH,通过提取OM 501的4个低位数据,构成OML。
第一到第四的各个XOR运算单元506、507、511和512接收4比特数据并对其执行XOR运算,然后输出4比特数据。
在GF(24)中的第一到第三的各个被掩蔽的乘法器508、514、515执行一个GF(24)中的被掩蔽乘法。
在GF(24)中的第一到第三的各个乘法器508、514、515接收第一被掩蔽操作数A、第二被掩蔽操作数B、第一操作数掩模IMO1,第二操作数掩模IMO2和输出掩模(OM),并对其执行一个被掩蔽乘法,并计算包括出掩模(OM)501的被掩蔽输出值。这里,第一和第二被掩蔽操作数如下A=OP1IMO1B=OP2IMO2同时,第一到第二的各个运算单元509、510对用一个在GF(24)中的多项式表示的输入数据执行一个平方运算和一个常数乘法运算。如果输入数据a(x)为a0+a1x+a2x2+a3x3并且常量c(x)为1+x3,由第一到第二的各个运算单元509、510所执行的运算如下a(x)2·c(x)=(a0+a1x+a2x2+a3x3)*(a0+a1x+a2x2+a3x3)*1+x3=a0+(a1+a3)x+a3x2+(a0+a2)x3这里,将一个不可约分的多项式f(x)=1+x+x4用于该乘法。
第一和第二运算单元509、510的输出值仅仅用做由第三和第四XOR运算单元511和512所执行的XOR运算的操作数。
在GF(24)中的被掩蔽逆运算器513对于4比特被掩蔽的输入数据执行一个被掩蔽逆运算。即,在GF(24)中的被掩蔽逆运算器513接收一个被掩蔽操作数C作为其第一输入,一个操作数掩模作为其第二输入和一个输出掩模作为其第三输入,并计算一个被掩蔽输出值。这里,被掩蔽操作数为OP XORMIN。如果输入为C并且求逆运算结果为D,则所述被掩蔽操作数为D=C1modf(x)。由于使用一种表搜索技术——该技术是在一个逆合成处理中的一种普通的掩模逆运算技术或者一种掩蔽AND运算——执行D的计算,则并不进行处置实际的C值。
第一XOR运算单元506接收输入在GF((24)2)中的被掩蔽求逆设备500的数据ID 505的一个高位部分IDH和一个低位部分IDL,并对其执行XOR运算,并且输出XOR运算的结果值到第一和第二在GF(24)中的被掩蔽的乘法器508和514。
第一在GF(24)中的被掩蔽的乘法器508接收第一XOR运算单元506的输出值,IMO 503的低位部分IMO2,第二XOR运算单元507的输出值,ID 505的低位部分IDL和IM1 504,并对其执行一个乘法运算,并向第三XOR运算单元511输出乘法结果。
第一运算单元509接收ID 505的高位部分IDH,并对其执行一个平方运算和一个常数乘法运算,并将平方运算和常数乘法运算的结果输出给第三XOR运算单元511。
第三XOR运算单元511接收在GF(24)中的第一被掩蔽的乘法器508的输出值和第一运算单元509的输出值,并对其执行XOR运算,并输出XOR运算的结果到在GF(24)中的被掩蔽逆运算器513。
第二运算单元510接收IMO 503的高位部分IMOH,并对其执行一个平方运算和一个常数乘法运算,并输出平方运算和常数乘法运算的结果到第四XOR运算单元512。
第四XOR运算单元512接收第二运算单元510的输出和IM1 504,并对其执行XOR运算,并输出XOR运算的结果到在GF(24)中的被掩蔽逆运算器513。
在GF(24)中的被掩蔽逆运算器513接收第四XOR运算单元512的输出值、第三XOR运算单元511的输出值和IM2 502,并对其执行一个特定运算,并输出运算结果到第二在GF(24)中的被掩蔽的乘法器514和第三被掩蔽的乘法器515。
在GF(24)中的第二被掩蔽的乘法器514接收第一XOR运算单元506的输出值、第二XOR运算单元507的输出值、在GF(24)中的被掩蔽逆运算器513的输出值、OM 501的低位部分OML和IM2502,并对其执行一个特定运算,并输出对应最终输出值(MOR)516的低位部分MORL的一个数值。
在GF(24)中的第三被掩蔽的乘法器515接收在GF(24)中的被掩蔽逆运算器513的输出值、ID 505的一个高位部分IDH、IM2 502、IM2 502的高位部分IMOH和OM 501的高位部分OMH,并对其执行一个特定运算,并输出对应最终输出值(MOR)516的高位部分MORH的一个数值。
然后,解释在GF((24)2)中的被掩蔽求逆设备500的运算过程。相应的第二和第四XOR运算单元507和512与第二运算单元510负责在被掩蔽求逆设备500中的掩模校正,其它部分负责被掩蔽数据的处理。
如果输入值为a并且逆运算的结果值为b,则现在解释其中数据未被掩蔽的在GF((24)2)中的逆运算。
首先,将输入值a划分为一个高4比特部分aH和一个低4比特部分aL,并执行在GF((24)2)中的所有的运算,包括乘法,求逆等等。按顺序所执行的运算过程如下(a)T1=aLaH;(b)T2=T1*aL=(aLaH)*aL;(c)T3=aH2*(1001);]]>(d)T4=T2⊕T3=(aL⊕aH)*aL⊕aH2*(1001);]]>(e)T5=T4-1=[(aL⊕aH)*aL⊕aH2*(1001)]-1;]]>(f)bL=T5*T1=(aL⊕aH)*[(aL⊕aH2)*(1001)]-1;]]>(g)bH=T5*aH=aH*[(aL⊕aH)*aL⊕aH2(1001)]-1.]]>使用通过上述过程计算的bH和bL,可以得到在GF((24)2)中的输出b在GF((24)2)中b=a-1。
以下,根据图5解释根据本实施例的被掩蔽求逆过程。
在以下的过程中,Ti是一个被掩蔽变量,Mi是一个用于Ti的掩模。
1.选择随机掩模8比特IMO 503、4比特IM1 504、4比特IM2 402和8比特输出掩模(OM)5012.计算ID 505ID=OPIMO将输入到在GF((24)2)中的被掩蔽求逆设备500的ID 505划分为一个高4比特部分IDH和一个低4比特部分IDL。
3.执行在GF((24)2)中包括乘法和求逆的所有运算。
(a)第一XOR运算单元506执行如下运算T1=(OPLOPH)(IMOLIMOH)。
同时,第二XOR运算单元507执行以下运算,以便计算用于对T1进行掩模校正(mask correction)的校正值M1(b)在GF(24)中的第一被掩蔽的乘法器508使用IM1 504、IMO 503的低4比特部分IMOL和第二XOR运算单元507的输出值M1执行如下运算。这里,不需要进行掩模校正,IM1作为一个新掩模使用T2=T1*OPL=(OPLOPH)*OPtIM1。
(c)第一运算单元509执行如下运算T3=OPH2*(1001)⊕IMOH2*(1001).]]>同时,第二运算单元510执行第一运算单元509的输出值T3的掩模校正,按如下计算校正值M2M2=IMOH2*(1001).]]>(d)然后,第三XOR运算单元511执行以下运算T4=(OPL⊕OPH)*OPL⊕OPH2*(1001)⊕IM1⊗IMOH2*(1001).]]>然后,第四XOR运算单元512执行第三XOR运算单元511的输出值T4的掩模校正,按如下计算校正值M3M3=IM1⊕IMOH2*(1001).]]>(e)在GF(24)中的被掩蔽的逆运算器513使用第四XOR运算单元512的输出值M3和IM2 502,执行被掩蔽的求逆运算。这里,不需要进行掩模校正,IM2 502作为一个新掩模使用T5=[(OPL⊕OPH)*OPL⊕OPH2*(1001)]-1.]]>(f)第二在GF(24)中的被掩蔽的乘法器514使用OM 501的低4比特部分OML、IM2 502、第二XOR运算单元510的输出值M1等等来执行以下运算,计算得到最终输出值MOR 516的低4比特部分MORL。这里不需要进行掩模校正MORL=T5*T1=(OPL⊕OPH)*[(OPL⊕OPH)*OPL⊕OPH2*(1001)]-1.]]>(g)第三在GF(24)中的被掩蔽的乘法器515使用OM 501的高4比特部分OMH、IM2 502、IMO 503的高4比特部分IMOH等等来执行以下运算,计算得到最终输出值MOR 516的高4比特部分MORH。这里不需要进行掩模校正MORH=T5*OPH=OPH*[(OPL⊕OPH)*OPL⊕OPH2*(1001)]-1.]]>4.从上面计算的MORH和MORL计算最终输出值MOR 516。这里OM 701为输出掩模。
MOR=OP-1OM。
图6中的方框图解释了根据本发明的第三实施例的、一个被掩蔽AES字节置换运算设备的结构。
参照图6,在GF((24)2)中的被掩蔽求逆设备500与附图5中所示的在GF((24)2)中的被掩蔽求逆设备相同,因此将参照相同的附图标号进行对其的说明。
根据本实施例的被掩蔽AES字节置换运算设备600包括第一输入域(input field)转换单元607a、第二输入域转换单元607b、在GF((24)2)中的被掩蔽求逆设备500、第一输出域(output field)转换单元608a、第二输出域转换单元608b。
根据本实施例的被掩蔽AES字节置换运算设备600,接收一个随机掩模(IM1)601、一个随机掩模(IM2)602、一个被掩蔽数据(INPUT)603、一个转换选择数据(TR)604、一个输入数据掩模(IMASK)605和一个输出掩模(OM)606,并对其执行一个特定运算,并输出第一输出值(OUTPUT)609和第二输出值(OMASK)610。这里,OMASK 610是一个掩模校正值。
根据本实施例的被掩蔽AES字节置换运算设备600,使用多个附加的随机掩模来执行AES rijndael算法的被掩蔽字节的一个置换运算。该设备输出一个被掩蔽结果值,该值有不暴露输入数据的真实值的一个输出掩模。
第一输入域转换单元607a接收被掩蔽数据(INPUT)603和转换选择数据(TR)604,并根据一个指定条件对其执行一个转换,并将它的输出值提供给在GF((24)2)中的被掩蔽求逆设备500。
第二输入域转换单元607b接收输入数据掩模(IMASK)605和转换选择数据(TR)604,并根据一个指定条件对其执行一个转换,并将它的输出值提供给在GF((24)2)中的被掩蔽求逆设备500。
在GF((24)2)中的被掩蔽求逆设备500接收OM 606、IM1 601、第二输入域转换单元的一个输出值、IM2 602和第一输入域转换单元的一个输出值,并对其执行一个转换,并将它的输出值提供给第一输出域转换单元608a。
第一输出域转换单元608a接收在GF((24)2)中的被掩蔽求逆设备500的输出值和转换选择数据(TR)604,并计算第一输出值(OUTPUT)609。
第二输出域转换单元608b接收OM 606和转换选择数据(TR)604,根据一个指定条件而执行一个转换,并计算第二输出值(OMASK)610。
首先,在GF(28)中接收到被掩蔽数据603的第一输入域转换单元607a,根据作为另外一个输入的转换选择数据604的值,输出在GF((24)2)中进行了转换的被掩蔽数据,或者根据在GF(28)上的rijndael的一个仿射逆变换,执行一个被掩蔽数据603的转换,然后输出在GF((24)2)中进行了转换的被掩蔽数据。
第二输入域转换单元607b根据转换选择数据(TR)604处理输入数据掩模(IMASK)605,对从第一输出域转换单元608a输出的数据执行掩模校正,并输出校正值IMO到在GF((24)2)中的被掩蔽求逆设备500。
在GF((24)2)中的被掩蔽求逆设备500使用第一输入域转换单元的输出值、随机掩模(IM1)601和IM2(602)而执行数据求逆,执行将输入掩模IMO变换到GF((24)2)中,并且将结果的转换的逆的被掩蔽值MOR与掩模OM一起输出。
第一输出域转换单元608a从被掩蔽求逆设备500接收在GF((24)2)中的被掩蔽数据MOR,并根据第二输入的转换选择数据(TR)604的值,执行将被掩蔽数据变换到GF(28)中。然后,第一输出域转换单元608a执行该数据的一个rijndael仿射逆变换,或者输出被转换到GF(28)中的被掩蔽数据。
第二输出域转换单元608b根据转换选择数据(TR)804的值处理输出掩模(OM)606,并通过对从第一输出域转换单元608a输出的数据执行一个掩模校正,计算校正值(OMASK)610。
在GF(28)和GF((24)2)之间的转换是一个域同构变换(isomorphictransformation)和一个逆域同构变换。域同构变换和逆域同构变换被定义如下[公式1]GF(28)→GF((24)2)x→y=T□x;和GF((24)2)→GF(28)y→x=T-1□y;这里,x代表伽罗瓦域GF(28)中的一个元素,y代表伽罗瓦域GF((24)2)中的一个元素。
此外,T是一个域同构变换矩阵,T-1是一个逆域同构变换矩阵T=1011101101010000010010100110001100001110010010110011010100000101]]>
T-1=1000101000001101010011100100110101011010001001010111011100100100]]>通过执行各个矩阵与输入数据的矩阵乘法,执行公式1的变换。
仿射逆变换和逆域同构变换的运算被定义如下[公式2]z=A`□y+c`,A`=T□A-1,c`=A`□cA′=T·A-1=0100010000110110010101000000010111101111000111101000111001100011,C′=A′·C=00010010]]>通过执行各个矩阵与输入数据的矩阵乘法和矩阵加法,执行公式2的变换。
逆域同构变换和仿射变换由以下的公式3定义[公式3]y=A`-1□z+c,A`-1=A□T-1
此处,A`-1如下A′-1=A·T-1=1010011011110001100110101010000011011110011100010000101101100001,c=11000110]]>通过执行各个矩阵与输入数据的矩阵乘法和矩阵加法,执行公式3的变换。
关于域同构变换、仿射逆变换和逆域同构变换的公式如下y0=x0x2x3x4x6x7z0=x1x5y=x1x3z1=x2x3x5x6y2=x1x4x6z2=x1x3x5y3=x1x2x6x7z3=x5x7y4=x4x5x6z4=x0x1x2x4x5x6x7y5=x1x4x6x7z5=x3x4x5x6y6=x2x3x5x7z6=x0x4x5x6y7=x5x7z7=x1x2x6x7这里,ab是一个a和b之间的比特类型的XOR运算。
关于逆域同构变换、仿射逆变换和逆域同构变换的公式如下z0=x0x4x6y0=x0x2x5x6z1=x4x5x7y1=x0x1x2x3x7z2=x1x4x5x6y2=x0x3x4x6z3=x1x4x5x7y3=x0x2z4=x1x3x4x6y4=x0x1x3x4x5x6z5=x2x5x7y5=x1x2x3x7z6=x1x2x3x4x5x6x7y6=x4x6x7z7=x2x5y7=x1x2x7因此,第一和第二输入域转换单元607a和607b和第一和第二输出域转换单元608a和608b各个都使用异或运算和非运算执行转换。
为了执行字节置换运算,转换选择数据(TR)信号被设置为0。然后,第一输入域转换单元607a执行被转换到GF((24)2)中的被掩蔽数据和掩模的转换。然后,在GF((24)2)中的被掩蔽求逆设备500执行在GF((24)2)中的被掩蔽逆运算,并将掩模应用于输出值。最后,第一输出域转换单元608a将被掩蔽数据MOR和掩模OM转换到GF(28)中,然后通过执行rijndael仿射变换输出第一输出值(OUTPUT)609。第一输出值(OUTPUT)609包括执行字节置换运算的结果值,第二输出值(OMASK)610包括用于被掩蔽数据的掩模。
为了执行逆字节置换运算,转换选择数据(TR)信号被设置为1。然后,第一和第二输入域转换单元607a和607b执行GF(28)中的被掩蔽数据和掩模的rijndael仿射逆变换,然后执行到GF((24)2)的逆。然后,在GF((24)2)中被掩蔽求逆设备500执行在GF((24)2)中的被掩蔽逆运算,并将结果值应用到掩模(OM)606。最后,第一和第二输出变换单元对在GF(28)中被掩蔽的数据MOR的逆和在GF(28)中的掩模(OM)606进行变换。第一输出值(OUTPUT)609包括对于被掩蔽的数据执行字节置换逆运算的结果值,第二输出值(OMASK)610包括用于被掩蔽数据的掩模。
根据本发明的上述实施例的AES字节置换运算,执行被掩蔽运算,从而使实际数据不被暴露,因此能够防止信息泄露攻击。
根据本发明的上述实施例,能够降低被掩蔽乘法的复杂度,并且由于输入数据和结果输出是被掩蔽数据而可以防止信息泄露攻击。同时,根据本发明,能够降低用于AES字节置换运算的硬件规模,从而使其适合资源受限的环境,例如智能卡。
尽管示出并叙述了本发明的几个实施例,但是本发明并不局限于上述实施例。相反,本领域的技术人员可以明白,在不脱离本发明的原理和精神的情况下可以对这些实施例进行变动,本发明的发明范围由权利要求及其等同内容限定。
本发明申请请求2004年6月19日申请的韩国专利申请No.2004-45818中的权益,在此通过引用将其内容并入。
权利要求
1.一种用于伽罗瓦域(GF)中的乘法运算的方法,用于通过在GF(2n)中执行被掩蔽数据和掩模的转换来防止信息泄漏攻击,该方法包括接收若干第一和第二被掩蔽输入数据、若干第一和第二输入掩模和一个输出掩模;通过在GF(2n)中对所述若干被掩蔽输入数据和所述若干输入掩模执行乘法,计算若干中间值;通过对所述中间值和输出掩模执行异或运算,计算最终的被掩蔽输出值。
2.根据权利要求1的方法,其中,第一输入数据指的是通过对第一输入操作数和第一输入掩模执行异或运算得到的一个值,第二输入数据指的是通过对第二输入操作数和第二输入掩模执行异或运算得到的一个值。
3.根据权利要求1的方法,计算包括通过对第一输入数据和第二输入数据执行异或运算,计算第一中间值;通过对第二输入数据和第一输入掩模执行异或运算,计算第二中间值;通过对第一输入数据和第二输入掩模执行异或运算,计算第三中间值;并且通过对第一输入掩模和第二输入掩模执行异或运算,计算第四中间值。
4.根据权利要求1的方法,其中,通过以下等式来计算所述最终的输出值(MP)MP=OMA4A3A2A1,并且其中,代表异或运算,OM为输出掩模,A1为第一中间值,A2为第二中间值,A3为第三中间值,A4为第四中间值。
5.一种用于伽罗瓦域(GF)中的乘法运算的设备,用于通过在GF(2n)中执行被掩蔽数据和掩模的转换,防止信息泄漏攻击,该设备包括若干乘法器,用于接收若干第一和第二被掩蔽输入数据、若干第一和第二输入掩模和一个输出掩模,并通过在GF(2n)中执行所述若干被掩蔽输入数据和所述若干输入掩模的乘法运算,计算中间值;以及异或运算单元,通过对所述中间值和输出掩模执行异或运算,计算最终的被掩蔽输出值。
6.根据权利要求5的设备,其中,第一输入数据指的是通过对第一输入操作数和第一输入掩模执行异或运算得到的一个值,第二输入数据指的是通过对第二输入操作数和第二输入掩模执行异或运算得到的一个值。
7.根据权利要求5的设备,其中,所述若干乘法器包括第一乘法器,用于通过执行第一输入数据和第二输入数据的异或运算,计算第一中间值;第二乘法器,用于通过执行对第二输入数据和第一输入掩模的异或运算,计算第二中间值;第三乘法器,用于通过执行第一输入数据和第二输入掩模的异或运算,计算第三中间值;和第四乘法器,用于通过执行第一输入掩模和第二输入掩模的异或运算,计算第四中间值。
8.根据权利要求5的设备,其中,通过以下等式计算所述最终的输出值(MP)MP=OMA4A3A2A1,并且其中,代表异或运算,OM为输出掩模,A1为第一中间值,A2为第二中间值,A3为第三中间值,A4为第四中间值。
9.一种用于在伽罗瓦域(GF)中进行逆运算的设备,用于从外部接收第一到第五输入数据,并且在GF((24)2)中执行输入数据的逆运算,该设备包括第一异或运算单元,用于通过对由8个比特组成的第五输入数据的高位部分和低位部分进行接收并执行异或运算,计算第一结果值T1;第二异或运算单元,用于通过对由8个比特组成的第三输入数据的高位部分和低位部分进行接收并执行异或运算,计算用于对第一结果值T1执行掩模校正的第一校正值M1;第一被掩蔽的乘法器,用于通过在GF(24)中对所述第一结果值T1、第五输入数据的低位部分、所述第一校正值M1、第三输入数据的低位部分和第四输入数据进行接收并执行乘法运算,计算第二运算值T2;第一运算单元,用于通过对第五输入数据的高位部分进行接收并执行指定运算,计算第三运算值T3;第二运算单元,用于通过对第三输入数据的高位部分进行接收并执行指定运算,计算用于校正第三运算值T3的第二校正值M2;第三异或运算单元,通过对第三运算值T3和第二运算值T2进行接收并执行异或运算,计算第四运算值T4;第四异或运算单元,通过对第二校正值M2和第四输入数据进行接收并执行异或运算,计算用于对第四运算值T4执行掩模校正的第三校正值M3;被掩蔽的逆运算器,通过在GF(24)中对第四运算值T4、第三校正值M3和第一输入数据的低位部分进行接收并执行逆运算,计算第五运算值(T5);第二被掩蔽的乘法器,通过在GF(24)中对第五运算值、第一运算值、第二输入数据、第一校正值和第一输入数据的低位部分进行接收并执行乘法运算,计算最终输出值的低位部分;以及第三被掩蔽的乘法器,通过在GF(24)中对第五运算值、第五输入数据的低位部分、第二输入数据、第三输入数据的高位部分和第一输入数据的高位部分进行接收并执行乘法运算,计算所述最终输出值的高位部分。
10.一种用于执行高级加密标准(AES)字节置换运算的设备,用于防止信息泄露攻击,该设备包括第一输入域转换单元,用于接收在GF(28)中的被掩蔽输入数据和转换选择数据,根据转换选择数据的值来通过一个指定转换而生成第一转换值,并输出第一转换值;第二输入域转换单元,用于接收一个用于输入数据的掩模和转换选择数据,通过一个指定转换而生成用于对第一转换值执行掩模校正的第二转换值,并输出第二转换值;一个GF((24)2)中的被掩蔽求逆设备,用于通过对一个输出掩模、若干随机输入掩模和第一、二个转换值进行接收并进行逆运算,计算一个被掩蔽逆值;第一输出域转换单元,用于接收逆值和转换选择数据,并通过一个指定转换,计算在GF(28)中被转换的被掩蔽输出值;第二输出域转换单元,用于接收输出掩模和转换选择数据,并根据转换选择数据的值来通过一个指定运算而对所述输出值执行掩模校正。
11.一种在伽罗瓦域(GF)进行逆运算的方法,用于在GF((24)2)中接收第一到第五输入数据,并执行输入数据的逆运算,该方法包括通过对由8个比特组成的第五输入数的高位部分和低位部分进行接收并进行异或运算,计算第一结果值T1;通过对由8个比特组成的第三输入数据的高位部分和低位部分进行接收并进行异或运算,计算用于对第一结果值T1执行掩模校正的第一校正值M1;通过在GF(24)中对第一结果值T1、第五输入数据的低位部分、第一校正值M1、第三输入数据的低位部分和第四输入数据进行接收并进行乘法运算,计算第二运算值T2;通过对第五输入数据的高位部分进行接收并进行指定运算,计算第三运算值T3;通过对第三输入数据的高位部分进行接收并进行指定运算,计算用于校正第三运算值T3的第二校正值M2;通过对第三运算值T3和第二运算值T2进行接收并进行异或运算,计算第四运算值T4;通过对第二校正值M2和第四输入数据进行接收并进行异或运算,计算用于对第四运算值T4执行掩模校正的第三校正值M3;通过在GF(24)中对第四运算值T4、第三校正值M3和第一输入数据的低位部分进行接收并进行逆运算,计算第五运算值(T5);通过在GF(24)中对第五运算值、第一运算值、第二输入数据、第一校正值和第一输入数据的低位部分进行接收并进行乘法运算,计算得到一个最终输出值的低位部分;并且通过在GF(24)中对第五运算值、第五输入数据的低位部分、第二输入数据、第三输入数据的高位部分和第一输入数据的高位部分进行接收并进行乘法运算,计算所述最终输出值的高位部分。
12.一种用于执行高级加密标准(AES)字节置换的方法,用于防止信息泄露攻击,该方法包括接收在GF(28)中的被掩蔽输入数据和转换选择数据,根据转换选择数据来通过指定转换而生成第一转换值,并输出第一转换值;接收所述输入数据的掩模和转换选择数据,通过指定转换而生成用于对第一转换值执行掩模校正的第二转换值,并输出第二转换值;通过对一个输出掩模、若干随机输入掩模和第一、二个转换值进行接收并进行逆运算,计算一个被掩蔽逆值;接收逆值和转换选择数据,并通过指定转换来计算一个在GF(28)中被转换的被掩蔽输出值;接收输出掩模和转换选择数据,并根据转换选择数据的值、通过指定运算来对输出值执行掩模校正。
全文摘要
在伽罗瓦域中执行乘法的方法和设备。在伽罗瓦域(GF)中执行乘法的方法,用于通过在GF(文档编号G06F7/60GK1728634SQ20051009138
公开日2006年2月1日 申请日期2005年6月20日 优先权日2004年6月19日
发明者蒂默尔·科基什科, 伊莱娜·特里奇娜, 李炅熙 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1