本公開實施例涉及計算機,尤其涉及一種數(shù)字簽名驗證方法、裝置、電子設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、在基于橢圓曲線的密碼算法中,點乘運算[k]p是一項重要的操作,對系統(tǒng)運行效率起決定性作用。在包括橢圓曲線的數(shù)字簽名和密鑰交換等密碼協(xié)議中,會用到多點乘運算[u]p+[v]q。
2、目前,在數(shù)字簽名驗證過程中進行多點乘運算時,先分別計算[u]p和[v]q,然后將[u]p和[v]q相加,獲得多點乘運算[u]p+[v]q的計算結(jié)果。
3、然而,分別計算[u]p和[v]q后相加,獲得多點乘運算[u]p+[v]q結(jié)果的方式,多點乘運算過程中包括較多數(shù)量的點加運算和倍點運算,導致多點乘運算的效率較低,進而導致數(shù)字簽名驗證的效率較低。
技術(shù)實現(xiàn)思路
1、有鑒于此,本公開實施例提供一種數(shù)字簽名驗證方法、裝置、電子設(shè)備和存儲介質(zhì),以至少部分解決上述問題。
2、根據(jù)本公開實施例的第一方面,提供了一種數(shù)字簽名驗證方法,包括:獲取目標數(shù)據(jù)和所述目標數(shù)據(jù)的數(shù)字簽名,并獲取第一點值和第二點值,所述第一點值對應的點為橢圓曲線的基點,所述第二點值為公鑰,且所述第二點值對應的點為所述橢圓曲線上與所述基點不同的點;根據(jù)所述目標數(shù)據(jù)和所述數(shù)字簽名,生成第一標量值和第二標量值;對所述第一點值進行預計算,獲得第一預計算結(jié)果,所述第一預計算結(jié)果包括多個第一預計算點值,所述第一預計算點值等于所述第一點值根據(jù)所述第一標量值的編碼方式,沿所述橢圓曲線進行整數(shù)次加法運算的結(jié)果,不同的所述第一預計算點值對應不同整數(shù)次的加法運算;對所述第二點值進行預計算,獲得第二預計算結(jié)果,所述第二預計算結(jié)果包括多個第二預計算點值,所述第二預計算點值等于所述第二點值根據(jù)所述第二標量值的編碼方式,沿所述橢圓曲線進行整數(shù)次加法運算的結(jié)果,不同的所述第二預計算點值對應不同整數(shù)次的加法運算;對所述第一預計算點值和所述第二預計算點值分別進行坐標轉(zhuǎn)換,使所述第一預計算點值進行坐標轉(zhuǎn)換后對應的第三預計算點值的z坐標為1,并使所述第二預計算點值進行坐標轉(zhuǎn)換后對應的第四預計算點值的z坐標為1;根據(jù)所述第三預計算點值和所述第四預計算點值,計算所述第一標量值和所述第一點值的點乘結(jié)果,與所述第二標量值和所述第二點值的點乘結(jié)果的和,獲得驗證點值;根據(jù)所述驗證點值確定所述數(shù)字簽名的有效性。
3、在一種可能的實現(xiàn)方式中,所述對所述第一預計算點值和所述第二預計算點值分別進行坐標轉(zhuǎn)換,包括:通過坐標轉(zhuǎn)換算法對所述第一預計算結(jié)果進行處理,獲得每個所述第一預計算點值進行坐標轉(zhuǎn)換后對應的所述第三預計算點值;通過所述坐標轉(zhuǎn)換算法對所述第二預計算結(jié)果進行處理,獲得每個所述第二預計算點值進行坐標轉(zhuǎn)換后對應的所述第四預計算點值;其中,所述坐標轉(zhuǎn)換算法包括:確定a1為預計算結(jié)果中第1個預計算點值的z坐標為z1,并確定ai=(ai-1·zi)mod?p,zi表征所述預計算結(jié)果中第i個預計算點值的z坐標,i為大于1且小于或等于n的整數(shù),n為所述預計算結(jié)果中預計算點值的數(shù)量,mod表征取余運算,p表征與所述橢圓曲線對應的預設(shè)質(zhì)數(shù);確定bn=(an)-1mod?p,并確定bi=(bi+1·zi+1)mod?p,i為大于0且小于n的整數(shù);確定c1=b1,并確定ci=(bi·ai-1)mod?p,i為大于1且小于或等于n的整數(shù);確定所述第i個預計算點值進行坐標轉(zhuǎn)換后對應的點值為(x′i,yi′,1),x′i=(xi·ti)mod?p,yi′=(yi·t′i)mod?p,ti=(ci·ci)mod?p,t′i=(ti·ci)mod?p。
4、在一種可能的實現(xiàn)方式中,所述根據(jù)所述第三預計算點值和所述第四預計算點值,確定所述第一標量值和所述第一點值的點乘結(jié)果,與所述第二標量值和所述第二點值的點乘結(jié)果的和,獲得驗證點值,包括:對所述第一標量值進行編碼獲得第一編碼結(jié)果,所述第一編碼結(jié)果包括多個編碼值;對所述第二標量值進行編碼獲得第二編碼結(jié)果,所述第二編碼結(jié)果包括多個編碼值;對第i-1個結(jié)果值進行倍點運算,獲得第i變量值,其中,i為大于0且小于或等于m的整數(shù),m為所述第一編碼結(jié)果包括的編碼值的數(shù)量,所述第一編碼結(jié)果和所述第二編碼結(jié)果包括的編碼值的數(shù)量相等,第0個結(jié)果值等于所述橢圓曲線的無窮遠點;根據(jù)第i變量值和[ui]p確定第i中間結(jié)果值,其中,在計算至少部分所述第i中間結(jié)果值過程中,計算所述第i變量值與[ui]p是否相等,獲得第一判斷結(jié)果和第一中間結(jié)果,在所述第一判斷結(jié)果指示所述第i變量值與[ui]p不相等時,所述第一中間結(jié)果用于計算所述第i中間結(jié)果值;ui表征所述第一編碼結(jié)果中的第i個編碼值,[]表征點乘運算,p表征所述第一點值,[ui]p從所述多個第三預計算點值中確定;根據(jù)第i中間結(jié)果值和[vi]q確定第i個結(jié)果值,其中,在計算至少部分所述第i個結(jié)果值過程中,計算所述第i中間結(jié)果值與[vi]q是否相等,獲得第二判斷結(jié)果和第二中間結(jié)果,在所述第二判斷結(jié)果指示所述第i中間結(jié)果值與[vi]q不相等時,所述第二中間結(jié)果用于計算所述第i個結(jié)果值;vi表征所述第二編碼結(jié)果中的第i個編碼值,q表征所述第二點值,[vi]q從所述多個第四預計算點值中確定;將第m個結(jié)果值確定為所述驗證點值。
5、在一種可能的實現(xiàn)方式中,所述根據(jù)第i變量值和[ui]p確定第i中間結(jié)果值,包括:若ui=0,則確定第i中間結(jié)果值等于第i變量值;若ui≠0,則將所述第i變量值作為相等判斷算法的第一輸入值,將[ui]p作為所述相等判斷算法的第二輸入值,通過所述相等判斷算法計算所述第i變量值與[ui]p是否相等,獲得所述第一判斷結(jié)果和所述第一中間結(jié)果,并根據(jù)所述第一判斷結(jié)果和所述第一中間結(jié)果,確定所述第i中間結(jié)果值。
6、在一種可能的實現(xiàn)方式中,所述根據(jù)第i中間結(jié)果值和[vi]q確定第i個結(jié)果值,包括:若vi=0,則確定第i個結(jié)果值等于第i中間結(jié)果值;若vi≠0,則將所述第i中間結(jié)果值作為所述相等判斷算法的第一輸入值,將[vi]q作為所述相等判斷算法的第二輸入值,通過所述相等判斷算法計算所述第i中間結(jié)果值與[vi]q是否相等,獲得所述第二判斷結(jié)果和所述第二中間結(jié)果,并根據(jù)所述第二判斷結(jié)果和所述第二中間結(jié)果,確定所述第i個結(jié)果值。
7、在一種可能的實現(xiàn)方式中,所述根據(jù)所述第一判斷結(jié)果和所述第一中間結(jié)果,確定所述第i中間結(jié)果值,包括:根據(jù)所述第一判斷結(jié)果,如果所述第i變量值與[ui]p相等,則將[ui]p的倍點運算結(jié)果確定為第i中間結(jié)果值,如果所述第i變量值與[ui]p不相等,則根據(jù)所述第i變量值、[ui]p和所述第一中間結(jié)果,計算第i中間結(jié)果值。
8、在一種可能的實現(xiàn)方式中,所述根據(jù)所述第二判斷結(jié)果和所述第二中間結(jié)果,確定所述第i個結(jié)果值,包括:根據(jù)所述第二判斷結(jié)果,如果所述第i中間結(jié)果值與[vi]q相等,則將[vi]q的倍點運算結(jié)果確定為所述第i個結(jié)果值,如果所述第i中間結(jié)果值與[vi]q不相等,則根據(jù)所述第i中間結(jié)果值、[vi]q和所述第二中間結(jié)果,計算所述第i個結(jié)果值。
9、在一種可能的實現(xiàn)方式中,所述相等判斷算法包括:如果(e-g)mod?p=0且(f-h)mod?p=0,則確定第一輸入值和第二輸入值相等,所述相等判斷算法的第一輸入值為(x1,y1,z1),所述相等判斷算法的第二輸入值為(x2,y2,z2),e=(x2·a)mod?p,f=(y2·b)modp,g=(x1·c)mod?p,h=(y1·d)mod?p,a=(z1·z1)mod?p,b=(a·z1)mod?p,c=(z2·z2)mod?p,d=(c·z2)mod?p,e、f、g和h為中間結(jié)果,p表征與所述橢圓曲線對應的預設(shè)質(zhì)數(shù)。
10、在一種可能的實現(xiàn)方式中,所述根據(jù)所述第i變量值、[ui]p和所述第一中間結(jié)果,計算第i中間結(jié)果值,包括:將所述第i變量值作為目標算法的第一輸入,將[ui]p作為所述目標算法的第二輸入,將所述第一中間結(jié)果作為所述目標算法的第三輸入,通過所述目標算法計算所述第i中間結(jié)果值;所述根據(jù)所述第i中間結(jié)果值、[vi]q和所述第二中間結(jié)果,計算所述第i個結(jié)果值,包括:將所述第i中間結(jié)果值作為所述目標算法的第一輸入,將[vi]q作為所述目標算法的第二輸入,將所述第二中間結(jié)果作為所述目標算法的第三輸入,通過所述目標算法計算所述第i個結(jié)果值;其中,所述目標算法包括:所述目標算法的輸出為(x5,y5,z5),所述目標算法的第一輸入為(x3,y3,z3),所述目標算法的第二輸入為(x4,y4,z4),所述目標算法的第三輸入為(e,f,g,h),x5=j2-(l+2m)mod?p,y5=j·(m-x5)-nmodp,z5=(z3·z4·i)mod?p,i=(e-g)mod?p,j=(f-h)mod?p,k=i2mod?p,l=(k·i)mod?p,m=(k·g)mod?p,n=(h·l)mod?p,p表征與所述橢圓曲線對應的預設(shè)質(zhì)數(shù)。
11、根據(jù)本公開實施例的第二方面,提供了一種數(shù)字簽名驗證裝置,包括:獲取單元,用于獲取目標數(shù)據(jù)和所述目標數(shù)據(jù)的數(shù)字簽名,并獲取第一點值和第二點值,所述第一點值對應的點為橢圓曲線的基點,所述第二點值為公鑰,且所述第二點值對應的點為所述橢圓曲線上與所述基點不同的點;生成單元,用于根據(jù)所述目標數(shù)據(jù)和所述數(shù)字簽名,生成第一標量值和第二標量值;第一預計算單元,用于對所述第一點值進行預計算,獲得第一預計算結(jié)果,所述第一預計算結(jié)果包括多個第一預計算點值,所述第一預計算點值等于所述第一點值根據(jù)所述第一標量值的編碼方式,沿所述橢圓曲線進行整數(shù)次加法運算的結(jié)果,不同的所述第一預計算點值對應不同整數(shù)次的加法運算;第二預計算單元,用于對所述第二點值進行預計算,獲得第二預計算結(jié)果,所述第二預計算結(jié)果包括多個第二預計算點值,所述第二預計算點值等于所述第二點值根據(jù)所述第二標量值的編碼方式,沿所述橢圓曲線進行整數(shù)次加法運算的結(jié)果,不同的所述第二預計算點值對應不同整數(shù)次的加法運算;轉(zhuǎn)換單元,用于對所述第一預計算點值和所述第二預計算點值分別進行坐標轉(zhuǎn)換,使所述第一預計算點值進行坐標轉(zhuǎn)換后對應的第三預計算點值的z坐標為1,并使所述第二預計算點值進行坐標轉(zhuǎn)換后對應的第四預計算點值的z坐標為1;計算單元,用于根據(jù)所述第三預計算點值和所述第四預計算點值,計算所述第一標量值和所述第一點值的點乘結(jié)果,與所述第二標量值和所述第二點值的點乘結(jié)果的和,獲得驗證點值;驗證單元,用于根據(jù)所述驗證點值確定所述數(shù)字簽名的有效性。
12、根據(jù)本公開實施例的第三方面,提供了一種數(shù)字簽名芯片,所述數(shù)字簽名芯片用于執(zhí)行如上述第一方面或第一方面的任一可能實現(xiàn)方式所述的方法。
13、根據(jù)本公開實施例的第四方面,提供了一種電子設(shè)備,包括處理器、通信接口、存儲器和通信總線,其中,所述處理器、所述通信接口和所述存儲器通過所述通信總線完成相互間的通信;所述存儲器,用于存儲計算機程序;所述處理器,用于通過運行所述存儲器上所存儲的所述計算機程序來執(zhí)行上述第一方面或第一方面的任一可能實現(xiàn)方式所述的方法。
14、根據(jù)本公開實施例的第五方面,提供了一種計算機存儲介質(zhì),所述計算機存儲介質(zhì)上存儲有計算機程序,該計算機程序被處理器執(zhí)行時實現(xiàn)如上述第一方面或第一方面的任一可能實現(xiàn)方式所述的方法。
15、根據(jù)本公開實施例的第六方面,提供了一種計算機程序產(chǎn)品,包括計算機程序,所述計算機程序在被處理器執(zhí)行時實現(xiàn)如上述第一方面或第一方面的任一可能實現(xiàn)方式所述的方法。
16、根據(jù)本公開實施例的方案,對第一點值進行預計算獲得包括多個第一預計算點值的第一預計算結(jié)果,并對第二點值進行預計算獲得包括多個第二預計算點值的第二預計算結(jié)果后,將第一預計算點值轉(zhuǎn)換為z坐標為1的第三預計算點值,將第二預計算點值轉(zhuǎn)換為z坐標為1的第四預計算點值,進而在根據(jù)目標數(shù)據(jù)和數(shù)字簽名生成第一標量值和第二標量值后,根據(jù)第三預計算點值和第四預計算點值,計算第一標量值與第一點值的點乘結(jié)果與第二標量值與第二點值的點乘結(jié)果的和,獲得驗證點值,進而根據(jù)驗證點值確定數(shù)字簽名的有效性。通過對第一點值和第二點值進行預計算,并對獲得的第一預計算點值和第二預計算點值進行坐標轉(zhuǎn)換,獲得第三預計算點值和第四預計算點值,在進行多點乘運算時可以直接從第三預計算點值和第四預計算點值中獲取點乘運算結(jié)果,無需多次重復同一點乘運算結(jié)果,提高了計算效率。通過坐標轉(zhuǎn)換獲得第三預計算點值和第四預計算點值,由于第三預計算點值和第四預計算點值的z坐標均等于1,降低了后續(xù)多點乘運算中點加運算和倍點運算的計算代價,提高了多點乘運算的效率,從而可以提高數(shù)字簽名驗證的效率。