本技術(shù)屬于計(jì)算機(jī),尤其涉及一種基于avx512ifma的橢圓曲線的并行點(diǎn)加方法。
背景技術(shù):
1、在現(xiàn)代密碼學(xué)中,橢圓曲線密碼學(xué)(elliptic?curve?cryptography,ecc)由于其高安全性和較低的計(jì)算復(fù)雜度,已經(jīng)廣泛應(yīng)用于各種信息安全領(lǐng)域,如數(shù)字簽名、區(qū)塊鏈、ssl/tls協(xié)議等。橢圓曲線點(diǎn)加(point?addition)和點(diǎn)乘(point?multiplication)是ecc的基本運(yùn)算,其效率直接影響整個(gè)密碼系統(tǒng)的性能。因此,如何優(yōu)化這些基本運(yùn)算,特別是點(diǎn)加運(yùn)算的速度,成為研究的熱點(diǎn)問(wèn)題。
2、傳統(tǒng)的ecc點(diǎn)加實(shí)現(xiàn)方法通常依賴于大整數(shù)運(yùn)算。由于橢圓曲線上的點(diǎn)表示為大整數(shù)對(duì),這些運(yùn)算涉及大量的模加、模減、模乘等操作。盡管現(xiàn)代處理器的計(jì)算能力已經(jīng)顯著提高,但面對(duì)大規(guī)模的橢圓曲線點(diǎn)運(yùn)算,仍然存在性能瓶頸。此外,傳統(tǒng)方法在并行計(jì)算方面的利用率較低,無(wú)法充分發(fā)揮現(xiàn)代多核處理器的優(yōu)勢(shì)。
3、avx512ifma(avx-512integer?fused?multiply-add)是intel公司推出的一種單指令多數(shù)據(jù)(simd,single?instruction?multiple?data)指令集,屬于avx-512指令集的一部分。它提供了高效的矢量化整數(shù)運(yùn)算能力,特別是支持融合乘加運(yùn)算(fused?multiply-add),即同時(shí)進(jìn)行乘法和加法操作。這種運(yùn)算能夠顯著減少指令數(shù)量,提高運(yùn)算速度。此外,avx512ifma支持512位的矢量寄存器,使得每個(gè)指令可以處理更多的數(shù)據(jù),從而進(jìn)一步提升并行計(jì)算的效率。
4、現(xiàn)如今有多密碼實(shí)現(xiàn)工作已經(jīng)開始利用simd來(lái)加速運(yùn)算,例如在加密、數(shù)字簽名、tls協(xié)議中使用其提升計(jì)算效率和響應(yīng)速度。bls12-381曲線是一種高安全強(qiáng)度的橢圓曲線,廣泛應(yīng)用于密碼學(xué)領(lǐng)域,特別是在零知識(shí)證明系統(tǒng)和公鑰密碼學(xué)中。但目前還缺少針對(duì)該曲線的avx512ifma指令集的優(yōu)化方案。
5、因此,相關(guān)技術(shù)中存在著尚無(wú)使用avx512ifma指令集優(yōu)化橢圓曲線中的點(diǎn)加計(jì)算的問(wèn)題,目前還沒(méi)有利用avx512ifma指令集的并行數(shù)據(jù)處理優(yōu)勢(shì)來(lái)實(shí)現(xiàn)橢圓曲線點(diǎn)加的計(jì)算加速的方案。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)旨在至少解決相關(guān)技術(shù)中存在的技術(shù)問(wèn)題之一。為此,本技術(shù)提出一種基于avx512ifma的橢圓曲線的并行點(diǎn)加方法,利用avx512ifma單指令多數(shù)據(jù)指令集在同一指令周期內(nèi)可以同時(shí)處理相同類型的多個(gè)數(shù)據(jù)元素的特點(diǎn),對(duì)橢圓曲線點(diǎn)加部分實(shí)現(xiàn)8×1路并行加速,可以獲得大幅度的性能優(yōu)化提升。
2、第一方面,本技術(shù)提供了一種基于avx512ifma的橢圓曲線的并行點(diǎn)加方法,該方法包括:
3、確定參與并行點(diǎn)加的多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo),每對(duì)點(diǎn)數(shù)據(jù)包括加點(diǎn)數(shù)據(jù)和被加點(diǎn)數(shù)據(jù)兩種點(diǎn)數(shù)據(jù);
4、確定多對(duì)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)數(shù)域,目標(biāo)數(shù)域?yàn)闄E圓曲線的有限域或者有限域的二次擴(kuò)域;
5、確定對(duì)應(yīng)于目標(biāo)數(shù)域的大數(shù)運(yùn)算規(guī)則;
6、基于多對(duì)點(diǎn)數(shù)據(jù)中每對(duì)點(diǎn)數(shù)據(jù)中加點(diǎn)數(shù)據(jù)的z坐標(biāo)值z(mì)1和被加點(diǎn)數(shù)據(jù)的z坐標(biāo)值z(mì)2之間的關(guān)系,確定多對(duì)點(diǎn)數(shù)據(jù)的目標(biāo)點(diǎn)加公式;
7、將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)值轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的數(shù)據(jù)結(jié)構(gòu)的目標(biāo)數(shù)據(jù);
8、基于目標(biāo)點(diǎn)加公式和大數(shù)運(yùn)算規(guī)則對(duì)目標(biāo)數(shù)據(jù)進(jìn)行處理,得到多對(duì)點(diǎn)數(shù)據(jù)的點(diǎn)加結(jié)果。
9、根據(jù)本技術(shù)的基于avx512ifma的橢圓曲線的并行點(diǎn)加方法,通過(guò)利用單指令多數(shù)據(jù)指令集在同一指令周期內(nèi)可以同時(shí)處理相同類型的多個(gè)數(shù)據(jù)元素的特點(diǎn),對(duì)橢圓曲線實(shí)現(xiàn)的底層8×1路有限域運(yùn)算以及上層的8×1路點(diǎn)加運(yùn)算,同時(shí),由于底層大數(shù)運(yùn)算規(guī)則是基于目標(biāo)數(shù)域確定的,而點(diǎn)加公式由隨著參與點(diǎn)加計(jì)算的點(diǎn)數(shù)據(jù)的坐標(biāo)關(guān)系的變化而不同,因此,可以提供多種類型的點(diǎn)加運(yùn)算接口,使用avx512ifma指令集對(duì)橢圓曲線點(diǎn)加部分實(shí)現(xiàn)8×1路并行加速,可以獲得大幅度的性能優(yōu)化提升。
10、根據(jù)本技術(shù)的一個(gè)實(shí)施例,多對(duì)點(diǎn)數(shù)據(jù)中每對(duì)點(diǎn)數(shù)據(jù)中加點(diǎn)數(shù)據(jù)的z坐標(biāo)值z(mì)1和被加點(diǎn)數(shù)據(jù)的z坐標(biāo)值z(mì)2之間的關(guān)系包括三種,分別為:
11、z1=z2=1、z1≠z2=1、和z1≠z2。
12、根據(jù)本技術(shù)的一個(gè)實(shí)施例,將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)值轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的數(shù)據(jù)結(jié)構(gòu)的目標(biāo)數(shù)據(jù),包括:
13、將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo)值均轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的目標(biāo)運(yùn)算基數(shù)的坐標(biāo)值向量;
14、將每種點(diǎn)數(shù)據(jù)的每個(gè)坐標(biāo)值對(duì)應(yīng)的多個(gè)坐標(biāo)值向量構(gòu)成一個(gè)向量集,得到目標(biāo)數(shù)據(jù)。
15、根據(jù)本技術(shù)的一個(gè)實(shí)施例,將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo)值均轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的目標(biāo)運(yùn)算基數(shù)的坐標(biāo)值向量,包括:
16、確定多對(duì)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類型;
17、若數(shù)據(jù)類型為標(biāo)準(zhǔn)的對(duì)應(yīng)于所述橢圓曲線所在有限域上的元素,則基于預(yù)設(shè)規(guī)則將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo)值均轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的目標(biāo)運(yùn)算基數(shù)的坐標(biāo)值向量;
18、若數(shù)據(jù)類型為蒙哥馬利域上的表達(dá)的預(yù)設(shè)數(shù)據(jù)類型,則基于對(duì)應(yīng)于目標(biāo)數(shù)域的蒙哥馬利域轉(zhuǎn)換規(guī)則將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo)值均轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的目標(biāo)運(yùn)算基數(shù)的坐標(biāo)值向量。
19、根據(jù)本技術(shù)的一個(gè)實(shí)施例,若數(shù)據(jù)類型為標(biāo)準(zhǔn)的對(duì)應(yīng)于所述橢圓曲線所在有限域上的元素,則基于預(yù)設(shè)規(guī)則將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo)值均轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的目標(biāo)運(yùn)算基數(shù)的坐標(biāo)值向量,包括:
20、對(duì)于多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)值中的任一坐標(biāo)值f,任一坐標(biāo)值f的數(shù)據(jù)類型為標(biāo)準(zhǔn)的對(duì)應(yīng)于所述橢圓曲線所在有限域上的元素,通過(guò)如下公式確定任一坐標(biāo)值f對(duì)應(yīng)的對(duì)應(yīng)于avx512ifma的目標(biāo)運(yùn)算基數(shù)的坐標(biāo)值向量f:
21、f=f0+252f1+2104f2+2156f3+2208f4+2260f5+2312f6+2364f7
22、f=[f0,f1,f2,f3,f4,f5,f6,f7]
23、其中,0≤fi<252且0≤i<8,i為整數(shù),目標(biāo)運(yùn)算基數(shù)為252。
24、根據(jù)本技術(shù)的一個(gè)實(shí)施例,將每種點(diǎn)數(shù)據(jù)的每個(gè)坐標(biāo)值對(duì)應(yīng)的多個(gè)坐標(biāo)值向量構(gòu)成一個(gè)向量集,包括:
25、通過(guò)如下公式確定向量集v:
26、
27、其中,任一種點(diǎn)數(shù)據(jù)的任一坐標(biāo)對(duì)應(yīng)的多個(gè)坐標(biāo)值向量分別為fa,fb,fc,fd,fe,ff,fg和fh,向量集v的任一列對(duì)應(yīng)一個(gè)坐標(biāo)值向量,向量集v的第i行對(duì)應(yīng)一個(gè)寄存器向量vi=[fia,fib,fic,fid,fie,fif,fig,fih],0≤i<8,i為整數(shù)。
28、第二方面,本技術(shù)提供了一種基于avx512ifma的橢圓曲線的并行點(diǎn)加裝置,該裝置包括:
29、第一確定模塊,用于確定參與并行點(diǎn)加的多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)中的每個(gè)坐標(biāo),每對(duì)點(diǎn)數(shù)據(jù)包括加點(diǎn)數(shù)據(jù)和被加點(diǎn)數(shù)據(jù)兩種點(diǎn)數(shù)據(jù);
30、第二確定模塊,用于確定多對(duì)點(diǎn)數(shù)據(jù)對(duì)應(yīng)的目標(biāo)數(shù)域,目標(biāo)數(shù)域?yàn)闄E圓曲線的有限域或者有限域的二次擴(kuò)域;
31、第三確定模塊,用于確定對(duì)應(yīng)于目標(biāo)數(shù)域的大數(shù)運(yùn)算規(guī)則;
32、第四確定模塊,用于基于多對(duì)點(diǎn)數(shù)據(jù)中每對(duì)點(diǎn)數(shù)據(jù)中加點(diǎn)數(shù)據(jù)的z坐標(biāo)值z(mì)1和被加點(diǎn)數(shù)據(jù)的z坐標(biāo)值z(mì)2之間的關(guān)系,確定多對(duì)點(diǎn)數(shù)據(jù)的目標(biāo)點(diǎn)加公式;
33、數(shù)據(jù)排布模塊,用于將多對(duì)點(diǎn)數(shù)據(jù)的坐標(biāo)值轉(zhuǎn)換為對(duì)應(yīng)于avx512ifma的數(shù)據(jù)結(jié)構(gòu)的目標(biāo)數(shù)據(jù);
34、數(shù)據(jù)處理模塊,用于基于目標(biāo)點(diǎn)加公式和大數(shù)運(yùn)算規(guī)則對(duì)目標(biāo)數(shù)據(jù)進(jìn)行處理,得到多對(duì)點(diǎn)數(shù)據(jù)的點(diǎn)加結(jié)果。
35、根據(jù)本技術(shù)的基于avx512ifma的橢圓曲線的并行點(diǎn)加裝置,通過(guò)利用單指令多數(shù)據(jù)指令集在同一指令周期內(nèi)可以同時(shí)處理相同類型的多個(gè)數(shù)據(jù)元素的特點(diǎn),對(duì)橢圓曲線實(shí)現(xiàn)的底層8×1路有限域運(yùn)算以及上層的8×1路點(diǎn)加運(yùn)算,同時(shí),由于底層大數(shù)運(yùn)算規(guī)則是基于目標(biāo)數(shù)域確定的,而點(diǎn)加公式由隨著參與點(diǎn)加計(jì)算的點(diǎn)數(shù)據(jù)的坐標(biāo)關(guān)系的變化而不同,因此,可以提供多種類型的點(diǎn)加運(yùn)算接口,使用avx512ifma指令集對(duì)橢圓曲線點(diǎn)加部分實(shí)現(xiàn)8×1路并行加速,可以獲得大幅度的性能優(yōu)化提升。
36、第三方面,本技術(shù)提供了一種電子設(shè)備,包括存儲(chǔ)器、處理器及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)程序,處理器執(zhí)行計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)如上述第一方面的基于avx512ifma的橢圓曲線的并行點(diǎn)加方法。
37、第四方面,本技術(shù)提供了一種非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述第一方面的基于avx512ifma的橢圓曲線的并行點(diǎn)加方法。
38、第五方面,本技術(shù)提供了一種芯片,芯片包括處理器和通信接口,通信接口和處理器耦合,處理器用于運(yùn)行程序或指令,實(shí)現(xiàn)如第一方面的基于avx512ifma的橢圓曲線的并行點(diǎn)加方法。
39、第六方面,本技術(shù)提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上述第一方面的基于avx512ifma的橢圓曲線的并行點(diǎn)加方法。
40、本技術(shù)的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過(guò)本技術(shù)的實(shí)踐了解到。