TWI736817B - 多字元乘法器電路以及防止功率分析攻擊的方法 - Google Patents

多字元乘法器電路以及防止功率分析攻擊的方法 Download PDF

Info

Publication number
TWI736817B
TWI736817B TW107146186A TW107146186A TWI736817B TW I736817 B TWI736817 B TW I736817B TW 107146186 A TW107146186 A TW 107146186A TW 107146186 A TW107146186 A TW 107146186A TW I736817 B TWI736817 B TW I736817B
Authority
TW
Taiwan
Prior art keywords
character
parameter
product
masking
characters
Prior art date
Application number
TW107146186A
Other languages
English (en)
Other versions
TW201941096A (zh
Inventor
亞隆 摩西
Original Assignee
新唐科技股份有限公司
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 新唐科技股份有限公司 filed Critical 新唐科技股份有限公司
Publication of TW201941096A publication Critical patent/TW201941096A/zh
Application granted granted Critical
Publication of TWI736817B publication Critical patent/TWI736817B/zh

Links

Images

Classifications

    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/764Masking
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • 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)
    • 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
    • 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/08Randomization, e.g. dummy operations or using noise

Landscapes

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

Abstract

一種多字元乘法器包含介面及電路。介面用以接收包含一個或複數個第一字元的第一參數X,以及包含複數個第二字元的第二參數Y'。第二參數包含包含一非掩蔽參數Y的掩蔽版本,透過使用掩蔽參數AY掩蔽,使Y'=Y+AY。電路用以透過累加複數個子乘積來計算Z=X‧Y的乘積,其中複數個子乘積中的每一個係透過將X的第一字元乘上Y'的第二字元,並從中間臨時總和減去部分乘積P=X‧BY中相應的一第三字元來計算,其中BY係為AY所包含的掩蔽字元。

Description

