專利名稱:用于計算標(biāo)量乘法的結(jié)果的設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明的實施例涉及密碼學(xué)領(lǐng)域,并且特別涉及用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備和方法。
背景技術(shù):
邊信道攻擊是用于密碼分析的一類方法。與對于密碼應(yīng)用的傳統(tǒng)攻擊形成對比,攻擊者在這里沒有試圖破解基礎(chǔ)的抽象數(shù)學(xué)算法,而是攻擊密碼算法的特殊實施。在這方面,攻擊者使用具體實施的可容易訪問的物理測量變量,舉例來說,如計算的運行時間、在計算期間處理器的功率消耗和電磁輻射、或具有誘發(fā)錯誤的實施的行為。單個計算的物理測量值可以被直接分析(例如在簡單功率分析SPA中),或者攻擊者記錄幾個計算的測量值(例如使用存儲示波器)并且隨后統(tǒng)計地評估測量值(例如在差分功率分析DPA中)。邊信道攻擊比傳統(tǒng)的密碼分析技術(shù)常常更高效得多,并且從算法的觀點看來,當(dāng)這個算法的實施未被完善來對抗邊信道攻擊時,邊信道攻擊甚至可以干擾被認為是安全的方法。特別是對于智能卡和嵌入式應(yīng)用而言,對抗邊信道攻擊的對策是必要的。基于公鑰密碼術(shù)的現(xiàn)代密碼系統(tǒng)使用物理裝置(例如智能卡或軟件狗)以安全地存儲秘密密鑰材料以及執(zhí)行非對稱密碼操作(比如數(shù)字簽名或密鑰交換)。作為非對稱密碼術(shù)的基礎(chǔ),乘法群或橢圓曲線可以是適合的。后者具有對于相同的密鑰長度而言安全級別更高的優(yōu)點,因為用于攻擊乘法群的最佳的已知算法具有亞指數(shù)運行時間,而只有具有指數(shù)運行時間的攻擊對于橢圓曲線密碼術(shù)而言是已知的。橢圓曲線E是具有有限域K中的系數(shù)的三次方程ys+aixy+a^xs+ay+ap+aj;的解的集合,它沒有奇點,即該方程的解(r,s)不存在,從而對于該曲線方程的X和對于y的偏導(dǎo)數(shù)在(r,s)中具有公共零點。橢圓曲線E的解連同在無限遠處作為零元素的點0—起形成加法阿貝爾群,它的群定律可以用幾何學(xué)來解釋。這里重要的是來自代數(shù)幾何學(xué)的兩個結(jié)果。每條直線與橢圓曲線相交在三個(不一定是不同的)點,并且對于兩個(不一定是不同的)點,可以計算第三個點,從而這三個點的和是零元素O。令P和Q是E上的兩個點,其中P^-Q,以及g是穿過P和Q的直線。(在P=Q的情況下,該直線是切線)。這條直線與橢圓曲線相交在第三個點R處。通過在X軸對R進行鏡像,獲得S=P+Q。P=-Q的情況可以被簡短地討論。然后直線g的斜度是無窮大,并且第三次相交是在無限遠處的點O。類似于向量空間中標(biāo)量乘法的定義,在橢圓曲線上的標(biāo)量乘法被定義。令P是橢圓曲線E的點,以及令k是整數(shù)。標(biāo)量乘法k*P對應(yīng)于P本身的k次相加。這個標(biāo)量乘法形成基于橢圓曲線的密碼系統(tǒng)中的重要元素。利用密碼能力強的橢圓曲線,標(biāo)量乘法代表單向函數(shù),即,它可以以多項式時間被執(zhí)行,但是只能以指數(shù)時間被反轉(zhuǎn)。因此利用中等參數(shù)長度進行標(biāo)量的高效算術(shù)重建已經(jīng)是無法想象的。利用仔細選擇的密碼參數(shù),實際上僅僅無保護的實施為通過邊信道的分析的攻擊提供可能性。令Ov1,…,Idci)是標(biāo)量k的二進制表示,以及令P是橢圓曲線上的點。標(biāo)量乘法 Q=k*P可以使用以下的簡單的(加倍和相加)算法而被計算1)Q —O
2)for i — n-1 to 0 do
3)Q — 2*Q
4)if bi=l then Q — Q+P
5)end
利用簡單功率分析攻擊(SPA),評估在單個標(biāo)量乘法k*P期間硬件的功率消耗的分布曲線(profile)。標(biāo)量乘法的算法基本上包括橢圓曲線上的點的加法和加倍。這些運算是通過在有限域K中的幾次數(shù)學(xué)運算來實現(xiàn)的,并且對于自然的(naive)實施而言關(guān)于執(zhí)行的運算的次數(shù)和類型是不同的。因此,加法的功率消耗的分布曲線與加倍的功率消耗的分布曲線不同。相對于低成本測量設(shè)備,可能已經(jīng)使得這些差異是可見的,以及因此從加法和 加倍的序列可以重建標(biāo)量的二進制表示。標(biāo)量在這里通常是要被保護的密碼協(xié)議的秘密密鑰。利用差分功率分析(DPA),使用存儲示波器記錄在以不同的可能相關(guān)地選擇的輸入的幾次標(biāo)量乘法k*P期間硬件的功率消耗的分布曲線。隨后,統(tǒng)計地評估測量值。在這樣的攻擊中,典型地,使用密碼算法中密鑰信息的數(shù)據(jù)本地性。攻擊者建立對于幾個密鑰比特的假設(shè),并通過測量曲線的分類和統(tǒng)計測試方法的應(yīng)用來測試假設(shè)的正確性。有DPA的危險的高相關(guān)性一方面包含下述事實許多測量曲線的使用可以把在各個測量曲線中測量設(shè)備的噪聲閾值以下隱藏的電效應(yīng)放大到這樣的水平,即甚至各個比特和各個切換操作以及狀態(tài)的改變可能在受攻擊的硬件中成為可見的。另一方面,用于執(zhí)行這樣的非侵入性攻擊的技術(shù)的和經(jīng)濟的障礙是如此低,以致業(yè)余電子工程師已經(jīng)可以是可能的攻擊者。為了攻擊不具有對抗邊信道攻擊的合適對策的實施,以及完全地提取存儲在硬件中的秘密密鑰材料,通常僅僅幾百個測量的功率分布曲線就夠了,這些分布曲線可以在幾分鐘以及用于統(tǒng)計評估的腳本的幾分鐘的計算時間內(nèi)被收集。對于實行DPA而言相關(guān)的另一變型是模板攻擊。在這類攻擊中,一開始在學(xué)習(xí)階段中借助于DPA技術(shù),確定用于提取密鑰數(shù)據(jù)的功率分布曲線的相關(guān)的時間部分。這里,常規(guī)上,假設(shè)攻擊者在學(xué)習(xí)階段期間對于要攻擊的系統(tǒng)具有完全的控制,并且特別是能夠選擇密鑰數(shù)據(jù)。在攻擊的第二階段中,在用于后處理的合適軟件的幫助下,使用這些相關(guān)的位置從具有未知密鑰的設(shè)備中提取密鑰數(shù)據(jù)。因為在實際攻擊的最好情況下,功率消耗的僅僅一個單個分布曲線可能是必要的,因此模板攻擊也可以被認為是SPA的特殊情況。SPA的防衛(wèi)可以通過調(diào)節(jié)對于每個比特的努力而被盡全力地執(zhí)行。一方面,這可以通過對于加法和加倍的努力調(diào)節(jié)或通過調(diào)節(jié)對于E的加法和加倍的序列來完成。實際上,常常選擇第二替換方案,并且因此重新制定用于標(biāo)量乘法的算法。I) Q0 ^ 0
2)for i — n-1 to 0 do
3)Q0 — 2*Q0
4)Q1 — Q0+P
5)Q0 — Qb_i
6)end
標(biāo)量乘法的結(jié)果可以在變量Qtl中被發(fā)現(xiàn)。這個算法導(dǎo)致下述事實運行時間劇烈地增力口,并且現(xiàn)在對于每個密鑰比特執(zhí)行加法,這與是否需要加法的結(jié)果以用于執(zhí)行標(biāo)量乘法無關(guān)。用于對抗相對于標(biāo)量乘法進行的SPA攻擊的防衛(wèi)的另一方法由所謂的蒙哥馬利階梯來表示。令Ov1,…,bj是標(biāo)量k的二進制表示,以及令P是在橢圓曲線上的點。蒙哥馬利階梯同時計算點k*P和(k+l)*P的X坐標(biāo)。因為兩個結(jié)果的不同點的X和y坐標(biāo)是已知的,因此該結(jié)果的完全點k*P可以被重建。蒙哥馬利算法是
1)R — 0,S — P
2)for i — n-1 to 0 do
3)if bi=l then {R — R+S, S — 2*S}
4)else {S — S+R, R — 2*R}
5)end
6)從R、S和P重建k*P
步驟(3)或(4)中相加或加倍的順序現(xiàn)在與密鑰比特?zé)o關(guān)并且是完全均勻的。僅僅if-then-else指令中的不同轉(zhuǎn)移以及寄存器S和R的不同地址取決于實際密鑰比特匕而在功率分布曲線中生成變化,使得密鑰比特的值可以使用這個邊信道信息來計算。
發(fā)明內(nèi)容
根據(jù)一個方面的實施例提供一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,該設(shè)備包括隨機數(shù)發(fā)生器和處理器。隨機數(shù)發(fā)生器被配置成生成隨機比特。處理器被配置成使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果。此外,處理器被配置成,如果取決于生成的隨機比特和可能另外的信息的交換條件被滿足,則在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。通過隨機地交換參考數(shù)與參考點的標(biāo)量乘法的計算的中間結(jié)果,攻擊者不可能或幾乎不可能通過簡單電流分析、一階差分電流分析或模板攻擊來提取參考數(shù)(它可以代表密碼算法的秘密密鑰)。
隨后將參照附圖詳述本發(fā)明的實施例,其中
圖I是用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備的框 圖2是密碼系統(tǒng)的框圖;以及
圖3是用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的方法的流程圖。在下文中,相同的附圖標(biāo)記被部分地用于具有相同或類似功能特性的對象和功能單元,以及關(guān)于一幅圖的其描述也將適用于其他圖以便減小實施例的描述中的冗余性。
具體實施方式
、
圖I示出根據(jù)一個實施例的用于計算參考數(shù)102與橢圓曲線上的參考點104的標(biāo)量乘法的結(jié)果122的設(shè)備100的框圖。設(shè)備100包括連接到處理器120的隨機數(shù)發(fā)生器110。隨機數(shù)發(fā)生器110生成隨機比特112。處理器120使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果122,第一輔助變量存儲代表參考點104的整數(shù)倍或參考點104的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點104的另一整數(shù)倍或參考點104的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果。此外,如果取決于生成的隨機比特112和可能另外的信息的交換條件被滿足,則處理器120在標(biāo)量乘法的結(jié)果122的計算期間交換由第一輔助變量存儲的值與由第二輔助變量存儲的值。通過隨機地交換標(biāo)量乘法的中間結(jié)果,用于計算中間結(jié)果的計算算法的非對稱行為可以被掩蔽(mask)。使得攻擊者可能不能夠通過簡單功率分析、一階差分功率分析或模板攻擊來提取參考數(shù)102 (它可以是密碼算法的秘密密鑰)。因此,參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果122的計算(它可以是橢圓曲線密碼系統(tǒng)的密鑰運算)可以被更好地保護以對抗簡單功率分析攻擊、差分功率分析攻擊和/或模板攻擊。隨機數(shù)發(fā)生器110可以是例如基于自由運行振蕩器、基于鎖相環(huán)(PLL)的特性或設(shè)備100內(nèi)的總線通信量確定隨機數(shù)的真實的隨機數(shù)發(fā)生器,或是例如基于線性或非線性反饋移位寄存器的偽隨機數(shù)發(fā)生器。隨機比特112可以等于0或I (它在電氣上可以對應(yīng)于具有低電平的信號或具有聞電平的"[目號)。參考數(shù)102可以是以二進制表示的整數(shù)。例如,參考數(shù)102可以是使用橢圓曲線的密碼算法的秘密密鑰。在這個實例中,參考數(shù)102的比特的數(shù)目(也稱為密鑰長度)可被設(shè)置為橢圓曲線密碼算法的安全級別(更多的比特提供更高的安全性)。橢圓曲線上的參考點104和橢圓曲線可以是預(yù)定義的。例如,為了掩蔽可用于標(biāo)量乘法的加倍和相加算法的非對稱性,計算算法可以計算兩個中間結(jié)果,這使標(biāo)量乘法的計算更對稱。剩余的非對稱性可以根據(jù)所描述的構(gòu)思通過隨機地交換中間結(jié)果來掩蔽。為此,第一輔助變量被用來存儲第一中間結(jié)果,以及第二輔助變量被用來存儲第二中間結(jié)果。在這方面,第一輔助變量和第二輔助變量可以代表存儲器地址、地址指針或寄存器,其中可以存儲中間結(jié)果(以及還有最終結(jié)果),更一般地,第一輔助變量和第二輔助變量是用于存儲中間結(jié)果的變量(例如在預(yù)定義的存儲器地址處)。另一方面,第一中間結(jié)果和第二中間結(jié)果是在由第一輔助變量或第二輔助變量存儲的標(biāo)量乘法的結(jié)果122的計算期間獲得的值。這些值可以被交換,使得在標(biāo)量乘法的結(jié)果122的計算期間,第一輔助變量也可以存儲第二中間結(jié)果以及第二輔助變量也可以存儲第一中間結(jié)果。計算代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點的僅僅一個坐標(biāo)可能是足夠的。如果需要的話,可以基于兩個中間結(jié)果和參考點104重建第二坐標(biāo)。換句話說,第一中間結(jié)果可以代表在考慮參考數(shù)102的所有比特之后(在計算參考數(shù)與參考點的坐標(biāo)的標(biāo)量倍數(shù)之后)代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點的第一坐標(biāo),以及處理器120可以基于在考慮參考數(shù)102的所有比特之后的第一中間結(jié)果和第二中間結(jié)果以及基于參考點104計算代表 標(biāo)量乘法的結(jié)果的在橢圓曲線上的點的第二坐標(biāo)。標(biāo)量乘法的結(jié)果122可以通過考慮參考數(shù)102的一個接連一個的比特(例如通過循環(huán))來計算。換句話說,處理器120可以考慮參考數(shù)102的每個比特以用于在循環(huán)中接連地計算標(biāo)量乘法的結(jié)果122。
為此,隨機數(shù)發(fā)生器110可以對于參考數(shù)102的每個比特生成隨機比特112,以及處理器120可以對于參考數(shù)102的每個比特計算第一中間結(jié)果和第二中間結(jié)果(取決于對于參考數(shù)的以前的比特計算的中間結(jié)果)。由于單個隨機比特是對于參考數(shù)的每個比特生成的,因此在一些情況下(對于參考數(shù)的一些比特)交換條件可能被滿足,以及在其他情況下(對于參考數(shù)的其他比特)交換條件可能不被滿足。因此,處理器120可以在標(biāo)量乘法的結(jié)果122的計算期間隨機地交換由輔助變量存儲的值。更一般地,如果對于參考數(shù)102的下一個要考慮的比特所生成的隨機比特112的交換條件被滿足,則處理器120可以在對于參考數(shù)的下一個要考慮的比特計算(新的)第一中間結(jié)果和(新的)第二中間結(jié)果之前,交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。交換條件可以以各種方式被預(yù)定義,這主要取決于所使用的計算算法。例如,交換條件可以直接取決于隨機比特112。換句話說,如果隨機比特112等于預(yù)定義的比特值,則交換條件可以被滿足。這個預(yù)定義的比特值可以是0或1,這取決于實際的實施(例如正的或負的邏輯)。在這個實例中,對于更詳細的可能的實施,如果隨機比特112等于預(yù)定義的比特值,則處理器120可以在對于下一個要考慮的比特計算(新的)第一中間結(jié)果和(新的)第二中間結(jié)果之前交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值,以及可以在計算新的第一中間結(jié)果(它在計算之后由第二輔助變量存儲以及在重復(fù)交換之后由第一輔助變量存儲)和新的第二中間結(jié)果(它在計算之后由第一輔助變量存儲以及在重復(fù)交換之后由第二輔助變量存儲)之后再次交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。換句話說,當(dāng)前存儲的中間結(jié)果可以在新的中間結(jié)果的計算之前被隨機地交換,以及可以在新的中間結(jié)果的計算之后被交換回來??商鎿Q地,例如,如果隨機比特112不等于對于參考數(shù)102的上一個已考慮的比特所生成的隨機比特112,則對于參考數(shù)102的下一個要考慮的比特所生成的隨機比特112的交換條件可以被滿足。換句話說,由第一輔助變量和第二輔助變量所存儲的值的交換可以取決于對于參考數(shù)102的兩個(直接接連的)比特所生成的兩個隨機比特112的比較。這樣,如在以前的實例中描述的交換回來可能不是必要的,這是由于隨機比特112的比較可以考慮由輔助變量所存儲的值是否已經(jīng)被交換,使得對于進一步計算而言中間結(jié)果不進行混合,盡管在考慮參考數(shù)102的一個比特之后中間結(jié)果不被交換回來(例如通過執(zhí)行循環(huán)的一次迭代)。輔助變量的值的交換可以以不同的方式來實施。例如,處理器120可以通過利用由第二輔助變量所存儲的值重寫由第一輔助變量所存儲的值以及通過利用由第一輔助變量所存儲的值重寫由第二輔助變量所存儲的值,來交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。這例如可以由通過臨時地存儲由第一輔助變量或第二輔助變量所存儲的值的輔助寄存器進行的三角交換來完成。可替換地,交換輔助變量的存儲器地址可能是足夠的。換句話說,處理器120可以通過交換第一輔助變量的存儲器地址或存儲器地址指針與第二輔助變量的存儲器地址或存儲器地址指針來交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。正如以前已經(jīng)提到的那樣,標(biāo)量乘法的結(jié)果122可以通過接連地考慮參考數(shù)102的一個接一個的比特來計算。取決于參考數(shù)的每個比特的值(0或1),不同的計算規(guī)則可被用于計算中間結(jié)果。換句話說,處理器120可以基于計算算法的第一計算規(guī)則(如果參考數(shù)102的(當(dāng)前要考慮的)比特不等于(對于參考數(shù)的當(dāng)前考慮的比特所生成的)隨機比特112的話),或基于計算算法的第二計算規(guī)則(如果參考數(shù)102的(當(dāng)前要考慮的)比特等于(對于參考數(shù)的當(dāng)前考慮的比特所生成的)隨機比特112的話),計算要由第一輔助變量存儲的中間結(jié)果和 要由第二輔助變量存儲的中間結(jié)果。在不同實施中,處理器120可以選擇第一或第二計算規(guī)則以用于基于參考數(shù)102的當(dāng)前考慮的比特的(對于參考數(shù)102的當(dāng)前考慮的比特所生成的)隨機比特112的值,或基于參考數(shù)102的當(dāng)前考慮的比特的隨機比特112的函數(shù)、以及可能來自循環(huán)的以前迭代的隨機比特和/或參考數(shù)的比特的函數(shù),計算要由第一輔助變量存儲的中間結(jié)果和要由第二輔助變量存儲的中間結(jié)果。例如,計算算法可以是蒙哥馬利階梯算法。在這個實例中,處理器120可以通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果與由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及通過加倍由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果。否則,處理器120可以通過加倍由第一輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果與由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果。在一些實施例中,第一中間結(jié)果和第二中間結(jié)果可包括相對于橢圓曲線上的點的加法的恒定的差。第一中間結(jié)果可以代表參考點104的整數(shù)倍數(shù)n*P或參考點104的整數(shù)倍數(shù)n*P的坐標(biāo)。第二中間結(jié)果可以代表參考點104的整數(shù)倍數(shù)(n+l)*P或參考點104的整數(shù)倍數(shù)(n+l)*P的坐標(biāo)。在下文中更詳細地描述實施例。雖然這些實例示出在一起實施的不同方面,但是這些方面也可以互相獨立地被實施。所提出的構(gòu)思描述一種技術(shù),其獲得用于進行保護以對抗SPA的良好措施以及實現(xiàn)用于保護標(biāo)量(參考數(shù))以對抗例如DPA和基于其的模板攻擊的非常高效的方法。用于實際實施的實例在以下的算法(具有用于保護標(biāo)量的SPA和DPA對策的蒙哥馬利)中被示出,以同時獲得蒙哥馬利階梯的對抗SPA以及對抗(由輔助變量存儲的)中間結(jié)果R和S的DPA和對抗針對密鑰比特(參考數(shù)的比特)的DPA和模板攻擊的保護
1)R-0, S-P#第一輔助變量和第二輔助變量的初始化
2)隨機化R和S的投影坐標(biāo)表示
3)for i — n-1 to 0 do#用于接連地考慮參考數(shù)的每個比特h的循環(huán)
4)生成隨機比特z
5)if z=l then {swap (R, S)}
6)else {do not swap}
7)if bj XOR z=l then {R — R+S, S — 2*S} # 第一計算規(guī)則
8)else {S ^ S+R, R — 2*R}# 第二計算規(guī)則
9)if z=l then {swap(R, S)}10)else {do not swap}
11)end#循環(huán)的結(jié)束
12)從R、S和P重建k*P#重建第二坐標(biāo)
在這個實例中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,k是參考數(shù),i是計數(shù)器變量,n是參考數(shù)的比特數(shù)目,z是隨機比特,以Ikhi是參考數(shù)的比特。在所示出的算法中,第一輔助變量R利用橢圓曲線的零元素0或利用橢圓曲線的零元素0的坐標(biāo)進行初始化,以及第二輔助變量S用橢圓曲線上的參考點P或利用橢圓曲線上的參考點P的坐標(biāo)進行初始化。然后,第一輔助變量R和第二輔助變量S可以可選地被變換成隨機化的投影坐標(biāo)表示。之后,對于參考數(shù)的每個比特tv執(zhí)行循環(huán)的程序語句。在這個循環(huán)中,隨機比特z被生成,并且取決于隨機比特的值(交換條件),由第一輔助變量R所存儲的值與由第二輔助變量S所存儲的值進行交換(例如,如果隨機比特等于I的話)。然后,取決于參考數(shù)的當(dāng)前考慮的比特匕與隨機比特的值的比較,第一計算規(guī)則或第二計算規(guī)則被用于計算新的中間結(jié)果。之后,由第一輔助變量R所存儲的值與由第二輔助變量S所存儲的值被交換回來,如果它們以前被交換的話。在對于參考數(shù)的每個比特h運行循環(huán)的程序語句一次之后,代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點k*P可以基于由第一輔助變量R和第二輔助變量S所存儲的中間結(jié)果以及基于橢圓曲線上的參考點P被重建。這個實例使用蒙哥馬利階梯和數(shù)據(jù)相關(guān)交換運算,這由于蒙哥馬利階梯的固有對稱性而變?yōu)榭赡艿摹K境龅乃惴ǖ恼_性可以被容易地驗證,如果對于隨機比特z分開地考慮兩種可能的情況Z=O或Z=I的話。在Z=I的情況下,密鑰比特h (參考數(shù)的比特)的實際使用的值通過與z的“異或”(XOR)運算而被求反。然而,因為在這種情況下,在算法的循環(huán)的程序語句之前和之后的中間結(jié)果(由第一輔助變量存儲的)R和(由第二輔助變量存儲的)S也同時被交換,所以該算法計算標(biāo)量乘法的正確結(jié)果。由于在循環(huán)的每條路徑中使用具有均等分布的所選擇的獨立比特z這一事實,步驟5、6、9和10中交換運算的then和else分支以及步驟7、8中蒙哥馬利階梯的分支的實施不再與秘密標(biāo)量k的比特匕的實際值相關(guān)。決定if-then-else指令中的哪些分支被通過的值對于算法的每次執(zhí)行而言是隨機的。類似的結(jié)論適用于所得到的功率分布曲線。因此,算法的這些計算步驟被保護以對抗一階DPA。所描述的構(gòu)思的技術(shù)的一個決定性步驟可以是將蒙哥馬利階梯算法的固有對稱性用于橢圓曲線上的點的標(biāo)量乘法,以消除在標(biāo)量(它通常代表密碼協(xié)議的秘密密鑰)的比特與算法(程序)的執(zhí)行的分支之間的相關(guān)性。這樣,可以實施用于標(biāo)量隱蔽(blinding)的高效的和安全的方法,它可以保護標(biāo)量的比特以對抗DPA,并且因此使在模板攻擊期間的學(xué)習(xí)階段更困難得多或者甚至阻止學(xué)習(xí)階段。所描述的過程例如提供幾個優(yōu)點。與傳統(tǒng)方法相比,所描述的用于實施標(biāo)量隱蔽的構(gòu)思可以不需要運算(arithmetic)能夠?qū)τ谝杂蓞⒖键c生成的子群的階o為模的整數(shù)執(zhí)行計算。例如,特別是對于基于在特征為2的有限域上橢圓曲線的方法的低成本應(yīng)用而言,不必對于整數(shù)實施運算。因此,在這種情況的應(yīng)用中的運算可以在硬件上以空間非常高效的方式被實現(xiàn)。此外,不必提供存儲空間來存儲點群的子群的階O。不必提供機制來保護值O對抗攻擊者的操縱或至少能夠檢測這樣的改變。另外,如在到k’ = k + r*o的變換、中標(biāo)量k的大小的增加不會由于在利用隨機整數(shù)r進行隱蔽運算期間的乘法r*o而發(fā)生。特別是,用于執(zhí)行標(biāo)量乘法的寄存器可能不必被延長。因此,本發(fā)明的方法的性能可以更好。此外,用于標(biāo)量的變換的步驟可以本身再次是不同種類的邊信道攻擊的目標(biāo)。在用于使用子群的階0的標(biāo)量隱蔽的傳統(tǒng)技術(shù)中,這個步驟是相對較耗時的計算,其中出現(xiàn)許多中間結(jié)果。每個生成的比特可以在原則上再次用作對于標(biāo)量而言不同邊信道攻擊的目標(biāo)。因此,在這個變換的實施中,必須透徹地考慮當(dāng)保護所述實施時不打開新的安全弱點。在所描述的構(gòu)思中,變換步驟可以僅僅包含以上算法的步驟7中的“異或”(XOR)運算的計算。這個計算非常簡單,并且可能僅僅使用最小可能的數(shù)據(jù)量。此外,可以不出現(xiàn)另外的中間結(jié)果。因此,在所描述的構(gòu)思的實際實施中,與利用傳統(tǒng)方法相比,保護這個變換步驟應(yīng)當(dāng)更容易。在下文中,描述用于實施所提出的構(gòu)思的以上算法的變型,它可以在主循環(huán)的每 次迭代時節(jié)省一個交換步驟(交換),并且因此比已經(jīng)描述的算法更高效一點
1)R-0, S-P#第一輔助變量和第二輔助變量的初始化
2)隨機化R和S的投影坐標(biāo)表示
3)z0 — 0
4)for i — n-1 to 0 do #用于接連地考慮參考數(shù)的每個比特h的循環(huán)
5)生成隨機比特zl
6)if z0 XOR zl=l then {swap(R, S)}
7)else {do not swap}
8)if bj XOR zl=l then {R ^ R+S, S — 2*S} # 第一計算規(guī)則
9)else {S — S+R, R — 2*R}# 第二計算規(guī)則
10)zO — zl
11)end#循環(huán)的結(jié)束
12)if z0=l then {swap(R, S)}
13)else {do not swap}
14)從R、S和P重建k*P#重建第二坐標(biāo)
在這個實例中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,k是參考數(shù),i是計數(shù)器變量,n是參考數(shù)的比特數(shù)目,h是參考數(shù)的比特,zl是對于考慮參考數(shù)的(下一個要考慮的)比特h (或在考慮參考數(shù)的(下一個要考慮的)比特匕期間)而生成的隨機比特,以及z0是對于考慮參考數(shù)的上一個已考慮的比特Iv1(或在考慮參考數(shù)的上一個已考慮的比特V1期間)而生成的隨機比特。在所示出的算法中,第一輔助變量R利用橢圓曲線的零元素0或利用橢圓曲線的零元素0的坐標(biāo)進行初始化,以及第二輔助變量S利用橢圓曲線上的參考點P或利用橢圓曲線上的參考點P的坐標(biāo)進行初始化。然后,第一輔助變量R和第二輔助變量S可以可選地被變換成隨機化的投影坐標(biāo)表示。之后,對于參考數(shù)的每個比特tv執(zhí)行循環(huán)的程序語句。在這個循環(huán)中,隨機比特zl被生成,并且取決于對于參考數(shù)的比特匕所生成的隨機比特Zl的值與對于參考數(shù)的上一個已考慮的比特IV1所生成的隨機比特z0的值的比較,由第一輔助變量R所存儲的值與由第二輔助變量S所存儲的值被交換(例如,如果隨機比特的值是不相等的話)。然后,取決于參考數(shù)的當(dāng)前考慮的比特h與隨機比特zl的值的比較,第一計算規(guī)則或第二計算規(guī)則被用于計算新的中間結(jié)果。之后,隨機比特zO的值被設(shè)置為隨機比特zl的值。在對于參考數(shù)的每個比特h運行循環(huán)的程序語句一次和取決于zO的值的最后交換之后,代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點k*P可以基于由第一輔助變量R和第二輔助變量S所存儲的中間結(jié)果以及基于橢圓曲線上的參考點P被重建。這例如可以代表用于保護標(biāo)量的具有SPA和DPA對策的蒙哥馬利階梯算法。在實施例中所描述的兩個算法之間的差別在于,在主循環(huán)的兩次迭代之間相應(yīng)地直接隨后的交換步驟(由輔助變量所存儲的值的交換)現(xiàn)在被概括成為運算的一個單個步驟。因此類似于以前描述的過程可以斷定算法的正確性。除了這一點以外,在主循環(huán)的每次迭代中,使用獨立地生成的和均等地分布的新的隨機比特zl,并且對于標(biāo)量的各個比特的then和else分支的相關(guān)性的考慮保持它們的有效性。因此,在這個算法中所描述的構(gòu) 思的變型也提供對抗對于標(biāo)量的比特的一階DPA攻擊的保護。在下文中,描述用于實施所提出的構(gòu)思的以上算法的另一變型
1)R-0, S-P#第一輔助變量和第二輔助變量的初始化
2)隨機化R和S的投影坐標(biāo)表示
3)for i — n-1 to 0 do #用于接連地考慮參考數(shù)的每個比特h的循環(huán)
4)生成隨機比特z
5)if bj XOR z=l then {swap(R, S)}
6)else {do not swap}
7)if z=l then {R — R+S, S — 2*S}# 第一計算規(guī)則
8)else {S ^ S+R, R — 2*R}# 第二計算規(guī)則
9)if bj XOR z=l then {swap(R, S)}
10)else {do not swap}
11)end#循環(huán)的結(jié)束
12)從R、S和P重建k*P#重建第二坐標(biāo)
在這個實例中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,k是參考數(shù),i是計數(shù)器變量,n是參考數(shù)的比特數(shù)目,z是隨機比特,以Ikhi是參考數(shù)的比特。在所示出的算法中,第一輔助變量R利用橢圓曲線的零元素0或利用橢圓曲線的零元素0的坐標(biāo)進行初始化,以及第二輔助變量S利用橢圓曲線上的參考點P或利用橢圓曲線上的參考點P的坐標(biāo)進行初始化。然后,第一輔助變量R和第二輔助變量S可以可選地被變換成隨機化的投影坐標(biāo)表示。之后,對于參考數(shù)的每個比特tv執(zhí)行循環(huán)的程序語句。在這個循環(huán)中,生成隨機比特z,并且取決于參考數(shù)的當(dāng)前所考慮的比特匕與隨機比特的值的比較(交換條件),由第一輔助變量R所存儲的值與由第二輔助變量S所存儲的值被交換(例如,如果隨機比特z不等于參考數(shù)的當(dāng)前所考慮的比特匕的話)。然后,取決于隨機比特的值,第一計算規(guī)則或第二計算規(guī)則被用于計算新的中間結(jié)果。之后,由第一輔助變量R與第二輔助變量S所存儲的值被交換回來,如果它們以前被交換的話。在對于參考數(shù)的每個比特h運行循環(huán)的程序語句一次之后,代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點k*P可以基于由第一輔助變量R和第二輔助變量S所存儲的中間結(jié)果以及基于橢圓曲線上的參考點P被重建。
在下文中,描述用于實施所提出的構(gòu)思的以上算法的另一變型,它可以在主循環(huán)的每次迭代時節(jié)省一個交換步驟(交換),并且因此比先前描述的算法更高效一點
1)R-0, S-P#第一輔助變量和第二輔助變量的初始化
2)隨機化R和S的投影坐標(biāo)表示
3)zO — 0
4)for i — n-1 to 0 do #用于接連地考慮參考數(shù)的每個比特h的循環(huán)
5)生成隨機比特w
6)zl — IDi XOR w
7)if zO XOR zl=l then {swap(R, S)}
8)else {do not swap}
9)if w=l then {R — R+S, S — 2*S} # 第一計算規(guī)則
10)else {S ^ S+R, R — 2*R}# 第二計算規(guī)則
11)zO — zl
12)end#循環(huán)的結(jié)束
13)if z0=l then {swap(R, S)}
14)else {do not swap}
15)從R、S和P重建k*P#重建第二坐標(biāo)
在這個實例中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,k是參考數(shù),i是計數(shù)器變量,n是參考數(shù)的比特數(shù)目,h是參考數(shù)的比特,w是隨機比特,以及zO和zl是輔助變量。在所示出的算法中,第一輔助變量R利用橢圓曲線的零元素0或利用橢圓曲線的零元素0的坐標(biāo)進行初始化,以及第二輔助變量S利用橢圓曲線上的參考點P或利用橢圓曲線上的參考點P的坐標(biāo)進行初始化。然后,第一輔助變量R和第二輔助變量S可以可選地被變換成隨機化的投影坐標(biāo)表示。之后,對于參考數(shù)的每個比特tv執(zhí)行循環(huán)的程序語句。在這個循環(huán)中,隨機比特w被生成,并且值zl是作為隨機比特w與參考數(shù)的當(dāng)前考慮的比特匕的“異或”(XOR)而進行計算的。取決于值zl與對于參考數(shù)的上一個已考慮的比特IV1所生成的值zO的比較,由第一輔助變量R與第二輔助變量S所存儲的值被交換(例如,如果輔助變量zl的值不等于輔助變量zO的值的話)。然后,取決于對于參考數(shù)的當(dāng)前考慮的比特h所生成的隨機比特w的值,第一計算規(guī)則或第二計算規(guī)則被用于計算新的中間結(jié)果。之后,比特zO的值被設(shè)置為比特zl的值。在對于參考數(shù)的每個比特匕運行循環(huán)的程序語句一次和取決于zO的值的最后交換之后,代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點k*P可以基于由第一輔助變量R和第二輔助變量S所存儲的中間結(jié)果以及基于橢圓曲線上的參考點P被重建。這例如可以代表用于保護標(biāo)量的具有SPA和DPA對策的蒙哥馬利階梯算法。所提出的構(gòu)思例如描述用于在標(biāo)量乘法期間對抗特定DPA和模板攻擊的防衛(wèi)的簡單的和有效的方法。在一些實施例中,在(標(biāo)量乘法的結(jié)果的)計算中省略(參考點和中間結(jié)果的)y坐標(biāo),使得可以減少必要寄存器的數(shù)目以及存儲量。因此,例如,蒙哥馬利階梯尤其適合用在嵌入式系統(tǒng)(例如智能卡)中,因為資源在這里通常是非常有限的。
通過使用所描述的構(gòu)思,可以實現(xiàn)提供由邊信道測量不能區(qū)別的if-then-else指令的實施的SPA對策?;炯夹g(shù)可以是當(dāng)執(zhí)行蒙哥馬利階梯時使用對稱性??赡苡锌赡茉谌Q于隨機比特和/或密鑰比特(參考數(shù)的比特)而在for循環(huán)的開始和/或結(jié)束處交換或不交換(由R和S存儲的)兩個中間結(jié)果R和S時,把蒙哥馬利階梯的執(zhí)行的兩個分支統(tǒng)一成then和else分支??赡苓€有可能在取決于隨機比特和/或密鑰比特(參考數(shù)的比特)而計算(由R和S存儲的)新的中間結(jié)果R和S時,把蒙哥馬利階梯的執(zhí)行的兩個分支統(tǒng)一成then和else分支。通過使用所描述的構(gòu)思,可以實現(xiàn)提供標(biāo)量隱蔽和對抗標(biāo) 量的比特的DPA的對策的方法。為了防衛(wèi)對抗DPA,可以使用橢圓曲線的點的隨機化投影表示。有可能通過這樣的措施阻止對于在標(biāo)量乘法期間所計算的(第一輔助變量和第二輔助變量)R和S中的中間結(jié)果的比特的一階DPA。此外,所描述的構(gòu)思可以提供防衛(wèi)對抗模板攻擊的可能性。在模板攻擊的學(xué)習(xí)階段中,攻擊者識別在功率分布曲線中的處理密鑰比特的位置。在攻擊階段中,然后有可能在來自一個或幾個測量的識別的位置的幫助下提取實際的密鑰比特。在這些模板攻擊的一個變型中,標(biāo)量乘法的不同輪(round)可以相對于彼此進行比較。這個所謂的Big-Mac攻擊使學(xué)習(xí)階段的結(jié)果另外與被攻擊的單個實施無關(guān)。對于在窮舉搜索中可以被快速地測試的密鑰空間的未知部分,接受僅僅幾個剩余的可能性,攻擊更魯棒得多以對抗逐個實施地適配模板,這些模板攻擊可以通過使用所描述的構(gòu)思被阻止。這與通常的標(biāo)量隱蔽技術(shù)相比較還具有的優(yōu)點是,處理時間和存儲器要求被減小(由于在隨機化期間標(biāo)量不可以變大)。此外,根據(jù)所描述的構(gòu)思,在一些實施例中,僅僅在有限域GF(2n)中的計算步驟可能是必要的,使得在硬件實施中關(guān)于電路技術(shù)的努力可以被保持為低的。一些實施例涉及用于蒙哥馬利階梯的抗DPA的計算的方法和設(shè)備。根據(jù)本發(fā)明的一些實施例涉及用于計算參考數(shù)與參考點的標(biāo)量乘法的結(jié)果的設(shè)備,該設(shè)備包括用于生成隨機數(shù)的裝置(例如隨機數(shù)發(fā)生器)和用于計算標(biāo)量乘法的結(jié)果的裝置(例如處理器)。用于生成隨機數(shù)的裝置生成隨機比特。用于計算標(biāo)量乘法的結(jié)果的裝置使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果。此外,如果取決于生成的隨機比特和可能另外的信息的交換條件被滿足,則用于計算標(biāo)量乘法的結(jié)果的裝置在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。此外,所述設(shè)備可以實現(xiàn)上述的附加的可選特征。圖2示出作為一個實施例的具有根據(jù)所描述的構(gòu)思的用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備的密碼系統(tǒng)200的框圖。密碼系統(tǒng)200包括如上所述的連接到處理器120的隨機數(shù)發(fā)生器110。此外,密碼系統(tǒng)200包括連接到處理器120的存儲器220和也連接到處理器120的輸入-輸出接口 230。存儲器220例如可以存儲參考數(shù)、橢圓曲線上的參考點和/或橢圓曲線的參數(shù)。此外,存儲器220可包括分配給第一輔助變量和第二輔助變量以用于存儲中間結(jié)果的存儲器空間。輸入-輸出接口 230可以把輸出數(shù)據(jù)232提供到外部和/或把來自外部的輸入數(shù)據(jù)232提供到處理器120,以及它可以是無線的或者有線線路/有線的接口。隨機數(shù)發(fā)生器110可以是例如基于自由運行的振蕩器、基于鎖相環(huán)(PLL)的特性或密碼系統(tǒng)200內(nèi)的總線通信量確定隨機數(shù)的真實的隨機數(shù)發(fā)生器,或是例如基于線性或非線性反饋移位寄存器的偽隨機數(shù)發(fā)生器。密碼系統(tǒng)200可以在例如智能卡210、芯片卡或計算機中被實施。圖3示出根據(jù)一個實施例的用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的方法300的流程圖。方法300包括生成310隨機比特以及使用第一輔助變量和第二輔助變量基于計算算法來計算320標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù) 倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果。此外,方法300包括,如果取決于生成的隨機比特和可能另外的信息的交換條件被滿足,則在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。另外,方法300可包括代表上述的所提出的構(gòu)思的方面中的一個或多個的另外的
可選步驟。通常,以前描述的隨機數(shù)發(fā)生器、處理器、存儲器、輸入-輸出接口、用于生成隨機數(shù)的裝置和/或用于計算標(biāo)量乘法的結(jié)果的裝置可以是獨立的硬件單元或計算機的一部分或微控制器以及用于在計算機或微控制器上運行的計算機程序或軟件產(chǎn)品。雖然一些從屬權(quán)利要求僅僅涉及另一權(quán)利要求,但是與一個或多個另外的從屬權(quán)利要求或不同的獨立權(quán)利要求的組合可以是可能的。此外,不同的獨立權(quán)利要求也可以被組合。雖然所描述的構(gòu)思的一些方面已在設(shè)備的背景下被描述,但是顯然,這些方面也代表對應(yīng)的方法的描述,其中塊或設(shè)備對應(yīng)于方法步驟或方法步驟的特征。類似地,在方法步驟的背景下描述的方面也代表對應(yīng)的塊或項目或?qū)?yīng)設(shè)備的特征的描述。取決于特定實施要求,本發(fā)明的實施例可以以硬件或以軟件來實施。所述實施可以使用具有在其上存儲的電子可讀的控制信號的數(shù)字存儲介質(zhì)(例如軟盤、DVD、藍光盤、CD、R0M、PR0M、EPR0M、EEPR0M、或閃速存儲器)被實施,這些控制信號與可編程計算機系統(tǒng)合作(或能夠合作)使得相應(yīng)的方法被執(zhí)行。因此,數(shù)字存儲介質(zhì)可以是計算機可讀的。根據(jù)本發(fā)明的一些實施例包括具有電子可讀的控制信號的數(shù)據(jù)載體,這些控制信號能夠與可編程計算機系統(tǒng)合作,使得在此所述的方法之一被執(zhí)行。通常,本發(fā)明的實施例可以被實施為具有程序代碼的計算機程序產(chǎn)品,當(dāng)計算機程序產(chǎn)品在計算機上運行時,所述程序代碼可操作(operative)以用于執(zhí)行所述方法之一。程序代碼例如可以被存儲在機器可讀載體上。其他實施例包括存儲在機器可讀載體上的用于執(zhí)行在此所述的方法之一的計算機程序。換句話說,本發(fā)明方法的一個實施例因此是具有程序代碼的計算機程序,當(dāng)計算機程序在計算機上運行時,所述程序代碼用于執(zhí)行在此所述的方法之一。本發(fā)明方法的另一實施例因此是包括記錄在其上的用于執(zhí)行在此所述的方法之一的計算機程序的數(shù)據(jù)載體(或數(shù)字存儲介質(zhì)或計算機可讀介質(zhì))。本發(fā)明方法的另一實施例因此是代表用于執(zhí)行在此所述的方法之一的計算機程序的數(shù)據(jù)流或信號序列。數(shù)據(jù)流或信號序列例如可被配置成經(jīng)由數(shù)據(jù)通信連接(例如經(jīng)由因特網(wǎng))被傳送。另一實施例包括處理裝置(例如計算機)或可編程邏輯器件,其被配置成或適于執(zhí)行在此所述的方法之一。另一實施例包括在其上安裝有用于執(zhí)行在此所述的方法之一的計算機程序的計算機。在一些實施例中,可編程邏輯器件(例如現(xiàn)場可編程門陣列)可被用來執(zhí)行在此所述的方法的功能中的一些或全部。在一些實施例中,現(xiàn)場可編程門陣列可以與微處理器合作以便執(zhí)行在此所述的方法之一。通常,方法優(yōu)選地由任何硬件設(shè)備來執(zhí)行。以上描述的實施例對于本發(fā)明的原理僅僅是說明性的。應(yīng)當(dāng)理解,在此所述的布置和細節(jié)的修改和變化對于本領(lǐng)域技術(shù)人員而言將是顯而易見的。因此,意圖僅僅由迫近的專利權(quán)利要求的范圍來限制,而不由在此通過實施例的描述和解釋所給出的具體細節(jié)來限制。權(quán)利要求
1.一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,包括 隨機數(shù)發(fā)生器,其被配置成生成隨機比特;以及 處理器,其被配置成使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果, 其中處理器被配置成,如果取決于生成的隨機比特的交換條件被滿足,則在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
2.根據(jù)權(quán)利要求I所述的設(shè)備,其中,處理器被配置成考慮參考數(shù)的每個比特以用于在循環(huán)中接連地計算標(biāo)量乘法的結(jié)果。
3.根據(jù)權(quán)利要求2所述的設(shè)備,其中,交換條件取決于用于參考數(shù)的下一個要考慮的比特的生成的隨機比特。
4.根據(jù)權(quán)利要求2所述的設(shè)備,其中,隨機數(shù)發(fā)生器被配置成生成用于參考數(shù)的每個比特的隨機比特, 其中交換條件取決于用于參考數(shù)的下一個要考慮的比特的生成的隨機比特以及參考數(shù)的下一個要考慮的比特。
5.根據(jù)權(quán)利要求2所述的設(shè)備,其中,隨機數(shù)發(fā)生器被配置成生成用于參考數(shù)的每個比特的隨機比特, 其中交換條件取決于用于參考數(shù)的下一個要考慮的比特的生成的隨機比特、以及取決于參考數(shù)的下一個要考慮的比特、以及取決于在循環(huán)的先前輪中考慮的隨機比特和/或參考數(shù)的比特中的至少一個。
6.根據(jù)權(quán)利要求I所述的設(shè)備,其中,隨機數(shù)發(fā)生器被配置成生成用于參考數(shù)的每個比特的隨機比特, 其中處理器被配置成計算用于參考數(shù)的每個比特的第一中間結(jié)果和第二中間結(jié)果, 其中處理器被配置成,如果對于參考數(shù)的下一個要考慮的比特所生成的隨機比特而言交換條件被滿足,則在計算用于參考數(shù)的下一個要考慮的比特的第一中間結(jié)果和第二中間結(jié)果之前,交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
7.根據(jù)權(quán)利要求I所述的設(shè)備,其中,隨機數(shù)發(fā)生器被配置成生成用于參考數(shù)的每個比特的隨機比特, 其中處理器被配置成計算用于參考數(shù)的每個比特的第一中間結(jié)果和第二中間結(jié)果, 其中如果對于參考數(shù)的下一個要考慮的比特所生成的隨機比特而言交換條件被滿足,則處理器被配置成,在計算用于參考數(shù)的下一個要考慮的比特的第一中間結(jié)果和第二中間結(jié)果之前,交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值,以及被配置成,在計算用于參考數(shù)的下一個要考慮的比特的第一中間結(jié)果和第二中間結(jié)果之后再次交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
8.根據(jù)權(quán)利要求2所述的設(shè)備,其中,隨機數(shù)發(fā)生器被配置成生成用于參考數(shù)的每個比特的隨機比特, 其中如果隨機比特不等于對于參考數(shù)的上一個已考慮的比特所生成的隨機比特,則對于參考數(shù)的下一個要考慮的比特所生成的隨機比特而言交換條件被滿足。
9.根據(jù)權(quán)利要求I所述的設(shè)備,其中,如果隨機比特等于預(yù)定義的比特值,則交換條件被滿足。
10.根據(jù)權(quán)利要求I所述的設(shè)備,其中,處理器被配置成,如果參考數(shù)的當(dāng)前要考慮的比特不等于隨機比特,則基于計算算法的第一計算規(guī)則,或如果參考數(shù)的當(dāng)前要考慮的比特等于隨機比特,則基于計算算法的第二計算規(guī)則,來計算要由第一輔助變量存儲的中間結(jié)果和要由第二輔助變量存儲的中間結(jié)果。
11.根據(jù)權(quán)利要求I所述的設(shè)備,其中,處理器被配置成,如果隨機比特等于預(yù)定義的比特值,則基于計算算法的第一計算規(guī)則,或如果隨機比特不等于預(yù)定義的比特值,則基于計算算法的第二計算規(guī)則,來計算要由第一輔助變量存儲的中間結(jié)果和要由第二輔助變量存儲的中間結(jié)果。
12.根據(jù)權(quán)利要求2所述的設(shè)備,其中,處理器被配置成,取決于對于參考數(shù)的下一個要考慮的比特所生成的隨機比特和取決于參考數(shù)的下一個要考慮的比特,基于計算算法的第一計算規(guī)則,或基于計算算法的第二計算規(guī)則,來計算要由第一輔助變量存儲的中間結(jié)果和要由第二輔助變量存儲的中間結(jié)果。
13.根據(jù)權(quán)利要求10所述的設(shè)備,其中,處理器被配置成通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果和由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及被配置成通過加倍由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果,其中處理器被配置成通過加倍由第一輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及被配置成通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果和由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果。
14.根據(jù)權(quán)利要求11所述的設(shè)備,其中,處理器被配置成通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果和由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及被配置成通過加倍由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果,其中處理器被配置成通過加倍由第一輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及被配置成通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果和由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果。
15.根據(jù)權(quán)利要求12所述的設(shè)備,其中,處理器被配置成通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果和由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及被配置成通過加倍由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第一計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果,其中處理器被配置成通過加倍由第一輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第一輔助變量存儲的中間結(jié)果,以及被配置成通過相加由第一輔助變量當(dāng)前所存儲的中間結(jié)果和由第二輔助變量當(dāng)前所存儲的中間結(jié)果來根據(jù)第二計算規(guī)則計算要由第二輔助變量存儲的中間結(jié)果。
16.根據(jù)權(quán)利要求I所述的設(shè)備,其中,計算算法是蒙哥馬利階梯算法。
17.根據(jù)權(quán)利要求I所述的設(shè)備,其中,第一中間結(jié)果代表在考慮參考數(shù)的所有比特之后代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點的第一坐標(biāo),其中處理器被配置成基于在考慮參考數(shù)的所有比特之后的第一中間結(jié)果和第二中間結(jié)果來計算代表標(biāo)量乘法的結(jié)果的在橢圓曲線上的點的第二坐標(biāo)。
18.根據(jù)權(quán)利要求I所述的設(shè)備,其中,處理器被配置成通過利用由第二輔助變量所存儲的值重寫由第一輔助變量所存儲的值以及通過利用由第一輔助變量所存儲的值重寫由第二輔助變量所存儲的值,來交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
19.根據(jù)權(quán)利要求I所述的設(shè)備,其中,處理器被配置成通過交換第一輔助變量的存儲器地址或存儲器地址指針與第二輔助變量的存儲器地址或存儲器地址指針,來交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
20.根據(jù)權(quán)利要求I所述的設(shè)備,其中,在由第一中間結(jié)果代表的參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)與由第二中間結(jié)果代表的參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)之間的差是常數(shù)。
21.根據(jù)權(quán)利要求20所述的設(shè)備,其中,在由第一中間結(jié)果和第二中間結(jié)果代表的參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)之間的恒定的差是參考點。
22.一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,包括 隨機數(shù)發(fā)生器,其被配置成生成隨機比特;以及 處理器,其被配置成基于下述來計算標(biāo)量乘法的結(jié)果 1)R — O,S — P 2)隨機化R和S的投影坐標(biāo)表示3)for i — n-1 to 0 do 4)生成隨機比特z5)if z=l then {swap (R, S)} 6)else {do not swap}7)if bj XOR z=l then {R — R+S, S — 2*S} 8)else {S — S+R, R — 2*R}9)if z=l then {swap(R, S)}10)else {do not swap}11)end 12)從R、S和P重建k*P 其中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,i是計數(shù)器變量,k是參考數(shù),n是參考數(shù)的比特數(shù)目,z是隨機比特,以及匕是參考數(shù)的比特。
23.一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,包括 隨機數(shù)發(fā)生器,其被配置成生成隨機比特;以及 處理器,其被配置成基于下述來計算標(biāo)量乘法的結(jié)果 1)R — 0,S — P 2)隨機化R和S的投影坐標(biāo)表示3)zO — O4)for i 一 n-1 to 0 do 5)生成隨機比特z I6)if zO XOR zl=l then {swap(R, S)} 7)else {do not swap} 8)if bj XOR zl=l then {R — R+S, S — 2*S} 9)else {S — S+R, R — 2*R} 10)zO — zl 11)end12)if z0=l then {swap(R, S)}13)else {do not swap} 14)從R、S和P重建k*P 其中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,k是參考數(shù),i是計數(shù)器變量,n是參考數(shù)的比特數(shù)目,bi是參考數(shù)的比特,zl是對于考慮參考數(shù)的下一個要考慮的比特h而生成的隨機比特,以及zO是對于考慮參考數(shù)的上一個已考慮的比特Iv1而生成的隨機比特。
24.一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,包括 隨機數(shù)發(fā)生器,其被配置成生成隨機比特;以及 處理器,其被配置成基于下述來計算標(biāo)量乘法的結(jié)果 1)R — 0,S — P 2)隨機化R和S的投影坐標(biāo)表示3)for i — n-1 to 0 do 4)生成隨機比特z5)if bj XOR z=l then {swap (R, S)} 6)else {do not swap} 7)if z=l then {R — R+S, S — 2*S} 8)else {S — S+R, R — 2*R}9)if bj XOR z=l then {swap(R, S)} 10)else {do not swap}11)end 12)從R、S和P重建k*P 其中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,i是計數(shù)器變量,k是參考數(shù),n是參考數(shù)的比特數(shù)目,z是隨機比特,以及匕是參考數(shù)的比特。
25.一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,包括 隨機數(shù)發(fā)生器,其被配置成生成隨機比特; 以及 處理器,其被配置成基于下述來計算標(biāo)量乘法的結(jié)果 1)R — 0,S — P 2)隨機化R和S的投影坐標(biāo)表示.3)zO — O .4)for i 一 n-1 to 0 do .5)生成隨機比特w .6)zl — IDi XOR w .7)if zO XOR zl=l then {swap(R, S)} .8)else {do not swap} .9)if w=l then {R — R+S, S — 2*S} . 10)else {S — S+R, R — 2*R} .11)zO — zl .12)end.13)if z0=l then {swap(R, S)} .14)else {do not swap} .15)從R、S和P重建k*P 其中,R是第一輔助變量,S是第二輔助變量,0是橢圓曲線的零元素,P是橢圓曲線上的參考點,k是參考數(shù),i是計數(shù)器變量,n是參考數(shù)的比特數(shù)目,h是參考數(shù)的比特,w是隨機比特,以及zO和zl是輔助變量。
26.一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備,包括 用于生成隨機數(shù)的裝置,其被配置成生成隨機比特;以及 用于計算標(biāo)量乘法的結(jié)果的裝置,其被配置成使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果, 其中用于計算標(biāo)量乘法的結(jié)果的裝置被配置成,如果取決于生成的隨機比特的交換條件被滿足,則在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
27.一種具有根據(jù)權(quán)利要求I所述的設(shè)備的密碼系統(tǒng)。
28.根據(jù)權(quán)利要求27所述的密碼系統(tǒng),其中,密碼系統(tǒng)是智能卡。
29.用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的方法,包括 生成隨機比特; 使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果;以及 如果取決于生成的隨機比特的交換條件被滿足,則在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
30.具有程序代碼的計算機程序,當(dāng)所述計算機程序在計算機或微控制器上運行時,所述程序代碼用于執(zhí)行根據(jù)權(quán)利要求29所述的方法。
全文摘要
本發(fā)明公開了用于計算標(biāo)量乘法的結(jié)果的設(shè)備和方法。一種用于計算參考數(shù)與橢圓曲線上的參考點的標(biāo)量乘法的結(jié)果的設(shè)備包括隨機數(shù)發(fā)生器和處理器。隨機數(shù)發(fā)生器生成隨機比特,以及處理器使用第一輔助變量和第二輔助變量基于計算算法來計算標(biāo)量乘法的結(jié)果,第一輔助變量存儲代表參考點的整數(shù)倍或參考點的整數(shù)倍的坐標(biāo)的第一中間結(jié)果,第二輔助變量存儲代表參考點的另一整數(shù)倍或參考點的另一整數(shù)倍的坐標(biāo)的第二中間結(jié)果。此外,如果取決于生成的隨機比特的交換條件被滿足,則處理器在計算標(biāo)量乘法的結(jié)果期間交換由第一輔助變量所存儲的值與由第二輔助變量所存儲的值。
文檔編號H04L9/26GK102638341SQ20121003116
公開日2012年8月15日 申請日期2012年2月13日 優(yōu)先權(quán)日2011年2月11日
發(fā)明者B.邁耶 申請人:英飛凌科技股份有限公司