包括与标量或求幂的乘法运算的密码学方法_3

文档序号:9221604阅读:来源:国知局
A6派生的。在数u的计算中以及当读取寄存器DP时,步 骤2. 1和2. 2也被修改以考虑由当前迭代处理的比特匕中的每个比特的排名。
[0053] 图1以框图的形式表不了电子设备DV1,电子设备DV1被配置为运行包含应用于大 数的算法4334、44'、4535'36、46'中的一个或多个算法的密码学计算。设备0¥1可以 是在半导体芯片上的集成电路,该半导体芯片被布置在便携式介质上,如塑料卡、形成智能 卡的部件。设备DV1还可以是装备有多任务处理器的任何设备,诸如智能电话、多媒体播放 器、触控平板计算机或个人计算机。设备DV1还可以是此类设备的组件,例如耦合到该设备 的主处理器。
[0054] 设备DV1包括处理器PR0C,被配置为运行属于椭圆曲线的点P和Q的加法的计算 块AB1,被配置为运行属于椭圆曲线的点P的双倍的计算块DB1,存储器MEM和通信接口电 路1C。接口电路1C可以具有接触或非接触类型,例如,通过感应耦合或通过电耦合操作的 RF或UHF接口电路。计算块AB1、DB1每个都可以包括:装备有可编程中央单元的协处理器, 状态机类型的完全硬件的协处理器。计算块AB1、DB1可以仅对应于由特别是由处理器PR0C 运行的主程序所调用的功能。两个计算块AB1、DB1也可以被集成到相同的组件中(协处理 器或状态机)。
[0055] 在传统方式本身中,当变量的大小(在比特的数量中)大于处理器PR0C的计算寄 存器的大小时,变量可以说是"大"。后者自己执行小于或等于它的计算寄存器的大小的数 的运算,而不使用计算块AB1、DB1,以及使用计算块AB1、DB1来执行关于具有大坐标的椭圆 曲线点的加法和双倍运算。例如,如果处理器PR0C的计算寄存器的大小是32比特,则大变 量是大于32比特的变量。在基于椭圆曲线的密码学中,所处置的变量(椭圆曲线的点的坐 标、参数p-模数,b,n-属于椭圆曲线的点的数量,Gx,Gy-基点G的坐标)能够达到数百比 特(典型地,160, 192, 224, 256, 320, 384, 521 比特)。
[0056] 存储器MEM耦合到处理器PR0C以及使得设备DV1能够存储秘密密钥k。处理器 PR0C通过接口电路1C接收将被加密、解密或签名的消息m,或将被检查的签名,以及发送回 Fk(m)类型的所加密或解密的消息,或签名,Fk是基于密钥k的密码学函数,该密码学函数 包括借助于附录II中呈现的算法中的一个算法执行的标量乘法计算。在标量乘法计算期 间,处理器PR0C通过将点P,Q提供给计算块AB1 (该计算块AB1发送回P[+]Q的和),以及 通过将点P提供给计算块DB1 (该计算块DB1发送回双倍[2] *P),来使用计算块AB1、DB1。 存储器MEM的一部分还能够用作缓冲存储器以存储在附录II中呈现的算法中提及的寄存 器R和DP的内容。
[0057] 设备DV1还可以包括计算块,该计算块被配置为执行大数的模乘和大数的模平 方,由计算块AB1、DB1使用这些计算块以实现方程式(1)至(6)。
[0058] 在下表1中,针对先前呈现的算法中的每个算法的标量数的每比特的执行时间和 所使用的大寄存器的数量(即将被存储的点的数量)被组合在一起:
[0059] 表 1 [00601
[0061] 在表1中,v表示标量数k的比特的数量,以及M表示大数的乘法的计算时间,M还 根据数v而变化。已经通过考虑在大数的平方的计算时间中的代价等于大数的乘法的计算 时间的〇. 8倍,以及通过忽略大数的加法和减法的执行时间,获得了与在表1中含有的执行 时间有关的数值。表1还提到大数的加法和减法的执行时间。表1还提到点的加法和双倍 运算的执行时间。在算法A5、A6中,在与执行时间有关的列中含有的附加项表示执行与比 特v的数量有关的步骤3所花费的计算时间。在步骤3中执行的加法和双倍运算的数量随 着m的值快速地增加。
[0062]在从表1显露的是,算法A4至A6达到标量数的每比特计算时间基本上等于或小 于椭圆曲线的点的加法的计算时间的一半。
[0063] 根据一个实施例,在附录II中呈现的算法适合于处理不是在二进制中而是以另 一种形式编码(例如,以NAF编码(非相邻形式))的标量数。在NAF编码中,数的每个比 特可以具有三种状态(_1,〇, 1),以及该数的不同于〇的每个比特在比特〇后面以及由比特 0跟随;该数的第一和最后比特可以具有任何值。结果是,数的比特0的平均数量(汉明权 重)从二进制中的一半到达在NAF编码中的三分之一,而与在二进制中编码的相同数的比 特的数量相比,在NAF编码中的数的比特的数量是相同的或增加1。因此,在附录III中呈现 的算法A4"、A5"、A6"是算法A4、A5、A6针对在NAF编码中的数的表示的适应。与算法A4、 A5、A6相比,算法A4"、A5"、A6"包括另外的步骤2.3以处理比特h等于-1的情况。在这 种情况中,从点R减去倍数DP[i]或DP[u]。常规地,减去点的运算涉及加法,将改变第二操 作数的符号。在&类型的伽罗华域上椭圆曲线的点的群组中,p是大于3的素数,在仿射坐 标中点P(x,y)的符号的改变涉及改变它的第二坐标y的符号。在F2m类型的伽罗华域上椭 圆曲线的点的群组中,在仿射坐标中点P(x,y)的符号的改变涉及使用该点的坐标的和x+y 来替换第二坐标。
[0064]将理解的是,能够以类似的方式将算法A4'、A5'、A6'适应于处理在NAF编码中的 数,以对抗SPA和/或DPA类型的攻击。
[0065] 给定不同于0的比特的平均比率等于1/3,在NAF编码中的数中,在以下表2中含 有针对算法A4"、A5"、A6"中的每个算法的标量数k的每比特的执行时间:
[0066] 表 2
[0067]
[0068] 与由算法A4、A5、A6使用的那些大寄存器的数量相比,由算法A4"、A5"、A6"使用 的大寄存器的数量保持不变。
[0069] 可以在E⑶SA类型的公开密钥数字签名算法中来实现在附录II和III中呈现的 算法。E⑶SA算法涉及选择在伽罗华域Fq上的椭圆曲线E(a,b),以及所选择的椭圆曲线 E(a,b)的基点G(Gx,Gy)。数n是最小的正整数,使得|n|*G= 0 (无穷远点)。那么,目 标是生成一对公开密钥和私有密钥。可以在1和n-1之间随机地选择私有密钥s。公开密 钥Q被选择为等于[s] ?G。因为点G是固定的,因此点G的双倍可以仅被计算一次并且被 存储在表中。如果已经完成了含有点G的21中的倍数的表DP,则能够通过算法A3或通过 在附录II和III中呈现的其它算法,来获得公开密钥Q。
[0070] 为了对消息m进行签名,随机地选择在1和n-1之间的数k。计算点P(i,j) =[k]?G的坐标。如果x=i mod n等于0,则需要选择另一个数k。接着计算数y= kTHHOiO+sx^lmodn,其中H(m)是应用于消息m的诸如SHA-1的哈希函数的结果。如果所获 得的数y是零,则需要通过选择针对数k的另一个值再次开始计算。签名由一对(x,y)组 成。
[0071] 为了检查签名(x,y),首先需要检查的是:构成公开密钥的点Q不同于0,它属于 椭圆曲线E(a,b),[n】*Q= 0以及x和y实际上在1和n-1之间。接着,必须以以下方式 来计算点P(i,j)的坐标:
[0072] P(i, j)= [H(m) ?y_1modn] ?G+[x?y_1modn] ?Q
[0073] 以及需要检查的是,x=imodn。如果一对密钥(s,Q)能够若干次用于签名和对 消息的签名进行检查,则在点Q的21中的倍数也可以被存储在表中。
[0074] 还可以在ECIES加密/解密算法中来实现在附录II和III中呈现的算法。如在 E⑶SA算法中能够生成一对私有密钥和公开密钥(s,Q)。为了对消息m进行加密,随机地选 择在1和n-1之间的数r,以及计算点R= [r] ?G和P(x,y) = [r] ?Q,Q是所加密的消息 的接收者的公开密钥。必须检查条件P古0。这里再次,在点G和Q的的倍数可以最 后一次被计算以及被存储在表中。接着,密钥导出函数KDF用于生成对称密钥Ke、Km,使得 (Ke,Km) =KDF(x,SI),S1是与所加密的消息的接收者共享的数据。接着,使用密钥Ke,由 对称加密算法E对消息m进行加密。接着,通过将哈希函数应用于密钥Km和应用于与该消 息的接收者共享的另一个数据S2,来计算数据d。该消息的加密的结果c连同数据d和公 开密钥R被发送给所加密的消息的接收者。
[0075]为了解密所解密的消息(c,d),该消息的接收者计算点P(x,y) = [s] ?R(= [r] *Q)。所获得的点P必须不同于0。接着,相同的密钥导出函数KDF和共享的数据S1用 于生成对称密钥Ke,Km。接着,通过使用应用于密钥Km和应用于共享数据S2的相同的公 式,来计算数d。如果所获得的数d与所接收的数d相同,则能够使用密钥Ke,通过将对应 于所使用的加密函数的对称解密函数应用于所接收的加密数据c,来解密该消息。
[0076] 本领域的技术人员将理解的是,本发明容许各种可替代的实施例和各种应用。特 别地,本发明不局限于所呈现的应用,而是应用于点的双倍被重复使用若干次
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1