首页 / 专利分类库 / 教育;密码术;显示;广告;印鉴 / 用于密码或涉及保密需要的其他用途的编码或译码装置 / 最终幂计算装置、配对运算装置、加密处理装置、最终幂计算方法和最终幂计算程序

最终幂计算装置、配对运算装置、加密处理装置、最终幂计算方法和最终幂计算程序

申请号 CN202080102336.2 申请日 2020-07-09 公开(公告)号 CN115769290A 公开(公告)日 2023-03-07
申请人 三菱电机株式会社; 发明人 林田大辉; 早坂健一郎;
摘要 分解部(211)针对由使用次数d的分圆多项式Φk(x)、多项式T(x)、多项式h1(x)和多项式h2(x)表示的多项式r(x)=Φk(T(x))/h2(x)、多项式p(x)=h1(x)r(x)+T(x)、多项式t(x)=T(x)+1、以及嵌入次数k表示的椭圆曲线中的 配对 运算的最终幂计算部分,通过多项式Φk(p(x))将指数部分分解成简单部分和困难部分。幂计算部(22)使用关于i=0,…,d‑1的各整数i的多项式p(x)i次方、λd‑1(x)=cd的λd‑1(x)次方、关于i=1,…,d‑2的各整数i的λi=T(x)λi+1(x)+ci+1的λi次方、h1(x)次方、h2(x)次方、乘法运算和逆元运算计算困难部分。
权利要求

1.一种最终幂计算装置,该最终幂计算装置具有:
分解部,其针对由使用数学式1所示的次数d的分圆多项式Φk(x)、多项式T(x)、多项式h1(x)和多项式h2(x)表示的多项式r(x)=Φk(T(x))/h2(x)、多项式p(x)=h1(x)r(x)+T(x)、多项式t(x)=T(x)+1、以及嵌入次数k表示的椭圆曲线中的配对运算的最终幂计算部分,通过多项式Φk(p(x))将指数部分分解成简单部分和困难部分;以及
i
幂计算部,其使用关于i=0,...,d‑1的各整数i的多项式p(x) 次方、λd‑1(x)=cd的λd‑1(x)次方、关于i=1,...,d‑2的各整数i的λi=T(x)λi+1(x)+ci+1的λi次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方,计算由所述分解部进行分解而得到的所述困难部分,
【数学式1】
2.根据权利要求1所述的最终幂计算装置,其中,
所述幂计算部在计算关于i=1,...,d‑2的各整数i的λi次方的情况下,使用已计算出的λi+1次方的结果。
3.根据权利要求1或2所述的最终幂计算装置,其中,
所述幂计算部计算数学式2,由此计算所述困难部分,
【数学式2】
4.根据权利要求1~3中的任意一项所述的最终幂计算装置,其中,
所述多项式t(x)是一次线性的。
5.根据权利要求4所述的最终幂计算装置,其中,
所述多项式t(x)=x+1。
6.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
6 3
所述多项式t(x)=x+1,所述多项式r(x)=1/3Φ9(x)=1/3(x+x+1),所述多项式p(x)
2
=(x‑1) r(x)+x。
7.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
4 2
所述多项式t(x)=x+1,所述多项式r(x)=Φ12(x)=x‑x+1,所述多项式p(x)=1/3(x‑
2
1) r(x)+x。
8.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
4 2
所述多项式t(x)=x+1,所述多项式r(x)=Φ12(x)=x‑x+1,所述多项式p(x)=1/4(x‑
2 2
1) (x+1)r(x)+x。
9.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
8 7 5 4 3
所述多项式t(x)=x+1,所述多项式r(x)=Φ15(x)=x‑x+x‑x +x‑x+1,所述多项式p
2 2
(x)=1/3(x‑1) (x+x+1)r(x)+x。
10.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
8 4
所述多项式t(x)=x+1,所述多项式r(x)=Φ24(x)=x‑x+1,所述多项式p(x)=1/3(x‑
2
1) r(x)+x。
11.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
18 9
所述多项式t(x)=x+1,所述多项式r(x)=1/3Φ27(x)=1/3(x +x +1),所述多项式p
2
(x)=(x‑1) r(x)+x。
12.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
12 10 8 6 4 2
所述多项式t(x)=x+1,所述多项式r(x)=Φ28(x)=x ‑x +x‑x+x‑x+1,所述多项式
2 2
p(x)=1/3(x‑1) (x+1)r(x)+x。
13.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
12 10 8 6 4 2
所述多项式t(x)=x+1,所述多项式r(x)=Φ28(x)=x ‑x +x‑x+x‑x+1,所述多项式
2 2
p(x)=1/4(x‑1) (x+1)r(x)+x。
14.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
12 11 9 8 6 4 3
所述多项式t(x)=x+1,所述多项式r(x)=Φ42(x)=x +x ‑x ‑x+x ‑x‑x +x+1,所述
2 2
多项式p(x)=1/3(x‑1) (x‑x+1)r(x)+x。
15.根据权利要求1~5中的任意一项所述的最终幂计算装置,其中,
16 8
所述多项式t(x)=x+1,所述多项式r(x)=Φ48(x)=x ‑x +1,所述多项式p(x)=1/3
2
(x‑1) r(x)+x。
16.根据权利要求1~15中的任意一项所述的最终幂计算装置,其中,
所述简单部分是由p(x)的幂乘表示的部分,所述困难部分是由x的幂乘表示的部分。
17.一种配对运算装置,该配对运算装置具有:
权利要求1~16中的任意一项所述的最终幂计算装置;以及
Miller函数计算部,其计算所述配对运算的Miller函数。
18.根据权利要求17所述的配对运算装置,其中,
所述幂计算部对作为由所述Miller函数计算部计算出的结果的函数值,进行所述简单部分的幂乘计算和所述困难部分的幂乘计算,计算所述配对运算的结果。
19.一种加密处理装置,其中,
所述加密处理装置使用由权利要求17或18所述的配对运算装置计算出的所述配对运算的结果进行加密处理。
20.一种最终幂计算方法,其中,
最终幂计算装置的分解部针对由使用数学式3所示的次数d的分圆多项式Φk(x)、多项式T(x)、多项式h1(x)和多项式h2(x)表示的多项式r(x)=Φk(T(x))/h2(x)、多项式p(x)=h1(x)r(x)+T(x)、多项式t(x)=T(x)+1、以及嵌入次数k表示的椭圆曲线中的配对运算的最终幂计算部分,通过多项式Φk(p(x))将指数部分分解成简单部分和困难部分,
i
所述最终幂计算装置的幂计算部使用关于i=0,...,d‑1的各整数i的多项式p(x) 次方、λd‑1(x)=cd的λd‑1(x)次方、关于i=1,...,d‑2的各整数i的λi=T(x)λi+1(x)+ci+1的λi次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方,计算所述困难部分,
【数学式3】
21.一种最终幂计算程序,该最终幂计算程序使计算机作为最终幂计算装置发挥功能,所述最终幂计算装置进行如下处理:
分解处理,针对由使用数学式4所示的次数d的分圆多项式Φk(x)、多项式T(x)、多项式h1(x)和多项式h2(x)表示的多项式r(x)=Φk(T(x))/h2(x)、多项式p(x)=h1(x)r(x)+T(x)、多项式t(x)=T(x)+1、以及嵌入次数k表示的椭圆曲线中的配对运算的最终幂计算部分,通过多项式Φk(p(x))将指数部分分解成简单部分和困难部分;以及
i
幂计算处理,使用关于i=0,...,d‑1的各整数i的多项式p(x) 次方、λd‑1(x)=cd的λd‑1(x)次方、关于i=1,...,d‑2的各整数i的λi=T(x)λi+1(x)+ci+1的λi次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方,计算通过所述分解处理进行分解而得到的所述困难部分,
【数学式4】

