TW201437910A - 非對稱遮罩乘法 - Google Patents

非對稱遮罩乘法 Download PDF

Info

Publication number
TW201437910A
TW201437910A TW103105533A TW103105533A TW201437910A TW 201437910 A TW201437910 A TW 201437910A TW 103105533 A TW103105533 A TW 103105533A TW 103105533 A TW103105533 A TW 103105533A TW 201437910 A TW201437910 A TW 201437910A
Authority
TW
Taiwan
Prior art keywords
mask
multiplication
value
square
update
Prior art date
Application number
TW103105533A
Other languages
English (en)
Other versions
TWI604380B (zh
Inventor
Joshua Michael Jaffe
Original Assignee
Cryptography Res Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cryptography Res Inc filed Critical Cryptography Res Inc
Publication of TW201437910A publication Critical patent/TW201437910A/zh
Application granted granted Critical
Publication of TWI604380B publication Critical patent/TWI604380B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7233Masking, e.g. (A**e)+r mod n
    • G06F2207/7238Operand masking, i.e. message blinding, e.g. (A+r)**e mod n; k.(P+R)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7223Randomisation as countermeasure against side channel attacks
    • G06F2207/7257Random modification not requiring correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本文揭示用於以經設計以消除旁通攻擊之一方式遮罩某些密碼編譯運算之方法及系統。平方運算可經遮罩以使平方運算不能或更低程度地與乘法運算區分。一般而言,平方運算藉由非對稱地遮罩其等而被轉換為乘法運算。本發明揭示用於消除對模指數運算之DPA、交叉相關及高階DPA攻擊之額外方法及系統。

Description

非對稱遮罩乘法
本文描述之實施例大體上係關於用於執行非對稱遮罩乘法之系統及方法,且此外係關於用於以對旁通攻擊更安全之一方式執行密碼編譯系統中之模指數運算之系統及方法。
簡易功率分析(SPA)係涉及直接解譯密碼編譯運算期間收集之功率消耗量測之一技術。SPA可產生關於一裝置的運算及金鑰材料之資訊。
使用SPA,可藉由分析當計算模平方及模乘法時產生之不同功率消耗分佈區分模平方運算與模乘法運算。在使用用於平方及乘法之單獨電路之早期密碼編譯裝置中,此等運算之間的功率消耗差可能極大。即使平方及乘法使用相同電路,功率消耗分佈亦可歸因於模平方與模乘法運算之間的計算複雜度之差而顯著不同。歸因於可區分模平方與模乘法時洩漏秘鑰而可危及系統。
即使將隨機輸入提交給一般的乘法電路,平方與乘法之間亦存在功率分佈差。(在此背景下,「平方」意謂執行電路以一參數乘以其自身)。一最佳化平方運算可快於一乘法。但是獨立於任何速度最佳化,一平方之計算複雜度-藉由計數在運算期間切換之電晶體數目而量測-在對許多隨機輸入取平均值時低於具有不同隨機輸入之許多乘法之平均複雜度。因此,若相同電路執行平方及乘法運算,則當不 關心調平差時平方及乘法運算通常可彼此加以區分及善用。
許多密碼編譯演算法(如RSA及Diffie-Hellman)涉及執行模指數運算。為改良計算速度,設想出藉由平方執行指數運算之方法,通常稱為「平方-乘法」演算法。模指數運算之平方-乘法演算法之實例包含左-右平方乘法;右-左平方乘法;k元指數運算;滑動窗方法;及蒙哥馬利冪次方梯(Montgomery powering ladder)。
圖1A展示一平方-乘法演算法,其中b自乘對應於20149之十進位值之一指數100111010110101。底數由b標示,且A係一累積器。在由1初始化之後,指數可每次從左至右被累積地積聚一位元,如(1,0,0,1,1,1,...)=(1,2,4,9,19,39,...)。換言之,可使用一系列步驟建構指數,其中各步驟取決於所述步驟中之位元及來自先前步驟之結果。若位元係0,則運算包括對先前結果平方。若位元係1,則運算包括對先前結果平方並使平方乘以底數b。若未使用SPA或差分功率分析(DPA)防禦,則在指數運算之左-右及右-左平方-乘法演算法中,可區分平方與乘法之一攻擊者可判定所使用的完整指數。
圖1B繪示一指數運算方案中之模運算之一功率記錄,其中預計算b的各個冪次之一表:b0、b1、b2、b3。(值b0等效於1)。在此方案中,總是存在兩次平方,後續接著乘以表項之一者。此平方-平方-乘法演算法在功率分佈中產生兩個連續低及一高之一極對稱功率記錄(SSM SSM SSM SSM...)。(這係k元指數運算演算法,其中k一每次乘法處理之指數位元之最大數目-等於2)。因為無關於指數之位元為何,平方及乘法之型樣皆總是SSM,所以區分平方與乘法不足以揭露金鑰。這容許隱藏秘鑰且可保護系統不受某些SPA攻擊。然而,可區分一類型的乘法與另一類型的乘法之一攻擊者仍可得到關於金鑰之資訊。
一些方法省略乘以1或使用虛設乘以另一值(忽略結果)以嘗試遮 罩功率記錄。使先前結果乘以1產生與先前結果相同之輸出,且因此無須忽略輸出。省略乘以1保留一潛在可偵測的SPA特性。亦可由SPA偵測忽略一虛設運算之輸出之額外步驟。即使不省略乘以1,運算亦具有低計算複雜度且無需更大計算功率。因此,一攻擊者皆能夠基於乘以1的功率分佈而譯密乘以1。
在圖1B中,例如,一攻擊者能夠藉由分析功率記錄偵測何時發生乘以1,且判定該等位置處的兩個指數位元係零。(注意在圖1B中,為方便起見,將一序列平方-平方-乘以bx稱為SSX。運算序列包括乘以b0、b3、b2、b2、b3、b1及b1,且因此標示為SS0SS3SS2SS2SS3SS1SS1)。由於該等乘法位置處之功率分佈之一致性,可識別乘以1(即,乘以b00)之一攻擊者無法使用SPA解碼剩餘非00指數位元(例如,01、10或11)。隨後,攻擊者僅能夠使用此途徑獲得近似指數位元之四分之一,這可能或可能不足以破壞密碼體系之安全。
圖1C繪示基於不同乘法之功率分佈之細微差別將乘法叢集為集合。如早期陳述,一攻擊者能夠偵測00指數位元之位置,但是無法判定非00位元之實際值。換言之,攻擊者無法區分是否係乘以一底數的一次冪、二次冪或三次冪。然而,實務上,大部分裝置通常具有某種洩漏,且每類型乘法可顯示一不同特性。
例如,如圖1C中所示,位元11(十進位值3)的乘法運算之功率分佈可在一階狀部前面顯示一細小的突波。類似地,位元10(十進位值2)的乘法運算之功率分佈可在一階狀部中間顯示一細小的突波,且位元01(十進位值1)的乘法運算之功率分佈可在一階狀部末端顯示一細小的突波。若可在一個別功率記錄中觀察到此等細小的突波特徵,則一攻擊者能夠將此等乘法歸類為對應於b1、b2、b3(或簡稱為「1」、「2」、「3」,但是攻擊者首先可能不知道該對應)之三個不同集合 (A,B,C)。為進一步確認該等歸類,攻擊者可重複加密相同訊息並對多次指數運算(例如,1000次指數運算)取功率分佈之結果的平均值以觀察乘法之間的此等細微的差別。若攻擊者成功地將不同乘法叢集為集合(A,B,C),則攻擊者相對容易地藉由執行一搜尋來譯密指數金鑰。在圖1C之實例中,僅存在6種方式可使(A,B,C)映射至(1,2,3),因此可使用少於一3位元搜尋潛在地譯密指數金鑰。
上述問題之一防禦係在不同計算中遮罩指數並隨機化指數之遮罩使得運算序列在一後續計算中可能完全不同。例如,若對於第一指數而言第一次運算及最後一次運算皆屬於一叢集A,則關於下一個指數,第一次運算可對應於一叢集D,而最後一次運算係在一不同叢集E中。若自一次計算至下一次計算隨機化指數,則一攻擊者將必須能夠自一單個功率記錄成功地執行一叢集(並校正所有誤差),這增加譯密指數金鑰的困難度。(具有階phi(N)之一群組中之指數隨機化方法在先前技術中廣為人知,且包含以下方法:如使用(d’=d+k*phi(N))取代d、將d劃分為(a,b)使得a+b=d或使得b=(d*a-1)mod phi(N))。
圖1D繪示將滑動窗演算法應用於圖1B之指數100111010110101。當與圖1B中之平方-平方-乘法指數運算相比,滑動窗演算法可藉由減小所執行的乘法的平均次數(排除平方)來減小所需預計算的量。因此,滑動窗演算法更具效率且需要更少記憶體位置來儲存項。
如圖1D中所示,滑動窗演算法將序列SS2(即,平方,平方,乘以b2)轉化為一不同序列S1S(平方,乘以b1,平方)。序列S1S等效於位元2(10),這係因為S1S包括一平方乘數S(0),後續接著1S(10)。藉由用S1S替換所有SS2,表中可省略值2。因此,滑動窗演算法允許一更少表項,其中所得表僅具有項(0,1,3)。記憶體位置之此減小可減小製造裝置所需部件數目且尤其當裝置之製造對成本敏感時可提供成本優勢。
圖1D進一步展示減小滑動窗演算法中之乘法次數之另一方式。如早期陳述,可用SS1|S1S替換對應於SS1|SS2之位元0110。SS1|S1S仍使用兩次乘法(每次乘以1)。然而,使用滑動窗演算法,若將序列SS1|S1S轉化為序列S|SS3|S(其僅具有一次乘法(乘以3)),則可將該兩次乘法減小至僅一次乘法。從表可見,序列S|SS3|S亦對應於位元0110。因此,在滑動窗演算法中,指數無須總是被分為2位元區塊(因此為術語「滑動」),且可藉由沿指數從左至右查看各位元且使用上述方法來減小乘法次數。
圖1E繪示基於一功率分佈解碼滑動窗演算法中之指數之一種方式。如圖1E中指示,在滑動窗演算法中,在第一位元1處且在每個後續非零位元(即,位元1)處存在一決策點。在到達決策點之前演算法中不會發生乘法步驟。取決於指數中之下一個位元,演算法可執行下列兩次運算之一者。若決策點之後的下一個位元係一0(即,2位元值係10),則演算法插入一S1S(代替一SS2,因為表不再具有一項2)。若決策點之後的下一個位元係1(即,2位元值係11),則演算法插入一SS3。
一攻擊者通常可看見其中使用一滑動窗演算法之一功率分佈中之許多平方之序列。運用簡易二進位演算法,可區分平方與乘法之一攻擊者可解碼其等以完全恢復指數。運用滑動窗演算法,一些乘法對應於1(乘以b1),而其他乘法對應於3(即,b3)。雖然這導致解碼指數在一定程度上不明確,但是一攻擊者仍已知每個序列SSM對應於指數之二位元區段,其中低階位元係1:即,指數位元係「?1」。此外,在M之間的任何S序列中,攻擊者已知除了一M之前的最後兩個S以外必須全部對應於指數中係0之位元。總之,此等事實容許解碼大部分指數。此外,存在發生兩次M運算之一些情況,其中其等之間的平方次數小於k,這係由某些指數位元型樣所致。當這發生時,其揭露指數 中為零之額外位元。例如,當k=3時,可發生直接k元指數運算演算法中不可能存在之序列MSM。(在圖1E中,這係由功率記錄中之高-低-高功率而特徵化)。(對於表中僅具有1及3之滑動窗演算法)當發生此型樣時,可僅意謂指數位元係「1110」。此事實繼而可容許在分段之前及之後解碼位元。圖1E之實例中之MSM序列周圍的功率分佈之一較近檢查展示:MSM序列係SSM|SMS|SMS之一較長序列之部分且必須對應於111010。換言之,攻擊者能夠判定此等位置處的值(3,1,1)。藉由鑑於上述MSM序列及S..SS序列而分析整個功率記錄,攻擊者能夠解碼指數中之三分之一或可能三分之二的位元。若攻擊者能夠解碼指數中之至少一半的位元,則攻擊者能夠以分析解答指數。在一些情況下,解碼每個指數運算的四分之一的位元-或甚至幾個位元-可能足以破壞密碼體系。
此外,攻擊者能夠藉由對上千次指數運算取功率分佈的平均值且尋找各MSM位置(3,1)及剩餘未知乘法位置處之特性(類似於參考圖1C論述之方法)在視覺上識別0、1及3之集合。在此情況下,例如,攻擊者可判定在功率記錄中之所識別MSM位置中,10個位置對應於3且5個位置對應於1。接著攻擊者可比較此等已知MSM位置處之1及3之已知功率分佈與沿功率記錄之其他位置處之剩餘未知乘法(例如,200次乘法可能未知)。若攻擊者能夠將位元(0,1,3)叢集為三個集合,則攻擊者接著可完整地解碼指數。
DPA及高階DPA攻擊
先前已嘗試藉由遮罩指數值來阻止SPA。模指數運算中之中間值之遮罩可有助於抵抗DPA攻擊。例如,在典型的盲模指數運算中,當一輸入乘以攻擊者未知之一遮罩時實際上可遮罩或隨機化該輸入。隨後遮罩或隨機化輸入可在運算結束時解除遮罩。此遮罩可利用模逆,使得(X * X-1)mod N=1。例如,對於指數D及E,(A*(XE))D *(X-1) mod N等於AD mod N,其中XED=X mod N。
不同遮罩通常用於不同運算,但是在一模指數運算中間不會改變。在運算之間,有時候由一先前遮罩藉由使用一模平方而有效產生一新遮罩。(即,若對I=XE且O=X-1進行以N為模的預計算且加以儲存,則可藉由平方有效計算遮罩I’及O’之一新集合,其中I’=I2 mod N且O’=O2 mod N)。然而,其中僅在指數運算之間更新遮罩(且未在一單個指數運算內部更新遮罩)之設計可能易受DPA及高階DPA攻擊(呈交叉相關攻擊的形式)。此等交叉相關攻擊係類似於上文描述之SPA叢集攻擊但採用統計方法來識別叢集之叢集攻擊。與以某時刻之一特定參數為目標之一規則的DPA攻擊相比,高階DPA攻擊藉由在記錄中之不同位置處使用多重功率量測以測試該等參數之間的關係而以該(該等)關係為目標。若輸入參數在該等位置中相同,則與其中該等參數並無關係(即,不同參數)之位置相比,該等參數將具有較高相關性。在許多情況下,即使兩次運算之間一例如,A1乘以B3,及第二次,A2乘以B3一共用一參數,亦可偵測一相關性。一交叉相關攻擊容許一攻擊者測試運算之間由一參數的共用使用所致的此相關性。
雙重攻擊及「大麥克攻擊(Big Mac attack)」係交叉相關攻擊之兩類型。由P.Fouque及F.Valette編著之標題為「The Doubling Attack-Why Upwards is Better than Downwards」的論文(CHES 2003《Lecture Notes in Computer Science》第2779卷第269頁至第280頁)中描述雙重攻擊。「Big Mac」攻擊係一高階DPA攻擊,且在由C.D.Walter編著之標題為「Sliding Windows Succumbs to Big Mac Attack」的論文(出版於CHES 2001《Lecture Notes in Computer Science》第2162卷,2001年1月,第286頁至第299頁)中加以描述。
雙重攻擊以其中藉由平方更新遮罩之設計為目標,且查看第k’個記錄中之第j’次運算與第(k+1)’個記錄中之第(j-1)’次運算之間的關 係。對於諸如滑動窗之指數運算演算法,若且僅若第k’個記錄中之第j’次運算係一平方,則該等運算將共用一輸入一且功率量測的變動之間的相關性在此情況下通常較高。
在「Big Mac」攻擊中,一攻擊者識別一單個記錄中之所有乘法,且嘗試識別共用一被乘數之運算叢集。例如,在圖1C之SSM實例中,存在四類型的乘法:乘以1、b1、b2及b3。若未發現容許判定乘以1及叢集A、B及C之一明顯SPA特性,則一攻擊者仍能夠藉由發動一交叉相關攻擊來判定叢集歸類。
攻擊開始於將記錄分為小分段,其中各分段對應於一平方或乘法。在對應於各運算之小分段之間計算一乘法與下一次乘法之間的相關性。(一Big Mac攻擊亦可作用於許多記錄-尤其當指數未隨機化時)。
更一般而言,交叉相關攻擊可尋找運算之間的任何關係。若攻擊者可判定一特定平方或乘法之輸入與某個其他運算之輸入或輸出之間的關係,則攻擊者可獲得關於秘鑰之資訊並破壞設計的安全。作為另一實例,若乘以1(圖1B中)由乘以另一值(忽略結果)替換,則虛設乘法之前的運算之輸出與虛設乘法之後的運算之輸入之間可出現一相關性。一般而言,一攻擊者可藉由分析跨共用一輸入或輸出或其中一者之輸出係另一者之一輸入之不同運算之相關關係來執行交叉相關攻擊。可就左手側(LHS)、右手側(RHS)與輸出(OUT)參數之間共用哪些參數來概述此等關係。
例如,若不同乘法中使用相同LHS(「L」)參數,但是在該等乘法之間或之中RHS(「R」)參數不同,則該等乘法之間存在一L-L關係。
相反,若不同乘法中使用相同R參數,但是在該等乘法之間或之中L參數不同,則該等乘法之間存在一R-R關係。
此外,若一乘法中之L參數係另一乘法中之R參數,則該等乘法之間存在一L-R關係。
一最後種類包括其中一乘法之輸出(「O」)係另一乘法之輸入之關係。這可對應於該等乘法之間之一輸出-LHS(O-L)、輸出-RHS(O-R)或輸出-輸出(O-O)關係。
若一乘法器確定地以一特定方式使用上述參數,則將相同LHS參數饋送至兩個不同乘法器中將會導致該兩個乘法器在與RHS參數組合時以相同方式作用於此等參數。因此,若存在揭露關於LHS參數之資訊之一功率洩漏且若該洩漏可被表達為H1(L),則一攻擊者將相同LHS參數饋送至乘法器中將會獲得相同H1(L)洩漏並觀察到洩漏的類似性。
洩漏函數通常涉及L、R或O參數之一函數。一典型的洩漏函數亦可洩漏L之各字組之較高位元。例如,若L係使用32 x 32位元字組表示之一Big整數,則一攻擊者可獲得關於L之32位元資訊。這係一散列函數,這係因為其被壓縮且具有32位元之一恆定輸出大小。然而,此散列函數在密碼編譯方面並不安全,這係因為一攻擊者可判定32位元的確切值,且L的許多位元不影響壓縮函數。
已知關於L的32位元資訊且對於字組之各位元將相同L饋送至一給定洩漏函數中之一攻擊者能夠即刻偵測到是否存在一衝突。因為獲得一衝突僅要求32位元相同,所以亦可偵測到類似的其他L的衝突。
然而,若一攻擊者執行一模指數運算並提交訊息之一RAM序列以比較不同位置處的值,則除非該等值相同,否則觸發一衝突之概率對於L-L關係而言為低。這亦適用於R-R關係。當一攻擊者觀察到一字組(或一參數)在相同位置中有為零之2個位元組時,攻擊者可判定該字組/參數在該兩種情況之間係相同的,且因此可判定R中為零之位元組。然而,可存在多種運算,其中該等參數不同且該等運算中未觸 發洩漏。
例如,在一L-R關係中,該兩個洩漏函數彼此不同。在一些情況下,僅當一位元組之全部值係0時才觸發洩漏函數R,且僅當位元組之全部值係0且較高位元係0時才觸發洩漏函數L。因此,在其中較高位元係1之情況下,將不會觸發一洩漏函數L。一攻擊者亦可觀察到R依據L,其中洩漏函數在R中發生於乘法位置之間的位元組之洩漏範圍內擴展L之較高位元。因此,一攻擊者更難以精確地善用一L-R關係。
最後,顯然更難以善用O-L、O-R及O-O關係,但是善用該等關係之一種方式可能係在執行相關性計算之前首先變換記錄。(例如,當攻擊蒙哥馬利方梯(Montgomery ladder)指數運算系統時,O-L及O-R相關性尤其相關)。
與洩漏函數H1(L)(其係關於左手側上的函數)相比,洩漏函數H2(L)係關於右手側上的函數。一攻擊者能夠判定整個字組何時為零且區分零與非零。攻擊者亦可判定輸出之高階位元組之位元,且甚至能夠判定輸出之全部值。
圖1F展示使用k元平方-乘法-防禦演算法(square-and-multiply-always algorithm)之一指數運算,其中系統易受一雙重攻擊及一叢集攻擊二者。在圖1F之實例中,指數包括以SMSSMSS...型樣插入在每對平方之間的虛設乘數(可忽略的乘法),這產生一SMSMSMSMS...型樣。
如圖1F中所示,對輸入i之第一次平方運算自最左位元開始且產生i2,其係i*i之乘積。下一個位元對應於一乘法運算,其中i2乘以i以產生i3。對先前乘法之輸出之後續平方運算產生i6(其係由i3*i3給定)。以下係一虛設乘法,對應於(虛設乘數1之)一盲表示。在虛設乘法中,先前平方運算之輸出(i6)乘以i以產生i7。然而,忽略來自此虛設 乘法之輸出i7。換言之,虛設乘法之輸出i7不會構成下一次平方運算之輸入。相反,先前平方運算之輸出(i6)被提供作為下列平方運算之輸入,從而產生i12(由i6*i6給定)。
可在圖1F之實例中執行與一叢集攻擊組合之一交叉相關攻擊。具體言之,一攻擊者可藉由比較一第一記錄中之一運算k+1與一第二記錄中之一運算k並分析第一記錄中之運算k+1與第二記錄中之運算k之間的功率消耗的相關性來執行一雙重攻擊。攻擊者接著可執行如下文描述之一叢集攻擊。
例如,參考圖1F,第一次乘法運算包括一L參數(2)及一R參數(1);且第二次平方運算包括一L參數(3)及一R參數(3)。自第一次乘法運算至第二次平方運算之相關性可標示為α,其包括一L-L相關性(2-3)及一R-R相關性(1-3)。不希望關於α之L-L及R-R相關性過於顯著。又,雖然存在一輸出-輸入相關性,但是除非一攻擊者具體攻擊此相關性,否則通常難以偵測此相關性。
接著,虛設乘法運算包括一L參數(6)及一R參數(1);且第三次平方運算包括一L參數(6)及一R參數(6)。自第一次乘法運算至第二次平方運算之相關性可標示為β,其包括一L-L相關性(6-6)及一R-R相關性(1-6)。如先前陳述,忽略來自虛設乘法之輸出i7。然而,若L-L相關性顯著,則將希望在其中忽略來自一運算之結果/輸出之情況下(β中)觀察到的相關性高於其中不忽略結果/輸出之情況(α中)。因此,即使插入虛設乘數以產生一對稱平方-乘法-防禦型樣(SMSMSMSMS),一攻擊者亦能夠對圖1F中之指數成功地執行一交叉相關攻擊及一叢集攻擊。
參考圖1F,注意若忽略虛設乘法結果,則處理所忽略資料且控制是否發送一輸出至累積器或是否忽略輸出需要特殊電路。通常,亦可使用軟體來代替特殊電路執行此處理。然而,軟體操控可易受SPA 攻擊,這係因為即使平方及乘法之序列相同,其中乘數不作用之位置之間亦可存在間隙。在該等間隙中,處理器執行計算以判定載入哪個參數(或處理器亦可將參數複製至另一位置中)。因此,該等間隙之時序可洩漏相當多的功率。在一些例項中,取決於由處理器執行之計算及運算序列,甚至標準的平方及乘法亦可具有相當多的SPA洩漏。
本標的申請案揭示一種用於以抵抗簡易功率分析(SPA)的攻擊之一方式遮罩模指數運算中之一運算之電腦實施方法,該方法係由包括至少一處理器及至少一記憶體之一系統執行,該方法包括:接收一或多個輸入,其中該等輸入包括一或多個運算元;定義一遮罩值及一固定值,其中該遮罩值及該固定值係儲存在該至少一記憶體之一第一位置中;定義各自等於該一或多個輸入之一左手側(LHS)參數及一右手側(RHS)參數;使用該等LHS及RHS參數及該遮罩值計算複數個暫時值;及基於該複數個暫時值之一者及該固定值產生一輸出。
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟
216‧‧‧步驟
218‧‧‧步驟
220‧‧‧步驟
222‧‧‧步驟
224‧‧‧步驟
226‧‧‧步驟
228‧‧‧步驟
302‧‧‧步驟
304‧‧‧步驟
306‧‧‧步驟
308‧‧‧步驟
310‧‧‧步驟
312‧‧‧步驟
314‧‧‧步驟
316‧‧‧步驟
318‧‧‧步驟
320‧‧‧步驟
322‧‧‧步驟
324‧‧‧步驟
402‧‧‧步驟
403‧‧‧步驟
404‧‧‧步驟
405‧‧‧步驟
406‧‧‧步驟
407‧‧‧步驟
408‧‧‧步驟
409‧‧‧步驟
410‧‧‧步驟
411‧‧‧步驟
412‧‧‧步驟
413‧‧‧步驟
414‧‧‧步驟
415‧‧‧步驟
416‧‧‧步驟
417‧‧‧步驟
418‧‧‧步驟
419‧‧‧步驟
420‧‧‧步驟
502‧‧‧步驟
503‧‧‧步驟
504‧‧‧步驟
506‧‧‧步驟
507‧‧‧步驟
508‧‧‧步驟
509‧‧‧步驟
510‧‧‧步驟
511‧‧‧步驟
512‧‧‧步驟
514‧‧‧步驟
515‧‧‧步驟
602‧‧‧步驟
604‧‧‧步驟
606‧‧‧步驟
608‧‧‧步驟
610‧‧‧步驟
616‧‧‧步驟
618‧‧‧步驟
620‧‧‧步驟
622‧‧‧步驟
624‧‧‧步驟
626‧‧‧步驟
900‧‧‧裝置
901‧‧‧非揮發性記憶體
902‧‧‧處理器
903‧‧‧指令及資料快取區
904‧‧‧密碼編譯硬體
905‧‧‧模組
906‧‧‧高層級硬體
907‧‧‧低層級硬體
908‧‧‧輸入/輸出介面
併入本說明書中並構成本說明書之一部分之隨附圖式連同該描述一起用來解釋本文中描述之實施例之原理。
圖1A繪示一指數運算系統。
圖1B繪示其中總是存在兩次平方且後續接著乘以表項之一者之一指數運算方案中之模運算之一功率記錄。
圖1C繪示基於不同乘法之功率分佈之細微差別將乘法叢集為集合。
圖1D繪示將滑動窗演算法應用於圖1C之指數100111010110101。
圖1E繪示解碼滑動窗演算法中之指數之一種方式。
圖1F展示使用k元平方-乘法-防禦演算法(square-and-multiply-always algorithm)之一指數運算,其中系統易受一雙重攻擊。
圖2A繪示根據本發明之用於對一解除遮罩平方運算執行非對稱遮罩乘法(「AMM」)之一例示性方法。
圖2B繪示根據本發明之用於對一解除遮罩乘法運算執行AMM之一例示性方法。
圖3A繪示根據本發明之用於對一遮罩平方運算執行AMM之一例示性方法。
圖3B繪示根據本發明之用於對一遮罩乘法運算執行AMM之一例示性方法。
圖4A繪示一指數,其中根據該指數之各位元執行平方及乘法運算。
圖4B係繪示用於基於一指數中之平方及乘法運算之序列判定AMM中之特定遮罩運算之執行之一例示性方法之一流程圖。
圖4C詳細繪示圖4B之方法應用於圖4A之指數時的步驟。
圖5A及圖5B繪示當對一指數執行AMM時在一計算中間切換一遮罩值之例示性方法。
圖6A及圖6B繪示抵抗叢集攻擊之例示性方法。
圖6C展示一實例,而增加叢集數目可減小洩漏之善用度。
圖7A展示不同類型的虛設乘法,其等可在一指數中隨機化。
圖7B展示使用一遮罩參數之一盲表示,其中使用再遮罩運算替換該等虛設乘法。
圖7C繪示雙重攻擊之一防禦之一例示性實施例,其中一底數乘以可擴展至該指數之所有位元之一遮罩。
圖8A繪示一記錄內之中間循環更新之例示性實施例。
圖8B繪示記錄之間的不同中間循環更新之例示性實施例。
圖8C展示一攻擊者可如何偵測諸值之間的衝突。
圖8D展示其中中間循環更新併入自一記錄移動至下一個記錄之 一基於斐波那契數之更新之一例示性實施例。
圖9繪示根據本發明之一例示性系統之一方塊圖。
現在將詳細參考如隨附圖式中繪示之例示性實施例。在任何可能的情況下,將遍及圖式及下列描述使用相同參考數字以指相同或相似部分。此等實施例加以充分詳述以使熟習此項技術者能夠實踐本發明,且應瞭解可利用其他實施例且在不脫離本發明之範疇之情況下可作出改變。下列詳細描述因此不應被視為一限制意義。
本文揭示用於以經設計以消除SPA攻擊之一方式遮罩某些密碼編譯運算之方法及系統且該等方法及系統被稱為非對稱遮罩乘法(「AMM」)。在本文描述之AMM之實施例中,平方運算經遮罩以使平方運算不能或更低程度地與乘法運算區分。將至少極少次平方遮罩為乘法之目標係一若其等不能與其他乘法區分一消除簡易SPA攻擊且潛在地增加叢集攻擊之困難度。
一般而言,平方運算係藉由非對稱遮罩其等而轉換為乘法運算。這可由於平方係乘法之一子集而達成一即,平方係其中LHS及RHS參數相同之乘法一且將LHS視為不同於RHS之一遮罩策略產生其中該兩個輸入不相同之一乘法。雖然平方運算係乘法之一子集,但是一般而言,就運算期間(在許多輸入內)一般可切換之電晶體數目及可應用之最佳化而言,該子集的表現亦不同於兩輸入乘法。
在一些實施例中,AMM包括插入額外乘法或使用多於一指數運算中必需的乘法之乘法。該途徑可涉及使用此等乘法以將一盲因數乘至指數運算結果中或更新儲存在一表中之參數之遮罩(盲)表示。
在一些實施例中,AMM包括將一輸入之一平方變換為一乘法,其中一遮罩值可被添加至該輸入之一複本並自另一複本減去,且在其中該結果係添加至某個遮罩參數之輸入之一平方之處獲得一輸出。在 一實施例中,該遮罩參數可獨立於一輸入值A。在一些實施例中,一輸出參數上之遮罩有效地變換為一後續運算上之輸入遮罩,且因此當僅維持極少個遮罩參數時可將平方序列變換為遮罩乘法。
對解除遮罩平方及乘法運算應用AMM
圖2A、圖2B、圖3A、圖3B及圖4A至圖4C描述根據本文描述之原理之遮罩之不同實施例。
圖2A繪示根據本發明之用於對一平方運算執行AMM之一例示性方法。具體言之,圖2A中所示之方法藉由將平方轉換為一系列中間加法、乘法及減法步驟來遮罩一平方運算(A->A2)以導出最後平方值。又,圖2A之方法開始且結束於解除遮罩參數(即,輸入及輸出值皆解除遮罩)。注意,可使用模算術執行所有加法、減法及乘法。
參考圖2A,接收一解除遮罩輸入值A(步驟202)。接著,定義一遮罩值R及一固定值R2(步驟204)。固定值可被描述為一解除遮罩參數。
接著,一左手側(LHS)參數及一右手側(RHS)參數各自被定義為等於輸入A(步驟206)。LHS及RHS參數在一(或任何)平方運算中相等。
LHS=A
RHS=A
接著,在步驟208、210及212中計算暫時值T1、T2及T3。此等暫時值表示對上述LHS及RHS參數、遮罩值及固定值之組合之不同算術運算之輸出。在步驟208中,將暫時值T1計算為LHS參數與遮罩值R之和:T1=LHS+遮罩
->T1=A+R
在步驟210中,藉由自RHS參數減去遮罩值R計算暫時值T2: T2=RHS-遮罩
->T2=A-R
在步驟212中,藉由將暫時值T1乘以暫時值T2計算暫時值T3:T3=T1*T2
->T3=(A+R)*(A-R)=A2-R2
最後,在步驟214中,將一輸出判定為暫時值T3與固定值R2之和:輸出=T3+固定
->輸出=(A2-R2)+R2=A2
如上文所示,來自步驟214之輸出係值A2,其係輸入值A之平方。藉由對平方運算執行圖2A之方法,左手側及右手側參數在步驟212中之乘法期間不相同,這防止由乘法電路應用任何基於平方之最佳化。此外,分別在中間步驟208、210及212內有效地遮罩暫時值T1、T2及T3,(即,其等值並非與A值直接相關),這係因為一R或R2值已併入至此等暫時值之各者中。
在一些實施例中,亦可如圖2B中所示般對一乘法運算執行AMM。具體言之,圖2B中所示之方法藉由將乘法轉換為一系列中間乘法、加法及減法步驟來遮罩一乘法運算(A*B)以導出最終乘法值。在非平方乘法周圍使用一系列加法、減法及乘法步驟之此過程可能係使此等運算之電力特徵與AMM平方不可區分之重要部分。如圖2A中,圖2B之方法開始且結束於解除遮罩參數(即,輸入及輸出值皆解除遮罩)。
參考圖2B,接收一解除遮罩輸入A及一解除遮罩輸入B(步驟216),其中A及B係不同值。接著,定義一遮罩值R及一固定值(-B*R)(步驟218)。固定值(-B*R)係圖2B之方法中之解除遮罩參數。替代地,若選取(-A*R)代替(-B*R)作為固定值,則固定值可為A之一函 數。因此,固定值總是輸入值之至少一者之一函數。
不同於其中LHS及RHS參數皆被定義為與輸入值相同之平方運算,一乘法運算中之LHS及RHS參數彼此不同。在步驟220中,一LHS參數被定義為等於輸入A,而一RHS參數被定義為輸入B與遮罩值R之和。
LHS=A
RHS=B+R
接著,定義暫時值T1、T2及T3。此等暫時值表示對上述LHS及RHS參數、遮罩值及固定值之組合之不同算術運算之輸出。在步驟222中,將暫時值T1計算為LHS參數與遮罩值R之和:T1=LHS+遮罩
->T1=A+R
在步驟224中,藉由自RHS參數減去遮罩值R計算暫時值T2。注意,步驟224產生一解除遮罩值B(即,遮罩RHS參數在步驟224中解除遮罩):T2=RHS-遮罩
->T2=(B+R)-R=B
在步驟226中,將暫時值T3計算為暫時值T1與T2之乘積:T3=T1*T2
->T3=(A+R)*B
最後,在步驟228中,將輸出判定為暫時值T3與固定值(-B*R)之和。
輸出=T3+固定
->輸出=(A+R)*B+(-B*R)=A*B
如上所示,來自步驟228之輸出係值A*B,其係輸入值A與B之乘積。注意,對一乘法運算應用AMM的效率可能不及對一平方運算應 用AMM。這係因為對一乘法應用AMM需要一固定值(-B*R),其係遮罩值及輸入值之一者之一函數。因為固定值(-B*R)取決於輸入B(不同於圖2A之方法中之固定值R2),所以可僅在已知B值後計算並儲存固定值(-B*R)。若此方法用來僅遮罩一次運算,則執行兩次乘法(步驟218及226中)以產生一輸出。
然而,若B係將在許多乘法中使用之一常數,則可預計算固定值(-B*R)。例如,在一些實施例中,將B定義為可遍及一運算序列(諸如一模指數運算常式中,其中底數B在右手側(RHS)上重複出現)再用之一常數。又,在一些其他實施例中,可基於一視窗法(諸如一k元演算法或滑動窗演算法)預計算對應於一表中之底數之不同冪次之(-B*R)參數。
應進一步注意,若一攻擊者不能區分具有AMM之一平方與其他乘法,則使用AMM平方遮罩極少次平方運算可使得明顯更難以對模指數運算進行SPA攻擊。由於AMM平方需要可能在功率消耗中可見之加法及減法步驟,所以其電力特徵分佈可能最類似於具有等效步驟之AMM乘法。因為遮罩R可能隨機且可由遮罩R有效地計算解除遮罩值R2,所以用於連續模指數運算之遮罩參數R可能完全獨立且不可預測。若AMM平方及乘法用於一模指數運算中之所有運算,則這可使一雙重攻擊不切實際。替代地,可跨許多計算使用單一對常數R及R2一這仍可提供抵抗SPA攻擊之安全。在另一變體中,在一模指數運算內之不同時刻使用不同遮罩值R及R2。在另一變體中,一運算中之解除遮罩步驟可消除或與一後續步驟之一遮罩運算組合(由該遮罩運算替換)。
對遮罩平方及乘法運算應用AMM
如圖3A及圖3B之例示性方法中繪示,AMM可應用於一遮罩平方運算(圖3A)或一遮罩乘法運算(圖3B)一即,應用於其等之輸入由一參 數R遮罩且其等之輸出亦由R遮罩之平方或乘法。
圖3A繪示根據本發明之用於對一遮罩平方運算執行AMM之一例示性方法。具體言之,圖3A中所示之方法藉由將一遮罩平方轉換為一系列中間乘法、加法及減法步驟進一步遮罩一遮罩平方運算以導出最終遮罩平方值。不同於圖2A之實例,圖3A之方法開始且結束於遮罩參數(即,使用此方法之輸入及輸出值二者皆被遮罩)。在輸入及輸出值二者中保持遮罩之一優點係:遍及該等運算保持相同遮罩在計算上更為有效。在一典型的模指數運算常式中,將存在一系列遮罩乘法及平方運算,且遍及該等運算使用相同遮罩進行計算比在各後續運算處重複解除遮罩及再遮罩進行計算更加有效。
參考圖3A,接收一遮罩輸入值,其中係自一解除遮罩輸入值A減去一第一遮罩值R之一結果(步驟302)。
在步驟304中,將一第二遮罩值R’定義為第一遮罩值R之兩倍,且將一固定值(解除遮罩參數)定義為R2與R之間之差。
R’=2*R
固定=R2-R
接著,將一左手側(LHS)參數及一右手側(RHS)參數各自定義為等於遮罩輸入(步驟306)。
接著分別在步驟308及310中定義暫時值T1及T2。此等暫時值表示對上述LHS及RHS參數、遮罩值及固定值之組合之不同算術運算之輸出。在步驟308中,將暫時值T1計算為RHS參數與第二遮罩值R’(其等於2*R)之和。
T1=RHS+R’
->T1=(A-R)+2*R=A+R
在步驟310中,將暫時值T2計算為LHS參數與暫時值T1之乘積:T2=LHS*T1
->T2=(A-R)*(A+R)=A2-R2
最後,在步驟312中,將輸出判定為暫時值T2與固定值(R2-R)之和。
輸出=T2+固定
->輸出=(A2-R2)+(R2-R)=A2-R
如上所示,步驟312之輸出係遮罩值(A2-R),其含有解除遮罩輸入值A之平方。因此輸入由-R遮罩,輸出由-R遮罩,且藉由執行圖3A之方法以將平方運算執行為其中步驟310中之運算元不相同之一乘法。又,分別在中間步驟308及310內實際上遮罩暫時值T1及T2之各者,這係因為一R或R2值已併入至此等暫時值之各者中。類似於圖2A之例示性方法,圖3A中之暫時值T1及T2不含有係A與R之一乘積之任何項,且因此R或R2純粹係一相加遮罩。
類似地,亦可對一遮罩乘法運算執行AMM。圖3B繪示根據本發明之用於對一遮罩乘法運算執行AMM之一例示性方法。具體言之,圖3B中所示之方法藉由將乘法轉換為一系列中間乘法、加法及減法步驟對一遮罩輸入執行一乘法運算以導出一最終遮罩輸出值。此運算系列中之步驟等效於一AMM平方運算中之步驟,以使其等呈現為難以由SPA區分。不同於圖2B之實例,圖3B之方法開始且結束於遮罩參數(即,輸入及輸出值二者皆被遮罩)。
參考圖3B,接收遮罩輸入值,其中係不同值(步驟314)。遮罩輸入係自一解除遮罩輸入值A減去一第一遮罩值R之一結 果,且遮罩輸入係自一解除遮罩輸入值B減去該第一遮罩值R之一結果。
接著,藉由自解除遮罩輸入值B與遮罩值R之乘積減去遮罩值R定義一固定值(步驟316)。若B在產生R的時候已知,則可能已在該時間預計算此值。替代地,只要已知一值B,就可立即預計算該值一且若值B用於一次以上乘法,則其可有效地保留。
固定=B*R-R
固定值(B*R-R)係圖3B之例示性方法中之解除遮罩參數。固定值(B*R-R)含有一B*R項,且因此固定值係解除遮罩輸入值B之一函數。替代地,若選取(A*R-R)作為固定值來代替,則固定值將為A之一函數。因此,固定值總是解除遮罩輸入值A或B之至少一者之一函數。其亦可依據一遮罩輸入值之一函數而即時計算,這係因為X*R-R=(X-R)*R+(R2-R),且當產生R時可預計算並儲存值(R2-R)。
在步驟318中,將一左手側(LHS)參數定義為等於遮罩輸入,且將一右手側(RHS)參數定義為等於遮罩輸入
接著,分別在步驟320及322中計算暫時值T1及T2。此等暫時值表示對上述LHS及RHSS參數、遮罩值及固定值之組合之不同算術運算之輸出。在步驟320中,將暫時值T1計算為RHS參數與遮罩值R之和:T1=RHS+遮罩
->T1=(B-R)+R=B
注意,暫時值T1係解除遮罩輸入值B。換言之,遮罩輸入(RHS參數)在步驟320中解除遮罩。然而,在開始計算時經乘法致盲之一模指數運算輸入將在此步驟處致盲;此處僅相加值R解除遮罩。
在步驟322中,將暫時值T2計算為LHS參數與暫時值T1之乘積。
T2=LHS*T1
->T2=(A-R)*B
最後,在步驟324中,將輸出判定為暫時值T2與固定值(B*R-R)之和。
輸出=T2+固定
->輸出=(A-R)*B+(B*R-R)=A*B-R
如上所述,來自步驟324之輸出係遮罩乘法結果(A.B-R),其含有解除遮罩輸入值A與B之乘積。
在一些實施例中,固定值中使用之輸入值B(或A)被定義為一常數。在此等實施例中,可更有效計算固定值,這係因為該固定值僅取決於恆定輸入值及遮罩值(其亦係常數)。
在左至右指數運算演算法中,非平方乘法運算通常使用一累積器之先前內容與一底數值或底數值之冪次之乘積來更新該累積器之值,且被乘數係跨一特定底數之一指數運算恆定之一預計算參數。在一些實施例中,對於底數之各預計算冪次,可儲存包括一B*R-R項之固定值之一預計算冪次。
對一指數應用AMM
圖4A繪示一指數及在一模指數運算常式期間執行之一系列對應平方及乘法運算。圖4B展示用於基於對應於一指數之平方及乘法運算系列對AMM製備一系列遮罩(或用於選擇遮罩之索引)之一流程圖。 圖4C詳細地繪示圖4B之方法應用於圖4A之指數時的步驟。為避免SPA洩漏,可在指數運算程序之前執行編碼指數之程序。替代地,其可在指數運算期間實施。可並行而非循序執行該系列步驟402、404、406以避免時序/SPA洩漏。
參考4A,接收某一位元長度之一指數。初始化開始於該指數中之第一且最左側位元1。例如,初始化可包括將一值X指派給一輸入A。在一些例項中,X可為一值1。在其他例項中,X可為指數運算底數B或該指數運算底數B之一預計算冪次。
如圖4A中所示,指數序列11001可轉化為簡易的左至右演算法中之運算序列init∥SMSSSM。在初始化後之開始時且亦每當遇到一位元1時執行一平方運算及一乘法運算(SM)。無論何時沿該指數遇到一位元0,則執行一平方運算(S)。基於前文提及之組合,圖4A之指數11001中之平方及乘法運算序列在初始化之後將如下:
在序列SMSSSM中,各S或M運算緊隨一先前S或M之後,且僅觀察到SM、MS或SS轉變。(SMSSSM中之確切轉變係SM、MS、SS、SS、SS及SM一來自粗體中之諸對:SMSSSM、SMSSSM、SMSSSM、SMSSSM及SMSSSM)。在一系列遮罩AMM平方及遮罩AMM乘法中,可設定遮罩及固定參數使得運算有效地流動且一遮罩運算之輸出可用作下一次運算之輸入,且可在開始指數運算時預計算並儲存所有遮罩。如上所論述,具有輸入遮罩「A-R」之一遮罩AMM產生輸出「A2-R」,即使用一相同遮罩。進一步言之,使用「A-R」及「B-R」遮罩輸入之一遮罩AMM乘法產生遮罩為「A*B-R」之一輸出。再者,保持相同遮罩。因此,以一遮罩R之項定義兩次運算,其等採用遮罩輸入且產生遮罩輸出一全部以R之項定義。此等可鏈接 在一起以產生自始至終遮罩之一指數運算。平方至AMM平方之變換使其等一般難以與真正的乘法區分一然而其等僅在所應用之加法及減法運系列算亦獨立於運算是否為平方或乘法之情況下才不可區分。
圖4B係繪示基於一指數中之平方及乘法運算之特定序列執行AMM中之特定遮罩運算之一流程圖。雖然實際上遵循一決策樹(諸如一模指數運算期間之決策樹)有可能產生資料相依功率變動,但是該決策樹亦定義一編碼策略,其在一些實施例中被實施為恆定時間中且具有恆定SPA特徵之一系列運算。
參考圖4B,當隨著沿指數長度從左至右進行AMM時,該方法基於連續兩次運算是否係該對SM、MS或SS來判定在該兩次運算之間插入哪些遮罩步驟。在步驟402中,該方法判定指數中之兩次連續運算是否係由一乘法運算及一平方運算(即,MS)組成。若該等運算係MS,則如步驟403中所示般在乘法(M)與平方(S)之間執行下列遮罩步驟:LHS+=X*R2+R
RHS+=X*R2-R
X係被指派給一輸入(例如,一輸入A)之一值且R係遮罩值。
在步驟404中,該方法判定該兩次連續運算是否係平方(即,SS)。若在步驟404中該等運算係SS,則如步驟405中所示般在該等連續平方運算之間執行下列遮罩步驟:LHS+=R2+R
RHS+=R2-R
在步驟406中,演算法判定指數中之兩次連續運算是否係由一平方運算及一乘法運算組成(即,SM)。若在步驟406中運算係SM,則如步驟407中所示般在平方(S)與乘法(M)之間執行下列步驟:LHS+=R
LHS-=R
在步驟407中,在平方(S)與乘法(M)之間加上且接著減去一虛設值。在上文所示之實例中,虛設值被指定為遮罩值R。然而,虛設值可為任何值,這係因為步驟407本質上係一虛設加法及減法步驟。
圖4C詳細展示圖4B之方法應用於圖4A之指數時的步驟。具體言之,圖4C繪示基於圖4A之指數中之平方及乘法運算系列執行AMM中之特定遮罩運算。如圖4C中所示,平方運算被轉換為一系列乘法及加法/減法步驟,這實際上遮罩平方運算。圖4C中之等式係基於C程式設計語言語法,藉此來自一先前步驟之結果形成下一個步驟之輸入A。
參考圖4C,首先在步驟408中根據圖4A之指數11001之第一位元使用值X初始化累積器A。在步驟409中對LHS及RHS參數執行下列計算:LHS+=R ->LHS=X+R
RHS+=-R ->RHS=X-R
接著,在步驟410中使用步驟409中計算之LHS及RHS參數執行一平方運算:平方:LHS*RHS=(A+R)*(A-R)=(X+R)*(X-R)->X2-RR[結果]
在圖4C之實例中,第一且最左側位元1對應於一平方及乘法(SM)。如先前參考圖4B陳述,在一平方(S)與乘法(M)之間相加且接著減去一虛設值。因此,如下文所示,在步驟411中對步驟410之結果執行一虛設加法及減法步驟:LHS+=R->LHS=(X2-R2)+R
LHS-=R->LHS=((X2-R2)+R)-R=X2-R2[結果]
接著,在步驟412中使用來自步驟411之結果執行一乘法運算。
乘法:(X2-R2)*(X) ->X3-X R2[結果]
如圖4C中所示,第二位元係1,且對應於一乘法及平方(MS)。如先前參考圖4B陳述,若運算係MS,則在乘法(M)與平方(S)之間執行下列計算:LHS+=X R2+R
RHS+=X R2-R
在圖4C之步驟413中,如所示般使用步驟412之結果對LHS及RHS參數執行上述計算:LHS+=X R2+R->LHS=(X3-X R2)+(X R2+R)=X3+R
RHS+=X R2-R->RHS=(X3-X R2)+(X R2-R)=X3-R
接著,在步驟414中使用步驟413中計算之LHS及RHS參數執行一平方運算:平方:LHS*RHS=(A+R)*(A-R)->(X3+R)*(X3-R)=X6-R2[結果]
在圖4C之實例中,指數之第三位元係0,且對應於兩次平方(SS)。如先前參考圖4B陳述,若運算係SS,則在連續平方運算之間執行下列計算:LHS+=R2+R
RHS+=R2-R
在圖4C之步驟415中,如所示般使用步驟414之結果對LHS及RHS參數執行上述計算:LHS+=R2+R ->LHS=(X6-R2)+(R2+R)=X6+R
RHS+=R2-R ->RHS=(X6-R2)+(R2-R)=X6-R
接著,在步驟416中使用步驟415中計算之LHS及RHS參數執行一平方運算:平方:LHS.RHS=(A+R)*(A-R)->(X6+R)*(X6-R)=X12-R2[結果]
在圖4C之實例中,第四位元係0,且對應於兩次平方(SS)。隨後,在步驟417中使用來自步驟416之結果執行下列計算: LHS+=R2+R ->LHS=(X12-R2)+(R2+R)=X12+R
RHS+=R2-R ->RHS=(X12-R2)+(R2-R)=X12-R
接著,在步驟418中使用步驟417中計算之LHS及RHS參數執行平方運算:平方:LHS*RHS=(A+R)*(A-R)->(X12+R)*(X12-R)=X24-R2[結果]
圖4C之實例中之指數之最後一位元係1,且這對應於一平方及乘法(SM)。因此,如下文所示般在步驟419中對步驟418之結果執行一虛設加法及減法步驟:LHS+=R->LHS=(X24-R2)+R
LHS-=R->LHS=((X24-R2)+R)-R=X24-R2[結果]
如圖4C中所示,在步驟420中使用步驟419之結果執行一最終乘法運算。
乘法:(X24-R2)*(X) ->X25-X R2[結果]
從圖4C之實例可觀察到已使用AMM將指數中之所有平方運算轉換為乘法。
在一些實施例中,AMM可應用於使用滑動窗演算法之一指數運算。在此等實施例中,如先前參考圖4B及圖4C描述,平方係藉由轉換為乘法而遮罩,且原始乘法之一些亦可被遮罩。一平方以適合指數運算方案之項保留一平方,然而,若一平方被實施為一乘法,則一攻擊者可將平方錯認為1或3(例如,滑動窗演算法中之一MSM序列中)且這可阻止攻擊者的解密策略。
在一些實施例中,AMM可應用於極少次平方,且使用其中結果未被忽略之真正乘法(不同於其中忽略結果之虛設乘法)替換此等平方。此等實施例中之大部分剩餘解除遮罩平方將繼續最佳化平方。一攻擊者無法使用一叢集攻擊來區分遮罩平方與解除遮罩平方。
在另一實施例中,可在一乘法之後即刻執行AMM,且這產生一 MM序列(兩次連續乘法)。MM序列通常不會發生在標準指數運算演算法之任一者中。因此,MM序列可用以迷惑一攻擊者。
在一進一步實施例中,AMM可用以(例如)藉由將序列SMSSSMS中之第三個S轉換為一AMM...產生以形式SMSMSMSM出現之一型樣。這容許將許多虛設或遮罩平方插入至該序列中且不產生一MM序列。對稱型樣可導致一攻擊者相信採用二進位演算法。然而,因為許多乘法事實上係平方,所以原始「S」運算的次數短於攻擊者將在二進位指數運算中期望的運算次數。因此,攻擊者必須能夠辨識AMM運算並區分遮罩平方與真正乘法以解碼指數。
切換遮罩值中間計算
在一些實施例中,在一指數運算期間使用額外乘法以改變一遮罩值或盲因數。此等乘法可抵抗SPA攻擊,這增大或補充AMM平方。此等乘法可用以更新一快取AMM遮罩。其等亦可用以更新或改變遮罩指數運算底數之一盲因數之值。此外,此技術可用以抵抗高階DPA攻擊。在先前技術中,當開始一模指數運算時(或在其之前)將一盲因數應用於該底數時,盲值變為用於未來乘法之底數(且對一快取區中之項,使用基於快取區之方法,諸如k元及滑動窗演算法)。但是交叉相關攻擊可識別全部使用相同盲被乘數之乘法集合(叢集)。使用乘以一再盲因數之乘法以更新一快取底數(或一底數之所有快取倍數)可加倍一攻擊者必須在一交叉相關攻擊中識別之叢集數目。本發明之一些實施例亦將盲值1儲存於快取冪次之一表中(對應於指數位元0或k個0)。當快取區中之所有項使用一相同盲因數遮罩時,接著可在無須已知高層級秘密(如指數值)之情況下計算逆因數(「解盲」值)。本發明之實施例可使得交叉相關攻擊更難以進行,且(除抵抗平方及乘法之主要SPA以外)達成部分抵抗DPA攻擊。圖5A及圖5B繪示用於當在指數運算中執行AMM時在一計算中間切換一遮罩值之例示性方法。
在圖5A之方法中,R’係一新遮罩值。為自R切換至R’,需要計算R的逆數,且將輸入值乘以R’。可藉由在用於乘法之群組(例如,以P為模之群組)內計算R之乘法逆數來判定R的逆數。
取決於所使用的模指數運算常式,在一些實施例中使用兩個值(例如,U及V)儲存快取區中之各項X(對應於底數之一冪次)。各底數具有兩個遮罩值可產生極多個預計算底數,這可增加系統之記憶體需求。例如,在具有16項(或更通常32或64項)之一滑動窗中,可使用多達兩倍的暫存器以儲存該表之U及V遮罩表示。可預計算並儲存R值及其逆數以及該表。在圖5A之實例中,當更新遮罩時,必須對該群組計算一新遮罩值R’及逆遮罩值(R的逆數)一但是在更新程序期間可計算一次此等值(特別係R的逆數)且當更新快取區中之所有項時再用此等值。注意,維持單獨U及V值之方法完全任選,這係因為可藉由將V與R值的兩倍相加計算U值一且應注意本發明之一些實施例未將U儲存在快取區中且僅對V執行更新。
如圖5A中所示,在步驟502中接收值U及V,其中值U及V係一輸入值X之不同遮罩表示。假定圖5A之實例中之運算發生於其中如圖4C中遮罩輸出之一乘法及一平方(MS)之間,則將如步驟503中所示般指定U及V:V=XR2+R
U=X R2-R
接著,在步驟504中計算(或檢索)R的逆數。
在步驟506中,對於值V,執行一中間計算更新步驟以將遮罩值自R切換至R’。圖5A之計算系列507中展示更新步驟506之細節:V-=R ->V=(X R2+R)-R=X R2
V *=R’ ->V=(X R2)R’
V *=R’ ->V=(X R2R’)R’
V *=inv(R) ->V=(X R2R’R’)(inv(R))=XRR’R’
V *=inv(R) ->V=(XRR’R’)(inv(R))=XR’R’
V+=R’ ->V=XR’R’+R’
類似地,在步驟508中,對於值U,執行一中間計算更新步驟以將遮罩值自R切換至R’。圖5A之計算系列509中展示更新步驟508之細節:U+=R ->U=(X R2-R)+R=X R2
U *=R’ ->U=(X R2)R’
U *=R’ ->U=(X R2R’)R’
U *=inv(R) ->U=(X R2R’R’)(inv(R))=XRR’R’
U *=inv(R) ->U=(XRR’R’)(inv(R))=XR’R’
U-=R’ ->U=XR’R’-R’
在圖5A中,自R切換至R’之更新步驟包括如所示之該乘法及加法/減法步驟,其等可在一單個記憶體位置(快取區項)或多個記憶體位置(快取區項)中執行。在完成更新步驟506之後,將遮罩值V=X R2+R變換為V=XR’R’+R’中間計算,其中R’係新遮罩值。類似地,遮罩值U=X R2-R經歷更新步驟508以變換為U=XR’R’-R’中間計算。
圖5B繪示在無須計算原始遮罩值之逆數之情況下產生一新遮罩值之另一例示性方法。圖5B中之例示性方法可能比圖5A中之方法更有效,這係因為圖5B之實例中無須計算R以底數(P)為模之模乘法逆數。反之,將新遮罩值簡單地定義為R的平方。此外,以圖5B之方法更新輸入U及V而無需額外乘法。(此實例係圖5B之方法之一替代,其中當更新U時使用單獨乘法)。
如圖5B中所示,在步驟510中接收值U及V,其中值U及V係一輸入值X之不同遮罩表示。假定圖5B之實例中之運算發生於一乘法及一平方(MS)之間,則將如步驟511中所示般指定U及V: V=X R2+R
U=X R2-R
接著,將新遮罩值定義為原始遮罩值R的平方:=R2
在步驟514中,對於值U及V,執行一中間計算更新步驟以將遮罩值自R切換至。圖5B之計算系列515中如下展示更新步驟514之細節:V-=R ->V=(X R2+R)-R=X R2
U=V-R2 ->U=X R4-R2
V+=R2 ->V=X R4+R2
與圖5A之方法相比,圖5B之方法需要更少個計算步驟且無須計算逆遮罩值。因此,圖5B之方法在計算上比圖5A之方法更有效,且亦需要更少的記憶體暫存器。
切換LHS及RHS參數以增加叢集數目
圖6A繪示抵抗叢集攻擊之一例示性方法。具體言之,圖6A之方法切換LHS及RHS參數以增加叢集數目以抵抗叢集攻擊。本發明之一些實施例採用硬體乘法電路,其中透過不同電路路徑處置LHS及RHS參數且其中旁通洩漏可取決於一輸入是否在左手側或右手側上而揭露一不同型樣的變動。在一些實施例中,可結合參考圖2A至圖2B、圖3A至圖3B、圖4A至圖4C及圖5A至圖5B描述之例示性方法之任一者使用圖6A之方法。當採用LHS及RHS交換及AMM平方時,許多實施例首先執行非對稱遮罩且其次執行LHS-RHS指派,這係因為當輸入相同時交換元素具有較少優點。
在圖6A之步驟602中,將LHS參數指定為底數,且將RHS參數指定為累積器。接著在步驟604中藉由使LHS參數(底數)乘以RHS參數 (累積器)計算輸出。應注意,在一模指數運算中之典型的乘法中,指數運算中間值(其可被稱為「累積器」)乘以可為指數運算底數或對應於底數(或1)之一預計算冪次之一表項之一值。在模指數運算中,指數運算中間值將被載入至指定為累積器之側,且表項(底數或底數之冪次)將被載入至指定為底數之側。
代替LHS(累積器)上總是具有一輸入且RHS上總是具有底數的是可在計算期間切換兩側(LHS及RHS),使得RHS變為累積器且LHS變為底數(如圖6A之步驟606中所示)。接著藉由使經切換之LHS參數乘以RHS參數計算輸出(步驟608)。如步驟608中所示,輸出現在係LHS參數(累積器)與RHS參數(底數)之乘積。切換之後的後續運算將基於經切換之LHS及RHS參數。
如圖6A中所示,可在計算期間切換累積器及被乘數(底數)參數至乘法電路之LHS及RHS之指派。例如,當每次乘法開始時,可將輸入隨機指派給LHS或RHS。替代地,在一些實施例中,藉由一預定非隨機序列將輸入指派給LHS及RHS。這可使得交叉相關(叢集)攻擊更難。代替僅具有屬於輸入X之一叢集,當切換LHS及RHS參數時產生關於另一輸入X’之一新叢集。平方及乘法運算在此等兩個叢集之間之功率記錄中看起來將會不同,且這可抵抗高階DPA攻擊。
在一些實施例中,可以固定或隨機時間間隔遍及該計算繼續切換LHS及RHS參數。即使將僅存在兩個叢集(無關於切換該等側之次數),一攻擊者仍將必須判定哪些運算落於哪個叢集,以成功地執行一叢集攻擊。
求反參數以增加叢集數目
圖6B繪示上述抵抗叢集攻擊之另一例示性方法。具體言之,圖6B之方法採用一或多個輸入參數之求反以增加叢集數目以抵抗叢集攻擊。本發明之一些實施例採用乘法電路,其中一值P-X可經有效表 示且不同於X,且其中乘以X’=P-X的乘法揭露一旁通中之洩漏不同於乘以X的乘法。在一些實施例中,結合圖6A之切換方法使用圖6B之求反方法以進一步增加叢集數目。在一些實施例中,結合參考圖2A至圖2B、圖3A至圖3B、圖4A至圖4C及圖5A至圖5B描述之例示性方法之一或多者使用圖6B之方法。當運算係一平方(In1等於In2)或一乘法(In1不等於In2)時可使用圖6B之求反方法。應注意,當採用圖6B之方法使得一平方求反輸入參數之一者且僅一者時,結果係其中LHS及RHS參數不相同之一乘法,雖然該乘法未經遮罩,但是其可提供抵抗AMM平方提供之SPA攻擊之一些優點。
在圖6B之方法中,求反一數字係一模運算且係藉由自輸入質數P減去該數字而執行。可再次求反一輸出值(其係一負數)以獲得一正確的正輸出值。例如,若輸出為負,則可自P減去該輸出以獲得正確輸出。在一些實施例中,該值乘以負1以獲得正輸出。
在圖6B之步驟610中,將LHS參數指定為In1且將RHS參數指定為In2。在步驟612中藉由使LHS參數乘以RHS參數計算輸出。
接著,求反一或多個參數(步驟614)。在一乘法中,求反LHS參數(步驟616)且藉由以下項給定LHS參數:LHS=P-ln1
在相同模指數運算內採用之一不同乘法中,求反RHS參數(步驟618)且藉由以下項給定RHS參數:RHS=P-ln2
在本發明之一些實施例中,以相同模指數運算內之又另一乘法求反LHS及RHS參數二者(步驟620)且藉由以下項給定LHS及RHS參數:LHS=P-ln1
RHS=P-ln2
在求反步驟之後,藉由使LHS參數乘以RHS參數計算輸出(步驟622)。若已求反LHS或RHS參數之僅一者(例如,步驟616或步驟618),則輸出係一負數。當已求反LHS及RHS參數二者時該輸出係一正數(步驟620),且在其中未求反LHS及RHS參數之乘法中該輸出亦為正。
取決於乘法中之求反總次數,一最終結果可為負或正。在步驟624處,可判定步驟622之計算輸出是否係一正數或一負數。在選用步驟626中,若輸出係一負數,則計算經校正的正輸出。在一些實施例中,這係藉由自P減去該輸出而執行。在一些實施例中,可藉由使該輸出乘以一負數(例如,-1或P-1)求反該輸出以獲得一正數(步驟626)。若該輸出並非一負數(即,該輸出為正),則該輸出具有正確極性且無須求反。當運算輸出(或一子代輸出)成為一平方運算之輸入時一如通常實施一模指數運算之部分之實施例的情況一則無須使正負號為正。後續平方之結果將為正,而無關於其輸入之正負號是否為正或負。在指數運算期間僅當在將不對該值進一步執行平方時需要校正該正負號。
因此,可以使用圖6B之方法之多種方式求反LHS及RHS參數以產生更多叢集,如下列四個象限中所示:
在一些架構中,上述四個象限可表現為兩個不同叢集,這係因為洩漏可受控於LHS或RHS。在其中這係所預期的之情形下,一些實施例僅採用四個象限之二者。使用一對角線上之象限(即,「+,+及-,-」或「+,-及-,+」)之二象限實施例將獲得兩個叢集,而無關於洩漏是 否受控於LHS或RHS參數。如上提及,當應用於一平方(即,其中In1等於In2)時,僅使用「-,+及+,-」情況之二象限實施例產生其中LHS及RHS參數不相同之平方且因此來自乘數之旁通洩漏似乎可不同於許多實施例中之一平方。
如先前陳述,在一叢集問題中增加叢集數目(諸如雙倍或四倍之叢集數目)更好地抵抗一交叉相關及其他叢集高階攻擊。此外,執行減法步驟以使數字為負係補充AMM之一方法,這係因為AMM亦含有許多加法及減法步驟。因此,一攻擊者可能難以追蹤哪個步驟係促成AMM之一加法或減法,且哪一個實施隨機化求反。
應注意在一些例項中,歸因於功率記錄中之時序差較小,一攻擊者能夠偵測虛設加法及減法(諸如圖4C之步驟419)。然而,求反一運算元係一實際減法而非一虛設減法。因此,負數藉由併入相對於虛設減法之一不同類型的減法而提供另一安全層級。
在一些實施例中,隨機執行求反參數。在其他實施例中,對一規則的排程表執行參數求反(例如,使每隔一次乘法為負且最終乘法之結果總是為正)。
如先前陳述,在一些實施例中,結合圖6A之切換方法使用圖6B之求反方法以進一步增加叢集數目。在此等實施例中,切換LHS及RHS參數使叢集數目加倍且增加求反再次使該數目加倍。這可使叢集數目變為四倍,導致顯著增加一攻擊者必須解析之叢集問題中之叢集數目。
在一些實施例中,結合AMM使用求反方法及切換方法,且這提供互補於在下文進一步詳細論述之聯合訊息及指數致盲(JMEB)之一防禦。
圖6C展示一實例,藉此自左側至右側切換參數可有效地破壞相關性,這係因為該切換增加一攻擊者必須解碼之叢集數目。
如先前提及,一攻擊者可能難以善用L-R關係中之相關性。即使攻擊者已判定叢集A中之所有項及其他項落於哪些叢集(例如,B、C及D),攻擊者在判定當已切換參數時哪個叢集係一質數(A’、B’、C’及D’)方面仍存在困難。
在包括項A*B及A*A之一叢集中(其中B總是在右手側上),若一攻擊者對叢集執行一交叉相關攻擊,則攻擊者可成功,這係因為該叢集中之項具有一R-R相關性。然而,將叢集中之項的一半切換至左手側將形成一新叢集L-L,且導致兩個叢集。若一攻擊者執行足夠多的功率記錄,則攻擊者能夠判定哪些項在L-L叢集中。然而,攻擊者判定該兩個叢集中之項(尤其該等項係一相同族之部分)之間的R-L相關性可能需要更多記錄。
當項包含A*C的乘數時,解碼問題的困難度增加。類似地,項A*C及C*A可具有R-R或L-L相關性。
在一些實施例中,使用遮罩中間值之一循環結構可增加叢集數目並減小洩漏的善用性。
圖6C繪示一假設情況,其中存在四個叢集(1、2、3、4)且其中項A*B屬於叢集1、項A*C屬於叢集2、B*A屬於叢集3且C*A屬於叢集4。為解答指數,一攻擊者必須判定各自項屬於哪個叢集。如圖6C中所示,減小洩漏的善用性之一種方式係將參數自右手側切換至左手側。切換增加叢集數目且可能減小洩漏的善用性。
應注意,若一輸入運算元之一字組為零,則某些字組導向的乘法架構可偵測運行得更快。然而,因為不同地處理L及R參數,所以該兩個參數之洩漏率有可能不同。例如,假設洩漏函數H(LHS,RHS)揭露關於一乘法中之輸入運算元之資訊,且假設H(LHS,RHS,OUT)可被完整地表達為僅洩漏關於LHS之資訊之一H1(LHS)與僅洩漏關於RHS之資訊之一H2(RHS)及洩漏關於輸出之資訊之一函數H3(OUT)之 串聯。考慮到其中洩漏函數H1(LHS)以一32字組表示揭露LHS之各字組之最高階位元之情況;且考慮其中洩漏函數H2(RHS)對RHS之各位元組揭露位元組是否為零之情況。在此實例中,H1(LHS)揭露關於LHS之32位元資訊,而H2(RHS)揭露關於RHS之資訊量取決於RHS值可變,且潛在地揭露RHS之全部值(例如,其中RHS=0之情況下)。因此,可獲得關於LHS之32位元資訊及關於RHS之某種資訊。
因為與另一側相比可獲得更多與一側有關之資訊(例如,可獲得的關於LHS之資訊位元多於RHS),所以通常觀察到洩漏函數之一者(LHS-LHS或RHS-RHS)的洩漏可多於另一者。例如,LHS-LHS側上之洩漏函數之洩漏可多於RHS-RHS側上之洩漏函數,或反之亦然。這可轉化為洩漏函數之一者,其需要(例如)~10,000次運算以判定兩個乘法集合是否屬於相同叢集,而鑑於另一洩漏函數,其可僅需要(例如)100至1,000次運算以作出相同判定。另一方面,解析一LHS-RHS關係可需要更多(例如,一百萬次)運算,這係因為關於LHS及RHS參數洩漏之資訊不同,這使得更加難以判定其等是否相同。此外,一第三種類型的交叉相關攻擊需要偵測一運算之輸出是否係一後續運算之輸入。一般而言,H3(OUT)極為不同於H1( )及H2( ),且這類似地使得難以測試識別碼。可需要幾百萬次運算來判定解答其中一運算之輸出係一後續運算之輸入之一關係,這係因為該等函數之間的相似度更低。因此觀察到,對於各洩漏函數而言,洩漏率不同,且有用於偵測相似度之資訊量不僅取決於洩漏率而且取決於洩漏函數之間的關係之結構。
在其中乘以一快取底數冪次(被乘數)之所有乘法將該被乘數置於右手側上之一模指數運算實例中,主要的R-R相關性將有用於識別叢集。另一方面,若使用相同電路以實施此模指數運算,但是被乘數總是被置於左手側中,則必須善用L-L相關性以解析叢集問題。一般而 言,因為H1( )及H2( )係不同洩漏函數,所以此等問題之一者有可能比另一者更加難以解析。一設計者無法提前已知哪個相關性更加易於善用。採用圖6A及圖6B之防禦要求攻擊者解析各種類型之一些叢集-且無關於哪個叢集問題更加難以解析,大致上一半的乘法將係一「更難」叢集問題之部分。
例如,若一製造商生產具有所有L-L相關性之一張智慧型卡及具有所有R-R相關性之另一張智慧型卡,則由於該兩張卡之間的洩漏差而使得侵入一張卡可比侵入另一張卡更容易。一張卡洩漏多於另一者背後的原因係因為由電路以不同方式計算參數。然而,設計者不會提前已知電路如何計算參數且哪張卡具有更多洩漏。此外,難以設計洩漏確切相同量之兩張卡(具有L-L相關性之一者及具有R-R相關性之另一者)。因此,採用L-L與L-R叢集之一混合有可能使得一攻擊者要偵測極多個有難度的叢集一且將減小各叢集中之實例數目。
如先前陳述,一防禦係藉由切換參數增加叢集數目。例如,若一叢集包括具有L-L關係之項且另一叢集包括具有R-R關係之項,且R-R關係比L-L關係更難解碼,則系統之安全將主要取決於具有R-R關係之項及且取決於具有L-R關係之項中將L映射至R之困難度。
因此,在上述叢集問題類型中,當一攻擊者不能在叢集中之項自右手側切換至左手側之後(增加叢集數目)判定該等項的一半時,可獲得一接近安全實施方案。此外,求反參數的一半(例如,L-L叢集)可進一步將叢集劃分為更多叢集。例如,假定L-L叢集具有極高洩漏且L-L叢集已被劃分為一L-L正叢集及一L-L負叢集,則一攻擊者不能判定L-L正叢集及L-L負叢集事實上屬於相同原始L-L叢集。因此,攻擊者不能將該兩個叢集(L-L正及L-L負)合併為一叢集。
當設計該卡時,系統設計者通常考慮緩和叢集之間的洩漏率之方式。其等通常試圖消除所有洩漏一或與在成本效益範圍內消除的一 樣多。但是某種洩漏可耗盡且本發明之實施例採用乘法硬體與將輸入以部分緩和洩漏之一方式供應給乘法硬體之控制電路或軟體之一組合。實務上,在L-L及R-R叢集中,洩漏率通常不相同。因此,通常必須依賴於更安全側(L或R)以保護系統。
總之,將參數自右手側切換至左手側並求反叢集可增加叢集數目並減小洩漏的善用性。
遮罩中間值
遮罩模指數運算中之中間值可防止DPA攻擊。例如,在典型的盲模指數運算中,當一輸入乘以攻擊者未知之一遮罩(或盲因數)時,實際上可遮罩並隨機化該輸入。經遮罩並隨機化之輸入隨後可在運算結束時解除遮罩(解盲)。如先前提及,此做法之一種常見方式(對於(例如)使用RSA解密進行指數運算)係藉由以下各者使用一遮罩值來計算一C之解密(即,M=CD mod N):尋找(B=1/UE mod N)、使C’=C * B mod N、計算T=(C’)D mod N且最後計算M=(T * U)mod N。在該先前實例中,可在一指數運算(快取)之前計算盲因數B及解盲因數U,且盲因數與解盲因數之間的關係取決於N及加密指數E。因為盲因數應用一次且在指數運算期間不會改變,所以在指數運算期間可使用一共用值一C’之一冪次發生許多乘法一可使用一交叉相關(叢集)攻擊偵測之一事實。此部分描述在一指數運算循環期間以改變一遮罩或盲值之一方式使用額外乘法之實施例,且藉此抵抗高階DPA攻擊。在一些實施例中,儲存於一快取區中之值1乘以一盲因數X(其可與一輸入盲因數B相同或可不同)。涉及1之遮罩表示之乘法真正地影響累積器中之值(即,並非虛設乘法)。此等乘法亦由於模指數運算步驟(在一解除遮罩步驟之前)之輸出(輸入底數之一冪次(D)與X之一冪次(α)之乘積一但是該兩個冪次可能不相同)而提供抵抗SPA之一主要優點。解除遮罩參數現在取決於冪次α。在一些實施例中,如下文將看見,一快取區 中之其他項亦由X遮罩,且因此指數α係該循環結構之一函數且獨立於D。
如圖7A中所示,F係使用一遮罩參數X之1之一盲表示,其中運算產生一輸出i6*(X),其係底數之一冪次與遮罩之一冪次之乘積。與如圖1F中所示之指數值7(由i6*i1給定)相比,此乘法之結果儲存於累積器中且成為後續平方(及乘法)之一輸入。在圖7A之實例中之各後續階段處,累積器繼續保留一值,其可被表達為底數(i)自乘某個冪次(係D之首碼)之與遮罩(X)自乘一不同冪次(係α之一首碼)之一乘積。指數α之位元在至少其中D中之位元之對應窗係零之情況下為非零。圖7A之遮罩計算可與圖1F之實例相比,其中忽略一乘法輸出且下一次運算(在虛設乘法之後)使用先前運算(虛設之前)之輸出。如圖7A中所示,使用乘以一遮罩之乘法替換虛設乘法。藉由使用遮罩運算替換虛設乘法,不再忽略虛設乘法。這可進一步阻止依賴於判定計算期間之忽略結果與未忽略結果之間的交叉相關之交叉相關攻擊。
圖7B繪示其中遮罩一快取區中之所有項之一例示性實施例。在此實例中,相同遮罩值(X,即X1)應用於快取區中之各項。因此,每次乘以快取區中之一項促成累積器中之相同的X冪次一且冪次α因此獨立於D。(α可取決於D的長度一或更精確地,取決於用於指數運算循環之迭代次數一但是並不取決於D中之特定位元之序列)。
圖7B展示一遮罩X、底數C、具有四項之一表(對應於二位元窗)及一例示性指數10110001。如圖7B之表中所示,對於解除遮罩乘法,乘以項0(對應於指數位元00之區塊)對應於乘以1(C0=1);乘以項1(指數位元01之區塊)對應於乘以C1(即C);乘以項2(位元10之區塊)對應於乘以C2;且乘以項3(位元11)對應於乘以C3
在使用X遮罩之後,項0可不同於項1、2或3,同時項1、2及3不同於彼此。然而,若一攻擊者提交密文C=0,且若C0被視為同樣等於 1,則這可產生以下之一情形:一些實施例將X保留在項0中,但是當C係零時0保留在項1、2及3中。使用此一表執行一指數運算可揭露關於指數之資訊。但是事實上,在數學上,該值0自乘0冪次係一「中間形式」(即,不等於1)。一些實施例藉由在C=0時返回0且不考慮啟動指數運算來處置此特殊情況。當C=0時,一些其他實施例將0載入至所有表項中。其他實施例仍可例外。(一些實施例不包含用於偵測值C是否等於零或用於不同地處置值C之特殊電路)。(此段落並不意謂實施例可或可不包含用於偵測並處置特殊情況C=0之組件或方法之一詳盡清單)。
在圖7B之實例中,藉由乘以值X遮罩表項以產生1*X、C*X、C2*X及C3*X。(此處且遍及申請案之乘法係指一群組中之乘法一通常該群組以一複合數N或質數P或Q為模。因此,此表中之各項之表示的大小可與此群組中表示之C的大小相同。)因此,當此表用於一k元平方-乘法-防禦指數運算(其中使用乘以項00而非忽略)時,使用該表中之一項乘以C之一冪次之每次乘法(C自乘其對應冪次)亦使累積器乘以X。
在此遮罩步驟之後,表項之值對應於k位元「00」之區塊。
在圖7B中,在以指數10110001進行k元平方-乘法-防禦演算法之後且使用「解除遮罩值」之第一表將在序列結束時產生C10110001。使用「遮罩值」表將產生一不同結果。使用(10)項初始化累積器中之值,等效於C自乘冪次2(10)乘以遮罩X自乘冪次1(01)或(C10*X01)一其中為方便起見以二進位表示指數。在累積器平方兩次之後,其保留值(C1000*X0100)。指數之接下來兩個位元係3(11),因此乘以遮罩項11(C3*X)產生值(C1011*X0101)。在兩次以上平方之後,累積器保留(C101100*X010100)。指數之接下來兩個位元係零(00),因此乘以遮罩項00(1*X)產生值(C101100*X010101)。在兩次以上平方之後,累積器保留 (C10110000*X01010100)。指數之接下來兩個位元係1(01),因此乘以遮罩項01(C*X)產生值(C10110001*X01010101)。在每次乘法之後,累積器保留C自乘D的某個首碼乘以X自乘某個指數010101...01之乘積,其中「01」的數目等於循環迭代之次數一但是獨立於D。
因此,藉由使用相同值X遮罩表中之四項,每次乘以一表項導致X之確切相同冪次促成α。因此,α值獨立於D。此外,由α遮罩指數D,這係因為平方及乘法之序列現在取決於D及α二者。使用此結構計算一循環的時間愈長,該序列變得愈長。然而,X所自乘的冪次僅係循環之長度之一函數;並非所使用之特定指數值之一函數。(惟「01010101...01」以外的α值可源自於其他循環結構一如下文將看見。然而,此等保持獨立於D)。因為指數運算循環中之平方及乘法之序列取決於D及α二者,所以這遮罩指數抵抗SPA;且因為參數X遮罩(致盲)表中之項,所以指數及訊息(密文)同時致盲。
圖7B中之例示性實施例之一優點在於:可使用最佳化平方。如先前提及,在一些演算法中,揭露哪些運算係平方會洩漏關於金鑰之資訊。然而,若使用最佳化平方及一平方-乘法-抵禦法途徑,則平方的型樣不會揭露金鑰。應注意,最佳化平方可比乘法大致上快30%,這可部分抵消(對於一給定快取區大小)一平方-乘法-抵禦演算法使用的乘法多於許多其他演算法之事實。
圖7B中之例示性實施例之一缺點可能係需要一高記憶體額外耗用。表中需要的項數隨著k呈指數增長(一次處理的位元數)。對於一給定k,用於平方-乘法-抵禦演算法之表大小係大於標準的k元演算法之一項及大於滑動窗演算法之k/2+1項。若結合AMM平方,則記憶體成本可再次加倍,但是圖7B之一些實施例亦具體實施圖6A及圖6B且不會進一步增加快取區的大小。
圖7C展示另一實施例,其中亦對輸入C執行由一參數B進行致盲 以產生C’,且對輸入C’執行指數運算-即,使用C’替換輸入C;使用(C’)2替換C2;且使用(C’)3替換C3。正如圖7B,遮罩表中之所有項。因此,儲存於表中之值1及C的所有其他冪次乘以遮罩X,產生1*X、(C’)*X、(C’2)*X及(C’3)*X。
如圖7C中所示,C’=C*B,這等效於(C’)10110001=(C10110001)*(B10110001)。因為底數B之指數與底數C之指數相同,所以可使用公鑰轉換其逆因數。B的冪次係指數D。因為對應於B之解盲因數取決於D,而對應於X之解盲因數並不取決於D(但是反之取決於α),單獨計算此等解盲因數。然而,亦可計算並儲存其等乘積,容許使用一單個乘法有效地解盲指數運算結果。在一些實施例中,單獨維持此等解盲因數且組態該裝置使得一組件(諸如一密碼編譯庫)產生並儲存B或X及其解盲因數,而另一組件(諸如一應用程式)產生並儲存另一值及其解盲因數。
應用中間循環更新
在指數運算期間應用中間循環更新可用以消除高階DPA攻擊。如先前陳述,存在許多類型的高階DPA攻擊,包含將參考此設計論述之兩種攻擊類型。第一類型的攻擊藉由解答一單個記錄內之不同項之叢集來解析一叢集問題,且甚至當適當地遮罩該記錄之輸入時亦可成功。第二類型的攻擊係跨多個記錄整合洩漏之一水平交叉相關攻擊。
中間循環更新可藉由在計算期間更新遮罩參數來干擾前述提及之攻擊,從而實際上增加必須偵測之叢集數目並減小被歸類之各類型實例的數目。圖8A繪示中間循環更新之一些實施例。
類似於圖7B中所示,圖8A展示一遮罩X、底數C、具有四個區塊項之一表及一序列SSMSSMSSM...。分別對應於區塊項(00)、(01)、(10)及(11)之值1、C1、C2及C3首先由X遮罩,且這分別在一第一表中產生X、C*X、C2*X及C3*X。第一表係用於一中間循環更新之前的乘 法之表。
接著,在計算期間藉由使對應於區塊項(00)、(01)、(10)及(11)之值(X、C1*X、C2*X及C3*X)分別乘以某個值應用一中間循環更新以產生使用一新遮罩參數Y遮罩之一表。這在中間循環更新之後分別產生含有Y、C*Y、C2*Y及C3*Y之一第二表。
因此,一第一表係用於中間循環更新之前的指數的第一半部分,且一第二表係用於中間循環更新之後的指數的第二半部分。在一些實施例中,在不使用或不覆蓋C之解除遮罩冪次的情況下執行更新。由CD*Xα*Yβ給定計算之最終輸出。在此組態中,第一個二位元表中之各項含有C之一冪次乘以一值X。隨著指數運算循環迭代,累積器保留C之一冪次乘以X自乘指數α,其中α=01010101...01。若存在m次乘法,則α將由m個(01)值後續接著一連串零而組成。在中間循環更新之後,將計算切換至Y來代替X,且Y值自乘指數β,其中β=01010101...01。
如圖8A中所示,在中間循環更新之前,每次乘法在X中將存在一(01)值。在更新之後,將X切換至Y時累積器中之所有值將保留在累積器中。各後續平方運算實際上將使累積器中之值的指數移位一位元至左側。X所自乘的冪次(即,α)係01010101...01後續接著一連串零,其中該連串零中之零的數目等於在更新之後累積器平方的次數。
因此,在更新之前,序列α中之位元數等於更新之前乘法次數與每次乘法的位元數之乘積。如圖8A中所示,原始二位元表包括四個乘法值(0、1、2、3)。在更新之後(自X切換至Y),型樣01將重複四次(即,01010101),其長度為八位元。基本上,更新之後的位元數將為乘法次數的兩倍,這係因為每次乘法對應於指數之一個二位元部分。
圖8A之例示性中間循環更新可抵抗高階DPA攻擊。例如,執行一叢集攻擊之一攻擊者可觀察到極多次乘法(100至1000次乘法),而 非僅四次乘法(如原始二位元表中)。因為叢集中存在各項之多個例項,所以攻擊者接著將必須判定哪些乘法係0、1、2或3。
在中間循環更新之後,因為原始表中之實際項已改變,所以使用該等項之乘法之SPA及統計洩漏訊符亦將改變。例如,在更新之前,項0保留X。在更新之後,項0保留Y。(吾等可調用更新項0’以指示更新之後的項0;但是許多實施例使用與保留0相同之記憶體位置來保留0’)。在一些實施例中,值X、Y及Y/X對一攻擊者而言係不可預測的,且因此項0與項0’之間的關係極可能不同於項0與項1之間、項0與項2之間、項0與項3之間、項0’與項1’之間、項0’與項2’之間及項0’與項3’之間的關係。
在一些實施例中,在一初始化階段期間可隨機選取遮罩參數X及Y,但是接著可將其等儲存在一記憶體中,且可由先前值有效地產生X及Y(及解除遮罩參數)之後續值。在其他實施例中,X及Y可完全獨立且可(連同一解除遮罩參數一起)產生於一指數運算初始化步驟期間。在任何情況下,可發現對應於任何X及Y對之一解除遮罩參數,前提係X及Y二者皆係該群組之可逆成員(例如,非零)。計算解除遮罩值僅需要已知模數(例如,N或P)及指數α及β(其等取決於循環長度及發生更新的位置),但是無須已知一秘密指數D。因此,可僅使用RSA金鑰中之公共參數計算實施RSA之本發明之一實施例之遮罩參數。一些實施例經組態以接受一遮罩值(X)或遮罩值集合(X、Y或X、R等等)及產生於外部(例如,由一個人化伺服器產生)之一對應解除遮罩值。一些實施例進一步執行一測試以確認解除遮罩參數對應於遮罩。一些實施例含有對亦影響確認遮罩與解除遮罩參數之間的對應之短時脈衝干擾(錯誤引發)攻擊之防禦。一些實施例僅藉由以下各者計算對應於所有遮罩之一逆盲因數:使用遮罩集合、不使用解除遮罩參數一或使用一暫時解除遮罩參數1對一輸入C=1執行遮罩指數運算一且接著採 用任何一種輸出結果並在該群組中對其求逆(即,以N或P為模)以獲得正確解除遮罩參數。
在一些進一步實施例中,可依據X計算Y且這可使用一有效更新程序而具體實施。(因為可由X計算Y,所以此等實施例亦可更具記憶體效率)。在一實施例中,Y係X的平方。這具有額外優點:可在適當位置更新值無須額外記憶體。例如,將表項3自(C3X)更新至(C3X2)需要乘以X。X儲存於表項0中。因此可藉由計算0與3之乘積並將結果儲存在項3中有效地計算更新。類似地,由項0與2之乘積更新項2,且使用項0與1之乘積更新項1。最後,使用0的平方更新項0。
當Y係X之一函數時,對於某個指數α’可將Xα*Yβ重寫為Xα’。在2位元實例中,其中Y=X2,α’等於01010101...0110101010...10,其中「01」分段之長度等於更新之前的平方次數,且「10」分段之長度等於更新之後的平方次數。若藉由平方執行更多更新,則在第二次平方之後由X4遮罩該等項,且在第三次平方之後由X8遮罩該等項,等等。各「平方」運算使α’之位元向左移位2位元,且每次乘以一表項將X之對應冪次加至α’中。因此就在自遮罩=X2更新至遮罩=X4之後,α’之低階位元係...1010。在兩次平方之後,α’以...101000結束。在下一次乘法(其包含由X4遮罩之一參數一以二進位表達指數一該參數係X100)之後,α’的值=...101000+100=...101100。為方便起見,當Y係X之一冪次時,可將此指數稱為不具有「質數」之「α」。
在一些實施例中,使用一額外記憶胞可更容易執行中間循環更新。如先前提及且如圖8A中之等式中所示,為在更新期間自表遮罩X移動至表遮罩Y(或自更新之前的表移動至更新之後的表),可由乘法更新表項。若期望一特定新值Y(獨立於X),則可藉由計算X的逆數(在該群組中)且接著計算R=Y * X-1(在該群組中)並藉由乘以R更新所有表項來執行該更新。實務上,由X遮罩之表可僅乘以一隨機R,其 可為任何值一即,一些實施例隨機產生一R使得確保R在該群組中可逆(或極有可能在該群組中可逆)。在此情況下,Y=R * X。如之前,可由X及Y計算逆盲因數。
為自一模指數運算獲得正確輸出,指數運算循環結束時的值需要乘以一解盲因數。如上文提及,盲因數係X及Y之一函數。對新X及Y值計算一盲因數大體上涉及計算一逆數,且這需要的計算可能多於期望的計算。因此,一有效途徑涉及儲存盲因數X及Y及一對應解盲因數一接著使用此等以在後續計算中有效地計算新盲因數。這將在下文更詳細論述。
如先前陳述,中間循環更新之一實施例包括Y係X的平方。在此實施例中,演算法自左側表搜尋至右側表並發現自一表項乘以另一表項導出之一新值。若最後計算更新的零項,則可在適當位置執行更新。如下提供一例示性演算法。首先,第三項乘以零項,且所得值覆蓋表中之先前第三項。接著,第二項乘以零項,且所得值覆蓋表中之先前第二項。接著,第一項乘以零項,且所得值覆蓋表中之先前第一項。最後,對零項平方且所得值覆蓋表中之先前項零。以遮罩表執行平方-乘法-防禦指數運算循環產生序列--SSM SSM SSM SSM...。在更新步驟處,如圖8A中所示,在兩個SSM序列之間插入包括一乘法區塊(MMMS)之一更新序列。(若多個核心可用,則可並行執行運算,前提係在零項被平方覆寫之前對所有乘法讀取該零項)。
該乘法區塊(MMMS)係中間循環更新演算法之SPA訊符。基本上,表中間計算之更新容許將更新之前的乘法分組為不同於更新之後的乘法之叢集集合,藉此抵抗高階DPA攻擊(例如,叢集攻擊)。對於k-arry指數運算(即,具有2k個表項),每次更新將指數運算中之「叢集」總數增加2k。例如,在一5位元實施方案中,表保留32項。在一正常k-arry指數運算實施方案中,一攻擊者將需要正確地將乘法歸類 為32個叢集。在modexp循環中間進行一次更新,攻擊者將需要將各運算歸類為32個叢集(多達各叢集中之成員的一半)之一者且亦將需要判定64個叢集之各者與位元之一5位元序列之間的映射。在一指數運算期間可多次執行更新步驟。在一5位元實施方案中在計算中執行兩次更新,各運算將需要被歸類為32個叢集(多達各叢集中之成員的三分之一)之一者,且接著攻擊者將需要判定96個叢集之各者與位元之5位元序列之間的映射。更新遮罩中間循環之方法互補於6A及6B之實施例(且可與6A及6B之實施例一起採用),其等亦可(一起)使叢集數目乘以8。在中間具有一次更新步驟之5位元實施方案中,使用L-R交換及使用「++」及「--」象限之求反,每次乘法將需要被歸類為128個叢集之一者,且解碼該指數將涉及識別256個叢集與5位元序列之間的映射。雖然一般而言可遍及此演算法使用最佳化平方,但是一些實施例將k次平方之一些序列轉變成k次AMM平方一其具有與一更新步驟相同之SPA訊符。(若對更新使用「平方X」途徑,則一AMM平方可用以更新表項「0」之遮罩)。以此方式採用AMM平方可將額外衝突引入至叢集歸類問題中。
如先前提及,一SPA記錄可對一攻擊者揭露哪些叢集屬於哪個區域。當解析叢集問題時,可識別更新位置之一攻擊者可將更新之前的叢集視為脫離更新之後的叢集。若攻擊者可判定更新之前的叢集與更新之後的叢集之間的對應(即,可將0叢集(「零」)連接至0’叢集(「零質數」)),則其等可執行一高階攻擊如同其等未更新一般。若X與Y之間的關係實際上隨機(從僅觀察到X及Y之旁通洩漏之一攻擊者的觀點而言),則連接對應叢集可要求攻擊者集中關注發生於更新步驟自身期間之乘法一即,其中X係一輸入且Y係一輸出之乘法。此設計之一假設係:輸入/輸出相關性比其他種類更加難以善用。若雜訊比足夠低,則其無法藉由分析一單個記錄而解析-且攻擊者因此可能必須跨 許多連續記錄整合洩漏以成功偵測一相關性。為防止前述提及的攻擊,一些實施例更新連續記錄之間的指數D,這改變為每次乘法所屬之叢集。
在一些實施例中,中間循環更新可包含其中一底數C自乘指數D之指數致盲及加在模數P或N中之另一參數。此處,存在一參數Φ(P)或Φ(N),其係以該模數為模之群組之階且其容許產生一等效指數。由CD+k.Φ(P)mod P=CD mod P給定一例示性等式。
在指數致盲中,由P-1給定P的質數之階。因此,當執行以P為模之計算時,加至初始指數D之P-1的任何倍數產生確切相同結果。隨機化改變用於指數運算之實際位元序列。雖然指數全部等效,但是其等並不相同。例如,某個位元序列可出現在一指數之二進位表示中,且一不同位元序列可出現在一不同指數之二進位表示中之對應位置處。在一些情況下,能夠部分解析一叢集問題(或善用任何其他洩漏)以恢復對應於一指數D+k1*Φ(P)之一位元子集之一攻擊者無法使用來自其他指數D+kj*Φ(P)之洩漏解析或整合此資訊以判定指數D之值。
若使用「遮罩」指數以D實施指數運算,則指數中之位元不斷改變,且來自不同指數之一給定k位元序列將有可能對應於表中之不同項。(一第二記錄中之第n次乘法將有可能屬於不同於一第一記錄中之第n次乘法之一叢集)。然而,若洩漏率大使得單單SPA特性就足以揭露對何種參數進行乘法,則一攻擊者能夠譯密該指數。例如,若指數並未隨機化且一攻擊者能夠收集(例如)~1000個功率記錄,則攻擊者可平均化所有該等功率記錄並執行一類似SPA叢集攻擊。
替代地,攻擊者無須平均化記錄以成功進行攻擊。若一攻擊者可使用統計方法以判定發生在一位置處之所有~1000次運算皆屬於相同叢集,則攻擊者將具有足夠資訊以執行一叢集攻擊。然而,若指數隨機化,則攻擊者可能必須由一單個記錄執行一成功叢集攻擊。
因此,中間循環更新演算法之一些實施例包含指數隨機化之使用。
在一些實施例中,更新步驟使用獨立於X導出之一參數R。若更新步驟使用乘以一參數R(取代乘以表項0),則這可大幅增加藉由攻擊輸入/輸出洩漏而連接叢集之困難度。且此外,當指數隨機化時,攻擊者可能必須使用一單個記錄完成叢集攻擊。除非洩漏極高,否則希望輸入/輸出相關性將為低且因此由一單個記錄完成一叢集攻擊實務上並不可行。
如先前提及,藉由平方執行一中間循環更新之一方法。除平方以外,存在執行中間循環更新之其他方法。圖8A亦展示使用一第二參數R之一中間循環更新之另一實施例。如圖8A中所示,原始表項(0、1、2、3)乘以R以產生(0*R、1*R、2*R、3*R)。因此,項變成由Y遮罩(其中Y=R*X)以產生(Y、C*Y、C2*Y、C3*Y)。因此,Y係R及X之一函數。
當透過乘以R對指數進行中間循環更新時,更新指數將呈序列MMMM而非序列MMMS之形式。如圖8A中所示,序列MMMS對應於藉由X進行之一更新,而序列MMMM對應於藉由R進行之一更新。(且實施例可在藉由X進行之一更新中使用一AMM平方以產生在SPA中與MMMM無法區分之一序列)。
在一些實施例中,更新包括遍及計算之複數次更新。在一些實施例中,與其中僅執行一次中間計算更新之其他實施例相比,可規則地執行更新。
在一些進一步實施例中,可藉由分析叢集問題判定最佳更新次數。在此等實施例中,若計算結束於其中對於各叢集攻擊者可僅觀察到一次乘法之時刻,則可獲得一強有力的防禦。然而實務上,可能的是,一攻擊者可在一些叢集中觀察到兩項、在一些叢集中觀察到一項 或甚至在一些叢集中並未觀察到項。(例如,在表中具有16項、隨機化L-R交換且使用「+-」/「a-+」象限之一4位元實施方案中,若每64次乘法執行更新-或每256次平方執行更新-則一般LHS=A(累積器)且RHS=(-(C11001*X))之一乘法將僅被觀察到一次。然而,對於某些隨機指數及L-R與+/-決策之某個序列,具有此等LHS及RHS之一乘法在該區域中可發生兩次或兩次以上,而對於其他,其可能根本不發生)。由泊松(Poisson)分布近似計算看見任何特定數目個例項之可能性(若所有決策及指數位元隨機且獨立相同分佈),其中Nmult=更新之間的乘法次數,且λ=(叢集數目)/Nmult。然而,在一叢集中得到幾個實例之機會不一定顯著降低叢集問題之困難度,這係因為攻擊者仍需要正確地歸類存在的所有運算。
在一些實施例中,執行一更新之前的指數運算循環迭代(及所執行之乘法)之次數致使一般希望各叢集中具有兩個實例。在具有表大小2k及叢集乘數T(例如取決於所使用的L-R交換與求反象限之組合,等於1/2/4/或8)之一些實施例中,在約(2*T*2k)次循環迭代之後執行一更新。對於其他實施例,當數目有望為每叢集具有三個或四個實例(例如,3*T*2k或4*T*2k)或甚至更多個實例時,執行更新。據信,對於許多洩漏函數,一攻擊者具挑戰性之歸類問題(攻擊者成功之錯誤率極低),前提係每叢集之實例數目為小。其中隨機化指數之一些實施例在更新之間實施(4*T*2k)次以上乘法。
在一些實施例中,在一更新之前執行較少的循環迭代。例如,可每迭代執行一更新一次。一更新等效於對一表中之各元素進行一次乘法,且在具有四項之一表中,這將產生四次乘法。在一些實施例(諸如其中未隨機化指數之一實施例)中可能值得折衷。然而,若乘法總次數的一半用於指數運算(即,改變累積器中之值)且另一半用於更新(即,改變一快取區中之值),則這可導致以效能緩慢為代價產生對 HODPA之極高抵抗性。效能衝擊在並行執行更新步驟之乘法之實施例中可能最小-且並行執行其等可進一步增加對旁通洩漏的抵抗性。
解除遮罩且有效尋找新遮罩
當藉由平方執行更新時,可以初始JMEB遮罩X的項表達所有中間遮罩。(JMEB(「聯合訊息及指數致盲」的簡稱)係圖7A、圖7B、圖7C、圖8A、圖8B、圖8C或圖8D之實施例之一名稱)。X的逆數係指數D之長度(循環之迭代次數)之模數N之一函數,且該等迭代後續接著更新。因為指數D之長度在使用指數隨機化時可變化,所以一些實施例對X計算對應於不同長度之更多個解除遮罩參數。在一些實施例中,產生一解除遮罩參數,其對應於最長希望指數,且對對應次數的迭代運行指數運算循環。
若X及R獨立且Y=X * R,則可計算對應於X及Y之特定長度之單獨解除遮罩參數。若指數D長於β且短於α,則可藉由前置0位元將D擴大至α之長度,且可開始於累積器初始化為1繼續計算,最初使用X遮罩快取區且在對應於β之長度之時刻混合在R中。然而若指數D短於β,則可藉由前置0位元將D擴大至β之長度,且可開始於一初始遮罩(Y=X * R)繼續計算,使用Z=Xα”初始化累積器且不執行一更新步驟。此處α”等於所有低階零被截斷之α-即,Z係累積器在其使用1初始化且接著平方且乘以X達等於α之長度減去β之長度之多次迭代之情況下將保留之確切值。以此方式,可藉由儲存一額外參數Z及規則的參數X、R以及解除遮罩參數UX而有效地適應可變長度指數D。
因此,當運行模指數運算循環時,若存在至少一第一遮罩及一預計算逆遮罩(其係指數之長度之一函數),則必須以對應於當導出解除遮罩參數時使用之指數α之一恆定長度(例如,10位元長或最長指數之長度)處理指數。若提交一較長指數,則一些實施例接受該指數但是使其前幾位元解除遮罩。(在非CRT RSA中,指數之高階位元 無須保密;然而若使用指數隨機化,則揭露高階位元可非所要地揭露遮罩之部分或所有位元)。替代地,若該實施例不容許計算大於一標稱長度之一指數,則其可拒絕該指數。
一般而言,如上論述,可使用一指數運算並計算一逆數來計算解盲因數(對於一給定參數集合)。然而,若一指數運算序列需要獨有盲因數,則在提前已知參數且可儲存預計算值之情況下存在用於獲得一集合之更多有效方法。主要途徑利用以下事實:若{X,R1,R2,R3,...}係一遮罩集合且UX係一對應解除遮罩參數,則可由其有效地計算其他遮罩集合及解除遮罩參數。例如,對於遮罩集合{XA,R1A,R2A,R3A,...},UXA亦係一解除遮罩參數,即其中各參數自乘A次冪。在先前技術之許多設計中,維持盲因數B及U使得B=1/UE且BD * U=(1/UE)D * U=(1/UED)* U=(1/U)*U=1mod N。通常藉由平方更新該等盲因數。顯然這係可行的,這係因為若(BD)*U=1mod N,則((B2)D)*(U2)=((BD)2)*(U2)=((BD)*(BD)*(U*U))=((BD)*U)2=12=1mod N。
這可能有效,但是表明有雙重攻擊,若攻擊者已知一記錄中之一運算之輸入可為先前記錄中之該運算之輸入的平方,則這產生可被測試之一關係-且潛在地產生可被善用之一弱點。在更高安全模型中,第h個記錄中之第i次運算與第g個記錄中之第j次運算之間的任何可預測關係產生一潛在弱點。在一稍廣泛安全模型中,目標係避免其中可預測到一指數運算中之一中間值係一先前計算中之一中間值的平方之關係。
尤其擔憂中間指數更新藉由平方自X計算Y,這係因為發生在一指數運算內之更新之後的遮罩序列(X、X2、X4、X8等等)確切地係當在指數運算之間藉由平方更新X時將在記錄之間觀察到的X值之序列。因此,若藉由平方基於一先前映射(例如,(1 3 3 0)對應於 (0’,2’,1’,2’))更新值且一攻擊者可判定一位置處乘以X且另一位置處乘以X2,則攻擊者可隨後執行一雙重攻擊以嘗試識別該關係。
藉由平方尋找後續(X、UX)遮罩之一極有效替代係藉由立方尋找下一個遮罩:(X_next=X3且UX_next=UX3)。雖然這可被一「三重」攻擊加以攻擊,但是其亦大幅減小攻擊範疇,這係因為#1所有中間循環更新係藉由平方執行,因此不再匹配循環外更新,且這係因為#2指數運算循環全部係平方運算,但是極為罕見的是,一運算之輸入係一先前運算之輸入的立方。此外,雖然原則上可藉由立方更新一JMEB盲因數及一規則的盲因數二者,但是一些實施例將JMEB盲因數進行立方但是藉由平方更新另一盲因數-實際上在一後續指數運算中產生既非一先前指數運算中之中間值的平方亦非立方之中間值。注意,立方的效率與平方幾乎相同且可使用一平方及一乘法完成。
一些實施例對該問題投入更多記憶體,從而儲存JMEB遮罩XA及XB及對應解除遮罩參數UA及UB,使得對於一給定參數集合(N、指數長度、更新頻率)UA係XA之解除遮罩參數且對於相同參數,UB係XB之解除遮罩參數。該對(XA,UA)係用以遮罩一指數運算,接著如下更新該等對。首先藉由計算XA’=XA * XB mod N及UA’=UA * UB mod N更新(XA,UA)。接著藉由計算XB’=XA’* XB mod N及UB’=UA’* UB mod N更新(XB,UB)。這可展示,若可以某個F1*G0(其中XB1=F1G1)項表達XA1(XA之第一值),則在第一迭代中及各步驟處,XA及XB中之值可表達為各自自乘某個冪次之F與G之一乘積,其中該等冪次係斐波那契數且該等項之一者中F的冪次總是高於G的冪次之一斐波那契數。此更新方法極為有效,更新XA、XB、UA、UB總計僅需要四次乘法。其他實施例使用更新並組合兩個盲因數之其他方法以產生難以使用一雙重攻擊類型的途徑來攻擊之盲因數之一序列。另一實例係其中XA、UA藉由立方更新而XB、UB藉由平方更新且第n個 記錄之盲因數係XA與XB之乘積之一實例。可使用其他冪次、冪次組合或斐波那契途徑與基於單獨冪次途徑之組合;一實施例甚至可在一對記錄之間使用一方法且在下一對記錄之間使用一不同方法。
雖然一些實施例並未更新每對記錄之間的遮罩X,但是一般而言規則地更新遮罩(或遮罩對)係個好主意。
圖8B展示使用具有由X遮罩之項(0、1、2、3)之表之一SSMSSMSSM...指數運算,其產生1*X、C*X、C2*X及C3*X。如先前陳述,在各更新步驟處可在一記錄內藉由平方更新遮罩X,且亦可藉由在兩個記錄之間進行平方來更新遮罩X(即,亦藉由在記錄之間進行平方來更新X及對應解除遮罩參數)。
在圖8B中,如所示般對一例示性指數執行藉由平方進行之一更新:11 01 00 10 10 11 00 00[藉由平方進行更新]10 00 00 11。圖8B亦展示執行對應於提取運算元之表項之乘法。例如,圖8B展示乘以3、1、0、2、2、3、0、0、2、0、0、3。對於一第一記錄,一攻擊者提交C=1。在第一次更新之前,所有乘法皆係乘以X。因為第一次更新係藉由平方而進行,所以指數之下一個部分中之所有乘法皆係乘以X2。若存在一次以上更新,則第二次更新與第三次更新之間的乘法係乘以X4,第三次更新與第四次更新之間的乘法係乘以X8,以此類推。
參考圖8B,對一第二記錄(記錄2)提交一隨機密文。假定遮罩X的值係藉由在記錄之間進行平方而更新。展示第二密文之表項。如表中所示,第二記錄中對應於(00)項之第一表項係X2。因為第二密文係隨機的,所以第二記錄之其他表項(非零項)實際上隨機(與記錄1之表中之值無關)且在表中被標示為「-」。
在圖8B中之SSMSSM...序列以下的部分中,表項0的值被展示在使用其之各M以下(指數位元00)。如所示,在更新之前此等乘法乘以X2,且在第一次更新之後乘以X4;藉由「-」標示所有其他值(惟00以 外的指數位元),指示其等並未被希望對應於先前記錄中之任何運算。因此,藉由平方進行之更新沿指數從左至右且在兩個記錄之間進行。
然而,藉由沿指數從左至右且在兩個記錄之間平方進行之更新可曝露系統易受交叉相關攻擊之弱點。例如,一攻擊者可使用一記錄以定義乘以2之一模板、使值乘以X2且在其中存在涉及X2之一連串乘法之第一區域中提交一隨機單獨文本。這給定一穩定的基線,其有用於解析一更廣義的叢集問題,這係因為該基線含有一長串已知值且指數位元之其他值之間的關係可由明智地選取第一及第二密文而測試。此情形亦設定連續記錄中之X2與X4叢集之間的可測試關係,且此外一攻擊者可容易地開始於頂部記錄中之X4值之一長基線。總之,可能非所要的是,使用當遮罩在一單個記錄內從左至右移動時用來更新遮罩之相同關係在記錄之間更新遮罩。
在一些實施例中,中間循環更新包括藉由沿一記錄從左至右平方進行之一更新及藉由在兩個記錄之間「立方」(使指數自乘三次冪)進行之一更新。藉由使用平方及立方函數之一組合,可避免跨不同記錄及不同記錄之間之相同關係。
如圖8B中所示,若藉由立方進行更新,則該等值在第一次更新之前將乘以X3且在第一次更新之後將乘以X6。這可抵抗叢集攻擊並減少交叉相關問題,這係因為平方值(2)及立方值(3)彼此互質。
如下進一步描述使用一記錄內進行之平方及記錄之間進行之立方之一組合進行更新之上述方法:在記錄之間:Xi=X0 3i...................................(1)
如等式(1)中所示,第i個值重複自乘三次冪(立方)。換言之,指數值每次乘以3。計算在兩個記錄之間更新3,且在第i個記錄處相對 於初始記錄更新3i
在一記錄內:Xj,0=X0 2j...................................(2)
等式(2)展示一第一(0)記錄中之一第j次運算,其中在第j次更新之後更新2j且該更新在第一記錄(0)記錄內從左至右移動。
在記錄之間及記錄內:Xj,i=(Xi)2j=(X0 3i)2j=X0 3i 2j.............(3)
等式(3)展示將等式(1)替代至等式(2)中及第i個記錄中之第j次運算。此處,對於第i個記錄,由Xi替代第i個輸入。由X0 3i 2j給定指數運算。因為3i及2j互質,所以平方值與立方值之間不應存在任何衝突。
X3i2j mod P=X(3i2jmodΦ(P))mod P........................(4)
等式(4)展示具有一參數Φ(P)之等式(3)。如先前提及,Φ(P)係P之一簡易函數,且容許產生一等效指數。
然而,藉由立方進行之更新並未完全消除交叉相關攻擊之可能性。圖8B中之圖表之下部僅展示每次乘法中之非累積器參數之值。 然而,可能的是,累積器之值實際上可在某個時刻保留X3,或保留對於某個非零a及b可被表達為X自乘3a乘以2b之某個其他冪次。若存在此一值,則其可由交叉相關攻擊而偵測-且對於許多各個(i,j)可藉由提交許多循序C=1獲得X自乘3i*2j之一大基線。若不採用「L-R」交換,則一攻擊者可被迫善用一LHS-RHS相關性發動一攻擊以偵測此洩漏。這可具有挑戰性。若指數D在連續記錄之間隨機化,則這可能足以使交叉相關攻擊呈現不切實際。
如上所述,使用兩個快取遮罩(XA、XB)之方法可採用一更新步驟(諸如斐波那契方法),其使記錄之間的中間值呈現實際上不可預測並防止此等循序記錄交叉相關攻擊。
參考圖8A,該裝置可藉由R執行更新。循序更新可使用不同值, 但是參考圖8C,其等亦可利用相同值R,這節省記憶體。在每次藉由R更新之後,值Y可被表達為X乘以R的某個冪次。在記錄之間,可藉由平方更新X值。在記錄之間可更新R值一但是亦可不更新R值。(若一攻擊者最終發現R值,則對於各個i,其等可計算並提交C=1/Ri mod N,但是藉由X進行之遮罩可阻礙一攻擊)。
若組合遮罩循環(導致定期產生相同數字),則系統中存在一弱點。例如,若一次運算之一LHS或RHS輸入與一第二次運算之一LHS或RHS輸入相同,且存在與其他運算相同之一進一步運算(以此類推),則定期之發生可容許一攻擊者(例如,藉由向下移動兩個記錄且接著向右移動4次運算)偵測一運算元之再用,這可揭露關於所處理之一秘密指數之資訊。
因此,一設計者的目標係設計其中設定遮罩使得無關於冪次為何皆將存在使用相同輸入之兩次乘法極不可能之一系統。在此一系統中,兩個隨機數字將相同之概率極低且即使兩個數字相同,亦將不會定期發生該事件。
藉由在更新中併入不同指數冪次(3i及2j),所得指數將大於藉由平方進行等效取模更新之一指數。為判定參數之間的關係,一攻擊者必須分析3i及2j的值並判定是否存在一定期體系問題。例如,若存在對於一特定P而言衝突之i及j之一值,則無關於底數為何,對於該P而言該等值皆將衝突。
若一攻擊者可發現一定期關係,則其意謂對於C及P之一特定值,存在容許攻擊者判定i及j之位置之一關係,且若攻擊者具有關於該關係之資訊,則攻擊者可使用該資訊以瞭解P或解答該指數。(且在其中P係一秘密RSA質數之指數運算中,已知P揭露該指數)。使用一HODPA攻擊(諸如一雙重攻擊)相對易於善用具有許多定期關係之一設計。
因此,所揭示之實施例中之動機之一者係避免密碼系統之設計中具有前文提及之定期關係。首先,其推動改變記錄之間的更新(諸如未使用藉由平方進行之一更新)。在一些實施例中,更新涉及在一循環結構內從左至右進行平方該等值及使用惟循環結構外部之平方以外之一更新(即,使用惟平方以外之一不同方法更新諸回合之間的因數)。
在一些實施例中,代替藉由從左至右進行平方更新的是,更新可涉及乘以任何值。例如,鑑於一初始參數Y及一盲因數X,代替藉由平方進行更新的是,可由R更新該值,其中R=Y/X。對於此更新,需要以下項:X、R及係X、R及Y之一函數之一逆參數。
接著將參考圖8C描述值之間的衝突之偵測。首先,產生對應於X、CX、C2X、C3X之一表。在第一次更新之後,表變換為XR、CXR、C2XR、C3XR。在第二次更新之後,表變換為XR2、CXR2、C2XR2、C3XR2。繼續更新使得在第j次更新之後,表變成XRj、CXRj、C2XRj、C3XRj,以此類推。因此,可藉由重複應用R且在每次更新時無需R之一獨有值從左至右移動更新Y。
對於值X,若每次跨指數乘以相同R,則對於各第j值將獲得XRj,其中XR、XR2、XR3、XR4、XR5...之間不存在關係。因此,可對X進行平方,且XR與X2R之間或X2R與XR2之間將不存在相異關係。
然而,對於值X及C2X,若藉由平方更新X,則一攻擊者能夠提交一輸入訊息以判定CXR與C2X2R2之間的平方關係。
又,若對X進行立方或若使用X之任何冪次使得更新之最大次數係(例如)~100次更新,則當每次更新乘以R時一攻擊者能夠觀察到值XR值XR100。若由使X自乘某個冪數1(X1)來取代循環以外對X平方且若1係小於100之一數字(前提係使用小於100之一指數更新X),則一攻擊者能夠藉由在不同位置處提交C及C1來識別值(X1R1)。例如,若指 數頂部處之序列包含1,則一計算中可潛在地發生值(X1R1)。取決於所使用的指數,在不同時刻善用此關係一即,對於D之某些值,其導致可使用選取C值測試之關係,其中對於指數D之其他值而言此等關係並不存在,且測試此等關係之存在或缺失,因此揭露關於D之資訊。一攻擊者可識別何時發生此等衝突,且攻擊者可提交將導致一些指數衝突但是不會導致其他指數衝突之一訊息。當發生衝突時,攻擊者接著可聚集關於系統之資訊。
注意,藉由從左至右平方更新任何指數可危及一系統,這係因為一雙重攻擊可以平方相關性為目標。因此,在一些實施例中,較佳地是,不要藉由跨一記錄從左至右平方來更新參數。
圖8D展示其中使用在兩個記錄之間移動之一基於斐波那契數之更新來解決藉由跨一記錄平方進行之更新中之前文提及的缺陷之一例示性實施例。
藉由跨該計算之一值R進行之更新需要在遠端進行一第二次求逆-(X、R、Iinverse)。然而,若藉由多種不同方式進行更新,則可能需要(X、R、Ip11、Ip12)。上述等式取決於如何使用R。例如,若其僅涉及乘以R,則由Cd * X10101...01 * R對各自指數給定計算結果。
如圖8D中所示,更新值亦更新R。在第一次更新中首先使X乘以R,且亦藉由平方更新R以使其在第一次更新之後變成R2。在第k次更新之後,Rk=Ro k,且由maskk=XRo k-1給定遮罩。圖8D展示分別對應於XR2-1、XR4-1、XR8-1、XR16-1之結果之X之最前面的四個值之maskk之值。
在一些實施例中,該值在藉由平方更新之前乘以R。藉由平方進行之更新亦對該值平方以產生R2。當藉由平方進行之更新結束時,更新值乘以1/R以再次產生R。這消除平方相關性(自R->R2)以防止交叉相關攻擊。因此,在此等實施例中,除藉由平方進行之規則的更新以 外,執行兩次額外乘法(第一次乘以R且第二次乘以1/R)。第j次更新之後的指數係X2jR2j-1。又,因為X的冪次(即,2j)及R之冪次(即,2j-1)總是相差1,所以該兩個數字將彼此互質。
在一些實施例中,更新步驟藉由惟平方以外的方法從左至右進行。例如,藉由加上R對複合數平方可緩解與平方相關聯之相關性問題。
如先前提及,若i-j對之任一者匹配,則跨計算從左至右之連串乘數(nj)及透過一長的記錄集合之連串乘數(ni)可導致系統易受雙重攻擊。為抵抗雙重攻擊,除藉由平方進行之一遮罩更新以外,該系統亦可需要額外防禦。
在一些實施例中,藉由平方進行之遮罩更新亦可包含增加叢集數目。在此等實施例之一些中,可藉由切換參數之正負號(將正切換至負,或反之亦然)增加(加倍)叢集數目。在一些其他實施例中,可藉由切換左手側及右手側被乘數增加(加倍)叢集數目。優點係:在上述情況之各者下增加叢集數目無須增加記憶體的量。
此外,增加叢集數目可容許在計算期間使用更少的更新步驟。例如,更新頻率可基於各叢集中之項數。對於含有四項之一表,該四個乘數將產生四個叢集。然而,若切換正負號(正/負)及參數側(左手側/右手側),則這可使表中之每四項產生16個叢集,這意謂對於16個乘數,一攻擊者可能觀察到平均每叢集僅具有一項。這亦可意謂,叢集之一些在各叢集中具有兩項,且叢集之一些將不具有項,這使攻擊者產生衝突。
因為更新步驟隨著原始表之長度而變化,所以較佳地是,具有產生更多更新表或產生更多叢集(與原始表之長度不成比例)之其他方法。若表的大小增加,則更新步驟之大小亦將增加。
密碼編譯裝置
圖9展示本文描述之以一裝置(900)具體實施之原理的應用。為方便起見,取決於上下文,參考數字可指一程序中之步驟及/或由此等程序步驟使用(或產生)之數量。如圖9中所示,在至少一實施例中,一裝置900包括非揮發性記憶體901、至少一處理器902、至少一指令及資料快取區903、密碼編譯硬體904及一輸入/輸出介面908。
非揮發性記憶體(NVM)901可包含ROM、PROM、EPROM、EEPROM、電池組後備CMOS、快閃記憶體、一硬碟或可用以儲存一金鑰及/或其他資訊以根據需要實施本文描述之各種實施例之其他此儲存器。
處理器902可為(例如)能夠執行特定指令集之單個或多個微處理器、場可程式化閘陣列(FPGA)或數位信號處理器(DSP)。
快取區903係裝置或晶片內之本端記憶體。例如,快取區903可為暫時儲存由處理器902操作之資料或指令之晶片上記憶體。
輸入/輸出介面908係將數位訊符提供給其他組件以供進一步處理之軟體或硬體。
密碼編譯硬體904可為(例如)執行密碼編譯功能之硬體、軟體或硬體與軟體之一組合。密碼編譯硬體904可包括(例如)用於儲存數學庫常式(諸如ModExp常式及其他密碼編譯演算法(例如,中國剩餘定理))之一模組905。
密碼編譯硬體904可進一步包括(例如)高層級硬體906及低層級硬體907。硬體大體上可在不同抽象層級處加以描述(自類高層級軟體環境至電子積木之低層級成分)。通常,功能態樣僅關注較高層級,而較低層級考慮更多實體態樣。
在一些實施例中,低層級硬體907可包括呈一晶片之形式之一8位元乘法器。8位元乘法器能夠使系統之輸入相乘。輸入可包括(例如)8位元字組。8位元乘法器亦可具有一性質,藉此乘法器在某些計 算位元相同時消耗更少功率。8位元乘法器亦可在其消耗更少功率時具有對應更少功率洩漏。基於乘法期間乘法器之功率消耗分佈及洩漏,可能判定相同位元所處的位置及各自位元(1或0)。
在一些實施例中,低層級硬體907可包括一微碼層級處之一較高位元乘法器。例如,較高位元乘法器可包括由8位元乘法器構建之一16位元或一32位元乘法器,其中16位元或32位元乘法器位於微碼層級處。
在一些實施例中,高層級硬體906可包括由位於微碼層級處之32位元乘法器構建之一512位元乘法器。512位元乘法器可用以使兩個512位元輸入參數相乘以輸出兩倍於該輸入512位元參數之一1024位元參數。替代地,可在一中間模組中執行一交織減小,這產生大小與原始512位元輸入參數相同之一輸出。
在一些實施例中,可使用模組905中之軟體執行乘法運算,該模組905可包括一高層級數學庫資料庫。例如,數學庫資料庫可包含一ModexP常式及一頂層級密碼編譯演算法,諸如RSA。在高層級處可藉由致盲輸入及藉由使盲輸入相乘計算之一數字對RSA遮罩。當計算結束時,可藉由乘以一逆參數解除遮罩所計算之數字。RSA中之逆參數係秘鑰之一函數且可使用秘鑰而計算。ModexP常式中亦可使用一類似秘鑰。然而,使用ModexP中之一秘鑰計算逆參數可給系統添加新特徵。因此,在頂層級RSA處計算一逆遮罩可快於ModexP層級。
頂層級RSA亦可僅使用金鑰之公共部分計算逆遮罩。使用公鑰計算逆遮罩可快於使用秘鑰,且沒有更大的洩漏風險。
在一些實施例中,較佳地是,在本發明中於低層級硬體907處實施安全防禦,這容許由使用者更好地控制且更具靈活性。這係因為當安全需要移動至頂層級(諸如模組905或高層級硬體906)時,修改RSA常式之靈活性可能有所限制。例如,一智慧型卡片製造商可能無法隨 意修改RSA常式,這係因為RSA常式被寫入一軟體(諸如由一第三方供應商提供之JavaCard)中。
因此,在一些實施例中,較佳地可在低層級硬體907處實施呈一遮罩方法之形式之安全防禦。在低層級硬體907處,解除遮罩參數無須取決於秘鑰及模數。然而,即使存在一模數線,仍可使用遮罩參數的平方與模數來計算模數的平方,且不洩漏關於模數之大部分資訊。
在低層級硬體907處(微碼層級處)實施安全防禦亦可提供其他優點。在一些裝置中,當首次使用裝置900時無需防禦。然而,在隨時間使用硬體後且硬體仍在原始微碼上運行時,可產生功能洩漏,其等可危及SPA及DPA攻擊中之秘鑰。微碼層級處之一防禦可解決上述問題。
如熟習此項技術者應明白,上文描述之技術不限於特定主體環境或外觀尺寸。反而,其等可用於多種應用,包含(不限於):所有種類的密碼編譯智慧型卡片,包含(不限於):實質上順應ISO 7816-1、ISO 7816-2及ISO 7816-3之智慧型卡片(「ISO 7816-順應智慧型卡片」);基於非接觸式及近接智慧型卡片及密碼編譯符記;儲存值卡片及系統;密碼編譯安全信用卡及借貸卡;顧客忠誠度卡片及系統;密碼編譯鑑證信用卡;密碼編譯加速計;賭博及博彩系統;安全密碼編譯晶片;防篡改微處理器;軟體程式(包含(不限於):在個人電腦、伺服器等等上使用之程式及可被載入至密碼編譯裝置上或嵌入其中之程式);金鑰管理裝置;銀行金鑰管理系統;安全網頁伺服器;電子支付系統;小額支付系統及儀錶;預付電話卡;密碼編譯識別卡及其他識別驗證系統;用於電子轉帳之系統;自動櫃員機;銷售點終端機;憑證簽發系統;電子徽章;門禁系統;使用密碼編譯金鑰之所有種類的實體鎖;用於解密電視機信號之系統(包含(不限於):廣播電視機、衛星電視機及有線電視機);用於解密譯成密碼的音樂及其他音 訊內容(包含經由電腦網路分佈之音樂)之系統;用於保護所有種類的視訊信號之系統;知識產權保護及防拷貝系統(諸如用以防止未授權拷貝或使用電影、音訊內容、電腦程式、視訊遊戲、影像、文字、資料庫等等);蜂巢式電話擾碼及鑑證系統(包含電話鑑證智慧型卡片);安全電話(包含此等電話之金鑰儲存裝置);密碼編譯PCMCIA卡片;攜帶型密碼編譯符記;及密碼編譯資料審核系統。
可使用電腦可讀指令植入由該裝置執行之一些方法,該等指令可儲存於一有形非暫時性電腦可讀媒體(諸如一軟碟、一硬碟、一光碟唯讀記憶體(CD-ROM)及磁光碟(MO)、一數位多功能光碟唯讀記憶體(DVD-ROM)、一數位多功能光碟隨機存取記憶體(DVD RAM)或一半導體記憶體)上。替代地,可以硬體組件或硬體與軟體之組合(諸如(例如)ASIC、專用電腦或通用電腦)實施一些方法。
在不脫離本文揭示之該等特定技術之精神及範疇的情況下應明白所有前述繪示例示性實施例及應用之相關變動、增強及修改。因此,本發明不應限於前述揭示內容,反而應由隨附申請專利範圍解釋。
202‧‧‧步驟
204‧‧‧步驟
206‧‧‧步驟
208‧‧‧步驟
210‧‧‧步驟
212‧‧‧步驟
214‧‧‧步驟

Claims (31)

  1. 一種用於以抵抗簡易功率分析(SPA)的攻擊之一方式遮罩一模指數運算中之一運算之電腦實施方法,該方法係由包括至少一處理器及至少一記憶體之一系統執行,該方法包括:接收一或多個輸入,其中該等輸入包括一或多個運算元;定義一遮罩值及一固定值,其中該遮罩值及該固定值係儲存在該至少一記憶體之一第一位置中;定義各自等於該一或多個輸入之一左手側(LHS)參數及一右手側(RHS)參數;使用該等LHS及RHS參數及該遮罩值計算複數個暫時值;及基於該複數個暫時值之一者及該固定值產生一輸出。
  2. 如請求項1之方法,其中該固定值係一解除遮罩參數。
  3. 如請求項1之方法,其中該運算係一平方運算或一乘法運算。
  4. 如請求項1之方法,其中該輸入係以一解除遮罩格式接收且該輸出係以一解除遮罩格式產生。
  5. 如請求項1之方法,其中該輸入係以一遮罩格式接收且該輸出係以一遮罩格式產生。
  6. 如請求項3之方法,其中若該運算係一平方運算,則該等暫時值不含有該輸入與該遮罩值之一乘法乘積之任何項。
  7. 如請求項3之方法,其中若該運算係一乘法運算,則該固定值係該遮罩值與該等輸入之一者之一函數,且該固定值係儲存於該至少一記憶體之一第二位置中。
  8. 如請求項1之方法,其中該等輸入之一者係恆定的。
  9. 如請求項1之方法,其中該模指數運算包括複數次平方運算及乘法運算。
  10. 如請求項9之方法,其進一步包括:判定兩次連續運算是否包括一乘法運算且後續接著一平方運算;及若該兩次連續運算包括一乘法運算且後續接著一平方運算:則在該乘法運算與該平方運算之間插入一第一遮罩。
  11. 如請求項9之方法,其進一步包括:判定兩次連續運算是否包括兩次平方運算;及若該兩次連續運算包括兩次平方運算:則在該等平方運算之間插入一第二遮罩。
  12. 如請求項9之方法,其進一步包括:判定兩次連續運算是否包括一平方運算且後續接著一乘法運算;及若該兩次連續運算包括一平方運算且後續接著一乘法運算:則在該平方運算與該乘法運算之間執行一虛設步驟。
  13. 如請求項1之方法,其進一步包括:在該模指數運算期間執行一更新步驟以將該遮罩值切換至另一遮罩值。
  14. 如請求項13之方法,其中該另一遮罩值係該遮罩值之一逆數。
  15. 如請求項13之方法,其中該另一遮罩值係該遮罩值之一平方。
  16. 如請求項1之方法,其進一步包括:增加該模指數運算期間的叢集數目。
  17. 如請求項16之方法,其中藉由切換該LHS參數與該RHS參數增加該叢集數目。
  18. 如請求項16之方法,其中藉由求反該LHS參數或該RHS參數或該LHS參數與該RHS參數二者增加該叢集數目。
  19. 如請求項18之方法,其中若該輸出係一負數,則該輸出進一步 乘以另一負數以呈現一最終正輸出。
  20. 如請求項16之方法,其中增加該叢集數目可減小功率洩漏的善用性。
  21. 如請求項1之方法,其中該模指數運算包含一滑動窗演算法。
  22. 如請求項1之方法,其中該遮罩值遍及該模指數運算保持恆定。
  23. 如請求項1之方法,其中該遮罩值係公用的。
  24. 如請求項1之方法,其中該遮罩值等於一值1。
  25. 如請求項1之方法,其中遮罩產生於該模指數運算中之中間值。
  26. 如請求項1之方法,其進一步包括:在該模指數運算中添加虛設乘法運算以產生一連續且對稱平方-乘法序列。
  27. 如請求項26之方法,其中該等虛設乘法運算包括:使該輸出乘以一值1;及/或使該輸出乘以一先前輸入以獲得一結果並忽略該結果;及/或使該輸出乘以一盲因數以獲得另一結果並將該另一結果帶至下一次運算。
  28. 如請求項1之方法,其進一步包括:應用中間循環更新以抵抗高階差分功率分析(DPA)攻擊。
  29. 如請求項28之方法,其中該等中間循環更新包括沿一指數從左至右平方。
  30. 如請求項29之方法,其中該等中間循環更新進一步包括在兩個記錄之間使該指數中之一位元自乘三次冪以防止衝突。
  31. 如請求項30之方法,其中該等中間循環更新係基於一類斐波那契(Fibonacci)數序列。
TW103105533A 2013-03-15 2014-02-19 非對稱遮罩乘法 TWI604380B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/835,402 US9959429B2 (en) 2013-03-15 2013-03-15 Asymmetrically masked multiplication

Publications (2)

Publication Number Publication Date
TW201437910A true TW201437910A (zh) 2014-10-01
TWI604380B TWI604380B (zh) 2017-11-01

Family

ID=51534089

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103105533A TWI604380B (zh) 2013-03-15 2014-02-19 非對稱遮罩乘法

Country Status (5)

Country Link
US (3) US9959429B2 (zh)
EP (1) EP2974094B1 (zh)
JP (1) JP6707024B2 (zh)
TW (1) TWI604380B (zh)
WO (1) WO2014149251A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106603221A (zh) * 2016-12-23 2017-04-26 北京握奇智能科技有限公司 一种抵抗spa攻击的模幂计算方法、系统及嵌入式单芯片
US10326586B2 (en) 2016-04-19 2019-06-18 Winbond Electronics Corp. Encryption/decryption apparatus and power analysis protecting method thereof
CN110309651A (zh) * 2018-03-25 2019-10-08 新唐科技股份有限公司 多字元乘法器电路以及防止功率分析攻击的方法
WO2023141934A1 (en) * 2022-01-28 2023-08-03 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations
US11954487B2 (en) 2022-01-28 2024-04-09 Nvidia Corporation Techniques, devices, and instruction set architecture for efficient modular division and inversion
US12003633B2 (en) 2022-01-28 2024-06-04 Nvidia Corporation Techniques, devices, and instruction set architecture for balanced and secure ladder computations

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
EP2884387B1 (en) * 2013-12-13 2016-09-14 Thomson Licensing Efficient modular addition resistant to side-channel attacks
US9444623B2 (en) * 2013-12-20 2016-09-13 Cryptography Research, Inc. Modular exponentiation optimization for cryptographic systems
EP2996277B1 (en) * 2014-09-10 2018-11-14 Nxp B.V. Securing a crytographic device against implementation attacks
US10754977B2 (en) * 2014-09-25 2020-08-25 Micro Focus Llc Report comprising a masked value
DE102014222825A1 (de) * 2014-11-07 2016-05-12 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Vorrichtung und Verfahren zur Multiplikation zur Erschwerung von Seitenkanalangriffen
EP3241150B1 (en) 2014-12-30 2021-08-04 Cryptography Research, Inc. Determining cryptographic operation masks for improving resistance to external monitoring attacks
CN106254888B (zh) * 2015-06-09 2020-06-02 同济大学 一种图像编码及解码方法、图像处理设备
US11661583B2 (en) 2015-08-27 2023-05-30 University Of Washington Drug discovery platform for Duchenne cardiomyopathy
TWI580243B (zh) 2015-10-06 2017-04-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
TWI575924B (zh) * 2015-10-06 2017-03-21 瑞昱半導體股份有限公司 解密裝置、方法及電路
CN107547190A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 用于保护使用替换表的替换运算免受侧信道分析的方法
US10367637B2 (en) * 2016-07-22 2019-07-30 Qualcomm Incorporated Modular exponentiation with transparent side channel attack countermeasures
FR3055436A1 (fr) * 2016-08-23 2018-03-02 Stmicroelectronics (Rousset) Sas Protection d'un calcul modulaire
FR3055437A1 (fr) 2016-08-23 2018-03-02 Stmicroelectronics (Rousset) Sas Protection d'un calcul d'exponentiation modulaire
EP3559811B1 (en) * 2016-12-21 2024-04-24 Cryptography Research, Inc. Protecting parallel multiplication operations from external monitoring attacks
CN108242994B (zh) * 2016-12-26 2021-08-13 阿里巴巴集团控股有限公司 密钥的处理方法和装置
DE102017002153A1 (de) * 2017-03-06 2018-09-06 Giesecke+Devrient Mobile Security Gmbh Übergang von einer booleschen Maskierung zu einer arithmetischen Maskierung
FR3069671A1 (fr) * 2017-07-25 2019-02-01 Stmicroelectronics (Rousset) Sas Protection d'un calcul iteratif contre des attaques horizontales
DE102017118164A1 (de) * 2017-08-09 2019-02-14 Infineon Technologies Ag Kryptographische schaltung und datenverarbeitung
EP3484093A1 (en) * 2017-11-10 2019-05-15 Koninklijke Philips N.V. A computation device and method
EP3579493A1 (fr) * 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
EP3579492A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
CN109257160B (zh) * 2018-12-05 2023-07-04 电子科技大学 一种基于决策树的侧信道模板攻击方法
CN109583429B (zh) * 2018-12-26 2021-04-30 杭州大拿科技股份有限公司 一种批改试卷中应用题的方法及装置
WO2020146284A1 (en) * 2019-01-07 2020-07-16 Cryptography Research, Inc. Efficient squaring with loop equalization in arithmetic logic units
KR102653018B1 (ko) 2019-01-16 2024-03-29 삼성전자주식회사 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법
WO2020152831A1 (ja) * 2019-01-24 2020-07-30 日本電気株式会社 情報処理装置、秘密計算方法及びプログラム
FR3094522B1 (fr) 2019-03-29 2021-11-19 St Microelectronics Rousset Protection d’un calcul itératif
JP7402191B2 (ja) 2021-03-03 2023-12-20 Kddi株式会社 乗算装置、乗算方法及び乗算プログラム
TWI804043B (zh) * 2021-11-08 2023-06-01 財團法人工業技術研究院 多輸入多輸出的累加器及其執行方法
EP4372548A1 (en) * 2022-11-15 2024-05-22 Thales Dis France Sas Protecting cryptographic operations againt horizontal side-channel analysis attacks

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
JP2002519722A (ja) * 1998-06-03 2002-07-02 クリプターグラフィー リサーチ インコーポレイテッド スマートカードおよび他の暗号システム用の、漏洩を最小に抑える、改良desおよび他の暗号プロセス
US6490357B1 (en) 1998-08-28 2002-12-03 Qualcomm Incorporated Method and apparatus for generating encryption stream ciphers
US6295606B1 (en) * 1999-07-26 2001-09-25 Motorola, Inc. Method and apparatus for preventing information leakage attacks on a microelectronic assembly
FR2810178B1 (fr) 2000-06-13 2004-10-29 Gemplus Card Int Procede de calcul cryptographique comportant une routine d'exponentiation modulaire
JP3950638B2 (ja) 2001-03-05 2007-08-01 株式会社日立製作所 耐タンパーモジュラ演算処理方法
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
US7610628B2 (en) 2005-03-01 2009-10-27 Infineon Technologies Ag Apparatus and method for calculating a representation of a result operand
FR2895609A1 (fr) * 2005-12-26 2007-06-29 Gemplus Sa Procede cryptographique comprenant une exponentiation modulaire securisee contre les attaques a canaux caches, cryptoprocesseur pour la mise en oeuvre du procede et carte a puce associee
EP1840732A1 (en) 2006-03-31 2007-10-03 Axalto SA Protection against side channel attacks
US8265267B2 (en) 2007-05-30 2012-09-11 Panasonic Corporation Information security device
FR2917197B1 (fr) 2007-06-07 2009-11-06 Thales Sa Procede de masquage du resultat d'une operation de multiplication modulaire et dispositif associe.
US8670557B2 (en) 2007-09-10 2014-03-11 Spansion Llc Cryptographic system with modular randomization of exponentiation
JP2010008883A (ja) 2008-06-30 2010-01-14 Toshiba Corp 暗号用演算装置、暗号用演算方法及びプログラム
EP2365659B1 (fr) 2010-03-01 2017-04-12 Inside Secure Procédé de test de la résistance d'un circuit intégré à une analyse par canal auxiliaire
US8457919B2 (en) * 2010-03-31 2013-06-04 Inside Secure Process for testing the resistance of an integrated circuit to a side channel analysis
FR2977952A1 (fr) 2011-07-13 2013-01-18 St Microelectronics Rousset Protection d'un calcul d'exponentiation modulaire par multiplication par une quantite aleatoire

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10326586B2 (en) 2016-04-19 2019-06-18 Winbond Electronics Corp. Encryption/decryption apparatus and power analysis protecting method thereof
CN106603221A (zh) * 2016-12-23 2017-04-26 北京握奇智能科技有限公司 一种抵抗spa攻击的模幂计算方法、系统及嵌入式单芯片
CN110309651A (zh) * 2018-03-25 2019-10-08 新唐科技股份有限公司 多字元乘法器电路以及防止功率分析攻击的方法
WO2023141934A1 (en) * 2022-01-28 2023-08-03 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations
US11954487B2 (en) 2022-01-28 2024-04-09 Nvidia Corporation Techniques, devices, and instruction set architecture for efficient modular division and inversion
US11985221B2 (en) 2022-01-28 2024-05-14 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations
US12003633B2 (en) 2022-01-28 2024-06-04 Nvidia Corporation Techniques, devices, and instruction set architecture for balanced and secure ladder computations

Also Published As

Publication number Publication date
US9959429B2 (en) 2018-05-01
WO2014149251A1 (en) 2014-09-25
EP2974094B1 (en) 2020-08-26
EP2974094A4 (en) 2016-11-16
US10902156B2 (en) 2021-01-26
JP2016510914A (ja) 2016-04-11
US20140281573A1 (en) 2014-09-18
TWI604380B (zh) 2017-11-01
US20200110907A1 (en) 2020-04-09
EP2974094A1 (en) 2016-01-20
JP6707024B2 (ja) 2020-06-10
US20180211065A1 (en) 2018-07-26
US10423807B2 (en) 2019-09-24

Similar Documents

Publication Publication Date Title
TWI604380B (zh) 非對稱遮罩乘法
Aranha et al. LadderLeak: Breaking ECDSA with less than one bit of nonce leakage
Coron et al. Conversion from arithmetic to boolean masking with logarithmic complexity
CN107040362B (zh) 模乘设备和方法
US20210256165A1 (en) Protecting parallel multiplication operations from external monitoring attacks
WO2009035982A1 (en) Secure modular exponentiation by randomization of exponent scanning
Liu et al. Security in approximate computing and approximate computing for security: Challenges and opportunities
US20100287384A1 (en) Arrangement for and method of protecting a data processing device against an attack or analysis
CN102193773A (zh) 针对水平旁路分析而受到保护的集成电路
JP4378479B2 (ja) カバート・チャネル攻撃に対して安全な整数除算法
Walter Some security aspects of the MIST randomized exponentiation algorithm
US20090175455A1 (en) Method of securing a calculation of an exponentiation or a multiplication by a scalar in an electronic device
US10209961B2 (en) Verification of the sensitivity of an electronic circuit executing a modular exponentiation calculation
Bhattacharya et al. Utilizing performance counters for compromising public key ciphers
JP2008525834A (ja) 暗号用の安全かつコンパクトな累乗方法
Fournaris Fault and power analysis attack protection techniques for standardized public key cryptosystems
Park et al. An improved side channel attack using event information of subtraction
Lee et al. A practical collision-based power analysis on RSA prime generation and its countermeasure
US20240187206A1 (en) Method and system for protecting cryptographic operations against side-channel attacks
Fournaris et al. Crt rsa hardware architecture with fault and simple power attack countermeasures
Monfared et al. Secure and efficient exponentiation architectures using Gaussian normal basis
EP4372548A1 (en) Protecting cryptographic operations againt horizontal side-channel analysis attacks
CN110309651B (zh) 多字元乘法器电路以及防止功率分析攻击的方法
Luo Novel Side-Channel Attacks on Emerging Cryptographic Algorithms and Computing Systems
Walter et al. Data dependent power use in multipliers