專利名稱:用于安全地確定數(shù)據(jù)的方法
用于安全地確定數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于安全地確定數(shù)據(jù)的方法,在該方法中在第一 處理器中將帶密鑰的數(shù)學(xué)運(yùn)算應(yīng)用到橢圓曲線的點(diǎn)上,其中該密鑰可 以用位序列(bi)被表示為二進(jìn)制數(shù)。
非對(duì)稱的密碼系統(tǒng)通過(guò)設(shè)立由私鑰和公鑰組成的密鑰對(duì)如下保證
提高的安全度對(duì)于攻擊者來(lái)說(shuō)幾乎不可能在有限的時(shí)間內(nèi)解密私鑰 或者解密用公鑰加密的消息。諸如基于橢圓曲線的這種密碼系統(tǒng)的常 見(jiàn)密碼系統(tǒng)基于以下加密該加密可在多項(xiàng)式時(shí)間(polynomielle Zeit)中執(zhí)行,但是該加密僅僅在指數(shù)時(shí)間中相對(duì)于以位為單位的密 鑰長(zhǎng)度可被求逆(invertieren)。在基于橢圓曲線的系統(tǒng)中,現(xiàn)在應(yīng) 用11 = 160至192位的密鑰長(zhǎng)度,在基于RSA算法的系統(tǒng)中為此針對(duì)大 致相同的安全水平而使用n- 1024至1536位的長(zhǎng)度。
因此,基于橢圓曲線的加密方法比在相當(dāng)程度的可達(dá)到的安全性 的情況下的其它加密方法更有效并且必需更小的帶寬用于傳輸系統(tǒng)參 數(shù)。
作為例子,這里概述了公知的、用于基于橢圓曲線在兩個(gè)通信用 戶之間約定>^用密鑰的Diffie-Hellman方法。在這種情況下,第一通 信用戶A知道安全參數(shù)ra,而第二通信用戶B知道安全參數(shù)rb。在這 兩個(gè)通信用戶同意選用橢圃曲線和同意選用該橢圓曲線上的共同點(diǎn)P 之后,通信用戶A確定值
Qa = ra * P 并且通信用戶B確定值
Qb = rb*P。 '
緊接其后,由通信用戶A將值Qa傳輸給通信用戶B,并且由通信用 戶B將值Qb傳輸給通信用戶A。在另一標(biāo)量乘法中,通信用戶A現(xiàn)在確 定公用密鑰
K = ra * Qb = ra * rb * P 并且通信用戶B確定同樣的公用密鑰
K = rb * Qa = rb * ra * P。
因此,標(biāo)量乘法構(gòu)成基于橢圓曲線的加密方法中的基本組成部分。特別有利的是應(yīng)用橢圓曲線,因?yàn)榭梢詢H僅以顯著的計(jì)算花費(fèi)來(lái)計(jì)算
求逆運(yùn)算,該求逆運(yùn)算也就是由點(diǎn)Qo和P的認(rèn)知來(lái)確定標(biāo)量ra,b,使 得Qa,b = ra,b*P適用。根據(jù)如今的認(rèn)知水平,標(biāo)量乘法可以在多項(xiàng)式時(shí)
間中被計(jì)算,但是該標(biāo)量乘法僅僅可以在指數(shù)時(shí)間中被求逆。
可是,公知的基于橢圓曲線的加密方法在所謂的旁信道攻擊方面 是易受攻擊的。它們是對(duì)基于加密的求逆的攻擊方法的替換方案,以 便盡可能有效地破解加密所基于的算法。它們尤其可被用在諸如智能
卡或軟件狗(Dongle)的移動(dòng)輔助裝置中,秘密密鑰材料被存儲(chǔ)在所 述移動(dòng)輔助裝置上,以便實(shí)現(xiàn)加密的消息交換或產(chǎn)生數(shù)字簽名或者又 解密消息。
攻擊者利用相對(duì)應(yīng)電路的數(shù)據(jù)線的相對(duì)較容易的可接近性,以便 測(cè)量如電源(Strom)、電磁輻射的物理量,測(cè)量所感應(yīng)的錯(cuò)誤中的結(jié) 果或者測(cè)量某些計(jì)算的運(yùn)行時(shí)間。在根據(jù)簡(jiǎn)單的電源分析(SPA)或者 通過(guò)借助存儲(chǔ)示波器記錄如電源的測(cè)量值來(lái)直接分析處理 (Auswertung)測(cè)量值中以及在緊接著的統(tǒng)計(jì)學(xué)分析處理中,可以以 有效的方式獲得關(guān)于所基于的算法的信息,或者在最壞的情況下獲得 關(guān)于當(dāng)前存在的密鑰的信息。
應(yīng)借助例子來(lái)詳細(xì)闡述后者 一種用于進(jìn)行加密的方法不僅針對(duì) 基于橢圓曲線的算法而且針對(duì)基于RSA方法的這種算法規(guī)定應(yīng)用數(shù)學(xué) 運(yùn)算。
在橢圓曲線的情況下,作為數(shù)學(xué)運(yùn)算要執(zhí)行標(biāo)量乘法 Q = k*P,
其中P是經(jīng)過(guò)有限域K的橢圓曲線上的點(diǎn),而k又是密鑰或由其導(dǎo)出 的量。
標(biāo)量乘法的可能的實(shí)施方案可以通過(guò)在運(yùn)算器上實(shí)施下列算法來(lái) 進(jìn)行,其中密鑰k通過(guò)二進(jìn)制表示(bi, i = n-1...0)來(lái)預(yù)先給出 算法1: EC-橢圓曲線Q = k*P
(1. 1)Q —0
(1. 2) i —n-l
(1. 3)只要i >-l
(1.3.1) Q —2*Q
(1.3.2) 如果bi-l,則Q —Q + P(1.3.3) i —i-l (1.4)交付Q
在簡(jiǎn)單的電源分析(SPA)的情況下,分析標(biāo)量乘法的電源消耗的 分布。標(biāo)量乘法主要由加法和倍增組成。可是,這些運(yùn)算在K中的初 等運(yùn)算的數(shù)量上明顯不同,以致電源消耗也不同。因此,通過(guò)相對(duì)應(yīng) 的旁信道攻擊可推斷出單個(gè)位并且由此推斷出k的二進(jìn)制表示本身。
用于防御這種攻擊的可能的步驟在于,使與各個(gè)位的值有關(guān)的能 流(Stromfluss)和針對(duì)兩個(gè)可能的位狀態(tài)0和1的計(jì)算運(yùn)行時(shí)間相 適應(yīng),如下面所示的那樣
橢圓曲線E的點(diǎn)P由其x坐標(biāo)和其y坐標(biāo)給出?;跈E圓曲線E 的曲線方程,對(duì)于一個(gè)x值最多存在兩個(gè)不同的y值y!和y2,以致點(diǎn) (x, yj和(x, y2)是橢圓曲線E上的點(diǎn)。因此,為了明確地確定橢 圓曲線E上的點(diǎn),除了 x坐標(biāo)之外僅僅還需要一個(gè)附加信息位。
在有限素域上的橢圓曲線E的情況下,例如y坐標(biāo)的所謂的最低 有效位(LSB)或者各個(gè)點(diǎn)的y坐標(biāo)的符號(hào)足夠作為附加信息。
在所謂的蒙哥馬利梯形算法(Montgomery-Leiter-Algorithmus ) 中利用橢圓曲線的特性,該蒙哥馬利梯形算法是一種用于在橢圓曲線 上實(shí)施標(biāo)量乘法的常用方法。蒙哥馬利梯形算法能夠被實(shí)施來(lái)使得僅 僅點(diǎn)P的x坐標(biāo)被用于計(jì)算點(diǎn)P的標(biāo)量多倍(Vielfachen)的x坐標(biāo)。 因?yàn)槿缦旅嫠镜拿筛珩R利梯形算法同時(shí)是一種抵抗簡(jiǎn)單的電源分析 的極好的方法,所以該算法常常在運(yùn)行在嵌入式系統(tǒng)上的密碼系統(tǒng)中 #皮實(shí)施。
按照蒙哥馬利梯形算法的后面所描述的方法,計(jì)算處于橢圓曲線 上的點(diǎn)P的多倍hP。
以二進(jìn)制表示給出的標(biāo)量k= (bnl,…,bi,…,b。)以所謂的最高 有效位(MSB, Nl)開(kāi)始逐位被執(zhí)行。
算法2: EC-橢圓曲線Q = k*P
蒙哥馬利梯形
(2. 1)R —P, S —0
(2. 2) i —n-l
(2. 3)只要i >-1
(2. 3. 1)如果b, 1{S —S+R,R —2*R}(2.3.2) 否則{R —R+S,S —2*S}
(2.3.3) i —i-l
(2.4) 交付R, S
(2.5) 由點(diǎn)R、 S和P重建hP
在所示的例子中,與位無(wú)關(guān)地完全同樣地執(zhí)行加法和倍增。從運(yùn) 算順序方面,因此不能推斷出位序列。但是成問(wèn)題的是轉(zhuǎn)移指令("如 果"或"否則"),因?yàn)檫@些轉(zhuǎn)移指令導(dǎo)致跳轉(zhuǎn)到不同地址,該跳轉(zhuǎn) 使得不同的電源消耗可被察覺(jué)。
因此,本發(fā)明所基于的任務(wù)在于說(shuō)明一種用于安全地處理數(shù)據(jù)的 方法,其中進(jìn)一步提高了相對(duì)旁信道攻擊的安全性。
按照本發(fā)明,該任務(wù)通過(guò)具有權(quán)利要求1的特征的方法來(lái)解決。 本發(fā)明的有利的改進(jìn)方案在從屬權(quán)利要求中被說(shuō)明。
按照本發(fā)明,在用于安全地確定第一處理器中的數(shù)據(jù)的方法中, 具有密鑰的數(shù)學(xué)運(yùn)算被應(yīng)用到橢圓曲線的點(diǎn)上,其中所述密鑰可用位 序列(bi)被表示為二進(jìn)制數(shù)。該方法具有第一指令(x)和第二指令 (y),該第一指令(x)在其它處理器中導(dǎo)致對(duì)至少一個(gè)寄存器內(nèi)容 的第一操作(X),該第二指令(y)在該其它處理器中導(dǎo)致第二操作 (Y)。根據(jù)這兩個(gè)指令(x, y)確定至少一個(gè)值(d)。第一輔助量 (R)和第二輔助量(S)被初始化,即被配備有起始值。對(duì)于密鑰的 每個(gè)位(bi)順序地執(zhí)行下列步驟
第一輔助量(R)被傳送給該其它處理器的第一寄存器,并且第二 輔助量(S)被傳送給該其它處理器的第二寄存器。根據(jù)位(bi)的值 和所述至少一個(gè)值(d)的值將指令分配給輸出變量(A),使得或者 第一指令(x)被分配或者第二指令(y)被分配。輸出變量(A)被傳 輸給該其它處理器的指令寄存器。
最后,確定在該其它處理器中被更新的第一輔助量(R)和第二輔 助量(S)。在結(jié)束針對(duì)位(bi)的步驟之后,輸出第一輔助量(R)和 /或第二輔助量(S)并且由第一輔助量(R)和第二輔助量(S)確定 數(shù)學(xué)運(yùn)算的結(jié)果。
在本發(fā)明中,"其它處理器"在不排除該概念的一般性的情況下 被理解為協(xié)處理器、尤其是密碼協(xié)處理器。該其它處理器具有受限制 的指令組并且在硬件技術(shù)上被保護(hù)來(lái)使得通過(guò)測(cè)量幾乎不能識(shí)別在
8協(xié)處理器中是執(zhí)行等價(jià)的操作還是執(zhí)行不等價(jià)的操作。
因此,本發(fā)明的特征尤其是在于,在該方法中,針對(duì)協(xié)處理器確
定指令(所謂的操作碼(Operationscode)),這些指令引起寄存器 內(nèi)容在協(xié)處理器之內(nèi)的交換或者不交換?;趨f(xié)處理器的技術(shù)構(gòu)造, 不能從外部將寄存器內(nèi)容例如從寄存器A向寄存器B的移位與從寄存 器A向寄存器C的移位相區(qū)別。因此,所描述的用于解決該任務(wù)的一 般方法尤其是在于,不是確定包含要處理的輔助量的存儲(chǔ)區(qū)上的地址, 而是確定針對(duì)用于與位有關(guān)地交換寄存器內(nèi)容的協(xié)處理器指令的操作 碼。在這種情況下利用以下事實(shí)在協(xié)處理器中,寄存器內(nèi)容的地址 不起作用,因?yàn)檫@些輔助量已經(jīng)被加栽到協(xié)處理器的寄存器中并且這 些寄存器隱含地通過(guò)相應(yīng)的操作碼被尋址。
就此而言,本發(fā)明的方法具有以下優(yōu)點(diǎn)明顯提高保護(hù)免受(尤 其是通過(guò)電源分析引起的)旁信道攻擊的影響,因?yàn)閮蓚€(gè)寄存器的交 換僅僅在協(xié)處理器之內(nèi)進(jìn)行并且所述交換或不交換基于兩個(gè)操作碼的 發(fā)送,其實(shí)施在協(xié)處理器之內(nèi)不能被區(qū)別。
作為本發(fā)明的其它重要的優(yōu)點(diǎn)得到避免了對(duì)于旁信道攻擊尤其 易受攻擊的"如果-否則-分支,,,其方式是通過(guò)計(jì)算兩個(gè)操作碼之間的 差進(jìn)行"如果-否則-分支"的隱含確定。
本發(fā)明的應(yīng)用并不限于協(xié)處理器。因此,例如可能的是將根據(jù) 本發(fā)明的方法用于選擇不同的、用于實(shí)施自我修改的程序的操作碼, 并且以這種方式實(shí)施隱含的"如果-否則-分支,,。此外,本發(fā)明的方 法可被轉(zhuǎn)用到其它的快速取冪例行程序(Exponentiationsroutine ) 和標(biāo)量乘法的實(shí)施上。
按照本發(fā)明的有利的擴(kuò)展方案,第一指令(x)和第二指令(y) 具有相同的漢明重量。因此,以有利的方式保證,也不能從外部通過(guò) 旁信道攻擊區(qū)別這兩個(gè)指令(x, y)。
下面借助實(shí)施例根據(jù)附圖詳細(xì)說(shuō)明本發(fā)明。其中
圖1示出了將輔助量(R, S)分配到協(xié)處理器的不同寄存器的示 意圖,
圖2示出了通過(guò)協(xié)處理器之內(nèi)的操作碼將輔助量(R, S)分配到 協(xié)處理器的寄存器的示意圖。
借助按照現(xiàn)有技術(shù)的在算法2中所示的蒙哥馬利梯形的流程可以認(rèn)識(shí)到,在方法步驟(2. 3. 1)和(2. 3. 2 )中根據(jù)位(bi)僅僅交換輔 助量(R,S)。
(3.1) 如果bi-l: {S —S+R,R —2*R}
(3.2) 否則{R —R+S,S —2*S}
因此算法2通過(guò)以下方式被進(jìn)一步簡(jiǎn)化如果密鑰位取值0,則輔 助量在所執(zhí)行的回路的開(kāi)始處和結(jié)束處被交換。那么僅僅需要參考這 兩個(gè)轉(zhuǎn)移地址中的一個(gè),其中Fl= {S —S+R,R —2*R}:
(4. 1)如果bi = 1: Fl
(4.2)否則{交換U,S) , Fl,交換(R,S) }。
這種方法所基于的、蒙哥馬利梯形算法的硬件技術(shù)上的實(shí)施方案 在圖1中被示出。兩個(gè)輔助量(R) 101和(S) 102根據(jù)密鑰位(bi) 的值分別被移位到協(xié)處理器103的第一寄存器104或第二寄存器105 中。如果密鑰位例如具有值1,那么輔助量(R) 101被移位到第一寄 存器104中,106;并且輔助量(S) 102被移位到第二寄存器105中, 109。如果密鑰位相反地取值O,那么輔助量(R) IOI被移位到第二寄 存器105中,107;并且輔助量(S) 102被移位到第一寄存器104中, 108。
在協(xié)處理器103中,在這兩種情況下執(zhí)行函數(shù)F1,以致函數(shù)F1的 結(jié)果必要時(shí)必須又一次被交換。
可是,所描述的方法具有以下缺點(diǎn)總是還存在通過(guò)旁信道攻擊 引起的可檢測(cè)性,因?yàn)楦鶕?jù)位值,在復(fù)制時(shí)每個(gè)計(jì)算機(jī)字需要兩個(gè)存 儲(chǔ)器訪問(wèn)。在較長(zhǎng)的域元素的情況下需要多個(gè)訪問(wèn),這明顯地表現(xiàn)在 電源消耗中。
按照本發(fā)明通過(guò)以下方式消除了該缺點(diǎn)在協(xié)處理器之內(nèi)執(zhí)行輔 助量(R,S)的交換。
該過(guò)程在圖2中被示出。與相應(yīng)的密鑰位(bi)無(wú)關(guān)地,輔助量(R) 201被移位到協(xié)處理器203的第一寄存器204中,206;并且笫二輔助 量(S) 202被移位到協(xié)處理器203的第二寄存器205中,207。可是, 根據(jù)相應(yīng)的密鑰位(bi),確定對(duì)于協(xié)處理器203的操作碼并且將該操 作碼移位到協(xié)處理器的指令寄存器中。在密鑰位的值為1的情況下, 第一操作碼被移位到指令寄存器中,以致笫一寄存器204中的輔助量 (R)被移位到第三寄存器212中,208;并且以致第二寄存器205中的輔助量(S)被移位到第四寄存器213中,211。在密鑰位的值為0 的情況下,相反地將第二操作碼移位到指令寄存器中,以致第一寄存 器204中的輔助量(R)被移位到第四寄存器213中,209;并且以致 第二寄存器205中的輔助量(S)被移位到第三寄存器212中,210。
在另一實(shí)施例中,R、 S、 C是協(xié)處理器的內(nèi)部的數(shù)據(jù)寄存器。上面 所描述的、針對(duì)協(xié)處理器的指令序列能被表示為
(5.1) 如果b,O,那么(交換(R,S))
(5.2) 否則{不交換(R,S) }。 借助第三數(shù)據(jù)寄存器C,指令序列也能被描述如下 (6.1)如果bi-0,那么(C —R,R —S, S —C }
(6. 2)否則,那么{ C —R,R —S, R —C } 或者
(7.1) C —R,R —S
(7.2) 如果bi-O,那么{ S —C } (7. 3)否則,那么{ R —C }。
在方法步驟(7.1)中進(jìn)行的分配S —C和R —C沒(méi)有導(dǎo)致電源消耗 中的可測(cè)量的區(qū)別,可是與位有關(guān)的分支和以前一樣不能被保護(hù)以防 止旁信道攻擊。在下面,通過(guò)操作碼(x)描述了指令S —C并且通過(guò) 操作碼(y)描述了指令R —C,并且此外還假設(shè)在不限制一般性的情況 下適用x〈y。具有操作碼的指令通過(guò)以下方式來(lái)由協(xié)處理器執(zhí)行將相 對(duì)應(yīng)的操作碼寫入?yún)f(xié)處理器的指令寄存器中。在該假設(shè)下,可以如下 地描述指令序列
(8.1)如果& = 0,那么(A —x)
(8. 2)否則,那么{A —y}
(8. 3) C —R,R —S
(8.4)將來(lái)自A的操作碼寫入指令寄存器中
唯一剩余的可測(cè)量的位相關(guān)性在上面描述的算法中通過(guò)分配操作 碼來(lái)引起。按照本發(fā)明,通過(guò)以下方式避免(8.1)和(8.2)中的轉(zhuǎn) 移指令在指令(x)和(y)之間構(gòu)成差d-y-x,以致轉(zhuǎn)移指令的結(jié) 果能如下地與位有關(guān)地被計(jì)算
A = x + d bi
該方法可以通過(guò)添加兩個(gè)計(jì)算機(jī)字h和h'被進(jìn)一步改善,其中這兩個(gè)計(jì)算機(jī)字(h, h')僅僅在計(jì)算機(jī)字h的最小有效位上被區(qū)分,該 計(jì)算機(jī)字h是相應(yīng)的密鑰位bi。因此,在減法h-h、bi情況下得到, 并且所查找的操作碼可以如下地被計(jì)算
A = x + h- d — h'-d
該多項(xiàng)式被描述在下面的算法中
(9.1) 將bi旋轉(zhuǎn)到字h的LSB上
(9.2) 按照h'復(fù)制h并且刪除h'的LSB (9. 3) A —x
(9.4) m —h*d
(9.5) A —A+m (9. 6) m —h'*d (9. 7) A —A-m
如果將該結(jié)果應(yīng)用到在算法2中描述的蒙哥馬利梯形算法中,則 得到下面的算法
(10.1) x—指令{ S —C )//交換R、 S的寄存器內(nèi)容
(10.2) y—指令{ R —C )//不交換R、 S
(10.3) R—P, S —0
(10.4) d—y _ x,其中x<y
(10.5)對(duì)于i —n - 1至0執(zhí)行(10.6)將bi旋轉(zhuǎn)到字h的LSB上
(10.7)按照h'復(fù)制h并且刪除h'的LSB
(10.8)A —x
(10.9)m — h*d
(10.10)A —A+m
(10.11)m — h'*d
(10.12)A —A-m
(10.13)C —R,R —S
(10.14)將A加載到協(xié)處理器的指令寄存器中
(10.15)在協(xié)處理器中計(jì)算S —S+R,R —2*R
(10.16)C —R,R —S
(10.17)將A加栽到協(xié)處理器的指令寄存器中
(10.18)結(jié)束(10.19)由R、 S和P重建hP 在其它實(shí)施例中,描述了在英飛凌(Infineon )公司的芯片 SLE66CX320P上使用例如協(xié)處理器ACE的情況下的根據(jù)本發(fā)明的實(shí)施 方案。
密碼協(xié)處理器ACE具有四個(gè)數(shù)據(jù)寄存器CRO、 CR1、 CR2和CR3以 及操作數(shù)寄存器C。在該例子中,兩個(gè)輔助量被加載到數(shù)據(jù)寄存器CR1 和CR2中,這些數(shù)據(jù)寄存器CR1和CR2的內(nèi)容現(xiàn)在應(yīng)該被交換。秘密 位為工作寄存器A的最小有效位(LSB),該工作寄存器A在該情況下 具有8位的長(zhǎng)度。
此外,密碼協(xié)處理器ACE還具有指令move —CR1-C和move-CR2_c, 借助這些指令將寄存器C的內(nèi)容移位到寄存器CR1中或移位到寄存器 CR2中。對(duì)于第一指令的操作碼x為0x6b,并且對(duì)于第二指令的操作 碼y為0x73。因?yàn)閮蓚€(gè)操作碼之間的差d為8,所以上述算法(9.4) 中的乘法h . d通過(guò)移位指令來(lái)替換,并且該算法因此被筒化。下列算 法現(xiàn)在示出了針對(duì)第一或第二指令確定所希望的操作碼,其中運(yùn)算&表 示邏輯"與"運(yùn)算
操作碼的選擇 (11. 1 )循環(huán)地將A向左旋轉(zhuǎn)三位 (11. 2 )設(shè)置B —A + 0x6b
(11.3) 計(jì)算A —A ft 0xf7 (使第三低位漸隱)
(11.4) 設(shè)置A —B-A
在步驟(11.1),通過(guò)移位指令將密鑰以及因此將按照其應(yīng)該被 區(qū)別的位循環(huán)地向左旋轉(zhuǎn)3位,這對(duì)應(yīng)于與差8相乘。在步驟(11.2), 操作碼x的值被加上。在步驟(11.3),按照其應(yīng)該被區(qū)別的位被刪 除并且剩余的部分緊接著在第四步(11.4)中又被減去。
下面的實(shí)施方案是可替換的解決方案,其中運(yùn)算I表示邏輯"或"
運(yùn)算
操作碼的選擇 (12. 1 )計(jì)算A & Oxf d (使第二最低位漸隱)
(12.2) 設(shè)置A —A+l
(12.3) 計(jì)算A & 0x03 (使除了兩個(gè)最低值的位之外的所有位漸
隱)(12.4) 將A向左旋轉(zhuǎn)三位
(12.5) 計(jì)算A I 0x63
在步驟(l2. 1)至(12.3)中的指令引起根據(jù)密鑰的最低有效 位(應(yīng)該根據(jù)該最低有效位被區(qū)別),如果該位具有值0,則給寄存器 A分配值l;或者如果該位具有值l,則給寄存器A分配值2。在步驟 (12.4),寄存器A的內(nèi)容向左旋轉(zhuǎn)3位,這對(duì)應(yīng)于與8相乘。在步 驟(12. 5),確定操作碼。所希望的操作碼此后位于寄存器A中。
在應(yīng)用算法12的條件下,兩個(gè)寄存器的防止旁信道攻擊的更安全 的交換完整地進(jìn)行
(13. l)計(jì)算Aft Oxfd (使第二最低位漸隱) (13. 2)設(shè)置A = A + 1
(13.3) 計(jì)算A & 0x03 (使除了兩個(gè)最低值的位之外的所有位漸
隱)
(13.4) 將A向左旋轉(zhuǎn)三位 (13. 5 )計(jì)算A I 0x63
(13. 6 )將ACE寄存器CR1向C移位 (13. 7 )將ACE寄存器CR2向CR1移位 (13. 8 )將操作碼A寫入?yún)f(xié)處理器ACE的指令寄存器中 在算法13中,來(lái)自算法12的用于確定密碼協(xié)處理器的操作碼的 計(jì)算步驟與來(lái)自算法8的用于根據(jù)所給出的密鑰位來(lái)交換協(xié)處理器的 寄存器CR1和CR2的內(nèi)容的步驟相組合。 本發(fā)明并不限于在此所描述的實(shí)施例。
權(quán)利要求
1.用于安全地確定數(shù)據(jù)的方法,在該方法中,在第一處理器中將帶密鑰的數(shù)學(xué)運(yùn)算應(yīng)用到橢圓曲線的點(diǎn)上,其中該密鑰能用位序列(bi)被表示為二進(jìn)制數(shù),-具有第一指令(x)和第二指令(y),該第一指令(x)在其它處理器中導(dǎo)致對(duì)至少一個(gè)寄存器內(nèi)容的第一操作(X),該第二指令(y)在所述其它處理器中導(dǎo)致第二操作(Y);該方法包括步驟-根據(jù)兩個(gè)指令(x,y)確定至少一個(gè)值(d);-初始化第一輔助量(R)和第二輔助量(S);-對(duì)于密鑰的每個(gè)位(bi)順序地執(zhí)行下列步驟(a)將第一輔助量(R)傳送給第一寄存器,并且將第二輔助量(S)傳送給所述其它處理器的第二寄存器,(b)根據(jù)位(bi)的值和所述至少一個(gè)值(d)的值將指令分配給輸出變量(A),使得·或者第一指令(x)被分配,·或者第二指令(y)被分配,(c)將所述輸出變量(A)傳輸給所述其它處理器的指令寄存器,(d)確定在所述其它處理器中被更新的第一輔助量(R)和第二輔助量(S),-在結(jié)束針對(duì)位(bi)的步驟之后,輸出第一輔助量(R)和/或第二輔助量(S),并且由第一輔助量(R)和第二輔助量(S)確定數(shù)學(xué)運(yùn)算的結(jié)果。
2. 按照權(quán)利要求1所述的方法,其中,對(duì)所述其它處理器的寄存 器內(nèi)容的第一操作(X)導(dǎo)致交換第一寄存器的內(nèi)容和第二寄存器的內(nèi) 容,所述第一操作(X)被分配給第一指令(x),并且其中,對(duì)所述 其它處理器的寄存器內(nèi)容的第二操作(Y)導(dǎo)致不交換第一寄存器的內(nèi) 容和第二寄存器的內(nèi)容,所述第二操作(Y)被分配給第二指令(y)。
3. 按照權(quán)利要求1或2所述的方法,其中,所述第一輔助量(R) 代表在有限域上的橢圓曲線上的點(diǎn),并且在初始化的步驟中被分配有 固定的點(diǎn)(P)。
4. 按照權(quán)利要求1至3之一所述的方法,其中,所述第二輔助量(s)代表在有限域上的橢圓曲線上的點(diǎn),并且在初始化的步驟中被分配有值o。
5. 按照權(quán)利要求1至4之一所述的方法,其中,所述數(shù)學(xué)運(yùn)算包 括標(biāo)量乘法(k*P)。
6. 按照權(quán)利要求1至5之一所述的方法,其中,在所述其它處理 器中進(jìn)行的、第一輔助量(R)和第二輔助量(S)的更新包括下列步 驟-在第一運(yùn)算操作中進(jìn)行在橢圓曲線上的兩個(gè)點(diǎn)的加法,-并且,在第二運(yùn)算操作中進(jìn)行橢圓曲線上的點(diǎn)與系數(shù)2的標(biāo)量乘法或與其本身的加法-并且確定所更新的第一輔助量和第二輔助量,使得根據(jù)位(bi)的值分別將第一運(yùn)算操作的結(jié)果和笫二運(yùn)算操作的結(jié)果分配給兩個(gè)輔助量(R, S)之一。
7. 按照權(quán)利要求1至6之一所述的方法,其中,所述值(d)為 來(lái)自兩個(gè)指令(x, y)之間的位表示的區(qū)別的差值。
8. 按照權(quán)利要求7所述的方法,其中,在步驟(b)中,根據(jù)當(dāng) 前位(bi)的值通過(guò)以下方式將差值(d)添加到第一指令(x):-構(gòu)成第一計(jì)算機(jī)字(hl),該第一計(jì)算機(jī)字(hl)包含在順序 處理中的當(dāng)前位(bi);-將第一計(jì)算機(jī)字(hl)與差值(d)相乘得到第一乘積(ml);-由所述第一乘積(ml)與所述第一指令(x)的加法確定第一中 間值;-由所述第一計(jì)算機(jī)字(hi)構(gòu)成第二計(jì)算機(jī)字(h2),其中在 當(dāng)前位(bi)的位置上的位被置為零;-將第二計(jì)算機(jī)字(h2)與差值(d)相乘得到第二乘積(m2);-由將所述第二乘積(m2)從所述第一中間結(jié)果中減去來(lái)確定輸 出變量(A);-使得 或者第一指令(x)被分配給所述輸出變量(A), -或者第二指令(y)被分配給所述輸出變量(A)。
9. 按照權(quán)利要求7所述的方法,其中,在步驟(b)根據(jù)位(bi) 的值將所述差值(d)從第二指令(y)中減去,使得 或者第一指令(x)被分配給所述輸出變量(A), 或者第二指令(y)被分配給所述輸出變量(A)。
10. 按照權(quán)利要求1至9之一所述的方法,其中,在順序的處理中 的所述當(dāng)前位(bi)是最低有效位(LSB)。
11. 按照權(quán)利要求1至IO之一所述的方法,其中,-第一指令(x)導(dǎo)致將所述其它處理器的第三寄存器的內(nèi)容傳送 給所述其它處理器的笫一寄存器,并且第二指令(y)導(dǎo)致將該第三寄 存器的內(nèi)容傳送給所述其它處理器的第二寄存器,-在步驟(a)之后,在另一步驟,用于將該第一寄存器的內(nèi)容傳 送給該第三寄存器的指令和用于將該第二寄存器的內(nèi)容傳送給該第一 寄存器的指令被傳送給所述其它處理器的指令寄存器。
12. 按照權(quán)利要求1至ll之一所述的方法,其中,第一指令(x) 和第二指令(y)具有相同的漢明重量。
全文摘要
本發(fā)明所基于的任務(wù)在于,說(shuō)明一種用于安全地處理數(shù)據(jù)的方法,其中進(jìn)一步提高了相對(duì)旁信道攻擊的安全性。該任務(wù)尤其是由此被解決確定用于指示協(xié)處理器的操作碼,例如確定用于取決于位地交換寄存器內(nèi)容的操作碼。在這種情況下利用以下事實(shí)基于協(xié)處理器的技術(shù)上的構(gòu)造,從外部不能將寄存器內(nèi)容例如從寄存器A向寄存器B的移位與從寄存器A向寄存器C的移位相區(qū)別。
文檔編號(hào)H04L9/30GK101405988SQ200680054031
公開(kāi)日2009年4月8日 申請(qǐng)日期2006年12月19日 優(yōu)先權(quán)日2006年3月28日
發(fā)明者A·卡格爾, B·邁耶, M·布勞恩, S·皮卡 申請(qǐng)人:西門子公司