说明书全文

最终幂计算装置、配对运算装置、加密处理装置、最终幂计算

方法和最终幂计算程序

技术领域

[0001] 本发明涉及配对运算中的最终幂的计算技术。

背景技术

[0002] 配对运算是使用在函数型加密和隐匿检索这样的加密方式的内部被处理的椭圆曲线的运算。将适合于配对运算的高效计算的椭圆曲线称作配对友好曲线。迄今为止,作为与128比特安全性相当的配对友好曲线,公知有BN(Barret‑Naehrig)曲线。但是,从2016年左右开始,进行安全性的重新评估,针对使用BLS(Barreto‑Lynn‑Scott)曲线和KSS
(Kachisa‑Schaefer‑Scott)曲线等各种配对友好曲线的配对运算的关心度提高。
[0003] 配对运算大致分成Miller函数的计算和最终幂的计算。Miller函数的计算和最终幂的计算均需要复杂的计算过程,对函数型加密和隐匿检索这样的加密方式整体的计算量
造成较大影响。
[0004] 在非专利文献1、2中记载有在大量的配对友好曲线中配对运算整体的效率仍然良好的BLS曲线。在非专利文献1、2中记载有作为嵌入次数k,k=24、27、42、48的BLS曲线中的配对运算。此外,在专利文献1和非专利文献2中记载有KSS曲线。在任何文献中,均示出最终幂的计算量比Miller函数的计算量大这样的结果。
[0005] 配对友好曲线是由多项式r(x)、多项式p(x)、多项式t(x)、嵌入次数k、整数D和整数u决定的椭圆曲线。多项式r(x)、多项式p(x)和多项式t(x)根据嵌入次数k而采取不同的形式。
[0006] 嵌入次数k的配对友好曲线E是在由p=p(x)个元素构成的有限域Fp上定义的椭圆曲线。r=r(x)是对椭圆曲线E的部分群E(Fp)的位数进行除法的最大素数。t=t(x)是椭圆
曲线E的轨迹。
[0007] 关于椭圆曲线E上的配对运算,将椭圆曲线E上的某2点P、Q作为输入,在计算被称k
作Miller函数的有理函数f后,计算(p(x) ‑1)/r(x)次方。即,椭圆曲线E上的配对运算通过数学式11来计算。
[0008] 【数学式11】
[0009]
[0010] 在非专利文献3中记载有如下技术:为了高效地进行最终幂的计算,使用多项式k
Φk(p(x))将指数部分(p(x) ‑1)/r(x)分解成简单部分和困难部分来进行计算。
[0011] 关于简单部分的幂乘计算,能够使用高速的p(x)i次方高效地进行计算。在困难部i
分的幂乘计算中,如数学式12所示,困难部分的指数部分被转换为p(x) 的线性和,计算基于各系数λi(x)的幂乘。
[0012] 【数学式12】
[0013]
[0014] 现有技术文献
[0015] 专利文献
[0016] 专利文献1:日本特开2018‑205511号公报
[0017] 非专利文献
[0018] 非专利文献1:X.Zhang,D.Lin“, Analysis of Optimum Pairing Products at High Security Levels”,INDOCRYPT 2012,p.412~430
[0019] 非专利文献2:Y.Kiyomura,A.Inoue,Y.Kawahara,M.Yasuda,T.Takagi,T.Kobayashi,“Secure and Efficient Pairing at 256‑Bit Security Lebel”,
ACNS2017,p.59~79
[0020] 非专利文献3:M.Scott,N.Benger,M.Charlemagne,“On  the  Final Exponentiation for Calculating Pairings on Ordinary Elliptic Curves”,Pairing 
2009,p.78~88