多字元乘法器電路以及防止功率分析攻擊的方法
本發明的實施例涉及一種安全計算系統,特別涉及一種用於防止功率分析攻擊的方法和系統。
功率分析攻擊(Power analysis attacks)是攻擊者在其運算期間監視硬件裝置的功耗變化以從裝置提取加密密鑰和其他秘密資訊的攻擊。差分功率分析(Differential Power Analysis,DPA)是一種功率分析方法,允許攻擊者透過對複數個加密運算(cryptographic operations)所消耗的功率進行統計分析,以在計算加密計算期間提取秘密資訊。
功率分析攻擊通常是非侵入性的,因此難以檢測。為防止諸如DPA之類的功率分析攻擊,一般方法是透過設計硬件,使得功耗變化不會洩露秘密資訊。
這裡描述的實施例提供了一種多字元乘法器電路,其包括介面和電路。介面配置為接收包括一個或複數個第一字元的第一參數X,以及包括複數 個第二字元的第二參數Y'。第二參數包括非掩蔽參數(non-blinding parameter)Y的掩蔽版本,使用掩蔽參數(blinding parameter)AY進行掩蔽使Y'=Y+A Y 。該電路被配置成透過對複數個子乘積求和以計算乘積Z=X.Y,透過將X的第一字元乘以Y'的第二字元,並從子乘積的中間臨時總和中減去部分乘積P=X.B Y 的相應的第三字元來計算每個子乘積,BY是包括在AY的掩蔽字元。
在一些實施例中,電路被配置為消耗透過一個或複數個電源輸入提供給其的電功率,同時使得非掩蔽參數Y在乘積計算期間不能從電源輸入的感測中恢復。在其他實施例中,掩蔽參數AY包括大於非掩蔽參數Y的位元數。在另一實施例中,掩蔽參數AY包括掩蔽字元BY及至少一個移位版本(shifted version)BY的和。
在一實施例中,該電路被配置成使用對應乘積掩蔽參數AZ計算乘積Z的掩蔽版本Z’=Z+A Z ,透過在X的第一字元的子乘積加上Y'的第二字元,以從AZ中提取掩蔽字元。在另一實施例中,電路被配置為累積子乘積並以置換和交錯順序減去部分乘積的第三字元,其不顯示在直接乘積計算中產生的中間結果。
在一些實施例中,該電路被配置為,藉由對Y'增加與AY不同的掩蔽參數,以產生臨時掩蔽參數,然後從臨時掩蔽參數減去AY以升級掩蔽參數Y'。在其他實施例中,乘積Z或Z的掩蔽化版本用作加密引擎的輸入。
根據這裡描述的實施例,另外提供了一種方法,包括在多字元乘法器電路中接收包括一個或複數個第一字元的第一參數X,以及包括複數個第二字元的第二參數Y'。第二參數包括掩蔽非掩蔽參數Y的掩蔽版本,透過使用掩蔽參數AY使得Y'=Y+A Y 。乘積Z=X.Y是透過對複數個子乘積累加來計算的,每個子乘積的計算方法是將X的第一字元乘以Y'的第二字元,然後從子乘積 的中間臨時總和中減去部分乘積P=X.B Y 的第三個字元,BY是包含在AY中的掩蔽字元。
以下對實施例的詳細描述,將結合附圖,以更全面地理解這些和其他實施例。
20:加密系統
24:加密裝置
32:處理器
34、204、206、208、210、MEM1~MEM4:記憶體
36:加密引擎
40:密碼儲存裝置
44、200:多字元乘法器
48:I/O模組
52:匯流排
56:介面
60、240:基於字元的乘法器
64:X
68:Y’
70、222、228、230、232、234、258、264、268、286:加法器
72:AY
78:AZ
80:乘積結果參數
84:電源
88:電力線
92:攻擊者
100~120:步驟
212:Y基本地址寄存器
214:X基本地址寄存器
216:結果基本地址寄存器
218:部分乘積基本地址寄存器
220:X計數器
224、270、280、284:多工器
226:Y計數器
244:非掩蔽輸入寄存器
246:X掩蔽寄存器
250、272:減法模組
252、274:借位元
256:MSB寄存器
262:進位位元
266:解多工器
282:掩蔽字元寄存器
第1圖係為根據本文描述的實施例示意性地示出了受到功率分析攻擊保護的加密系統的方塊圖。
第2圖係為根據本文描述的實施例示意性地示出使用變化的掩蔽參數計算掩蔽乘積的方法的流程圖。
第3圖係為根據本文描述的實施例示意性地示出以硬體實現的多字元乘法器的方塊圖。
概述
這裡描述的實施例提供了用於保護加密系統免受功率分析攻擊的改進的方法和系統。在所揭露的實施例中,在用作加密運算的輸入之前,以可恢復的方式修改參數(例如,秘密參數)。秘密參數通常在每個使用它的加密運算之前以這種方式被修改。這種修改也稱為“掩蔽化(blinding)”,並且修改的參數也稱為“掩蔽參數(blinded parameter)”。
例如,將加密函數f(.)應用於參數Xin的加密裝置,即,加密裝置需要計算Xout=f(Xin)。為了隱藏Xin和Xout的值,可以將Xin修改為使用合適的掩蔽化函數E計算的表示為Xin'的掩蔽參數,其中Xin'=E(Xin)。在這種情況 下,加密函數的輸出Xout'=f(Xin')是掩蔽的,並且可以透過對Xout'施加合適的反掩蔽函數(reverse blinding function)E'使得Xout恢復為非掩蔽的輸出Xout',其中Xout=E'(Xout')。值得注意的是,E'不一定是E的反函數(inverse function)。由掩蔽函數E施加的運算可以是,例如,向Xin添加一些隨機值Rn,即,Xin'=Xin+R,其中R是隨機選擇的。
在所揭露的實施例中,要求加密裝置計算表示為X和Y的兩個參數的乘積,每個參數包括複數個m位字元。假設出於安全目的的參數Y在掩蔽形式提供為Y'=Y+A Y ,X.Y的計算後的乘積可以透過X.Y=X.Y'-X.A Y 間接地計算得知。
在所揭露的實施例中,一個多字元乘法由m乘m乘法器(m-BY-m multiplier)進行,也被稱為“基於字元的乘法器(word-based multiplier)”。使用基於字元的乘法器,透過計r算各個輸入參數的m位字元之間的複數個子乘積來執行整個多字元乘法。假定輸入參數相乘包括n個m位的字元,計算乘積為X.Y'-X.A Y 需要(2.n2)個m乘m相乘運算。
儘管在下面將要描述的實施例中,我們主要涉及將大數乘法分解成m乘m乘法運算,在替代實施例中,此基本乘法運算也可以使用由m位字元乘以n位字元進行計算,其中n≠m。當諸如X或Y的參數不是m(或n)的整數倍時,可以用一個或複數個最高次零位元(most-significant zero bits)填充(padded)它以將參數大小完成為基礎字元大小的整數倍。
在揭露的實施例中,對Y的掩蔽參數AY為選自一個表示為BY的m位掩蔽字元構成,即,Y的掩蔽參數的形式為A Y =[B Y ,B Y ,...,B Y ]。AY中的m位字元的數量比Y的m位字元的數量大。透過使用這種特殊的結構,可以透過預先計算X.B Y 一次,並將X.B Y 的移位版本減去中間結果,可以僅使用n個 m乘m乘法運算上的一個數,有效地表達X.A Y (與任意掩蔽參數的n2乘法運算的數量相比),其將在下面詳細描述。乘積結果或乘積結果的掩蔽版本可以例如,作為加密引擎的輸入使用。
在一些實施例中,多字元乘法器累加子乘積並以置換和交錯順序減去部分乘積的m位字元,該順序不顯示將在直接乘積計算中產生的中間結果。
在一些實施例中,多字元乘法器以一種方式迭代地執行乘積計算,該方式使得非掩蔽參數Y在乘積的計算期間不能從電源輸入的感測中恢復。
令Z表示乘積Z=X.Y,並且讓Z'表示Z的掩蔽版本。在一些實施例中,多字元乘法器使用相應乘積掩蔽參數A Z =[B Z ,B Z ,...,B Z ],透過添加AZ的m位字元BZ到一個由X的m位字元乘上Y'的m位字元的子乘積計算乘積Z的掩蔽版本Z’=Z+A Z
在一個實施例中,加密裝置(或多字元乘法器)透過添加與AY’不同的後續掩蔽參數(subsequent blinding)至Y’來更新掩蔽參數,以便產生臨時掩蔽參數,然後對臨時掩蔽參數減去AY
在所揭露的技術中,多字元乘法器計算第一參數和第二參數的乘積,其中至少第二參數是掩蔽的。該乘積計算以不顯示第二參數的非掩蔽值,也不會透過直接乘法產生中間結果的方式被分解為基於字元的乘法。結果,揭露的加密裝置可有效防禦功率分析攻擊。有效地執行乘積計算,使延遲與直接乘算相當。
系統描述
第1圖是示意性地示出根據本文描述的實施例的抵禦功率分析攻擊的加密系統20的方塊圖。在第1圖的例子中,加密系統20包括加密裝置24,其包括處理器32、處理器的系統記憶體34、加密引擎36、密碼儲存裝置40、多字 元乘法器44,以及I/O模組48,其使用合適的匯流排52互連。在第1圖的例子中,多字元乘法器44包含在加密引擎36內。
加密系統20可以用在以安全方式處理資料的各種應用中。例如,加密系統20可以提供加密服務,例如資料機密性、完整性和認證,以上僅舉幾個例子。
加密引擎36通常實現加密函數的套件,例如評估與Rivest-Shamir-Adleman(RSA)方法相關的密鑰所需的加密函數。
密碼儲存裝置40儲存例如要由處理器32執行的程序指令,和要由加密引擎36運用的資料。密碼儲存裝置40可包括複數個記憶體裝置(未示出),其中至少一些可平行訪問。密碼儲存裝置40中包括的每個記憶體裝置可以是任何合適的儲存技術,諸如唯讀記憶體(Read Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、非揮發性記憶體(Nonvolatile Memory,NVM)如快閃記憶體(Flash memories),或任何其他合適的儲存技術。具體來說,密碼儲存裝置40中的相異記憶裝置係為不同的相應記憶類型。
多字元乘法器44包括用於訪問密碼儲存裝置40中的某些資訊的介面56。介面56通常包括一個或複數個地址寄存器,用於指向密碼儲存裝置中的相關地址的其他邏輯電路(未示出),以及用於儲存本地所需的參數以進行有效乘法運算的資料寄存器(未示出)。
多字元乘法器44包括基於字元的乘法器60,其接收2個m位輸入並產生相應的2m位子乘積。在本實例中,多字元乘法器44將表示為X 64的參數乘上表示為Y' 68的參數。通常,輸入參數X和Y'中的每一個分別包括表示為Xi和Y'j的複數個m位字元。多字元乘法器計算X i .Y’ j 的子乘積,並使用支援加法和 減法運算的加法器70以適當的m位移位累加這些子乘積。在一些實施例中,多字元乘法器將中間累積結果儲存在密碼儲存裝置中,以用於後續計算。
參數Y' 68是僅在相應的非掩蔽參數Y的掩蔽的形式提供,因此Y'是源自透過對Y加入掩蔽參數AY 72而衍生,即Y'+Y+A Y 。在一些實施例中,為有效計算X.Y的乘積,Y的掩蔽參數被配置為複數個並聯的m位掩蔽字元加上m位移位,表示為BY,即,A Y =[B Y ,B Y ,...,B Y ]。掩蔽參數AY的m位字元應該具有許多比Y的m位字元大的數字。掩蔽字元另外用於計算由P=X.B Y 得到的部分乘積P 76,例如,做為一個預乘階段(pre-multiplication phase)。在計算乘積X.Y時,加法器70從X.Y乘積的臨時結果P的m位字元減去具有選定的m位移位,以便導出X.Y的乘積結果。
在一些實施例中,加密裝置24需要以掩蔽的形式儲存X.Y的乘積結果。在這樣的實施例中,加法器70將從掩蔽參數AZ 78的乘積中提取的m位字元添加到子乘積。掩蔽乘積結果由Z’=X.Y+A Z 給出。在一些實施例中,類似於上述Y的掩蔽化方案,AZ由掩蔽的m位字元BZ組成。在這種情況下,僅需要儲存BZ而不是整個掩蔽參數A。在第1圖的例子中,加密裝置24儲存由多字元乘法器產生的中間結果以及最終掩蔽乘積至密碼儲存裝置40中的乘積結果參數80。
在加密系統20中,加密裝置24透過一個或複數個電力線88使用電源84供電。電源84包括例如電池或電源模組。電源84通常提供一個或複數個直流(DC)電壓以供加密裝置24內的各個元件使用。電力線88的一端通常電連接和機械連接到電源,並且其另一端使用合適的連接器連接到加密裝置。電源84,電源線88或兩者一般不受保護且可被攻擊者92訪問。
加密裝置24消耗的瞬時功率通常根據例如,透過加密引擎36和/或多字元乘法器44執行的基礎計算而變化。攻擊者92可以在一段時間內監視功耗,以試圖揭示秘密資訊。例如,攻擊者92可執行由統計分析的加密裝置24的功率消耗的複數個樣本以執行DPA攻擊。在裡面在本揭露的上下文中,術語“功耗(power consumption)”是指與功耗相關的任何可測量的物理屬性,例如能量、電壓或電流。
在加密系統20中,設計由多字元乘法器44執行的乘法運算,使得多字元乘法器有效地計算X.Y的乘積而不在中間結果中暴露非掩蔽值Y,詳如後述。因此,攻擊者92無法透過監視電源線88或電源84來重建Y。
有效多字元掩蔽乘法(efficient multi-word blinded multiplication)
在本揭露的上下文中,術語“掩蔽乘法”是指兩個參數之間的乘法運算,其中至少一個參數是掩蔽的。令非掩蔽參數X和Y包括m位字元的相應數量Lx和Ly。公式1:給出用於Y的掩蔽參數AY,其相應的掩蔽版本Y'由下式給出:公式1:Y'=Y+A Y
掩蔽參數AY包括複數個m位字元,其數量比Ly多一個或複數個m位字元。如本文所解釋的,這對於保護加密系統20免受對Y的最高有效位的統計攻擊是必需的。當Y和AY的長度是n個字元,並且Y的最高有效位(MSB)等於1時,一個進位位元(carry bit)傳遞(propagates)到第(n+1)個的Y'的公式1的字元。可以使用功率分析技術推斷該進位位元。根據X、Y'和AY,乘積X.Y的乘積可寫為:公式2: Z=X.Y=X.Y'-X.A Y
為了有效地計算公式2,使用表示為BY的單個m位掩蔽詞來定義掩蔽參數。具體地,透過用m位移位填充掩蔽字元的複數個實例(instances)來構成掩蔽參數AY,即,A Y =[B Y ,B Y ,...,B Y ]。假設AY的長度(以m位字元為單位)是Ly+1,則AY由下式給出:
Figure 107146186-A0305-02-0012-1
掩蔽字元BY可以具有除了全為1的m位字元之外的任何合適的值。這個限制防止進位位元傳播超出第(n+1)個字元。由於Y的第J個字元給定為Y j =(Y' j -B Y ),公式2可以改寫為:
Figure 107146186-A0305-02-0012-2
公式4可以進一步分解為:
Figure 107146186-A0305-02-0012-3
根據公式5,乘積計算包括具有m位移位值2 m(i+j)的所有X i .Y' j 的子乘積的雙倍和,及具有m位移位值2 mj 的移位版本的部分乘積P=(X.B Y )。公式5中的雙倍和需要透過Lx‧(Ly+1)的m乘m乘法運算,而第二 和(second sum)只需要(Ly+1)乘法運算來計算P=(X.B Y )一次。下面將參考第3圖詳細描述一個基於分解的公式5的有效多字元乘法器電路。
接下來,我們提供一個掩蔽乘法運算的例子。為了清楚起見,中的數字元示例以十進制基數表示,在這種情況下,二進制基數中使用的因子2m的冪被替換為10的冪。在該例子中要乘的值是X=721並且Y=347,其結果是乘積Z=X.Y=250187。在描述該例子時,Yk表示Y的第k個十進制數字,Y’k表示Y’的第k個十進制數字元。該例子中的掩蔽字元是B Y =2,並且掩蔽參數是A Y =2222。
在直接計算中:
Figure 107146186-A0305-02-0013-4
給出721.7+721.4.10+721.3.100=250187。直接計算生成中間結果5047和5047+28840=33887。
掩蔽乘積可以透過
Figure 107146186-A0305-02-0013-5
進行掩蔽計算。透過以非置換和交錯方式對子乘積求和,我們得到:721.9-1442+721.6.10-14420+721.5.100-144200+721.2.1000-1442000。在這種非置換的交錯順序中,每個子乘積X.Y' k 的計算之後減去X.B y 10 k 。在這種情況下的中間結果是{6489,5047,48307,33887,394387,250187,1692187},最終結果是250187。因此,該順序計算不期望地揭示了直接計算的中間結果5047和33887。
可選地,可以以置換和交錯順序執行掩蔽計算,例如,721.9+721.6.10-1442+721.5.100-14420+721.2.1000-144200-1442000。在此實例中,X.Y' 0+X.Y' 1.10在減去移位部分乘積X.B Y 之前計算。在這種情況下,中間和為{6489,49749,48307,408807,394387,1836387,1692187},結果再次為250187。應注意的是,透過使用該置換和交錯順序計算乘積,不會 暴露直接計算的中間結果。上述例子中的特定置換和交錯的計算順序不是強制性的,也可以使用對子乘積求和的任何其他合適的置換和交錯順序。
具有變化的掩蔽參數的掩蔽乘積
第2圖是根據本文描述的實施例示意性地示出使用變化的掩蔽參數計算掩蔽乘積的方法的流程圖。該方法將被描述為由第1圖的加密裝置24的各種元件執行。
在第一參數初始化步驟100,加密裝置使用從掩蔽m位字元B Y (n-1)導出的掩蔽參數A Y (n-1)來準備基於非掩蔽參數Y掩蔽的多字元參數Y'(n-1)。符號n表示順序時間索引。Y的掩蔽化基於例如上面的公式2和公式3。關聯B Y (n-1)的是部分乘積P(n-1),透過與B Y (n-1)的前置參數X相乘來計算。在第二參數初始化步驟104中,加密裝置準備非掩蔽多字元參數X。在一個實施例中,在步驟100和步驟104,加密裝置經由I/O模組48接收相應參數。或者,參數X和Y'(n-1)中的至少一個由處理器32、加密引擎36或兩者產生。該加密裝置將參數X和Y'(n-1)分別儲存在儲存密碼儲存裝置40中分別的儲存空間64和68。加密裝置也將掩蔽參數A Y (n-1)儲存在密碼儲存裝置40的儲存空間72中。
在一個掩蔽參數更新步驟108中,加密裝置產生更新的掩蔽參數A Y (n)。在一個例示性實施例,加密裝置使用任何合適的隨機化方法以隨機或偽隨機方式產生更新的掩蔽m位字元B Y (n),並且連接B Y (n)的複數個m位移位版本以產生如公式3中給出的更新的掩蔽參數A Y (n)。
在再掩蔽(re-blinding)步驟112中,加密裝置透過將更新的掩蔽參數A Y (n)與加至Y'(n-1),然後減去先前掩蔽參數A Y (n-1)以再掩蔽參數 Y。應注意的是,使用這種更新方案,A Y (n-1)不直接從Y'(n-1)中減去,因為這種減法會不合需要地暴露Y的值。
在部分乘積計算步驟116中,加密裝置計算使用步驟108的更新的掩蔽m位字元更新部分乘積P(n)=X.B Y (n)。加密裝置將計算出的部分乘積儲存在密碼儲存裝置的儲存空間76中。
在積計算步驟120中,加密裝置計算X‧Y的乘積。例如,加密裝置配置多字元乘法器44的介面56以訪問密碼儲存裝置40相應的儲存空間中的X、Y'(n)和P(n),並使用密碼儲存裝置的儲存空間80來輸出乘積結果。然後,加密裝置觸發多字元乘法器以執行乘法運算,例如,基於上面的公式5。
在步驟120之後,該方法循環回到步驟100以接收隨後的掩蔽參數以與另一(或相同)參數X相乘。
雖然在第2圖的方法中,加密裝置在每個多字元乘法之前重新掩蔽Y,但這不是強制性的,並且在替代實施例中,加密裝置可以選擇性地掩蔽Y,即,每一個預定義的乘法運算執行一次,或使用任何其他採樣方法。
硬體實現多字元乘法器
第3圖是示意性地示出根據本文描述的實施例的以硬體實現的多字元乘法器200的方塊圖。例如,多字元乘法器200可用於實現第1圖的加密裝置24的多字元乘法器44。
在第3圖的例子中,多字元乘法器200連接記憶體204、206、208和210,以讀取輸入參數並輸出中間和最終結果,如下面將詳細描述的。在本例子中,記憶體204、206、208和210中的每一個可以以m位字元的資料單元訪問。因此,具有m.W位的參數佔據相應記憶體中的W個條目(entries)。記憶體204、206、208和210分別表示為MEM1、MEM2、MEM3和MEM4。
記憶體MEM1儲存表示為X'和Y'的輸入參數。在本例子中,為了提高加密等級,輸入參數作為掩蔽參數儲存在多字元乘數的外部,並使用相應的掩蔽參數,即X’=X+A X Y’=Y+A Y ,其中X和Y是衍生自X'和Y'的非掩蔽參數,其分別的掩蔽參數為Ax和AY
透過將各個掩蔽m位字元Bx和BY填充為A X =[B X ,B X ,...,B X ]和A Y =[B Y ,B Y ,...,B Y ]來構成掩蔽參數。設Lx和Ly表示X和Y的以m位字元為單位的相應長度。AX藉由填充BX的Lx+1實例構成,AY藉由填充BY的Ly+1個實例來構成。
多字元乘法器200包括Y基本地址寄存器(Y base address register)212、X基本地址寄存器(X base address register)214、結果基本地址寄存器(result base address register)216和部分乘積基本地址寄存器(partial product base address register)218。Y基本地址寄存器212和X基本地址寄存器214分別指向MEM1中的第一m位字元Y'和X'。結果基本地址寄存器216指向將被放置在記憶體MEM2和MEM3之一中的乘法結果的第一m位字元。部分乘積基本地址寄存器218指向記憶體MEM4部分乘積X.B Y 的第一m位字元。假設部分乘積預先計算並儲存在MEM4中。可以計算部分乘積X.B Y ,例如使用多字元乘法器200。或者,可以使用處理器32或使用任何其他合適的手段來計算部分乘積。
X計數器220產生'i'的範圍為i=0....(Lx+1)的索引。藉由使用加法器222產生地址值,經由路由至多工器224的地址值以訪問MEM1的X’,索引'i'的值被添加到在X基本地址寄存器的值中。類似地,Y計數器226產生當I=0時,’j’的範圍為j=0....(Ly+1)的索引,當i>0時j的範圍為j=-1....(Ly+1)。藉由使用加法器228產生地址值,經由路由至多工器224的地址值以訪問MEM1的Y’,索引'j'的值被添加到在Y基本地址寄存器的值中。
X計數器220和Y計數器226根據使用合適的時脈電路(clocking circuit)(未示出)產生的時脈週期(clock cycles)而遞增。在一些實施例中,Y計數器每個時脈週期遞增一次,並且在達到值Ly+1之後歸零或設為-1。X計數器(索引'i')在Y計數器之後遞增(索引'j'到達值Ly+1,並在達到值Lx+1後歸零)。或者,也可以使用用於Y計數器226和X計數器220的其他合適的計數方案。
加法器230累加X計數器和Y計數器的索引以產生總和索引(i+j),其使用加法器232加到寄存器216的結果基本地址中的該值,以產生一個地址來訪問在MEM2或MEM3中的乘法結果的第(i+j)個m位字元(或中間結果)。加法器234將索引值(j+1)加到寄存器218的基本地址中的部分乘積值,以訪問MEM4中的部分乘積X.B Y 的第j個m位字元。
在本例子中,多字元乘法器200包括基於字元的乘法器240,其在兩個m位字元之間施加乘法運算以產生2m位輸出。基於字元的乘法器240可用於實現第1圖的基於字元的乘法器60。基於字元的乘法器240接收來自非掩蔽輸入寄存器244的非掩蔽參數X的m位字元Xi,從MEM1讀取的掩蔽信號Y'的另一個m位字元n,以及輸出2m位子乘積X i .Y' j
在一些實施例中,基於字元的乘法器在一個時脈週期內生成子乘積結果。在另一個實施例中,產生子乘積需要複數個時脈週期,在這種情況下,相應地禁止X計數器和Y計數器的計時。在一些實施例中,響應於滿足條件j=-1、j=Lx+1或i=Lx+1中的一個,強制使基於字元的乘法器的輸出為零,如下所述。
X掩蔽寄存器(X-blinding register)246保持掩蔽字元B。多字元乘法器200從MEM1讀取m位字元X' i ,並使用減法模組250計算X i =X' i -B X -b,其中b是在計算先前的m位字元Xi-1時產生的借位元252。
在一個實施例中,多字元乘法器分別將X計數器220和Y計數器226初始化為I=0和j=0(或j=-1)。對於給定的索引’i’,多字元乘數如上所述的計算非掩蔽值X,並且將Xi儲存至非掩蔽輸入寄存器244。然後,多字元乘法器依次從MEM1讀取m位字元Y' 0 ...Y' Ly+1,並計算與j=0...Ly+1對應的子乘積X i .Y' j 。多字元乘法器將每個子乘積的m個最高有效位(Most Significant Bits,MSB)儲存在MSB寄存器256中。
計算中間結果X i .Y'“時,多字元乘法器使用加法器258透過將子乘積X i .Y' j 的m個最低有效位(LSB)加到儲存有X i .Y' j-1的m個MSB的MSB寄存器256以累加子乘積。在累加子乘積時,使用加法器264將在先前計算中產生的進位位元262添加到從MSB寄存器256讀取的m位值,並且將X i .Y' j 的MSB部分儲存在MSB寄存器256中以進行用於一個或複數個後續計算。
在i=0....Lx的情況下積累中間結果X i .Y',當索引’i’為偶數時,多字元乘法器交替在MEM2儲存X i .Y'累加的中間結果(用另外的元素,如下所述)否則儲存在MEM3。使用基於索引’i’的LSB的解多工器(de-multiplexer)266來控制選擇寫入MEM2或MEM3。
在上述X i .Y'的計算中,多字元乘法器使用加法器268加至X i .Y',公式Σ k X k .Y'.2 m.k 中累積到k=i-1所累積的中間結果從MEM2(或MEM3)讀取,並儲存包含X i .Y'的更新的累積結果至另一個記憶體MEM3(或MEM2)。使用基於索引’i’的LSB值的多工器270來控制選擇相關的記憶體MEM2或MEM3。應注意的是,在計算第一中間結果X 0 .Y'之前,要儲存在MEM2中,m位的數量Lx在計算該第一中間結果期間從MEM3讀取的字元被歸零。
應注意的是,在迭代計算索引’i’的並儲存在記憶體MEM2(或MEM3)第i個記憶體條目(相對於基本地址)的中最低有效字元應該被複製到 MEM3(或MEM2)的第i個條目,以使第一計算結果儲存在第(i+1)個條目中。在一個實施例中,該複製運算是在索引'j'從j=Ly+1返回到j=-1之後但在索引'i'遞增到i+1之前執行,例如,使用一個時脈週期從MEM2(或者MEM3)讀取一個字元,而另一個時脈週期用於將讀取字元寫入另一個記憶體MEM3(或MEM2)。應注意的是,由於在上面的方案中,複製運算在j=-1時發生,並且在i遞增之前,因此複製的字元具有相對於結果基本地址(i-1)的偏移量。
如上所述,例如,參考公式5,多字元乘法器需要用適當的m位移位減去X.B Y 以便計算所需乘積X.Y。多字元乘法器200使用從MEM4接收X.B Y 的m位字元的減法模組272以交錯方式執行上述減法。減法運算包括在減法模組272的先前的減法運算中產生並儲存的借位元274。
如上所述,當I>0時,索引'j'在範圍j=-1...LY+1計數。當條件j=-1時,強制使基於字元的乘法器的輸出為零值,因此當j=-1時,使用減法模組272從MEM2或MEM3讀取的第一個m位字元減去從MEM4讀取的X.B Y 的第一個m位字元。條件j=-1(發生在當i>0)也被用於從MEM1讀取X' i 和儲存相應的X i 至非掩蔽輸入寄存器244。
條件j=Ly+1時,也強制基於字元的乘數的輸出為零。在這個時脈週期中,最近的子乘積X i .Y' Ly 的MSB儲存在MEM2或MEM3取決於索引’i’。
當i>0時,多工器280向減法模組272輸出從MEM4讀取的m位字元,當i=0時,多工器280輸出0m位字元。結果,實際上只有在第一中間結果X 0 .Y'被完全計算且儲存在MEM2中之後,才減去X.B Y 。換句話說,X.B Y .2 mj X i+1 .Y'的累積期間被有效地減去。這種置換和交錯的計算順序有助於防止直接乘法X.Y的中間結果的洩漏。
在一些實施例中,需要多字元乘法器200以掩蔽形式儲存乘積結果。在這樣的實施例中,多字元乘法器在結果掩蔽字元寄存器282中保持一個m位的掩蔽字元BZ,以用於計算Z'=X.Y+A Z ,其中A Z =[B Z ,B Z ,...B Z ]。多工器284在條件(j=-1)或(I=Lx+1)之一為真時路由值BZ,否則路由0m位字元,以使用加法器286加到子乘積中。在這種情況下,條件j=-1表示在將相關字元如上所述的從MEM2複製到MEM3(或從MEM3到MEM2)之後,並且’i’已經遞增到i+1。在計算X i .Y'的第i次迭代完成之後,添加BZ需要條件j=-1。是當整個多字元乘法計算完成時,需要條件I=Lx+1以添加最後一個BZ
當X計數器220達到值i=Lx+1時,基於字元的乘法器240的輸出被強制為零。在該時脈週期中,從MEM2或MEM3讀取的中間結果的相關m位字元中減去從MEM4讀取的X.B Y 的MSB的m位字元。
可以使用任何合適的方法有效地實現多字元乘法器200的基於字元的乘法器240。在例示性實施例中,基於字元的乘法器240被實現為收縮陣列(systolic-arraY)乘法器或華萊士樹乘法器(Wallace tree multiplier)。在一些實施例中,由加法器258、264、268和286中的一個或複數個執行的加法運算可以在華萊士乘法器的收縮陣列的結構內實現,例如,透過在乘數中包括一個或複數個全加法器計算行(computational rows of full-adders)。
第1圖的加密系統20和加密裝置24的配置及其包括多字元乘法器44的組件以及第3圖的多字元乘法器200是例子配置,其純粹為了概念而選擇。在備選實施例中,還可以使用任何其他合適的加密系統配置和多字元乘法器配置。
加密裝置24和多字元乘法器44和200的不同元件可以使用任何何合適的硬體實現,諸如在專用集成電路(ASIC)或現場可編程閘陣列(FPGA)來實現。例如,基於字元的乘法器240可以使用專用ASIC或FPGA實現,而多字元乘法器200的其他元件在另一個ASIC或FPGA中實現。
在一些實施例中,加密裝置和多字元乘法器44的一些元件可使用軟體、或使用硬體和軟體元件的組合來實現。例如,在一個實施例中,處理器32準備用於乘法的參數,以及多字元乘法器44可以在硬體中或在軟體和硬體的組合中應用乘法運算。作為另一例子,多字元乘法器44可以在硬體中完全實現為多字元乘法器200。在一些實施例中,加密引擎36包括專用協作處理器(dedicated co-processor)。在替代實施例中,加密引擎36以硬體或硬體和軟體的組合實現。加密儲存裝置40包括一個或複數個記憶體,例如隨機存取記憶體(RAM)。
為清楚起見,從圖中省略了對於理解本發明的原理不必要的元件,例如各種介面、控制電路、尋址電路、定時和排序電路以及調試電路。
通常,加密裝置24中的處理器32包括通用處理器,其以軟體編程以執行本文描述的至少一些功能。軟體可以例如透過網路以電子形式下載到處理器,或者可以替代地或附加地將軟體提供和/或儲存在諸如磁性、光學或電子記憶體的非暫態有形媒體上。
在本揭露和權利要求的上下文中,術語“電路”指的是除了介面56之外的多字元乘法器60的所有元件,或者是除了經由多字元成法器所連接的記憶體204、206、208及210的多字元乘法器200的所有元件,在多字元乘法器44的電路包括基於字元的乘法器60和加法器70。在多字元乘法器200中,電路包括 諸如基於字元的乘法器240、加法器258、264、268、286、減法模組272、MSB寄存器256、X計數器220、Y計數器226、進位位元262和借位元274。
第3圖的多字元乘法器200可用於實現第1圖的加密裝置24中的多字元乘法器44。在這樣的實施例中,記憶體204、206、208和210在密碼儲存裝置40中實現。多字元乘法器200使用諸如基本地址寄存器212、214、216和218、X計數器220、Y計數器226、加法器222、228、230、232、234、多工器224和270,以及解多工器266之類的各種元件來連接記憶體204、206、208和210。
上述實施例是僅作為舉例,並且也可以使用其它合適的實施例。例如,儘管第3圖中的多字元乘法器200累加了X i .Y'的中間結果,但該方案不是強制性的,也可以使用其他合適的方案。例如,在替代實施例中,多字元乘法器200累加X.Y' j 的中間結果。另外,第3圖的多字元乘法器200,以及第1圖的多字元乘法器60可以任何其他合適的順序累加X i .Y' j 的子乘積。
作為另一例子,儘管在第3圖的實施例中,多字元乘法器以掩蔽的形式從記憶體204讀取參數X,但是在替代實施例中,參數X被提供給非掩蔽的多字元乘法器。在這樣的實施例中,可省略X掩蔽寄存器246、減法模組250和借位元252。
在上面我們描述的實施例已經假定每個X和Y'包括m位字元,並且該多字元乘法是基於一個m乘m乘法器組件以用於由使X的m位字元乘以Y'的m位字元。在替代實施例中,Y'可包括複數個n位字元,其中n≠m。在這樣的實施例中,m×m乘法器(例如,第3圖中的乘法器240)由n×m乘法器代替,並且相應地修改第3圖中描繪的配置。
儘管這裡描述的實施例主要涉及保護加密系統免受功率分析攻擊,但是本文描述的方法和系統也可以用在其他應用中,例如在需要防禦功率 分析攻擊的任何安全計算系統中。這樣的計算系統可包括電子裝置,例如智慧型手機、智慧卡、筆記型電腦、平板電腦、銷售點系統、路由器、智慧電視等。
應當理解,上面描述的實施例是作為舉例,並且所附申請專利範圍不限於上文已經具體示出和描述的內容。相反,本發明的範圍包含上文描述的各種特徵的組合和子組合,以及本領域技術人員在閱讀前述描述時將會想到的變化和修改,而這些變化和修改未在現有技術中揭露。在本專利申請中透過引用併入的文件被認為是本申請的組成部分,而在這些併入的文件中以與在本說明書中明確或隱含地作出的定義相衝突的方式來定義任何術語的範圍時,只應考慮本說明書中的定義。
20:加密系統
24:加密裝置
32:處理器
34:記憶體
36:加密引擎
40:密碼儲存裝置
44:多字元乘法器
48:I/O模組
52:匯流排
56:介面
60:基於字元的乘法器
64:X
68:Y'
70:加法器
72:AY
78:AZ
80:乘積結果參數
84:電源
88:電力線
92:攻擊者

Claims (14)

  1. 一種多字元乘法器電路,其包含:一介面,用以接收:一第一參數X,包含一個或複數個第一字元;一第二參數Y',包含複數個第二字元,其中該第二參數包含一非掩蔽參數Y的掩蔽版本,透過使用掩蔽參數AY掩蔽,使Y'=Y+AY,其中AY的字元的數量大於Y的字元的數量;以及一電路,用以透過累加複數個子乘積來計算Z=X‧Y的乘積,其中該複數個子乘積中的每一個係透過將X的該第一字元乘上Y'的該第二字元,並從中間臨時總和減去部分乘積P=X‧BY中相應的一第三字元來計算,其中BY係為AY所包含的掩蔽字元且該掩蔽參數A Y 包含該掩蔽字元B Y 及至少一移位版本的B Y 的總和。
  2. 如請求項1所述之多字元乘法器電路,其中該電路用以消耗由一個或複數個電源輸入所提供的功率,並使該非掩蔽參數Y在乘積計算期間無法從該電源輸入的感測中復原。
  3. 如請求項1所述之多字元乘法器電路,其中該掩蔽參數AY包含的位元數大於該非掩蔽參數Y的位元數。
  4. 如請求項1所述之多字元乘法器電路,其中該電路用以使用對應的乘積掩蔽參數AZ,藉由加上X的該第一字元乘上Y'的該第二字元的該子乘積以及從AZ提取的掩蔽字元以計算乘積Z掩蔽版本Z'=Z+AZ
  5. 如請求項1所述之多字元乘法器電路,其中該電路用以累加該子乘積並以交錯和置換的順序減去該部分乘積的該第三字元,其不顯示在直接乘積計算中產生的一中間結果。
  6. 如請求項1所述之多字元乘法器電路,其中該電路用以透過向Y'添加不同於AY的一後續掩蔽參數來更新該掩蔽參數Y'以產生一臨時掩蔽參數,然後從該臨時掩蔽參數減去AY
  7. 如請求項1所述之多字元乘法器電路,其中該乘積Z或Z的掩蔽版本用於作為一加密引擎的輸入。
  8. 一種防止功率分析攻擊的方法,包含:在一多字元乘法器電路接收包含一個或複數個第一字元的一第一參數X,以及包含複數個第二字元的第二參數Y',其中該第二參數包含一非掩蔽參數Y的掩蔽版本,透過使用掩蔽參數A Y 掩蔽使Y’=Y+A Y ,其中AY的字元的數量大於Y的字元的數量;以及計算Z=X‧Y的乘積,其中該複數個子乘積中的每一個係透過將X的該第一字元乘上Y'的該第二字元,並從中間臨時總和減去部分乘積P=X‧B Y 中相應的一第三字元來計算,其中B Y 係為A Y 所包含的掩蔽字元且該掩蔽參數A Y 包含該掩蔽字元B Y 及至少一移位版本的B Y 的總和。
  9. 如請求項9所述之防止功率分析攻擊的方法,其中該多字元乘法器電路用以消耗由一個或複數個電源輸入所提供的功率,並使該非掩蔽參數Y在乘積計算期間無法從該電源輸入的感測中復原。
  10. 如請求項9所述之防止功率分析攻擊的方法,其中該掩蔽參數AY包含的位元數大於該非掩蔽參數Y的位元數。
  11. 如請求項9所述之防止功率分析攻擊的方法,其進一步包含使用對應的乘積掩蔽參數AZ,藉由加上X的該第一字元乘上Y'的該第二字元的該子乘積以及從AZ提取的掩蔽字元以計算乘積Z掩蔽版本Z'=Z+AZ
  12. 如請求項9所述之防止功率分析攻擊的方法,其中計算該乘 積的步驟包含累加該子乘積並以交錯和置換的順序減去該部分乘積的該第三字元,其不顯示在直接乘積計算中產生的一中間結果。
  13. 如請求項9所述之防止功率分析攻擊的方法,其進一步包含透過向Y'添加不同於AY的一後續掩蔽參數來更新該掩蔽參數Y'以產生一臨時掩蔽參數,然後從該臨時掩蔽參數減去AY
  14. 如請求項9所述之防止功率分析攻擊的方法,其中計算該乘積的步驟包含提供Z或Z的掩蔽版本用於作為一加密引擎的輸入
TW107146186A 2018-03-25 2018-12-20 多字元乘法器電路以及防止功率分析攻擊的方法 TWI736817B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/935,004 2018-03-25
US15/935,004 US10778407B2 (en) 2018-03-25 2018-03-25 Multiplier protected against power analysis attacks

Publications (2)

Publication Number Publication Date
TW201941096A TW201941096A (zh) 2019-10-16
TWI736817B true TWI736817B (zh) 2021-08-21

Family

ID=67985731

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107146186A TWI736817B (zh) 2018-03-25 2018-12-20 多字元乘法器電路以及防止功率分析攻擊的方法

Country Status (4)

Country Link
US (1) US10778407B2 (zh)
JP (1) JP6735870B2 (zh)
CN (1) CN110309651B (zh)
TW (1) TWI736817B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213513A (zh) * 2005-06-29 2008-07-02 皇家飞利浦电子股份有限公司 保护数据处理装置免受密码攻击或分析的设备和方法
CN102405615A (zh) * 2009-01-20 2012-04-04 电信教育集团-巴黎电信学校 防御观测攻击、特别是高阶观测攻击的加密电路
TWI521935B (zh) * 2013-08-08 2016-02-11 新唐科技股份有限公司 加解密裝置及其加解密方法
TWI604380B (zh) * 2013-03-15 2017-11-01 密碼研究公司 非對稱遮罩乘法
TWI608381B (zh) * 2016-04-19 2017-12-11 華邦電子股份有限公司 加解密裝置及其功率分析防禦方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049865A (en) 1997-12-18 2000-04-11 Motorola, Inc. Method and apparatus for implementing floating point projection instructions
EP1743429A1 (en) * 2004-04-09 2007-01-17 Audioasics A/S Sigma delta modulator
US7161507B2 (en) 2004-08-20 2007-01-09 1St Works Corporation Fast, practically optimal entropy coding
CA2542556C (en) 2005-06-03 2014-09-16 Tata Consultancy Services Limited An authentication system executing an elliptic curve digital signature cryptographic process
CN101271570B (zh) 2008-05-07 2011-08-17 威盛电子股份有限公司 用于绘图处理单元中的大整数乘法运算的装置和方法
AU2011232817A1 (en) 2011-10-07 2013-05-02 Revere Security Corporation Method and device for data encryption and decryption
CA2754370A1 (en) 2011-10-07 2013-04-07 Revere Security Corporation Method and device for data encryption and decryption
KR20130111721A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 부분 곱 생성기의 부스코드 생성방법, 컴퓨터 시스템 및 그 매체와 디지털 신호프로세서
US20130332707A1 (en) 2012-06-07 2013-12-12 Intel Corporation Speed up big-number multiplication using single instruction multiple data (simd) architectures
CN102999313B (zh) 2012-12-24 2016-01-20 飞天诚信科技股份有限公司 一种基于蒙哥马利模乘的数据处理方法
EP2884387B1 (en) * 2013-12-13 2016-09-14 Thomson Licensing Efficient modular addition resistant to side-channel attacks
US9749344B2 (en) * 2014-04-03 2017-08-29 Fireeye, Inc. System and method of cyber threat intensity determination and application to cyber threat mitigation
US9628308B2 (en) * 2014-10-30 2017-04-18 Mediatek Inc. Circuit, communication unit and method for VCO frequency adjustment
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
US20160179470A1 (en) 2014-12-23 2016-06-23 Shay Gueron Method and apparatus for performing big-integer arithmetic operations
US9870339B2 (en) 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing
EP3188001B1 (en) * 2015-12-29 2020-08-12 Secure-IC SAS Modular multiplication device and method
US10303878B2 (en) * 2016-01-22 2019-05-28 Yu-Liang Wu Methods and apparatus for automatic detection and elimination of functional hardware trojans in IC designs
CN107547193A (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
FR3055437A1 (fr) * 2016-08-23 2018-03-02 Stmicroelectronics (Rousset) Sas Protection d'un calcul d'exponentiation modulaire
DE102017117907B4 (de) * 2017-08-07 2023-04-27 Infineon Technologies Ag Durchführen einer kryptografischen Operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101213513A (zh) * 2005-06-29 2008-07-02 皇家飞利浦电子股份有限公司 保护数据处理装置免受密码攻击或分析的设备和方法
CN102405615A (zh) * 2009-01-20 2012-04-04 电信教育集团-巴黎电信学校 防御观测攻击、特别是高阶观测攻击的加密电路
TWI604380B (zh) * 2013-03-15 2017-11-01 密碼研究公司 非對稱遮罩乘法
TWI521935B (zh) * 2013-08-08 2016-02-11 新唐科技股份有限公司 加解密裝置及其加解密方法
TWI608381B (zh) * 2016-04-19 2017-12-11 華邦電子股份有限公司 加解密裝置及其功率分析防禦方法

Also Published As

Publication number Publication date
JP2019168694A (ja) 2019-10-03
CN110309651A (zh) 2019-10-08
US10778407B2 (en) 2020-09-15
US20190296891A1 (en) 2019-09-26
CN110309651B (zh) 2021-08-06
TW201941096A (zh) 2019-10-16
JP6735870B2 (ja) 2020-08-05

Similar Documents

Publication Publication Date Title
TWI604380B (zh) 非對稱遮罩乘法
US11190337B2 (en) Execution unit for calculations with masked data
Coron et al. Conversion from arithmetic to boolean masking with logarithmic complexity
US8402287B2 (en) Protection against side channel attacks
Danger et al. A synthesis of side-channel attacks on elliptic curve cryptography in smart-cards
US20210256165A1 (en) Protecting parallel multiplication operations from external monitoring attacks
Kaufmann et al. When constant-time source yields variable-time binary: Exploiting curve25519-donna built with MSVC 2015
CN107040362B (zh) 模乘设备和方法
US8392494B2 (en) Method and apparatus for performing efficient side-channel attack resistant reduction using montgomery or barrett reduction
EP1248409A2 (en) Attack-resistant cryptographic method and apparatus
Liu et al. Four on embedded devices with strong countermeasures against side-channel attacks
FR2789535A1 (fr) Procede de securisation d'un ensemble electronique de cryptographie a cle secrete contre les attaques par analyse physique
CN103221917A (zh) 加密运算中模幂的保护
TWI821501B (zh) 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法
JP2011510578A (ja) 非対称暗号のための防護方法およびデバイス
US10229264B2 (en) Protection of a modular exponentiation calculation
CN102142074B (zh) 基于混沌的通用电子档案加解密方法
TWI736817B (zh) 多字元乘法器電路以及防止功率分析攻擊的方法
JP2006506676A (ja) カバート・チャネル攻撃に対して安全な整数除算法
CN115698938A (zh) 密码操作中通过中间随机化对变换的保护
EP3667505B1 (en) Memory system with an incremental hashing operation and method
US11582039B2 (en) Method for performing cryptographic operations in a processing device, corresponding processing device and computer program product
Karaklajić et al. A systematic M safe-error detection in hardware implementations of cryptographic algorithms
US20230214189A1 (en) Carry-lookahead adder, secure adder and method for performing carry-lookahead addition
Farmani Threshold Implementations of the Present Cipher