包括與標(biāo)量或求冪的乘法運(yùn)算的密碼學(xué)方法
【專利說(shuō)明】包括與標(biāo)量或求冪的乘法運(yùn)算的密碼學(xué)方法
[0001] 本發(fā)明涉及在電子設(shè)備中的橢圓曲線密碼學(xué)的實(shí)現(xiàn),以及更具體地涉及用于計(jì)算 與屬于橢圓曲線的點(diǎn)的標(biāo)量乘法的結(jié)果的方法
[0002] 各種已知的橢圓曲線密碼學(xué)方法基于標(biāo)量乘法,標(biāo)量乘法的數(shù)學(xué)表達(dá)式是: [k] ?p=p[+]P[+]... [+]p(k次),P是在橢圓曲線上選擇的點(diǎn),k是整數(shù),以及" [+] "是應(yīng) 用于橢圓曲線的點(diǎn)的加法運(yùn)算符。數(shù)字k是例如私有密鑰,以及這個(gè)運(yùn)算的結(jié)果點(diǎn)[k] *p, 或結(jié)果點(diǎn)的仿射坐標(biāo)(affinecoordinates)中的一個(gè)仿射坐標(biāo),能夠用作公開密鑰。實(shí)際 上,在知道[k] *P和點(diǎn)P的坐標(biāo)的情況下,找到數(shù)目k的值可能是極其困難的。例如在簽名 計(jì)算期間使用這個(gè)運(yùn)算,或這個(gè)運(yùn)算用于生成密碼學(xué)密鑰,或甚至用于將消息譯成密碼?;?于橢圓曲線,諸如E⑶SA( "橢圓曲線數(shù)字簽名算法")、E⑶H(橢圓曲線Diffie-Hellman)、 ECIES(橢圓曲線綜合的密碼學(xué)方案)等,通過(guò)各種密碼學(xué)算法來(lái)實(shí)現(xiàn)這個(gè)運(yùn)算。
[0003] 在橢圓曲線的點(diǎn)之間的運(yùn)算相當(dāng)于在形式Fq的伽羅華域中在這些點(diǎn)的坐標(biāo)上的 運(yùn)算,q是素?cái)?shù)P,或2的冪(形式2m)。標(biāo)量乘法運(yùn)算一般被分解成一連串的對(duì)點(diǎn)進(jìn)行加法 和雙倍的運(yùn)算。因此,一種眾所周知的方法涉及借助于在附錄I中出現(xiàn)的"雙倍&加法"算 法A1或A1'來(lái)執(zhí)行標(biāo)量乘法計(jì)算。算法A1可以說(shuō)是"從左到右",因?yàn)橛?jì)算環(huán)路的第一步 驟從處理標(biāo)量數(shù)k的最高位開始,直到最低位。算法A1'可以說(shuō)是"從右到左",因?yàn)橛?jì)算環(huán) 路的第一步驟從處理標(biāo)量數(shù)的最低位開始,直到最高位。
[0004] 這些算法包括:針對(duì)每次迭代,即,指數(shù)的每個(gè)比特,橢圓曲線的兩個(gè)相同點(diǎn)R的 加法,以及如果通過(guò)迭代所處理的標(biāo)量的比特等于1,則點(diǎn)R與橢圓曲線的另一個(gè)點(diǎn)P的加 法。不同的函數(shù)一般用于執(zhí)行這些運(yùn)算中的每個(gè)運(yùn)算,借助于雙倍函數(shù)或"DOUBLE"函數(shù)來(lái) 執(zhí)行兩個(gè)相同點(diǎn)的加法,而借助于加法函數(shù)或"ADD"函數(shù)來(lái)執(zhí)行兩個(gè)不同點(diǎn)的加法。這個(gè) 區(qū)別是由于以下事實(shí):當(dāng)與相反的情況相比,點(diǎn)P和Q是相同的時(shí),借助于DOUBLE函數(shù)能夠 更加快速地計(jì)算P[+]Q。在某些坐標(biāo)系統(tǒng)中,兩個(gè)相同點(diǎn)的加法能夠?qū)е鲁粤?。因此,?一種計(jì)算模式是需要的。
[0005] 在智能卡類型的電子設(shè)備中,密碼學(xué)計(jì)算一般由諸如算術(shù)協(xié)處理器或密碼處理器 的特定處理器來(lái)執(zhí)行。相對(duì)于生成密鑰、計(jì)算簽名、檢查簽名或執(zhí)行加密或解密運(yùn)算它花費(fèi) 的總時(shí)間而言," [k] *P"的計(jì)算,以及更具體地橢圓曲線的點(diǎn)的加法的執(zhí)行,占據(jù)處理器的 計(jì)算時(shí)間的大部分。使用可替代地依賴于將執(zhí)行的計(jì)算的類型的DOUBLE函數(shù)或ADD函數(shù) 優(yōu)化了總的加密、解密、簽名或簽名檢查計(jì)算時(shí)間。
[0006] 然而,使用兩個(gè)不同的DOUBLE和ADD函數(shù)導(dǎo)致由簡(jiǎn)單功率分析(SPA),即通過(guò)分 析卡的電流消耗,能夠檢測(cè)的信息泄露。因?yàn)镈OUBLE函數(shù)具有比ADD函數(shù)短的運(yùn)行時(shí)間, 因此,能夠通過(guò)觀察組件的電流消耗曲線來(lái)區(qū)分這兩種運(yùn)算。"電流消耗"意味著任何可以 觀察到的物理值,該可以觀察到的物理值揭示執(zhí)行運(yùn)算的電子組件的運(yùn)算,特別是該組件 消耗的電流或電磁輻射。因此,在運(yùn)行算法A1的組件的電流消耗曲線上,能夠區(qū)分DOUBLE 函數(shù)的消耗輪廓和ADD函數(shù)的消耗輪廓。由ADD運(yùn)算跟隨的DOUBLE運(yùn)算(由步驟2. 2跟 隨步驟2. 1)揭示了標(biāo)量數(shù)k的比特等于1,因?yàn)槌虿襟E2.2的條件分支要求的是,滿足條 件ks= 1。相反,由另一個(gè)DOUBLE運(yùn)算跟隨的DOUBLE運(yùn)算(由另一個(gè)步驟2. 1跟隨步驟 2. 1)揭示了標(biāo)量數(shù)k的比特等于0。因此,通過(guò)電流消耗曲線的簡(jiǎn)單觀察,能夠陸續(xù)地發(fā)現(xiàn) 標(biāo)量數(shù)k的比特。
[0007] 為了克服這個(gè)缺點(diǎn),能夠(如果可能的話)借助于僅ADD函數(shù)而不使用DOUBLE函 數(shù)來(lái)執(zhí)行算法A1和A1'的步驟2. 1和2. 2。然而,因?yàn)樗惴ˋ1或A1'不規(guī)整(regular), 因此電流消耗的更詳細(xì)的分析使得步驟2. 1能夠與步驟2. 2進(jìn)行區(qū)分。實(shí)際上,在這種情 況下,當(dāng)兩個(gè)加法對(duì)應(yīng)于兩個(gè)步驟2. 1的連續(xù)執(zhí)行(比特ks等于0)或?qū)?yīng)于由步驟2. 2跟 隨的步驟2. 1的執(zhí)行(比特ks等于1)時(shí),在兩個(gè)連續(xù)加法之間流逝的時(shí)間不是相同的。因 此,攻擊者能夠在加法之間延伸的消耗曲線上進(jìn)行"縮放(zoom) ",以及將看到揭露條件分 支的時(shí)間不對(duì)稱以及從而揭露標(biāo)量數(shù)的比特的值。
[0008] 在附錄I中顯示的算法A2,被稱為"蒙哥馬利階梯(MontgomeryLadder) ",也使得 能夠執(zhí)行標(biāo)量乘法計(jì)算。在每次迭代時(shí),這個(gè)算法涉及執(zhí)行兩個(gè)加法,一個(gè)加法應(yīng)用于兩個(gè) 不同的點(diǎn),以及另一個(gè)加法應(yīng)用于兩個(gè)相同的點(diǎn),以及因此能夠由減法或雙倍運(yùn)算來(lái)執(zhí)行。 在每次迭代時(shí),兩個(gè)寄存器RpRi*的一個(gè)寄存器接收兩個(gè)寄存器的內(nèi)容的合,以及這兩個(gè) 寄存器中的另一個(gè)寄存器接收這個(gè)寄存器的內(nèi)容的雙倍。如果對(duì)應(yīng)于標(biāo)量數(shù)k的正在進(jìn)行 中的迭代的比特匕是0,則寄存器Ri接收加法的和,以及寄存器L的內(nèi)容被雙倍,以及如果 比特匕是1則進(jìn)行相反地操作。
[0009] 這個(gè)算法提供了完全規(guī)整的優(yōu)點(diǎn)在于:每次迭代系統(tǒng)性地包括兩個(gè)加法,或一個(gè) 加法和雙倍運(yùn)算。在不是必須添加任何虛擬(du_y)運(yùn)算的情況下,獲得這個(gè)優(yōu)點(diǎn),因此不 是必須增加計(jì)算時(shí)間。
[0010] 還能夠減少標(biāo)量數(shù)與適當(dāng)選擇的橢圓曲線的點(diǎn)的表示的乘積的計(jì)算時(shí)間。實(shí)際 上,在仿射坐標(biāo)中的雙倍和加法運(yùn)算包括:反演計(jì)算(inversioncalculation),反演計(jì)算 要求對(duì)應(yīng)于數(shù)十倍乘法的計(jì)算時(shí)間的計(jì)算時(shí)間。一種眾所周知的方法涉及:通過(guò)使用在諸 如齊次或雅可比射影坐標(biāo)的射影坐標(biāo)中的表示來(lái)去除這種反演計(jì)算。在齊次射影坐標(biāo)中的 表示由將仿射坐標(biāo)(x,y)轉(zhuǎn)換成形式(X/Z,Y/Z)的坐標(biāo)組成,Z不同于0。于是,魏爾斯特 拉斯橢圓曲線的方程式變成Y2Z=X3+aXZ2+bZ3。在雅可比射影坐標(biāo)中的表示由將仿射坐標(biāo) (x,y)轉(zhuǎn)換成形式(X/Z2,Y/Z3)的坐標(biāo)組成,Z不同于0。魏爾斯特拉斯橢圓曲線的方程式 變成Y2=X3+aXZ4+bZ6。
[0011] 因此,可以期望的是進(jìn)一步減少用于執(zhí)行應(yīng)用于橢圓曲線的點(diǎn)的標(biāo)量乘法計(jì)算的 方法的計(jì)算時(shí)間。還可以期望的是保護(hù)此類方法免受上述隱蔽信道攻擊,同時(shí)避免不利地 影響計(jì)算時(shí)間。
[0012] 一些實(shí)施例涉及在包括處理器的電子設(shè)備中實(shí)現(xiàn)的密碼學(xué)數(shù)據(jù)處理方法,該方法 包括以下步驟:提供在伽羅華域中橢圓曲線的點(diǎn),和第一整數(shù),以及計(jì)算該點(diǎn)與第一數(shù)的標(biāo) 量乘法,該點(diǎn)的坐標(biāo)和第一數(shù)具有比可以由該處理器直接處理的字的大小大的大小。根據(jù) 一個(gè)實(shí)施例,該點(diǎn)與第一數(shù)的標(biāo)量乘法計(jì)算包括以下步驟:存儲(chǔ)一系列的多個(gè)點(diǎn),每個(gè)點(diǎn) 從該點(diǎn)與2的屬于一系列的整數(shù)的冪的標(biāo)量乘積而產(chǎn)生,初始化屬于橢圓曲線的所產(chǎn)生的 點(diǎn),執(zhí)行若干次迭代以考慮第一數(shù)的比特中的每個(gè)比特僅一次,每次迭代包括第一數(shù)的數(shù) 個(gè)比特的組合的計(jì)算,以及如果該組合是非零,則在所產(chǎn)生的點(diǎn)和對(duì)應(yīng)于第一數(shù)的比特的 組合的比特的排名(ranks)的所存儲(chǔ)的多個(gè)點(diǎn)中的一個(gè)點(diǎn)之間進(jìn)行加法計(jì)算,以及在處理 器的輸出處提供所產(chǎn)生的點(diǎn)作為該點(diǎn)與第一數(shù)的標(biāo)量乘法計(jì)算的結(jié)果。
[0013] 根據(jù)一個(gè)實(shí)施例,當(dāng)計(jì)算所產(chǎn)生的點(diǎn)時(shí),以隨機(jī)順序或偽隨機(jī)順序來(lái)考慮第一數(shù) 的比特。
[0014] 根據(jù)一個(gè)實(shí)施例,在仿射坐標(biāo)中執(zhí)行在所產(chǎn)生的點(diǎn)和所存儲(chǔ)的倍數(shù)(multiples) 之間的加法計(jì)算。
[0015] 根據(jù)一個(gè)實(shí)施例,在射影坐標(biāo)中執(zhí)行在所產(chǎn)生的點(diǎn)和所存儲(chǔ)的結(jié)果之間的加法計(jì) 算。
[0016] 根據(jù)一個(gè)實(shí)施例,該點(diǎn)的標(biāo)量倍數(shù)被存儲(chǔ)在仿射坐標(biāo)中,以及通過(guò)將具有被設(shè)置 為1的值的第三坐標(biāo)加到仿射坐標(biāo),將所存儲(chǔ)的結(jié)果轉(zhuǎn)換到攝影坐標(biāo)中。
[0017] 根據(jù)一個(gè)實(shí)施例,第一數(shù)和該點(diǎn)的坐標(biāo)被NAF編碼,該方法包括:針對(duì)第一數(shù)的等 于-1的每個(gè)比特或小于或等于-1的比特的組合,在所產(chǎn)生的點(diǎn)和對(duì)應(yīng)于第一數(shù)的等于-1 的比特或等于或小于-1的比特的組合的排名的所存儲(chǔ)的倍數(shù)的對(duì)立面(opposite)之間進(jìn) 行加法計(jì)算。
[0018] 根據(jù)一個(gè)實(shí)施例,該方法包括生成一對(duì)私有密鑰和公開密鑰的階段,包括以下步 驟:隨機(jī)地選擇第二數(shù)作為私有密鑰,選擇橢圓曲線的點(diǎn)作為基點(diǎn),已經(jīng)從基點(diǎn)計(jì)算了所存 儲(chǔ)的倍數(shù),以及使用所存儲(chǔ)的多個(gè)點(diǎn)來(lái)計(jì)算基點(diǎn)與第二數(shù)的標(biāo)量乘法的所產(chǎn)生的點(diǎn),所產(chǎn) 生的點(diǎn)或它的坐標(biāo)中的一個(gè)坐標(biāo)被選擇作為對(duì)應(yīng)于私有密鑰的公開密鑰。
[0019] 根據(jù)一個(gè)實(shí)施例,該方法包括用于對(duì)消息進(jìn)行簽名的階段,包括以下步驟:隨機(jī)地 選擇第二數(shù),選擇橢圓曲線的點(diǎn)作為基點(diǎn),已經(jīng)從基點(diǎn)計(jì)算了所存儲(chǔ)的倍數(shù),以及使用所存 儲(chǔ)的倍數(shù)來(lái)計(jì)算來(lái)自基點(diǎn)與第二數(shù)的標(biāo)量乘法的所產(chǎn)生的點(diǎn),將哈希函數(shù)應(yīng)用于將被簽名 的消息,以及通過(guò)以下方程式來(lái)計(jì)算該消息的簽名:
[0020] x=imodn
[0021] y=kT1 (H(m)+sx)modn,
[0022] 其中x和y表示消息m的簽名,i是所產(chǎn)生的點(diǎn)的坐標(biāo),k是第二數(shù),H(m)是應(yīng)用 于消息m的哈希函數(shù),s是用作私有密鑰的數(shù),以及n是最小的正整數(shù),使得n與基點(diǎn)的標(biāo) 量乘積