发明内容

[0021] 发明要解决的课题
[0022] 计算最终幂所需要的困难部分的各λi(x)大大依赖于椭圆曲线的多项式参数。因此,不存在高效地计算困难部分的通用方法。根据椭圆曲线,困难部分的高效的计算方法是未知的。此外,即使在困难部分的高效的计算方法已知的情况下,也需要事先具有按照每个椭圆曲线计算困难部分的手段。
[0023] 本发明的目的在于,能够高效地计算配对运算中的最终幂。
[0024] 用于解决课题的手段
[0025] 本发明的最终幂计算装置具有:分解部,其针对由使用数学式1所示的次数d的分圆多项式Φk(x)、多项式T(x)、多项式h1(x)和多项式h2(x)表示的多项式r(x)=Φk(T(x))/h2(x)、多项式p(x)=h1(x)r(x)+T(x)、多项式t(x)=T(x)+1、以及嵌入次数k表示的椭圆曲线中的配对运算的最终幂计算部分,通过多项式Φk(p(x))将指数部分分解成简单部分和
i
困难部分;以及幂计算部,其使用关于i=0,...,d‑1的各整数i的多项式p(x) 次方、λd‑1(x)=cd的λd‑1(x)次方、关于i=1,...,d‑2的各整数i的λi=T(x)λi+1(x)+ci+1的λi次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方,计算由所述分解部进行分解而得到的所述困难部分,
[0026] 【数学式1】
[0027]
[0028] 发明效果
[0029] 在本发明中,能够进行与大量椭圆曲线对应的高效的最终幂的计算。附图说明
[0030] 图1是实施方式1的最终幂计算装置10的结构图。
[0031] 图2是实施方式1的将指数(p(x)k‑1)/r(x)分解成简单部分和困难部分的处理的说明图。
[0032] 图3是示出实施方式1的最终幂计算装置10的整体动作的流程图
[0033] 图4是实施方式1的幂简化处理的流程图。
[0034] 图5是实施方式1的幂计算处理的流程图。
[0035] 图6是变形例1的最终幂计算装置10的结构图。
[0036] 图7是变形例3的配对运算装置30的结构图。
[0037] 图8是实施方式2的加密处理装置40的结构图。
[0038] 图9是示出实施方式2的加密处理装置40的动作的流程图。

具体实施方式

