信息处理装置、运算验证方法和程序的制作方法

文档序号:6601892阅读:153来源:国知局
专利名称:信息处理装置、运算验证方法和程序的制作方法
技术领域
本发明涉及信息处理装置、运算验证方法和程序。
背景技术
椭圆曲线加密技术是利用与椭圆曲线相关的离散对数问题的困难性的加密技术, 且在相同的安全标准下与RSA加密技术相比具有更短的钥匙长度的特征。该椭圆曲线加密 技术已在各种场合中得到了使用,例如椭圆曲线数字签名算法(ECDSA)中的利用签名的装 置对装置的认证。故障攻击是恶意第三方以未授权的方式获得通过使用椭圆曲线加密技术而生成 的密钥的示例性技术。在该故障攻击中,通过给出不正确的系统参数或在加密期间从外部 故意注入故障(例如破坏保持中间值的寄存器),恶意第三方能够获得不正确的计算结果 来估计密钥。这种故障攻击首先是在1997年由Boneh等人作为针对RSA加密技术的差分 故障分析攻击(DFA)而提出的,然后由Biehl等人扩展到椭圆曲线加密技术。作为针对诸如DFA之类的故障攻击的对策,在输出计算结果之前验证计算结果的 合法性,并且在计算结果具有不正确的值时不输出该计算结果。简单的对策的示例是通过 二次计算进行重新检查,其中进行两次相同的加密处理,并且当计算结果彼此不相等时不 输出该计算结果。假定在该验证措施中难以两次成功地注入完全相同的故障。然而,与没 有这种措施的情况相比,用于重复相同的运算的计算成本加倍,并且计算效率不那么理想。 因此,期望用于检测故障的更有效的方式。作为故障检测技术的另一示例,日本未审专利申请公开2004-252433描述了一种 方法,其中针对通过运算获得的点(X,Y)而分别计算表示椭圆曲线的方程式的左边和右 边,并确定左边是否等于右边,从而确定是否存在故障攻击。