[0039] 实施方式1
[0040] ***表记的说明***
[0041] 在正文和附图中,有时使用“^”表示幂乘。作为具体例,a^b表示ab。
[0042] ***结构的说明***
[0043] 参照图1对实施方式1的最终幂计算装置10的结构进行说明。
[0044] 最终幂计算装置10是计算机。
[0045] 最终幂计算装置10具有处理器11、内存12、存储器13和通信接口14这样的硬件。处理器11经由信号线与其他硬件连接,对这些其他硬件进行控制。
[0046] 处理器11是进行处理的IC(Integrated Circuit:集成电路)。作为具体例,处理器11是CPU(Central Processing Unit:中央处理单元)、DSP(Digital Signal Processor:数字信号处理器)、GPU(Graphics Processing Unit:图形处理单元)。
[0047] 内存12是临时存储数据的存储装置。作为具体例,内存12是SRAM(Static Random Access Memory:静态随机存取存储器)、DRAM(Dynamic Random Access Memory:动态随机存取存储器)。
[0048] 存储器13是保管数据的存储装置。作为具体例,存储器13是HDD(Hard Disk Drive:硬盘驱动器)。此外,存储器13也可以是SD(注册商标,Secure Digital:安全数字)存储卡、CF(CompactFlash:致密闪存,注册商标)、NAND闪存、软盘、光盘、高密度盘、蓝光(注册商标)盘、DVD(Digital Versatile Disk:数字多功能盘)这样的移动记录介质。
[0049] 通信接口14是用于与外部的装置进行通信的接口。作为具体例,通信接口14是Ethernet(注册商标)、USBあniversal Serial Bus:通用串行总线)、HDMI(注册商标,High‑Definition Multimedia Interface:高清晰度多媒体接口)的端口。
[0050] 作为功能结构要素,最终幂计算装置10具有幂简化部21和幂计算部22。幂简化部21具有分解部211和生成部212。最终幂计算装置10的各功能结构要素的功能通过软件
现。
[0051] 在存储器13中存储有实现最终幂计算装置10的各功能结构要素的功能的程序。该程序由处理器11读入到内存12,由处理器11来执行。由此,实现最终幂计算装置10的各功能结构要素的功能。
[0052] 在图1中,仅示出1个处理器11。但是,处理器11也可以是多个,多个处理器11也可以协作执行实现各功能的程序。
[0053] ***动作的说明***
[0054] 参照图2~图5对实施方式1的最终幂计算装置10的动作进行说明。
[0055] 实施方式1的最终幂计算装置10的动作步骤相当于实施方式1的最终幂计算方法。此外,实现实施方式1的最终幂计算装置10的动作的程序相当于实施方式1的最终幂计算程
序。
[0056] 在实施方式1中,使用通过由文献“[FST10]D.Freeman,M.Scott and E.Teske,“ATaxonomy of Pairing‑Friendly Elliptic Curves”,J.Cryptol.(2010)23:224‑280.”定义的椭圆曲线族给出参数的曲线。
[0057] 通过由上述文献定义的椭圆曲线族给出参数的曲线是由多项式r(x)、多项式p(x)、多项式t(x)、嵌入次数k和代入到变量x的整数u决定的椭圆曲线。该椭圆曲线E是在由素数p=p(x)个元素构成的有限域Fp上定义的椭圆曲线。r=r(x)是对椭圆曲线E的部分群E
(Fp)的位数进行除法的最大素数。此外,t=t(x)是椭圆曲线E的轨迹。在实施方式1中,作为椭圆曲线E的轨迹的多项式t(x)是一次线性的。作为具体例,在实施方式1中,是作为椭圆曲线E的轨迹的多项式t(x)=x+1。
[0058] 关于椭圆曲线E上的配对运算,将椭圆曲线E上的某2点P、Q作为输入,在计算利用Pk评价被称作Miller函数的有理函数的f后,计算f的(p(x) ‑1)/r(x)次方。将前半部分的f的计算称作Miller loop的计算,将后半部分的幂乘运算称作最终幂的计算。
[0059] 在最终幂的计算中,如图2所示,使用多项式Φk(p(x))将指数(p(x)k‑1)/r(x)分解i成简单部分和困难部分。关于简单部分的幂乘计算,能够使用高速的p(x) 次方高效地进行计算。另一方面,关于困难部分的幂乘计算,需要多次执行x次方(u次方),计算量大。因此,困难部分的高效的计算方法是最终幂的高效化所需要的。
[0060] 如数学式13所示,通过椭圆曲线族给出参数的曲线的参数即多项式p(x)、多项式r(x)和多项式t(x)能够利用某个多项式T(x)、多项式h1(x)和多项式h2(x)来表记。
[0061] 【数学式13】
[0062] for T(x),h1(x),h2(x)∈Q[x]
[0063]
[0064] p(x)=h1(x)r(x)+T(x),
[0065] t(x)=T(x)+1
[0066] 此时,如数学式14所示,困难部分能够使用T(x)次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方来计算。
[0067] 【数学式14】
[0068]
[0069]
[0070] where
[0071] λd‑1(x)=cd,
[0072] λi(x)=T(x)λi+1(x)+ci+1
[0073] 这里,实用的椭圆曲线的嵌入次数k较小,因此,分圆多项式Φk(x)的各系数ci为‑1、0、1中的任意一方。
[0074] 参照图3对实施方式1的最终幂计算装置10的整体动作进行说明。
[0075] (步骤S11:幂简化处理)
[0076] 幂简化部21的分解部211将最终幂计算部分中的指数部分(p(x)k‑1)/r(x)分解成简单部分和困难部分。简单部分是由p(x)的幂乘表示的部分。困难部分是由p(x)和x的幂乘(u的幂乘)表示的部分。
[0077] 幂简化部21的生成部212根据多项式p(x)、多项式r(x)、多项式t(x)和嵌入次数k,计算用于计算困难部分所需要的多项式T(x)、多项式h1(x)、多项式h2(x)和整数a。
[0078] 这里,整数a为正整数,是使得ah1(x)和ah2(x)的全部系数为整数的最小且非零的整数。有时在多项式h1(x)和多项式h2(x)中的至少任意一方的系数中出现分数,因此,这里,在后述的处理中,乘以整数a,从多项式h1(x)和多项式h2(x)中删除系数的分母。
[0079] (步骤S12:幂计算处理)
[0080] 幂计算部22针对通过Miller loop计算出的有理函数f进行在步骤S11中得到的简单部分的幂乘计算,进而,使用在步骤S11中得到的多项式T(x)、多项式h1(x)、多项式h2(x)和整数a进行困难部分的幂乘计算。由此,计算数学式15所示的最终幂。
[0081] 【数学式15】
[0082]
[0083] 计算配对运算的整数a次方的结果是为了在后述的处理中对多项式h1(x)和多项式h2(x)乘以整数a。
[0084] 参照图4对实施方式1的幂简化处理进行说明。
[0085] 在步骤S21中,幂简化部21取得与椭圆曲线E有关的嵌入次数k、多项式r(x)、多项式p(x)和多项式t(x)。
[0086] 在步骤S22中,分解部211计算(p(x)k‑1)/r(x)的因数A1(x)。因数A1(x)是图2所示的简单部分的整体。分解部211将因数A1(x)写入内存12中。
[0087] 在步骤S23~步骤S26中,生成部212使用数学式13的条件生成困难部分的幂乘运算所需要的多项式T(x)、多项式h1(x)、多项式h2(x)和整数a。
[0088] 在步骤S23中,生成部212生成多项式T(x)作为T(x)=t(x)‑1,将其写入内存12中。
[0089] 在步骤S24中,生成部212生成多项式h1(x)作为h1(x)=(p(x)‑T(x))/r(x),将其写入内存12中。
[0090] 在步骤S25中,生成部212生成多项式h2(x)作为h2(x)=r(x)/Φk(T(x)),将其写入内存12中。
[0091] 在步骤S26中,生成部212计算整数a。整数a为正整数,是使得ah1(x)和ah2(x)的系数全部为整数的最小且非零的整数。第2生成部222将生成的整数a写入内存12中。
[0092] 参照图5对实施方式1的幂计算处理进行说明。
[0093] 在步骤S31中,幂计算部22从内存12中读出整数u、通过Miller loop计算出的值f、通过幂简化处理生成的因数A1(x)、多项式T(x)、多项式h1(x)、多项式h2(x)和整数a。另外,在以下的说明中,设为使用多项式的变量x的表记,但是,实际上在变量x中代入整数u来进行计算。
[0094] 在步骤S32中,幂计算部22计算以值f为底且以因数A1(x)为幂指数的幂乘运算,生成值A=f^{A1(x)}。即,幂计算部22通过数学式16计算值A。
[0095] 【数学式16】
[0096] A=fA1(x)
[0097] 在步骤S33中,幂计算部22计算以值A为底且以数学式14的p(x)i的线性和为幂指数的幂乘运算,生成值C。即,幂计算部22通过数学式17计算值C。
[0098] 【数学式17】
[0099]
[0100] 在步骤S34中,幂计算部22计算以值C为底且以ah1(x)为幂指数的幂乘运算,生成值D。即,幂计算部22通过数学式18计算值D。
[0101] 【数学式18】
[0102] D=Cah1(x)
[0103] 在步骤S35中,幂计算部22计算以值A为底且以ah2(x)为幂指数的幂乘运算,生成值E。即,幂计算部22通过数学式19计算值E。
[0104] 【数学式19】
[0105] E=Aah2(x)
[0106] 在步骤S36中,幂计算部22计算值D与值E之积,生成值F。值F是数学式15所示的配对运算的结果。即,在步骤S33~步骤S36中,幂计算部22按照数学式14,使用T(x)次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方计算困难部分的幂乘运
算。
[0107] 对步骤S33中的值C的计算处理进行说明。
[0108] 在步骤S331中,幂计算部22将索引i设为i=d‑1,进行初始化。
[0109] 在步骤S332中,幂计算部22将值C和值B初始化为1。
[0110] 在步骤S333中,幂计算部22计算以值B为底且以T(x)为幂指数的幂乘运算。此外,幂计算部22计算以值A为底且以ci+1为幂指数的幂乘运算。然后,幂计算部22计算计算出的2个值之积,对值B进行更新。即,幂计算部22将通过数学式20得到的值覆盖于值B。
[0111] 【数学式20】
[0112] B=BT(x)Aci+1
[0113] 这里,实用的椭圆曲线的嵌入次数k较小,因此,分圆多项式Φk(x)的各系数ci为‑1、0、1中的任意一方。因此,实际上不需要步骤S333中的底A的幂乘运算,值A的乘法运算或‑1 ‑1
逆元A 的乘法运算就足够了。逆元A 可以在步骤S333中计算,也可以事先计算而重复使
用。
[0114] 在步骤S334中,幂计算部22计算以值B为底且以p(x)i为幂指数的幂乘运算,进而计算与值C之积,对值C进行更新。即,幂计算部22将通过数学式21得到的值覆盖于值C。
[0115] 【数学式21】
[0116] C=CBp(x)i
[0117] 在步骤S335中,幂计算部22使索引i减小1。
[0118] 在步骤S336中,幂计算部22判定索引i是否为0以上。幂计算部22在索引i为0以上的情况下,使处理返回步骤S333。另一方面,幂计算部22在索引i小于0的情况下,使处理进入步骤S34。即,幂计算部22针对索引i=d‑1,d‑2,...,1,0依次执行步骤S333和步骤S334的处理,对值C和值B进行更新。
[0119] 通过步骤S33计算的值C是数学式17所示的幂乘运算的结果。
[0120] 接着,对具体的曲线的例子进行说明。
[0121] <例1:BLS‑9>
[0122] 对曲线为BLS‑9的情况进行说明。
[0123] 该情况下,多项式t(x)=x+1,多项式r(x)=1/3Φ9(x)=1/3(x6+x3+1),多项式p2 2
(x)=(x‑1) r(x)+x。因此,多项式T(x)=x,多项式h1(x)=(x‑1) ,多项式h2(x)=3。因此,指数部分如数学式22那样被分解。
[0124] 【数学式22】
[0125]
[0126] 这里,λ5(x)=1、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)、λ2(x)=xλ3(x)+1、λ1(x)=xλ2(x)、λ0(x)=xλ1(x)。
[0127] <例2:BLS‑12>
[0128] 对曲线为BLS‑12的例子进行说明。
[0129] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ12(x)=x4‑x2+1,多项式p(x)=1/32 2
(x‑1) r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/3(x‑1) ,多项式h2(x)=1。因此,指数部分如数学式23那样被分解。
[0130] 【数学式23】
[0131]
[0132] 这里,λ3(x)=1、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)‑1、λ0(x)=xλ1(x)。
[0133] <例3:k=12>
[0134] 对曲线的嵌入次数k=12(不是BLS曲线)的例子进行说明。
[0135] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ12(x)=x4‑x2+1,多项式p(x)=1/42 2 2 2
(x‑1) (x+1)r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/4(x‑1) (x+1),多项式h2(x)=1。因此,指数部分如数学式24那样被分解。
[0136] 【数学式24】
[0137]
[0138] 这里,λ3(x)=1、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)‑1、λ0(x)=xλ1(x)。
[0139] <例4:BLS‑15>
[0140] 对曲线为BLS‑15的例子进行说明。
[0141] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ15(x)=x8‑x7+x5‑x4+x3‑x+1,多项式2 2 2 2
p(x)=1/3(x‑1) (x+x+1)r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/3(x‑1) (x+x+
1),多项式h2(x)=1。因此,指数部分如数学式25那样被分解。
[0142] 【数学式25】
[0143]
[0144] 这里,λ7(x)=1、λ6(x)=xλ7(x)‑1、λ5(x)=xλ6(x)、λ4(x)=xλ5(x)+1、λ3(x)=xλ4(x)‑1、λ2(x)=xλ3(x)+1、λ1(x)=xλ2(x)、λ0(x)=xλ1(x)‑1。
[0145] <例5:BLS‑24>
[0146] 对曲线为BLS‑24的例子进行说明。
[0147] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ24(x)=x8‑x4+1,多项式p(x)=1/32 2
(x‑1) r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/3(x‑1) ,多项式h2(x)=1。因此,指数部分如数学式26那样被分解。
[0148] 【数学式26】
[0149]
[0150] 这里,λ7(x)=1、λ6(x)=xλ7(x)、λ5(x)=xλ6(x)、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)‑1、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)、λ0(x)=xλ1(x)。
[0151] <例6:BLS‑27>
[0152] 对曲线为BLS‑27的例子进行说明。
[0153] 该情况下,多项式t(x)=x+1,多项式r(x)=1/3Φ27(x)=1/3(x18+x9+1),多项式p2 2
(x)=(x‑1) r(x)+x。因此,多项式T(x)=x,多项式h1(x)=(x‑1) ,多项式h2(x)=3。因此,指数部分如数学式27那样被分解。
[0154] 【数学式27】
[0155]
[0156] 这里,λ17(x)=1、λ16(x)=xλ17(x)、λ15(x)=xλ16(x)、λ14(x)=xλ15(x)、λ13(x)=xλ14(x)、λ12(x)=xλ13(x)、λ11(x)=xλ12(x)、λ10(x)=xλ11(x)、λ9(x)=xλ10(x)、λ8(x)=xλ9(x)+1、λ7(x)=xλ8(x)、λ6(x)=xλ7(x)、λ5(x)=xλ6(x)、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)、λ0(x)=xλ1(x)。
[0157] <例7:BLS‑28>
[0158] 对曲线为BLS‑28的例子进行说明。
[0159] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ28(x)=x12‑x10+x8‑x6+x4‑x2+1,多项2 2 2 2
式p(x)=1/3(x‑1) (x +1)r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/3(x‑1) (x+1),多项式h2(x)=1。因此,指数部分如数学式28那样被分解。
[0160] 【数学式28】
[0161]
[0162] 这里,λ11(x)=1、λ10(x)=xλ11(x)、λ9(x)=xλ10(x)‑1、λ8(x)=xλ9(x)、λ7(x)=xλ8(x)+1、λ6(x)=xλ7(x)、λ5(x)=xλ6(x)‑1、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)+1、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)‑1、λ0(x)=xλ1(x)。
[0163] <例8:k=28>
[0164] 对曲线的嵌入次数k=28(不是BLS曲线)的例子进行说明。
[0165] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ28(x)=x12‑x10+x8‑x6+x4‑x2+1,多项2 2 2 2
式p(x)=1/4(x‑1) (x +1)r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/4(x‑1) (x+1),多项式h2(x)=1。因此,指数部分如数学式29那样被分解。
[0166] 【数学式29】
[0167]
[0168] 这里,λ11(x)=1、λ10(x)=xλ11(x)、λ9(x)=xλ10(x)‑1、λ8(x)=xλ9(x)、λ7(x)=xλ8(x)+1、λ6(x)=xλ7(x)、λ5(x)=xλ6(x)‑1、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)+1、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)‑1、λ0(x)=xλ1(x)。
[0169] <例9:BLS‑42>
[0170] 对曲线为BLS‑42的例子进行说明。
[0171] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ42(x)=x12+x11‑x9‑x8+x6‑x4‑x3+x+1,2 2 2
多项式p(x)=1/3(x‑1) (x‑x+1)r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/3(x‑1)
2
(x‑x+1),多项式h2(x)=1。因此,指数部分如数学式30那样被分解。
[0172] 【数学式30】
[0173]
[0174] 这里,λ11(x)=1、λ10(x)=xλ11(x)+1、λ9(x)=xλ10(x)、λ8(x)=xλ9(x)‑1、λ7(x)=xλ8(x)‑1、λ6(x)=xλ7(x)、λ5(x)=xλ6(x)+1、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)‑1、λ2(x)=xλ3(x)‑1、λ1(x)=xλ2(x)、λ0(x)=xλ1(x)+1。
[0175] <例10:BLS‑48>
[0176] 对曲线为BLS‑48的例子进行说明。
[0177] 该情况下,多项式t(x)=x+1,多项式r(x)=Φ48(x)=x16‑x8+1,多项式p(x)=1/32 2
(x‑1) r(x)+x。因此,多项式T(x)=x,多项式h1(x)=1/3(x‑1) ,多项式h2(x)=1。因此,指数部分如数学式31那样被分解。
[0178] 【数学式31】
[0179]
[0180] 这里,λ15(x)=1、λ14(x)=xλ15(x)、λ13(x)=xλ14(x)、λ12(x)=xλ13(x)、λ11(x)=xλ12(x)、λ10(x)=xλ11(x)、λ9(x)=xλ10(x)、λ8(x)=xλ9(x)、λ7(x)=xλ8(x)‑1、λ6(x)=xλ7(x)、λ5(x)=xλ6(x)、λ4(x)=xλ5(x)、λ3(x)=xλ4(x)、λ2(x)=xλ3(x)、λ1(x)=xλ2(x)、λ0(x)=xλ1(x)。
[0181] ***实施方式1的效果***
[0182] 如上所述,实施方式1的最终幂计算装置10通过多项式Φk(p(x))将指数部分分解成简单部分和困难部分,使用T(x)次方、h1(x)次方、h2(x)次方、以及乘法运算和逆元运算中的至少任意一方计算困难部分。由此,能够高效地计算配对运算。
[0183] 特别地,实施方式1的最终幂计算装置10根据数学式14将困难部分转换为多项式pi
(x)的线性和。由此,关于大量椭圆曲线,能够高效地计算配对运算。
[0184] 具体而言,根据数学式14将困难部分转换为多项式p(x)i的线性和,由此,虽然p(x)的幂乘运算的数量稍微增加,但是,x的幂乘运算的数量大幅减少。公知与p(x)的幂乘运算的计算量相比,x的幂乘运算的计算量非常大。因此,实施方式1的最终幂计算装置10根据i
数学式14将困难部分转换为多项式p(x)的线性和,由此能够高效地计算配对运算。
[0185] 更具体而言,针对以往研究的BLS‑9、12、15、24、27、48曲线这样的轨迹为t(x)=x+1的代表性椭圆曲线族,特别能够提高最终幂计算的计算效率。
[0186] ***其他结构***
[0187] <变形例1>
[0188] 在实施方式1中,各功能结构要素通过软件实现。但是,作为变形例1,各功能结构要素也可以通过硬件实现。关于该变形例1,对与实施方式1不同之处进行说明。
[0189] 参照图6对变形例1的最终幂计算装置10的结构进行说明。
[0190] 在各功能结构要素通过硬件实现的情况下,最终幂计算装置10代替处理器11、内存12和存储器13而具有电子电路15。电子电路15是实现各功能结构要素、内存12和存储器
13的功能的专用电路。
[0191] 作为电子电路15,假设有单一电路、复合电路、程序化的处理器、并行程序化的处理器、逻辑IC、GA(Gate Array:阵列)、ASIC(Application Specific Integrated Circuit:专用集成电路)、FPGA(Field‑Programmable Gate Array:现场可编程门阵列)。
[0192] 可以通过1个电子电路15实现各功能结构要素,也可以使多个电子电路15分散实现各功能结构要素。
[0193] <变形例2>
[0194] 作为变形例2,也可以是,一部分的各功能结构要素通过硬件实现,其他的各功能结构要素通过软件实现。
[0195] 将处理器11、内存12、存储器13和电子电路15称作处理电路。即,各功能结构要素的功能通过处理电路实现。
[0196] <变形例3>
[0197] 在实施方式1中,说明了如下的最终幂计算装置10:取得通过Miller loop计算出的值f,仅进行最终幂的计算。也可以对实施方式1中说明的最终幂计算装置10追加进行
Miller loop计算的功能,构成进行配对运算的配对运算装置30。
[0198] 参照图7对变形例3的配对运算装置30的结构进行说明。
[0199] 配对运算装置30在最终幂计算装置10具有的功能结构要素的基础上具有Miller函数计算部31。与最终幂计算装置10具有的功能结构要素同样,Miller函数计算部31通过
软件或硬件实现。Miller函数计算部31进行Miller loop的计算。
[0200] 该情况下,在图5的步骤S31中,幂计算部22取得由Miller函数计算部31计算出的值f。
[0201] <变形例4>
[0202] 在实施方式1中,为了从多项式h1(x)和多项式h2(x)中删除系数的分母而计算了整数a。在实施方式1中,在多项式h1(x)和多项式h2(x)的系数不存在分数的情况下,计算1作为整数a。但是,在多项式h1(x)和多项式h2(x)的系数不存在分数的情况下,也可以不计算整数a。而且,该情况下,不需要在幂简化处理和幂计算处理中乘以整数a。
[0203] 实施方式2
[0204] 在实施方式1中,说明了配对运算的最终幂的计算方法。在实施方式2中,对使用实施方式1中计算出的配对运算的结果的处理进行说明。在实施方式2中,对与实施方式1不同之处进行说明,省略相同之处的说明。
[0205] ***结构的说明***
[0206] 参照图8对实施方式2的加密处理装置40的结构进行说明。
[0207] 加密处理装置40在实施方式1的最终幂计算装置10具有的功能结构要素的基础上,还具有加密处理部41。与最终幂计算装置10具有的功能结构要素同样,加密处理部41通过软件或硬件实现。
[0208] ***动作的说明***
[0209] 参照图9对实施方式2的加密处理装置40的动作进行说明。
[0210] 实施方式2的加密处理装置40的动作步骤相当于实施方式2的加密处理方法。此外,实现实施方式2的加密处理装置40的动作的程序相当于实施方式2的加密处理程序。
[0211] (步骤S41:配对运算处理)
[0212] 通过实施方式1的最终幂计算装置10具有的功能结构要素计算配对运算的结果。配对运算的结果被写入内存12中。
[0213] (步骤S42:加密处理)
[0214] 加密处理部41使用在步骤S41中得到的配对运算的结果进行加密处理。加密处理是加密处理、解密处理、签名处理和验证处理这样的加密原语的处理。
[0215] 加密处理是为了对第三方隐匿数据而将平文状态的数据转换成密文的处理。解密处理是将通过加密处理而转换后的密文转换成平文状态的数据的处理。签名处理是生成数
据的篡改检测和数据的出处确认中的至少任意一方用的签名的处理。验证处理是通过签名
处理中生成的签名进行数据的篡改检测和数据的出处确认中的至少任意一方的处理。
[0216] 例如,考虑加密处理部41使用将密文的元素和解密密钥的元素作为输入的配对运算结果而生成对密文进行解密后的消息。
[0217] ***实施方式2的效果***
[0218] 如上所述,实施方式2的加密处理装置40使用实施方式1的最终幂计算装置10的功能结构要素实现加密处理。实施方式1的最终幂计算装置10能够高效地计算配对运算。因
此,实施方式2的加密处理装置40能够高效地实施加密处理。
[0219] ***其他结构***
[0220] <变形例5>
[0221] 在实施方式2中,加密处理装置40在实施方式1的最终幂计算装置10具有的功能结构要素的基础上具有加密处理部41。但是,加密处理装置40也可以在变形例3中说明的配对运算装置30具有的功能结构要素的基础上具有加密处理部41。
[0222] 以上说明了本发明的实施方式和变形例。也可以组合实施这些实施方式和变形例中的若干个实施方式和变形例。此外,也可以实施任意一个或多个实施方式和变形例的一
部分。另外,本发明不限于以上的实施方式和变形例,能够根据需要进行各种变更。
[0223] 标号说明
[0224] 10:最终幂计算装置;11:处理器;12:内存;13:存储器;14:通信接口;15:电子电路;21:幂简化部;211:分解部;212:生成部;22:幂计算部;30:配对运算装置;31:Miller函数计算部;40:加密处理装置;41:加密处理部。
QQ群二维码
意见反馈