发明内容
然而,在上述的日本未审专利申请公开2004-252433中描述的方法中,必须分别 提供对与表示椭圆曲线的方程式的右边和左边相对应的值进行计算的函数以及对所获得 的两种类型的值进行比较的函数。因此,当将日本未审专利申请公开2004-252433中描述 的方法作为硬件来实现时,对特定处理单元的设置不利地使电路尺寸增大。当将上述方法 作为软件来实现时,计算成本不利地增大。期望提供一种能够利用更简单的技术来确定是否存在故障攻击的信息处理装置、 运算验证方法和程序。根据本发明的实施例,提供了一种信息处理装置,包括标量乘法运算单元,该标 量乘法运算单元基于在预定的定义域上定义的椭圆曲线E上的点P而通过对点P进行标量 乘法来计算点Q = s · P ;以及运算验证单元,该运算验证单元通过使用椭圆曲线E上的点 P、标量乘法运算单元计算的点Q = s · P和椭圆曲线E上的任意点G来验证下面的方程式 (1)是否成立。
(P+Q) +G = P+ (Q+G)...(1)根据上述结构,标量乘法运算单元基于在预定的定义域上定义的椭圆曲线E上的点P而通过对点P进行标量乘法来计算点Q = S · P。运算验证单元使用该椭圆曲线E上 的点P、标量乘法运算单元计算的点Q = s · P和该椭圆曲线E上的任意点G来验证方程式 (1)是否成立。椭圆曲线E优选地是在有限域Fq(q = pm,m e N, ρ > 3)上定义的椭圆曲线Ea :y2 =x3+ax+b (a, b e Fq),或者是在特征数(characteristic)为 2 的有限域 F2-m(m e N)上 定义的椭圆曲线 Eb :y2+xy = x3+a2x2+a6(a2, a6 e F2-J。当方程式(1)不成立时,运算验证单元确定点P不具有适当的值或者点Q已被篡 改。优选地,信息处理装置还包括存储单元,该存储单元存储要被信息处理装置隐藏 的隐藏信息,并且椭圆曲线E上的任意点G被作为该隐藏信息而存储在所述存储单元中。存储单元存储由信息处理装置保持的密钥d,标量乘法运算单元可以使用密钥d 作为用于标量乘法运算的系数S。运算验证单元可以通过使用由信息处理装置保持的公钥或由另一可靠的信息处 理装置保持的公钥代替点P或点Q来验证方程式(1)是否成立。根据本发明的另一实施例,提供了一种运算验证方法,包括以下步骤基于在预定 的定义域上定义的椭圆曲线E上的点P而通过对点P进行标量乘法来计算点Q = s · P ;以 及通过使用该椭圆曲线E上的点P、所计算的点Q = s · P和该椭圆曲线E上的任意点G来 验证方程式(1)是否成立。根据本发明的又一实施例,提供了一种程序,该程序使计算机执行基于在预定的 定义域上定义的椭圆曲线E上的点P而通过对点P进行标量乘法来计算点Q = s · P的功 能;以及使计算机执行通过使用该椭圆曲线E上的点P、该标量乘法运算功能所计算的点Q = S-P和该椭圆曲线E上的任意点G来验证方程式(1)是否成立的功能。如上所述,根据本发明的实施例,通过使用椭圆曲线上的群的性质,能够利用更简 单的技术来确定故障攻击的存在或不存在。


图1示出了根据本发明实施例的信息处理装置的结构;图2是示出根据另一实施例的运算验证方法的流程图;图3示出了信息处理装置的硬件结构;图4示出了用于标量乘法运算的算法的示例;图5是示出使用小的阶数(order)的攻击的流程图;以及图6是示出在标量乘法运算中注入故障的攻击的流程图。
具体实施例方式下面参考附图来详细描述本发明的优选实施例。这里,在说明书和附图中利用相 同的附图标记来给出具有基本相同的功能结构的部件,以避免重复的说明。这里以下面的顺序进行说明。
(1)椭圆曲线(2)故障攻击(3)实施例(3-1)信息处理装置的结构(3-2)运算验证方法(4)硬件结构(5)结论椭圆曲线首先,在说明根据本发明实施例的信息处理装置和运算验证方法之前,详细说明用于在本发明实施例中使用的椭圆曲线。在根据本发明实施例的信息处理装置和运算验证方法中,使用两个椭圆曲线作为 椭圆曲线E。⑴在有限域Fq(q = pm, m e N, ρ > 3)上定义的椭圆曲线Ea :y2 = x3+ax+b(a, b e Fq) 0(ii)在具有特征数2的有限域(二值域)F2 m(m e N)上定义的椭圆曲线Eb :y2+xy =x3+a2x2+a6 (a2, a6 e F2-J。在下面的说明中,通过示例方式来考虑在具有ρ > 3的特征数的有限域上定义的 椭圆曲线Ea。相同的说明适用于在具有特征数2的有限域上定义的椭圆曲线Eb。用E(Fq) = {(x,y) e FqXFjy2 = x3+ax+b} U {0}表示椭圆曲线 Ea 上的点的集 合,其中0是无穷远的点,其是在更下面描述的加法中的E(Fq)的单位元素。将E(Fq)的密度称为椭圆曲线的阶数,并用#E(Fq) =h*r来表示,其中r是质数, h是被称为余子式的系数,并且这里假设h= 1。当将以随机方式选择的椭圆曲线上的点取 作基点G时,因为假设椭圆曲线的阶数为质数,因此G的阶数为r。这里,表示椭圆曲线的方程式中的系数、所定义的域的阶数ρ、基点的阶数r以及 基点G是用于指定椭圆曲线的椭圆曲线参数。接下来描述椭圆曲线上存在的两个点之间的加法。在椭圆曲线Ea中,如下定义椭圆曲线上存在的点P1 = (X1, Y1)和点P2 = (x2, y2) 之间的加法,其中P3= (x3,y3) = P^P20X3 = λ 2-χ「χ2... (11)y3 = (X1-X3) λ-Yl ... (12)
^fii (P, φP2)
Χ2 尤1λ = ^
^ (P=P2)
2L... (13)这里,E(Fq)满足下面四个群的性质。1.闭合定律对于所有 P,Q e E (Fq),P+Q e E (Fq)2.单位元素的存在对于所有PeE (Fq),P+0 = 0+P = P
3.逆元素的存在对于所有 4.结合法则对于所有 此外,对点P和s进行标量相乘而获得的点被用sP表示,并被如下定义。也就是 说,从下面的方程式明显地看出,将点sP定义为通过将点P与点P相加(s-1)次而获得的 点O 用于进行如上所述的这种标量乘法运算的计算算法的示例是图4所示的加倍-相 加方法。类似地,在椭圆曲线Eb中,如下定义椭圆曲线上存在的点P1 = (X1, Y1)和点P2 = (X2, I2)之间的加法,其中P3 = (X3,y3) = P^P2O这里,当P1兴P2时由下面的方程式(15) 至(17)定义加法,当P1 = P2时由下面的方程式(18)至(20)定义加法。χ3 = λ 2+ λ +xi+x2+a2 ...(15)y3 = (X^X3) λ +Xg+y! ... (16) X3 = λ 2+ λ +a2... (18)y3 = (X^X3) λ +χ3+Υ! ... (19) 这里,将从所提供的这两个值P和sP得到s的问题称为椭圆曲线离散对数问题 (ECDLP)。当P的阶数充分大时,该ECDLP极难求解,该困难性是椭圆曲线加密技术的安全 性的基础。故障攻击接下来参考图5和图6详细说明两种典型的类型的故障攻击。图5是示出使用小 的阶数的攻击的流程图。图6是示出在标量乘法运算中注入故障的攻击的流程图。Biehl等人提出,取决于注入故障的时间,存在针对通过将输入P乘以秘密信息d 来计算dP的标量乘法运算的如下两种类型的攻击技术。存在两个注入故障的时间在标量 乘法运算之前和在标量乘法运算期间。首先说明在标量乘法运算之前注入故障的攻击。将该在标量乘法运算之前注入故障的攻击称为小阶数点攻击(smallorder point attack),将参考图5对其进行详细说明。在下面的说明中,假设用在具有ρ > 3的特征数 的有限域上定义的y2 = x3+ax+b表示椭圆曲线E。攻击者将与运算点PGE (Fq)相关的信息输入到进行标量乘法运算的装置中(步 骤S11),以使该装置确定该运算点P是否在正确的椭圆曲线E(S卩,y2 = x3+ax+b)上(步骤 S13)。紧接在确定了运算点P在正确的椭圆曲线E上之后,攻击者注入故障,以将点P的 χ或1分量的一位求逆(故障注入)。当将作为注入的结果的其一位被求逆的点取作P1时,该点P1在椭圆曲线E1 Y+f+ax+bi上,该装置通过在椭圆曲线E1上进行标量乘法运算来计 算标量乘法输出ClP1(步骤S15)。这里,从方程式(11)到(13)可以明显地看出,在椭圆曲 线上的点的任何加法和加倍中未出现定义椭圆曲线的系数b。因此,可以正确地计算针对点 P1的标量乘法输出ClP1。获得标量乘法输出ClP1的攻击者根据标量乘法输出ClP1的χ坐标和y坐标得到椭 圆曲线E1,以计算阶数SE1 (步骤S17)。然后,攻击者确定阶数SE1是否具有小到一定程度 的因数巧(步骤S19)。由于在注入故障之前点P1 e E1的χ分量和y分量中的任一个都具有正确的值,因 此攻击者将χ分量或y分量代入椭圆曲线E1,从而重构P1 (步骤S21)。然后,攻击者将P1和 ClP1各乘以(SE1ZV1)(步骤S23),然后将乘法结果映射到阶数Γι的部分群E1 (Ftl) [rj上。接 下来,攻击者使用所计算的(SE1ZV1)P1和(SE1ZV1) ClP1对离散对数问题求解,以获得d Hiodr1 的结果(步骤S25)。然后,攻击者以与Γι不同的小到一定程度的质数ri作为阶数而对另一椭圆曲线Ei 重复上述过程,并收集表示秘密信息d的部分信息的d Hiodri的结果,直到r <Π A为止 (步骤S27)。最后,攻击者将中国余数定理应用于d mod A的结果,以导出秘密信息d(步 骤S29)。如上所述,通过使用根据上述过程的故障攻击,攻击者可能获得秘密信息d。 上面对在标量乘法运算之前注入故障的攻击进行了说明。接下来参考图6对在标量乘法运算期间注入故障的攻击进行详细说明。这里假设进行标量乘法运算的装置使用图4所示的右到左算法进行标量乘法运 笪弁。攻击者首先将运算点P输入到进行标量乘法运算的装置中(步骤S21),以使进行 标量乘法运算的装置进行标量乘法运算(步骤S23),从而获得正确的标量乘法点Q = dP。接下来,攻击者将参数i设置为不超过l0g2d的最大整数,然后设置d = O (步骤 S25)。然后,攻击者将参数k设置为希望估计的比特数m(步骤S27)。接下来,在保持所获得的正确的标量乘法点Q的同时,攻击者再次将P作为运算点 输入到进行标量乘法运算的装置中(步骤S29)。进行标量乘法运算的装置基于输入的运算点P进行标量乘法运算(步骤S31)。在 某个时间,攻击者将故障(一位求逆)注入到保持标量乘法运算的中间值的寄存器中。在 图6所示的示例中,攻击者在满足i-m ^ j<i的第j个步骤处进行故障注入,以使进行标 量乘法运算的装置生成不正确的运算结果Q'。攻击者保持从进行标量乘法运算的装置输 出的计算结果Q'(步骤S33)。然后,攻击者估计从密钥的已知比特至故障注入位置的密钥的部分(部分钥匙X) (步骤S35),以基于下面的方程式(901)在故障被注入之处的第i个步骤处进行从Q到中 间值Qj/的逆运算(步骤S37)。该逆运算被针对2m个模式执行。Qxi^m = Q-x · 2i_m-d · 2JP ... (901)接下来攻击者通过对Qj^k的一位求逆并将结果乘以χ来计算Q/ (步骤S39)。这 里,X是估计的部分钥匙。然后,攻击者将所计算的Q/和不正确的结果Q'进行比较(步 骤S41)。当Q'和Q/互不相等时,攻击者将参数k设置为k-Ι (步骤S43),然后再次计算 Q/(步骤S39)。以这种方式,由于攻击者不知道通过故障已对中间值Q^的哪一位进行了求逆,因此攻击者通过使用估计的密钥针对所有能想到的故障模式而计算不正确结果Q'的 所有候选Q/。另一方面,当Q'和0!;彼此相等时,对部分钥匙χ的估计是正确的。因此,攻击者 通过将参数d设置为通过将d除以χ而获得的值(d|x)来更新参数d(步骤S45)。然后攻 击者将参数i设置为i_k (步骤S47),以确定参数i是否为0 (步骤S49)。当参数i不是0 时,攻击者返回到步骤S27,以再次从步骤S27开始对接下来的m个比特进行处理。当参数 i为0时,这意味着整个密钥已被重构,因此输出估计的整个密钥d(步骤S51)。
例如,考虑估计密钥d的前四比特的情况。在这种情况下,在进行标量乘法运算的 装置正以这些比特进行标量乘法运算时,攻击者进行故障注入。这里,当假设d的比特长度 是160比特时,故障注入的步骤i是156 < i < 160。假设在第156个步骤处注入故障,攻 击者在第156个步骤处重构中间值Q156。攻击者针对所有能想到的部分钥匙候选χ e {0, I}4计算Qj/ = Q-x · 2156P。攻击者对所有的Qx156进行一位求逆,然后将求逆结果乘以χ以 计算Q/。当该Q/与获得的不正确的结果Q'相匹配时,估计的部分钥匙χ、故障注入的步 骤i = 156、以及被求逆的比特位置是正确的。另一方面,当不存在与不正确的结果Q'相 匹配的Q/时,攻击者取i = 157,以便以与当i = 156时相类似的方式而获得所有被一位 求逆的Qx157,以继续进行该处理。以这种方式,针对其中故障被注入到中间值中的各个块而 进行钥匙估计,并重复该处理,直到重构了整个密钥d。上面对在标量乘法运算期间注入故障的攻击进行了说明。通过验证从标量乘法运算输出的乘方点(exponentiation point)的合法性,来验 证攻击者是否进行了这种故障攻击。能够基于该验证结果来抑制故障攻击的效果。在上述 说明中以在具有? > 3的特征数的有限域上定义的椭圆曲线Ea*示例。然而,攻击者可能 在具有特征数2的有限域上定义的椭圆曲线Eb上进行类似的故障攻击。在下面描述的根据本发明的实施例的信息处理装置和运算验证方法中,可以容易 地与椭圆曲线的类型无关地验证如上所述的故障攻击的存在或不存在。下面详细说明根据 本发明的实施例的信息处理装置和运算验证方法。实施例信息处理装置的结构接下来详细说明根据本发明实施例的信息处理装置。图1是示出根据实施例的信 息处理装置的结构的框图。如图1所示,根据实施例的信息处理装置10例如包括加密单元101、解密单元 103、椭圆曲线运算单元105和存储单元107。加密单元101由例如中央处理单元(CPU)、只读存储器(ROM)、随机存取存储器 (RAM)或通信装置来实现。加密单元101基于使用在预定的有限域上定义的椭圆曲线E的 加密技术而对期望加密的纯文本进行加密,以生成加密文本。更详细地,在将纯文本加密为加密文本的加密处理中,加密单元101请求椭圆曲 线运算单元105使用椭圆曲线E进行椭圆曲线运算处理。该椭圆曲线运算的示例包括椭圆 曲线E上的点之间的加法以及对椭圆曲线E上的点进行标量相乘的标量乘法运算。当请求椭圆曲线运算单元105进行椭圆曲线运算时,加密单元101作为运算参数 而发送进行椭圆曲线运算所必需的椭圆曲线上的点和运算所必需的各种参数(例如标量乘法运算中的系数)。当从椭圆曲线运算单元105发送了使用椭圆曲线的运算结果时,加密 单元101使用该运算结果来继续加密处理。在结束加密处理时,加密单元101将生成的加密文本发送到预定装置。解密单元103例如由CPU、R0M、RAM或通信装置来实现。解密单元103基于使用在预定的有限域上定义的椭圆曲线E的加密技术而对加密文本进行解密,以生成纯文本。更详细地,在将加密文本解密为纯文本的解密处理中,解密单元103请求椭圆曲 线运算单元105使用椭圆曲线E进行椭圆曲线运算处理。该椭圆曲线运算的示例包括椭圆 曲线E上的点之间的加法以及对椭圆曲线E上的点进行标量相乘的标量乘法运算。当请求椭圆曲线运算单元105进行椭圆曲线运算时,解密单元103作为运算参数 而发送进行椭圆曲线运算所必需的椭圆曲线上的点和运算所必需的各种参数(例如标量 乘法运算中的系数)。当从椭圆曲线运算单元105发送了使用椭圆曲线的运算结果时,解密 单元103使用运算结果继续解密处理。在结束解密处理时,解密单元103在被设置到信息处理装置10的诸如显示器之类 的显示装置上显示所生成的纯文本。椭圆曲线运算单元105例如由CPU、R0M或RAM来实现。基于在预定的有限域上定 义的椭圆曲线E和从加密单元101或解密单元103发送的运算参数,椭圆曲线运算单元105 使用椭圆曲线进行运算处理。椭圆曲线运算单元105还包括椭圆曲线运算控制单元111、加 法单元113、标量乘法运算单元115、运算验证单元117和运算结果输出单元119。椭圆曲线运算控制单元111例如由CPU、R0M或RAM来实现。椭圆曲线运算控制单 元111基于从加密单元101和解密单元103发送的运算参数而控制从加密单元101和解密 单元103请求的椭圆曲线运算。更详细地,椭圆曲线运算控制单元111参考从加密单元101和解密单元103发送 的运算参数,以确定从这些处理单元请求的椭圆曲线运算的类型。在指定从加密单元101 和解密单元103请求的椭圆曲线运算的类型时,椭圆曲线运算控制单元111根据指定的椭 圆曲线运算的类型而将获得的运算参数发送到下面将进一步说明的加法单元113和标量 乘法运算单元115。椭圆曲线运算控制单元111还将指定的椭圆曲线运算的类型发送到下 面将进一步说明的运算验证单元117。加法单元113例如由CPU、ROM或RAM来实现。基于从椭圆曲线运算控制单元111 发送的运算参数中包括的与椭圆曲线E上的点相关的信息,加法单元113对椭圆曲线上的 运算点进行相加。具体来说,加法单元113根据用于在运算中使用的椭圆曲线E的类型而 使用方程式(11)至(13)或方程式(15)至(20)对运算点进行相加。在加法处理中,加法 单元113可以参考存储在存储单元107等中的椭圆曲线参数、公钥、密钥等。在获得对运算点进行相加的运算结果时,加法单元113向椭圆曲线运算控制单元 111通知相加处理已结束。加法单元113将对运算点进行相加的运算结果(即,作为相加 结果而获得的与椭圆曲线E上的点相关的信息)发送到下面将进一步说明的运算验证单元 117。加法单元113可以将运算结果发送到下面也将进一步说明的标量乘法运算单元115, 该运算结果可以被用于标量乘法运算单元115中的标量乘法运算处理。标量乘法运算单元115例如由CPU、R0M或RAM来实现。基于从椭圆曲线运算控制 单元111发送的运算参数中包括的与椭圆曲线E上的运算点相关的信息和与标量乘法运算的系数相关的信息,标量乘法运算单元115针对运算点进行标量乘法运算。也就是说,标量乘法运算单元115是计算Q = s · P的处理单元,其中运算点是P,标量乘法运算的系数是 s,标量乘法运算结果(下面也称为乘方点)是Q。标量乘法运算单元115例如通过执行诸如图4所示的加倍_相加方法的计算算法 来针对运算点进行标量乘法运算。标量乘法运算单元115执行的计算算法不限于上述示 例,可以使用其它任意的计算算法。在标量乘法运算处理中,标量乘法运算单元115可以参考存储在存储单元107等 中的椭圆曲线参数、公钥、密钥等。例如,作为标量乘法运算的系数s,标量乘法运算单元 115可以使用信息处理装置自身隐藏的密钥和信息处理装置自身管理的公钥。在获得针对运算点的标量乘法运算的运算结果时,标量乘法运算单元115向椭圆 曲线运算控制单元111通知标量乘法运算处理已结束。标量乘法运算单元115还将针对运 算点的标量乘法运算的运算结果(即,作为标量乘法运算的结果而获得的与椭圆曲线E上 的点相关的信息)发送到下面将进一步说明的运算验证单元117。标量乘法运算单元115 可以将运算结果发送到加法单元113,该运算结果可以在加法单元113中的加法处理中使 用。运算验证单元117例如由CPU、R0M或RAM来实现。当标量乘法运算单元115进行 标量乘法运算时,运算验证单元117对标量乘法运算单元115进行的标量乘法运算处理进 行验证。更详细地,运算验证单元117基于标量乘法运算中的运算点P、作为标量乘法运算 的结果而获得的椭圆曲线E上的点(乘方点)Q和作为椭圆曲线参数的基点G而验证下面 的方程式(101)是否成立。(P+Q) +G = P+ (Q+G)...(101)具体地,运算验证单元117请求加法单元113进行方程式(101)左边的加法处理 和方程式(101)右边的加法处理。运算验证单元117确定从加法单元113发送的左边的运 算结果和右边的运算结果是否具有相同的值(即,这些运算结果是否表示椭圆曲线E上的 同一点),从而验证方程式(101)是否成立。运算验证单元117验证方程式(101)是否成立,从而验证运算点P和表示标量乘 法运算结果的乘方点Q这两者。首先更详细地说明对乘方点Q的验证。当假设在标量乘法运算单元115计算乘方点Q时注入了故障以将标量乘法运算结 果改变为不正确的点Q'时,要作为运算结果而获得的乘方点Q'在与正确的椭圆曲线E不 相同的椭圆曲线E'上。也就是说,Q eE' (F)。对于同一椭圆曲线上的三个点P、Q和 G e E(Fq),被表示为方程式(101)的群的结合法则成立。因此,当方程式(101)成立时,运 算验证单元117确认运算点P、乘方点Q和基点G在同一椭圆曲线E上。相反地,当方程式 (101)不成立时,这表示乘方点Q属于与加法群E(Fq)不相同的群(即,乘方点Q在与运算 点P和基点G的椭圆曲线不相同的椭圆曲线上)。因此,运算验证单元117在标量乘法运算 期间检测到被攻击者注入的故障。接下来详细说明对运算点P的验证。当在标量乘法运算单元115进行标量乘法运算之前运算点被改变为 P' eE' (Ftl)时,所获得的标量乘法运算结果是Q' e E' (Fq),其属于与基点G e E(Fq)的群不相同的群。因此,当攻击者进行的注入或信息处理装置10中的故障使运算点P改变 时,运算验证单元117能够验证运算点P不具有合适的值。这里,在如上所述的验证中,不清楚运算点P和乘方点Q中的哪一个是不合适的。 为了得知这一点,通过执行如上所述的处理,运算验证单元117能够澄清运算点P和乘方点 Q中的哪一个是不合适的。
例如,当仅希望验证运算点P时,运算验证单元117使用由信息处理装置自身管理 的公钥或另一可靠的信息处理装置的公钥代替乘方点Q,以验证方程式(101)是否成立。由 于通过使用与存在运算点P的椭圆曲线相同的椭圆曲线来计算这些公钥,因此这些公钥属 于与运算点P的群相同的群。因此,通过使用这些公钥来代替乘方点Q,仅可以验证运算点 P。另一可靠的信息处理装置的示例包括由生成由公钥和密钥构成的钥匙对的钥匙生成中 心保持的信息处理装置以及由第三方认证机构保持的信息处理装置。当仅希望验证乘方点Q时,如同仅验证运算点P的情况那样地,运算验证单元117 可以使用由信息处理装置自身管理的公钥或另一可靠的信息处理装置的公钥代替运算点 P,以验证方程式(101)是否成立。标量乘法运算单元115可以在不指定运算点P的情况下执行诸如针对基点G的标 量乘法运算之类的标量乘法运算。在这种情况下,作为对运算点P的替代,运算验证单元 117可以使用由信息处理装置自身管理的公钥或另一可靠的信息处理装置的公钥,以验证 方程式(101)是否成立。如上所述,当方程式(101)不成立时,运算验证单元117可以确定运算点P不具有 合适的值或者乘方点Q已被篡改。可以通过基于加法单元113的四个加法的结果而比较一 个运算中的椭圆曲线上的点来验证运算结果。因此,在根据本实施例的信息处理装置中,可 以通过使用椭圆曲线上的群的性质而利用更简单的技术来确定故障攻击的存在或不存在。在获得标量乘法运算的验证结果时,运算验证单元117将所获得的验证结果发送 到下面将进一步说明的运算结果输出单元119。更详细地,当发送加法单元113进行的加法 的结果时,运算验证单元117将加法结果发送到运算结果输出单元119。此外,当从标量乘 法运算单元115发送标量乘法运算结果时,运算验证单元117通过使用方程式(101)进行 验证。当验证成功时,运算验证单元117将标量乘法运算的运算结果和所获得的验证结果 发送到运算结果输出单元119。当标量乘法运算的验证失败时,运算验证单元117向运算结 果输出单元119通知验证失败。运算结果输出单元119例如由CPU、R0M或RAM来实现。运算结果输出单元119将 从运算验证单元117发送的运算结果和验证结果输出到请求椭圆曲线运算单元105进行椭 圆曲线运算处理的处理单元。存储单元107存储由信息处理装置10管理的密钥和公钥以及椭圆曲线参数。存 储单元107还可以适当地存储信息处理装置10在进行一些处理时使用的与处理进程相关 的各种参数和信息、各种数据库等等。根据本实施例的信息处理装置10中包括的各个处理 单元可以自由地对存储单元107进行读取和写入。如上所述,在根据本实施例的信息处理装置10中,当存在在加密期间已注入了故 障以改变中间值的可能性时,可以容易地与椭圆曲线的类型无关地验证标量乘法运算的结 果的合法性。
上面说明了根据本实施例的信息处理装置10的功能的示例。上述各个部件可以 通过使用通用构件或电路来构成,或者可以由各个部件的功能专用的硬件构成。此外,可以 由CPU等执行相应部件的所有功能。因此,可以根据实施本实施例时的技术水平而适当地 改变所使用的配置。这里,可以在个人计算机等上构造和实现用于实现如上所述的根据本实施例的信 息处理装置的各个功能的计算机程序。此外,可以提供存储如上所述的计算机程序的计算 机可读记录介质。该记录介质的示例包括磁盘、光盘、磁光盘和闪存。此外,可以在例如网 络上分发上述计算机程序,而不使用记录介质。运算验证方法 接下来参考图2详细说明根据实施例的运算验证方法。图2是示出根据实施例的 运算验证方法的流程图。当希望针对要由加密单元101或者解密单元103中的任意的处理单元进行的处理 而进行对椭圆曲线上的点的标量乘法运算时,信息处理装置10的加密单元101或者解密单 元103请求椭圆曲线运算单元105进行标量乘法运算。此时,加密单元101和解密单元103 向椭圆曲线运算单元105发送包括与运算点P相关的信息和与标量乘法运算的系数s相关 的信息的运算参数。椭圆曲线运算单元105的椭圆曲线运算控制单元111获得从加密单元101或解密 单元103发送的运算参数(步骤S101),以掌握所请求的椭圆曲线运算中的运算点P和标量 乘法运算的系数S。然后,椭圆曲线运算控制单元111将所获得的运算点P和标量乘法运算 的系数S发送到标量乘法运算单元115。标量乘法运算单元115基于从椭圆曲线运算控制单元111发送的运算参数而进行 标量乘法运算Q = s ·Ρ (步骤S103)。当标量乘法运算处理结束时,标量乘法运算单元115 向椭圆曲线运算控制单元111通知标量乘法运算处理结束,并且还将表示运算结果的与乘 方点Q相关的信息发送到运算验证单元117。当从标量乘法运算单元115发送了运算结果时,运算验证单元117请求加法单元 113进行下面两种类型的加法。Sl = (P+Q)+G ...(102)S2 = P+ (Q+G) ...(103)在从运算验证单元117请求进行上述由S1和S2表示的两种类型的加法时,加法单 元113基于方程式(102)和(103)来执行加法(步骤S105),然后将运算结果发送到运算验 证单元117。运算验证单元117基于从加法单元113发送的值S1和S2而验证S1 = S2是否成立 (即,方程式(101)是否成立)(步骤S107)。当S1 = S2成立时,运算验证单元117确定已适当地计算了乘方点Q,并将标量乘 法运算的运算结果和验证结果发送到运算结果输出单元119。然后,获得运算结果和验证结 果的运算结果输出单元119将运算结果Q输出到请求执行椭圆曲线运算的处理单元(步骤 S109)。另一方面,当S1 = S2不成立时,运算验证单元117确定尚未适当地计算乘方点Q, 并将该确定结果发送到运算结果输出单元119。然后,获得验证结果的运算结果输出单元119将表示尚未适当地计算乘方点Q的错误输出到请求执行椭圆曲线运算的处理单元(步骤 S111)。如上所述,在根据本实施例的运算验证方法中,可以仅利用方程式(101)左边的 两个加法、方程式(101)右边的两个加法以及对比较点的一个运算来验证运算结果。因此, 在根据本实施例的运算验证方法中,可以与椭圆曲线的类型无关地容易地验证标量乘法运 算的运算结果的合法性,而不用执行诸如计算预定值的乘方之类的复杂处理。此外,在根据本实施例的运算验证方法中,还可以使用椭圆曲线上的加法/比较 处理,而不使用有限域中的比较处理。因此,当根据本实施例的运算验证方法被实现为硬件 时,可以减小用于运算验证方法的电路尺寸。此外,在根据本实施例的运算验证方法中,可 以一起验证运算点P和乘方点Q这两者,从而与现有技术相比更多地简化了验证输入值和 输出值的步骤。结果,当根据本实施例的运算验证方法被实现为软件时,可以降低计算成 本。硬件结构接下来参考图3详细说明根据本发明实施例的信息处理装置10的硬件结构。图 3是根据本发明实施例的信息处理装置10的硬件结构的框图。信息处理装置10主要包括CPU 901、ROM 903和RAM 905。信息处理装置10还 包括主机总线907、桥909、外部总线911、接口 913、输入装置915、输出装置917、存储装置 919、驱动921、连接端口 923和通信装置925。CPU 901用作运算处理装置和控制装置,并根据记录在ROM 903、RAM 905、存储装 置909或可拆卸记录介质927中的各种程序来控制信息处理装置10中的全部或者部分运 算。ROM 903存储用于由CPU 901使用的程序和运算参数。RAM 905适当地临时存储用于 在CPU 901中使用的程序和在程序执行期间被修改的参数。这些单元和存储器经由由诸如 CPU总线之类的内部总线构成的主机总线907而相互连接。主机总线907经由桥909连接到诸如外围部件互连/接口(PCI)总线之类的外部 总线911,。输入装置915是由用户操作的诸如鼠标、键盘、触摸面板、按钮、开关或操纵杆之 类的操作单元。输入装置915可以是例如使用例如红外线或者其它电波的遥控单元(所谓 的遥控器),或者可以是支持信息处理装置10的操作的诸如便携式电话或PDA之类的外部 连接装置929。此外,例如,输入装置915由输入控制电路构成,该输入控制电路基于用户输 入的信息而使用上述的操作单元生成输入信号,并将该输入信号输出到CPU901。通过操作该输入装置915,信息处理装置10的用户可以将各种数据输入到信 息处理装置10中,并且可以提供用于处理操作的指令。输出装置917由能够以可视可听的方式将所获得的信息通知给用户的装置构成。 这种装置的示例包括显示装置,例如CRT显示装置、液晶显示装置、等离子显示装置、EL显 示装置和灯;音频输出装置,例如扬声器和耳机;打印机装置;便携式电话;以及传真机。例 如,输出装置917输出从由信息处理装置10执行的各种处理获得的结果。具体地,显示装 置将从由信息处理装置10执行的各种处理获得的结果显示为文本或图像。另一方面,音频 输出装置将由再现的音频数据、声音数据等形成的音频信号转换为模拟信息以用于输出。存储装置919是被配置作为信息处理装置10的存储单元的示例的用于数据存储的装置。存储装置919例如由诸如硬盘驱动器(HDD)之类的磁存储装置、半导体存储装置、 光学存储装置或磁光存储装置构成。存储装置919存储由CPU 901执行的程序和各种数据 以及从外部获得的声音信号数据和图像信号数据。驱动器921是记录介质读/写器,并被包括在信息处理装置10中或被设置在信息 处理装置10外部。驱动器921读取记录在插入驱动器921中的诸如磁盘、光盘、磁光盘或半 导体存储器之类的可拆卸记录介质927上的信息,以用于输出到RAM 905。驱动器921还可 以将记录写入插入驱动器921中的诸如磁盘、光盘、磁光盘或者半导体存储器的可拆卸记 录介质927中。可拆卸记录介质927的示例包括DVD介质、HD-DVD介质和蓝光(Blu_ray) 介质。此外,可拆卸记录介质927例如可以是紧凑闪存(CompactFlash (CF))、存储棒或 安全数字(SD)存储卡。此外,可拆卸记录介质927例如可以是具有非接触型IC芯片的集 成电路(IC)卡,或者可以是电子设备。连接端口 923是用于直接将单元连接到信息处理装置10的端口。连接端口 923的 示例包括通用串行总线(USB)端口、诸如i. Link之类的IEEE 1394端口以及小型计算机系 统接口(SCSI)端口。连接端口 923的其它示例包括RS-232C端口、光学音频端子和高分辨 率多媒体接口(HDMI)端口。信息处理装置10利用连接到该连接端口 923的外部连接装置 929而直接从外部连接装置929获得各种数据以及将各种数据提供给外部连接装置929。
通信装置925是例如由用于连接到通信网络931的通信装置等构成的通信接口。 此外,通信装置925例如是用于有线或者无线局域网(LAN)、蓝牙或无线USB (WUSB)的通信 卡。此外,通信装置925例如可以是用于光学通信的路由器、用于非对称数字用户线(ADSL) 的路由器或用于各种通信的调制解调器。通信装置925可以例如根据诸如TCP/IP之类的 预定协议而在因特网上发送和接收信号等,或者从另一通信装置接收信号和向另一通信装 置发送信号。此外,连接到通信装置925的通信网络931例如由以有线或者无线的方式连 接的网络构成,并且可以是例如因特网、室内LAN、红外线通信、无线电波通信或卫星通信。上面对能够实现根据本发明实施例的信息处理装置10的功能的硬件结构的示例 进行了说明。上述各个部件可以通过使用通用构件来构成,或者可以由专用于部件的功能 的硬件构成。因此,可以根据在实施本实施例时的技术水平而适当地改变所使用的硬件结 构。结论如前面所描述的,在根据本发明的实施例的信息处理装置和运算验证方法中,通 过使用标量乘法运算中的运算点P、表示标量乘法运算的运算结果的乘方点Q和椭圆曲线 的基点G,可以以简单的方式进行标量乘法运算的验证。更详细地,在根据本发明的实施例的信息处理装置和运算验证方法中,可以仅使 用四个加法和对比较点的一个运算来验证运算结果。因此,在根据本发明的实施例的信息 处理装置和运算验证方法中,可以与椭圆曲线的类型无关地容易地验证标量乘法运算的运 算结果的合法性,而不执行诸如计算预定值的乘方之类的复杂处理。此外,在根据本发明的实施例的信息处理装置和运算验证方法中,还可以使用椭 圆曲线上的加法/比较处理,而不使用有限域中的比较处理。因此,当根据本发明的实施例 的运算验证方法被实现为硬件时,可以减小用于运算验证方法的电路尺寸。此外,当根据本 发明的实施例的信息处理装置和运算验证方法被实现为软件时,可以降低计算成本。
本申请包含与2009年4月23日在日本专利局提交的日本优先权专利申请JP 2009-105585中公开的主题相关的主题,其全部内容通过引用包含于此。虽然已经参考附图详细说明了本发明的优选实施例,但是这些实施例不是限定。显然,本发明所属的技术领域的人员可以在权利要求书中描述的技术思想的范围之内设想 各种改变和变型的示例,并且应当理解这些示例自然在本发明的技术范围之内。
权利要求
一种信息处理装置,包括标量乘法运算单元,所述标量乘法运算单元基于在预定的定义域上定义的椭圆曲线E上的点P而通过对所述点P进行标量乘法来计算点Q=s·P;以及运算验证单元,所述运算验证单元通过使用所述椭圆曲线E上的点P、所述标量乘法运算单元计算的所述点Q=s·P以及所述椭圆曲线E上的任意点G来验证下面的方程式(1)是否成立(P+Q)+G=P+(Q+G)...(1)。
2.根据权利要求1所述的信息处理装置,其中所述椭圆曲线E是在有限域Fq(q= pm, m G N,p > 3)上定义的椭圆曲线EA :y2 = x3+ax+b(a,b G Fq),或者是在特征数为2的有限 域 F2-m(m G N)上定义的椭圆曲线 Eb :y2+xy = x3+a2x2+a6 (a2, a6 G F2-m)。
3.根据权利要求2所述的信息处理装置,其中当权利要求1中的方程式(1)不成立时, 所述运算验证单元确定所述点P不具有适当的值或者所述点Q已被篡改。
4.根据权利要求1所述的信息处理装置,还包括存储单元,所述存储单元存储要被所 述信息处理装置隐藏的隐藏信息,其中所述椭圆曲线E上的任意点G被作为所述隐藏信息 而存储在所述存储单元中。
5.根据权利要求1所述的信息处理装置,其中所述存储单元存储由所述信息处理装置保持的密钥d ;以及所述标量乘法运算单元使用所述密钥d作为用于标量乘法运算的系数s。
6.根据权利要求1所述的信息处理装置,其中所述运算验证单元通过使用由所述信息 处理装置保持的公钥或由另一可靠的信息处理装置保持的公钥代替所述点P或者所述点Q 来验证权利要求1中的方程式(1)是否成立。
7.一种运算验证方法,包括以下步骤基于在预定的定义域上定义的椭圆曲线E上的点P而通过对所述点P进行标量乘法来 计算点Q = s*P;以及通过使用所述椭圆曲线E上的点P、所计算的所述点Q = s P和所述椭圆曲线E上的 任意点G来验证权利要求1中的方程式(1)是否成立。
8.一种程序,所述程序使得计算机执行基于在预定的定义域上定义的椭圆曲线E上的点P而通过对所述点P进行标量乘法来 计算点Q = s P的功能;以及通过使用所述椭圆曲线E上的点P、所述标量乘法运算功能计算的所述点Q = s P和 所述椭圆曲线E上的任意点G来验证权利要求1中的方程式(1)是否成立的功能。
全文摘要
提供了信息处理装置、运算验证方法和程序。信息处理装置包括标量乘法运算单元,该标量乘法运算单元基于在预定的定义域上定义的椭圆曲线E上的点P而通过对点P进行标量乘法来计算点Q=s·P;以及运算验证单元,该运算验证单元使用该椭圆曲线E上的点P、标量乘法运算单元计算的点Q=s·P和椭圆曲线E上的任意点G来验证方程式(P+Q)+G=P+(Q+G)是否成立。
文档编号G06F7/72GK101872294SQ20101016456
公开日2010年10月27日 申请日期2010年4月16日 优先权日2009年4月23日
发明者松田诚一, 秋下彻 申请人:索尼公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1