TWI821501B - 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法 - Google Patents

安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法 Download PDF

Info

Publication number
TWI821501B
TWI821501B TW109101100A TW109101100A TWI821501B TW I821501 B TWI821501 B TW I821501B TW 109101100 A TW109101100 A TW 109101100A TW 109101100 A TW109101100 A TW 109101100A TW I821501 B TWI821501 B TW I821501B
Authority
TW
Taiwan
Prior art keywords
random
random number
generate
input data
data
Prior art date
Application number
TW109101100A
Other languages
English (en)
Other versions
TW202044083A (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 TW202044083A publication Critical patent/TW202044083A/zh
Application granted granted Critical
Publication of TWI821501B publication Critical patent/TWI821501B/zh

Links

Images

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/75Protecting 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 by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting 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 by inhibiting the analysis of circuitry or operation with measures against power attack
    • 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
    • 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/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/586Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
    • 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
    • G06F21/602Providing cryptographic facilities or services
    • 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
    • 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/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
    • 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/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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/722Modular multiplication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

本發明提供一種用於藉由使用隨機數來執行餘數運算的安全處理器及所述安全處理器的操作方法。所述安全處理器包括:隨機數產生器,被配置成產生第一隨機數;模計算器,被配置成基於第一資料及所述第一隨機數而產生第一隨機運算元,且藉由對所述第一隨機運算元的餘數運算來產生輸出資料,其中對所述第一輸入資料的所述餘數運算的結果值與對所述第一隨機運算元的所述餘數運算的結果值相同。

Description

安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法 [相關申請案的交叉參考]
本申請案主張於2019年1月16日在韓國智慧財產局提出申請的韓國專利申請案第10-2019-0005855號的權益,所述韓國專利申請案的揭露內容全部併入本文中供參考。
本發明概念是有關於一種安全處理器,且更具體而言,是有關於一種能夠有效地保護電腦系統免受旁通道攻擊(SCA)的安全處理器及所述安全處理器的操作方法。
安全處理器可藉由使用例如秘密金鑰等需要安全性的資訊來執行例如密碼操作(cryptographic operation)等的安全演算法。基於安全處理器實施密碼操作而對秘密資訊的外部洩露可被稱為旁通道(side channel),且使用旁通道的攻擊方法可被稱為旁通道攻擊(side channel attack,SCA)。安全處理器可採用針對SCA的對策來避免危及密碼操作。
模板攻擊(template attack)是SCA的實例。在模板攻擊中,攻擊者可使用與攻擊目標相似的裝置來創建「模板」。攻擊者可在他們的目標裝置複本上進行實際上無限數目的輸入及攻擊動作。因此,攻擊者可藉由記錄關於在目標裝置複本上處理的大量輸入的旁通道資訊來創建旁通道資訊如何與裝置上的秘密資訊相關的模型。例如,攻擊者可創建當執行密碼操作時目標裝置上的功率量測值如何與輸入對應的模型。
針對SCA的防禦技術(包括遮蔽或隱藏旁通道資訊)可能會影響安全處理器的效能。例如,實施防禦技術可能會使安全處理器的電路面積或平均功率消耗增加。此外,該些防禦技術可能無法針對某些SCA(例如模板攻擊及功率分析攻擊)提供充足保護。
本發明概念提供一種能夠在將功率消耗或效能開銷(overhead)的增加最小化的同時有效地預防旁通道攻擊(SCA)的安全處理器、以及所述安全處理器的操作方法。
根據本發明概念的態樣,提供一種安全處理器,包括:隨機數產生器,被配置成產生第一隨機數;以及模計算器,被配置成基於第一輸入資料及所述第一隨機數而產生第一隨機運算元,且藉由對所述第一隨機運算元的餘數運算(remainder operation)來產生輸出資料,其中對於所述第一輸入資料的任一值(亦即,對於所述安全處理器被配置成處理的所述第一輸入資 料的任一值),對所述第一輸入資料的所述餘數運算的結果值與對所述第一隨機運算元的所述餘數運算的結果值相同。
根據本發明概念的另一態樣,提供一種安全處理器,包括:隨機數產生器,被配置成產生第一隨機數;以及模計算器,被配置成藉由以下來產生輸出資料:將模乘以所述第一隨機數,將第一輸入資料與相乘結果相加以產生第一隨機運算元,且然後執行餘數運算,在所述餘數運算中,將所述第一隨機運算元除以所述模。
根據本發明概念的另一態樣,提供一種安全處理器的操作方法,所述操作方法包括:產生第一隨機數;基於模、所述第一隨機數及第一輸入資料而產生第一隨機運算元;以及基於所述第一隨機運算元而產生輸出資料,其中對於所述第一輸入資料的任一值,將所述第一隨機運算元除以所述模後的餘數與將所述第一輸入資料除以所述模後的餘數相同。
闡述一種加密或解密資料的方法。所述方法包括:產生隨機數;將所述隨機數乘以模;藉由將所述乘法的結果與輸入資料相加來產生隨機運算元;藉由使用所述模對所述隨機運算元執行餘數運算來產生輸出資料;以及基於所述輸出資料而執行密碼操作(例如,加密或解密資料)。
1:電子系統
10、10a、10b、10c、1020:安全處理器
20:記憶體
30、1010:中央處理單元(CPU)
100、100a、100b、100c:隨機數產生器
200、200a、200b、200c、1021:模計算器
210、210b、220c:隨機運算元產生器
210a:第一隨機運算元產生器/隨機運算元產生器
211:乘法器
212:加法器
213、223c:隨機數暫存器
214:重編碼器
215、225:部分乘法器
216:隨機運算元暫存器
220、220a、220b、230c:輸出資料產生器
225_1:反相器
225_2:第一及閘區塊
225_3:第一或閘區塊
225_4:第二及閘區塊
225_5:第二或閘區塊
230a:第二隨機運算元產生器
300:內部記憶體
1000:應用處理器
1030:數據機
1040:顯示控制器
1050:唯讀記憶體(ROM)
1060:記憶體控制器
1070:隨機存取記憶體(RAM)
AND1_11、AND1_12、AND1_21、AND1_22、AND1_31、AND1_32、……、AND1_(n+2)1、AND1_(n+2)2、AND2_11、AND2_12、AND2_21、AND2_22、……、AND2_n1、AND2_n2:及閘
bi、b2i-1、b2i、b2i+1、b'2i+1、M[0]、M[1]、M[2]、……、M[n-2]、M[n-1]:位元
bref:參考位元
Cr:無條件進位值
Cr1:第一無條件進位值
Cr2:第二無條件進位值
ID:輸入資料
ID1:第一輸入資料
ID2:第二輸入資料
M:模
OD:輸出資料
OR1_1、OR1_2、OR1_3、……、OR1_n+2:第一或閘至第(n+2)或閘
OR2_1、OR2_2、……、OR2_n:第一或閘至第n或閘
OrgD:原始資料
Pat(1)、Pat(2)、Pat(3)、Pat(4)、Pat(5)、……、Pat(8):第一模式至第八模式
Reco_In:重編碼器輸入
RN:隨機數
RN1:第一隨機數
RN2:第二隨機數
RN_upt:經更新隨機數
RO:隨機運算元
RO1、ROa:第一隨機運算元
RO2、ROb:第二隨機運算元
RSig_RN:隨機數請求訊號
SD:分離資料
SEL、Sel[0:k]:控制訊號
sel0:第一控制訊號/第一選擇訊號
sel1:第二控制訊號/第二選擇訊號
sel2:第三控制訊號/第三選擇訊號
sel3:第四控制訊號/第四選擇訊號
SID1:第一子輸入資料
SID2:第二子輸入資料
SOD1:第一子輸出資料
SOD2:第二子輸出資料
UM:單位模
UM1:第一單位模
UM2:第二單位模
UMi[n:0]:具有(n+1)個位元的單位模
UMi_neg:具有1個位元的正負號資料
URN1:第一單位隨機數
URN2:第二單位隨機數
Val(1)、Val(2)、Val(3)、Val(4)、Val(5)、……、Val(8):第一重編碼值至第八重編碼值
結合附圖閱讀以下詳細說明,將更清楚地理解本發明概念的實施例,附圖中: 圖1是示出根據示例性實施例的電子系統的方塊圖。
圖2是示出根據示例性實施例的安全處理器的方塊圖。
圖3是示出根據示例性實施例的隨機運算元產生器的方塊圖。
圖4是示出根據示例性實施例的安全處理器的方塊圖。
圖5及圖6是示出根據示例性實施例的算術處理器的運算的圖。
圖7是示出根據示例性實施例的重編碼器(recoder)的圖。
圖8是示出根據示例性實施例的重編碼表的表格。
圖9是示出根據示例性實施例的控制訊號表的表格。
圖10是示出根據實施例的部分乘法器(partial multiplier)的電路圖。
圖11是示出根據示例性實施例的安全處理器的方塊圖。
圖12是示出根據示例性實施例的安全處理器的方塊圖。
圖13是根據實施例的安全處理器的運算的圖。
圖14是示出根據示例性實施例的安全處理器的方塊圖。
圖15是示出根據示例性實施例的應用處理器的方塊圖。
圖1是示出根據示例性實施例的電子系統1的方塊圖。
參照圖1,電子系統1可包括安全處理器10、記憶體20及中央處理單元(central processing unit,CPU)30。電子系統1可對應於各種類型的系統,例如包括膝上型電腦、行動電話、智 慧型電話、平板個人電腦(personal computer,PC)、個人數位助理等。
CPU 30可輸出用於控制安全處理器10及記憶體20的各種控制訊號。在另一實施例中,應用處理器(application processor,AP)可執行CPU 30的角色。
記憶體20可在CPU 30或安全處理器10的控制下儲存資料。在本發明概念的實施例中,記憶體20可記錄自外部源接收的輸入資料ID,在CPU 30的控制下將輸入資料ID提供至安全處理器10,自安全處理器10接收輸出資料OD,並記錄所接收的輸出資料OD,其中輸出資料OD是由於對輸入資料ID執行安全操作而生成。
電子系統1可更包括能夠達成與安全操作相關的快速算術處理的安全處理器10(其可與CPU 30分開)。安全處理器10可使用秘密資訊來執行操作。安全處理器10亦可被稱為安全計算器。在一個實施例中,安全處理器10可使用公開金鑰基礎結構(public key infrastructure,PKI)中的個人金鑰、私密金鑰或此二者來執行加密或解密操作。
安全處理器10可執行與加密或解密操作相關的各種操作。例如,安全處理器10可執行與加密或解密資料相關的整體操作。作為另一選擇,安全處理器10可僅執行與整體加密或解密操作相關的數個操作中的一些操作。
根據本發明概念的實施例,經受安全處理器10的加密或 解密操作的資料可被稱為輸入資料ID,且由於加密或解密操作而產生的資料可被稱為輸出資料OD。在一個實施例中,輸入資料ID可表示PKI中的私密金鑰或公開金鑰,且輸出資料OD可表示至少部分地基於所述私密金鑰、公開金鑰或此二者而加密或解密的資料。
安全處理器10中的加密或解密操作可包括一或多個乘法運算。例如,當安全處理器10執行公開金鑰演算法時,安全處理器10可執行相對大數目的算術運算(加法、減法、乘法、餘數運算、模運算(modular operation)等)。在一些情形中,當運算子(operator)的大小大於某一臨限值(例如,在李維斯特.沙米爾.阿德爾曼(Rivest Shamir Adleman,RSA)演算法的情形中,至少1024個位元)時,操作可被承認為安全的。
對於使用大運算子的運算,安全處理器10可實施數位串列乘法器(digit-serial multiplier)。作為實例,用於執行一般串列乘法的演算法1闡述如下:
Figure 109101100-A0305-02-0008-18
作為另一實例,用於執行數位串列乘法的演算法2闡述 如下:
Figure 109101100-A0305-02-0009-19
參照上述演算法1及2,數位串列乘法是一般串列乘法的特殊情形,其能夠一次對乘數B的若干位元bi進行運算。
在如上所述執行乘法運算時,由安全處理器10消耗的功率可能受到運算值的影響。因此,當頻繁執行相似的運算時,可使用例如模板攻擊等的SCA識別出輸入資料值(例如,A或B)。另外或作為另一選擇,亦可分析安全處理器10的秘密資訊,例如秘密金鑰。
可採用隱藏技術及遮蔽技術作為此種類型的SCA的對策。隱藏技術可指藉由減少旁通道訊號(或藉由增加雜訊)來減少在處理不同輸入時功率消耗的改變的方法。然而,隱藏技術可能導致電路面積、平均功率消耗或此二者增加顯著量(例如,增加二倍以上)。另外,若僅當時脈訊號處於特定狀態(例如,低狀態)時才執行實際操作,則整體效能可能會劣化。
遮蔽技術可指藉由在加密操作之前執行遮蔽操作來將輸 入隨機化。然後,可在加密操作之後執行取消遮蔽操作(unmasking operation),以抵消遮蔽操作(得到數學上等效的運算)。然而,當輸入資料值(即,A或B)在乘法運算中對應於「0」時,遮蔽效果可能會丟失,且因此,安全處理器10中資訊的資訊洩露風險可能仍然存在。
因此,根據本發明的實施例,安全處理器10可藉由基於隨機數而改變作為SCA目標的輸入資料ID來為輸入資料ID提供隨機特性。此可使安全處理器10能夠在以輸入資料ID作為目標的SCA期間將資訊洩露的風險最小化。亦即,對實際輸入資料ID進行運算期間的功率消耗可隨機改變,且因此,對於模板攻擊的脆弱性可得以消除或降低。
為此,安全處理器10可包括隨機數產生器100及模計算器200。隨機數產生器100可產生隨機數。例如,隨機數產生器100可基於由使用者的運動、電阻器的熱雜訊、半導體p-n接面的短雜訊、光子產生的短雜訊、輻射產生波等產生的熵訊號而產生隨機數。在另一實例中,隨機數產生器100可基於在亞穩狀態(meta-stable state)中隨機變化的熵訊號而產生隨機數。
模計算器200可基於自記憶體20接收的輸入資料ID及自隨機數產生器100接收的隨機數而產生隨機運算元,且可藉由對所述隨機運算元執行餘數運算來輸出輸出資料OD。餘數運算可為輸出藉由將被除數除以除數而獲得的餘數的運算,且亦可被稱為模運算。
因此,電子系統1可藉由以下來執行密碼操作:使用隨機數產生器100產生隨機數;將隨機數乘以模,藉由將乘法的結果與輸入資料ID相加來產生隨機運算元,且藉由在模計算器200處使用模對所述隨機運算元執行餘數運算來產生輸出資料OD;以及基於輸出資料OD而執行密碼操作。
根據本發明概念的技術理念,模計算器200可對基於隨機數及輸入資料ID而產生的隨機運算元執行餘數運算,所述隨機運算元可不同於輸入資料ID本身。由於隨機運算元根據隨機數而改變的特性,安全處理器10可對SCA具有強的抵禦性。例如,使用隨機運算元可使輸入資料ID與自安全處理器10洩露的資訊(例如功率使用資訊)之間的關係模糊。
圖2是示出根據示例性實施例的安全處理器10的方塊圖。不再對先前參照圖1給出的說明予以贅述。
參照圖2,安全處理器10可包括隨機數產生器100及模計算器200,且模計算器200可包括隨機運算元產生器210及輸出資料產生器220。
隨機運算元產生器210可自隨機數產生器100接收隨機數RN,且自記憶體(圖1中的20)接收第一輸入資料ID1。隨機運算元產生器210可基於隨機數RN及第一輸入資料ID1而產生隨機運算元RO。在實施例中,隨機運算元產生器210可藉由將隨機數RN及第一輸入資料ID1輸入至特定公式中來產生隨機運算元RO。在實例中,隨機運算元產生器210可藉由以下來產生隨機 運算元RO:將模M乘以隨機數RN,且然後藉由將其結果與第一輸入資料ID1相加來產生隨機運算元RO(其中RO=ID1+RN * M)。模M可為由輸出資料產生器220執行以產生輸出資料OD的餘數運算的除數。
輸出資料產生器220可自隨機運算元產生器210接收隨機運算元RO,且自記憶體(圖1中的20)接收第二輸入資料ID2。輸出資料產生器220可對隨機運算元RO及第二輸入資料ID2執行算術運算(例如,加法、減法、乘法及除法),且可藉由使用模M作為除數執行餘數運算來產生輸出資料OD。
根據餘數運算(mod)的性質,對於例如A、B、r等任意數值及模M以及任意算術運算△(例如,加法、減法、乘法及除法中的任一種),可滿足以下的公式1及公式2。
[公式1]A mod M=(A+rM) mod M
[公式2](A△B) mod M={(A+rM)△B} mod M={A△(B+rM)} mod M
根據以上的公式1及2,對於第一輸入資料ID1、第二輸入資料ID2及隨機運算元RO,可滿足公式3及公式4。
[公式3]ID1 mod M=(ID1+RN*M) mod M=RO mod M
[公式4](ID1△ID2) mod M={(ID1+RN*M)△ID2} mod M=(RO△ID2) mod M
根據本發明概念技術理念的安全處理器10可基於隨機數RN而非第一輸入資料ID1對隨機運算元RO執行餘數運算。根據餘數運算的性質,對隨機運算元RO的餘數運算的結果可與對第一輸入資料ID1的餘數運算的結果相同,且安全處理器10可藉由對被添加了隨機特性的隨機運算元RO執行餘數運算來有效地降低SCA的風險。
亦即,由於餘數運算是對經隨機化輸入RO△ID2而非輸入本身(即,ID1△ID2)進行操作,因此安全處理器10可減輕旁通道資訊洩露的可能性。然而,運算本身及餘數運算的輸出保持不變。因此,安全處理器10可產生所期望輸出並降低SCA的風險,而不會實質上增加功率使用或晶片面積。
圖3是示出根據示例性實施例的隨機運算元產生器210的方塊圖。
參照圖3,隨機運算元產生器210可包括乘法器211及加法器212。乘法器211可接收隨機數RN及模M,且可對隨機數RN及模M執行乘法。在實例中,乘法器211可自安全處理器(即,圖1中的安全處理器10)內部的暫存器接收模M。
在實施例中,乘法器211可將隨機數RN劃分成多個單位隨機數(unit random number),且可藉由將模M乘以所述多個單 位隨機數中的每一者來產生多個單位模(unit modulo)UM。乘法器211可將所產生的多個單位模UM輸出至加法器212。
根據實施例,乘法器211可將隨機數RN劃分成具有小單位大小(例如,2個位元)的多個單位隨機數,可執行對所述多個單位隨機數中的每一者及模M執行乘法運算的多個部分乘法運算(partial multiplication operation),且因此,可高效地對具有大量位元的隨機數及模M執行乘法。加法器212可藉由根據位數將所述多個單位模UM與第一輸入資料ID1相加來產生輸出資料OD。
圖4是示出根據示例性實施例的安全處理器10的方塊圖。
參照圖4,安全處理器10可包括隨機數暫存器213、乘法器211、加法器212、隨機運算元暫存器216及內部記憶體300,且乘法器211可包括重編碼器214及部分乘法器215。
隨機數暫存器213可自隨機數產生器(圖1中的100)接收隨機數RN,且將具有特定數目個位元(例如,t個位元)的隨機數RN輸出至乘法器211。
重編碼器214可接收隨機數RN,且對所接收到的隨機數RN執行重編碼操作。在實例中,重編碼操作可對應於布斯(Booth)重編碼操作,所述布斯重編碼操作適於用於對隨機數RN及模M實施數位串列演算法的邏輯元件。
作為將隨機數RN乘以模M的一部分,可執行多個部分乘法運算,且可執行與每一部分乘法運算對應的一個重編碼操 作。重編碼操作可包括將隨機數的值替換成在數學上等效於原始值的不同值,以高效地實施乘法。當執行重編碼操作時,可減少部分乘法運算的數目。典型的重編碼操作可包括布斯重編碼操作。
在一個實施例中,重編碼器214可包括其中儲存有用於將多個單位隨機數RN中的每一者轉換成多個重編碼值的轉換資訊的重編碼表,且可基於所述重編碼表自所述多個單位隨機數中的每一者產生所述多個重編碼值。以下參照圖7詳細地闡述重編碼表。
在實施例中,重編碼器214可包括其中儲存有關於與所述多個重編碼值中的每一者對應的多個控制訊號SEL的對應資訊的控制訊號表,且可基於所述控制訊號表將所述多個重編碼值中的每一者的多個控制訊號SEL輸出至部分乘法器215。以下參照圖8詳細地闡述控制訊號表。
部分乘法器215可接收具有m個位元的模M及所述多個控制訊號SEL,且基於所述多個控制訊號SEL而產生多個單位模UM。所述多個單位模UM可分別對應於藉由將多個單位隨機數乘以模M而獲得的值。
內部記憶體300可儲存自安全處理器10外部(例如,自圖1中的記憶體20)接收的原始資料OrgD,且可將分離資料(separation data)SD輸出至加法器212,在分離資料SD中,原始資料OrgD以m個位元為單位被分離。為此,內部記憶體300可被實施為至少一個儲存裝置,且可例如包括揮發性記憶體及非 揮發性記憶體中的至少一者。
非揮發性記憶體可包括快閃記憶體、隨機存取記憶體(random-access memory,RAM)、相變RAM(phase-change RAM,PRAM)、磁性RAM(magnetic RAM,MRAM)、電阻性RAM(resistive RAM,RRAM)、鐵電性RAM(ferroelectric RAM,FRAM)等,且揮發性記憶體可包括動態RAM(dynamic RAM,DRAM)、靜態RAM(static RAM,SRAM)、同步DRAM(synchronous DRAM,SDRAM)、鎖存器、正反器(flip-flop)、暫存器等。
加法器212可接收所述多個單位模UM及分離資料SD,且更自隨機運算元暫存器216接收無條件進位值(roundup value)Cr。無條件進位值Cr可表示與在對前一分離資料SD的計算中超過m個位元的一部分對應的資料,所述m個位元是所述分離資料SD的位元數目。加法器212可藉由根據位數將所述多個單位模UM、分離資料SD及無條件進位值Cr相加來產生具有(m+a)個位元的隨機運算元RO。加法器212可將所產生的隨機運算元RO儲存於隨機運算元暫存器216中。
隨機運算元暫存器216可儲存隨機運算元RO,且當對所有原始資料OrgD的運算完成時,可輸出所儲存的隨機運算元RO。在圖4中,隨機運算元暫存器216、隨機數暫存器213及內部記憶體300被示出為彼此分開。然而,實施例並非僅限於此。隨機運算元暫存器216、隨機數暫存器213及內部記憶體300中的二或更多者的配置可被實施為單個儲存元件。另外,在圖4中, 示出了其中加法器212自內部記憶體300接收分離資料SD的實例。然而,此僅為實例,且加法器212可自安全處理器10外部的記憶體(例如,圖1中的20)接收分離資料SD。
圖5及圖6是分別示出根據示例性實施例的算術處理器的運算的圖。
參照圖4及圖5,乘法器211可接收隨機數RN(例如,具有4個位元),且將隨機數RN劃分成各自以二個位元為單位的第一單位隨機數URN1及第二單位隨機數URN2。乘法器211可藉由將第一單位隨機數URN1乘以具有8個位元的模M來產生具有10個位元的第一單位模UM1。乘法器211可藉由將第二單位隨機數URN2乘以模M(例如,具有8個位元的模)來產生具有10個位元的第二單位模UM2。
根據本發明概念的實施例,乘法器211可基於重編碼表而計算隨機數RN的多個重編碼值,且可基於控制訊號表藉由使用與所述多個重編碼值中的每一者對應的所述多個控制訊號將模M乘以第一單位隨機數及第二單位隨機數。以下參照圖7至圖10詳細地對此進行闡述。
圖5示出其中第一單位模UM1及第二單位模UM2均具有10個位元的實施例,但本發明概念並非僅限於此。視將第一單位隨機數URN1及第二單位隨機數URN2乘以模M後的結果而定,第一單位模UM1及第二單位模UM2的位元數目可大於或小於10個位元。
參照圖4及圖6,加法器212可自乘法器211接收第一單位模UM1及第二單位模UM2,自內部記憶體300接收分離資料SD,且自隨機運算元暫存器216接收第一無條件進位值Cr1。加法器212可根據位數將第一單位模UM1、第二單位模UM2、分離資料SD及第一無條件進位值Cr1相加。在實例中,第二單位模UM2是藉由將第二單位隨機數URN2乘以模M而獲得的值,在第二單位隨機數URN2中,數位的位置較第一單位隨機數URN1大二個位元。因此,為了獲得所期望總位數,可藉由將第二單位模UM2偏移二個位元來執行加法。
由於所述加法,加法器212可產生具有12個位元的資料。所產生資料中的第一位元o0至第八位元o7(即,與分離資料SD對應的8個位元)可作為計算完成的隨機運算元RO儲存於隨機運算元暫存器216中。第九位元o8至第十二位元o11可在對下一分離資料SD的加法運算中用作第二無條件進位值Cr2。
圖7是示出根據示例性實施例的重編碼器的圖。
參照圖4及圖7,重編碼器可包括用於儲存重編碼器輸入與重編碼值之間的轉換資訊的重編碼表。所述轉換資訊可包括分別與多個重編碼器輸入模式對應的多個重編碼值。重編碼器輸入Reco_In可包括單位隨機數的位元bi、及參考位元bref。根據位元(bi及bref),重編碼器輸入Reco_In可具有與多種模式中的一者對應的形式。例如,重編碼器輸入Reco_In可對應於第一模式Pat(1)至第八模式Pat(8)中的任一者。在一個實例中,單位隨機數的bi 包括2個位元,且參考位元bref是1個位元。
根據重編碼表中所儲存的轉換資訊,重編碼器輸入Reco_In可被映射或轉換成與其對應的重編碼值。在實例中,轉換資訊中儲存有與具有第一模式Pat(1)的重編碼器輸入Reco_In對應的第一重編碼值Val(1)。在此實例中,當單位隨機數的位元bi及參考位元bref具有第一模式Pat(1)時,重編碼器可輸出第一重編碼值Val(1)。
另外或作為另一選擇,可基於上述轉換操作而產生重編碼值,且可以控制訊號Sel[0:k]的形式輸出重編碼值。在實例中,當隨機數具有二個位元時,控制訊號Sel[0:k]可包括四個位元。
根據本發明概念的實施例,當應用上述布斯重編碼方法時,重編碼輸出可呈現集合{-2,-1,0,1,2}中的值。因此,對應於具有任一種模式的重編碼器輸入的重編碼值可與對應於具有另一種模式的重編碼器輸入的重編碼值相同。亦即,多個重編碼器輸入模式可映射至相同的重編碼值。
另外,基於控制訊號Sel[0:k],部分乘法器215可在部分乘法運算中產生將隨機數RN乘以{-2,-1,0,1,2}(例如,部分乘法係數)的值中的任一者後的結果。因此,在一個部分乘法運算中,部分乘法器215可接收模M及控制訊號Sel[0:k]作為輸入,且藉由部分乘法運算過程產生{-2M,-M,0,M,2M}的值中的任一者。
圖8是示出根據示例性實施例的重編碼表的表格。
參照圖8,當隨機數RN是作為8位元值的「01101001」時,隨機數RN可如公式5所示被轉換,使得係數具有{-2,-1,0,1,2}的值。
[公式5]RN=01101001(2)=0.27+1.26+1.25+0.24+1.23+0.22+0.21+1.20=2.26-1.24-2.22+1.20 (1)=1.26+2.24+2.22+1.20 (2)
亦即,隨機數RN可被轉換成(1)2.26-1.24-2.22+1.20及(2)1.26+2.24+2.22+1.20。上述二個轉換值可具有值105,此與原始隨機數RN相同。
根據上述轉換實例,單位隨機數URN的二個位元可被轉換成{-2,-1,0,1,2}的值中的任一者。因此,具有8個位元的隨機數RN可被分類成各自具有二個位元的四個單位隨機數。例如,二個最低有效位元可被分類為第一單位隨機數,接下來的二個較低位元可被分類為第二單位隨機數,接下來的二個較低位元可被分類為第三單位隨機數,且二個最高有效位元可被分類為第四單位隨機數。
另外,當假設首先自隨機數RN的較低位元開始執行重編碼操作時,被執行當前重編碼操作的單位隨機數的高位元可用作下一重編碼操作中的參考位元。例如,當對第二單位隨機數執行重編碼操作時,第一單位隨機數的二個位元中的高位元可對應於 參考位元Ref bit。
在其中對包括二個最低有效位元的第一單位隨機數執行重編碼操作的情形中,對應於「0」的位元可被定義為參考位元Ref bit。因此,假設被執行當前重編碼操作的二個位元是b2i+1及b2i,當前重編碼操作中的參考位元Ref bit可對應於b2i-1,且下一重編碼操作中的參考位元Next Ref bit可對應於b'2i+1
在其中隨機數RN是「01101001(2)」的實例中,第一單位隨機數可為「01」(來自第一位元及第二位元),且參考位元可為「0」。如圖8的重編碼表中所示,包括第一單位隨機數的位元及參考位元Ref bit的重編碼器輸入可對應於「010」,且與所述重編碼器輸入對應的重編碼值Recoding Value可具有值「1」。
包括接下來的二個較低位元的第二單位隨機數可為「10」(來自第三位元及第四位元),且參考位元Ref bit可為來自前一第一單位隨機數高位元的「0」。因此,包括第二單位隨機數的位元及參考位元Ref bit的重編碼器輸入可對應於「100」,且與所述重編碼器輸入對應的重編碼值Recoding Value可具有值「-2」。
包括接下來的二個較低位元的第三單位隨機數亦可為「10」(來自第五位元及第六位元),且參考位元Ref bit可為來自前一第二單位隨機數高位元的「1」。因此,包括第三單位隨機數的位元及參考位元Ref bit的重編碼器輸入可對應於「101」,且與所述重編碼器輸入對應的重編碼值Recoding Value可具有值「-1」。
包括接下來的二個較低位元的第四單位隨機數可為「01」 (來自第七位元及第八位元),且參考位元Ref bit可為來自前一第三單位隨機數高位元的「1」。因此,包括第四隨機數的位元及參考位元Ref bit的重編碼器輸入可對應於「011」,且與所述重編碼器輸入對應的重編碼值Recoding Value可具有值「2」。
換言之,重編碼器可接收「01101001(2)」作為隨機數RN,且產生「2」、「-1」、「-2」及「1」作為重編碼值Recoding Value。
在一些實例中,預先產生重編碼表並將其儲存於安全處理器中,但實施例並非僅限於此。在實例中,可藉由計算特定公式來獲得與重編碼表中所示的重編碼器輸入對應的重編碼值,且可在安全處理器中提供用於計算所述特定公式的配置,以藉由運算過程來產生重編碼值。
圖9是示出根據示例性實施例的控制訊號表的表格。
參照圖8及圖9,當圖9所示控制訊號表中所示的重編碼值對應於「-2」時,第一控制訊號sel0至第四控制訊號sel3可具有值「1010」,且當重編碼值對應於「-1」時,與所述重編碼值對應的第一控制訊號sel0至第四控制訊號sel3可具有值「1001」。另外,當重編碼值對應於「0」時,第一控制訊號sel0至第四控制訊號sel3可具有值「0000」。當重編碼值對應於「1」時,第一控制訊號sel0至第四控制訊號sel3可具有值「0101」。當重編碼值對應於「2」時,第一控制訊號sel0至第四控制訊號sel3可具有值「0110」。上述第一控制訊號sel0至第四控制訊號sel3可用作用於選擇係數的訊號,所述係數將在以下所述的部分乘法運算中被乘 以模。
根據本發明概念的實施例,重編碼器可為部分乘法器提供與參照圖8所述的重編碼值(例如,「2」、「-1」、「-2」及「1」)對應的第一控制訊號sel0至第四控制訊號sel3。在實例中,重編碼器可基於「1」(即,與第一單位隨機數對應的重編碼值)將「0101」作為第一控制訊號sel0至第四控制訊號sel3輸出至部分乘法器。重編碼器可基於「-2」(即,與第二單位隨機數對應的重編碼值)將「1010」作為第一控制訊號sel0至第四控制訊號sel3輸出至部分乘法器。
圖10是示出根據實施例的部分乘法器225的電路圖。
參照圖10,可將具有n個位元(M[0]至M[n-1])的模M及根據上述隨機數的重編碼結果而定的第一控制訊號sel0至第四控制訊號sel3提供至部分乘法器225。儘管在圖10中示出了構成一個部分乘法器225的邏輯元件,但二或更多個部分乘法可一起執行。因此,安全處理器10可包括二或更多個部分乘法器225。部分乘法器225可產生具有(n+1)個位元的單位模UMi[n:0]及具有1個位元的正負號資料UMi_neg,作為具有n個位元(M[0]至M[n-1])的模M與具有2個位元的單位隨機數的乘法結果。
對於模M,部分乘法結果值,即具有(n+1)個位元的單位模UMi[n:0]及具有1個位元的正負號資料UMi_neg,可為{-2M,-M,0,M,2M}中的任一者。具有1個位元的正負號資料UMi_neg可對應於第一控制訊號sel0。
可使用多個邏輯元件來實施部分乘法器225。在圖10中,示出了其中部分乘法器225包括多個反相器225_1、多個及(AND)閘及多個或(OR)閘的實例。例如,除了具有n個位元(M[0]至M[n-1])的模M之外,可更在具有n個位元(M[0]至M[n-1])的模M的最低有效位元(即,M[0])的右邊輸入零值。另外,可更在具有n個位元(M[0]至M[n-1])的模M的最高有效位元或M[n-1]的左邊輸入零值。
部分乘法器225可包括與具有n個位元(M[0]至M[n-1])的模M及上述二個零值對應的多個(例如,n+2個)反相器225_1。另外,部分乘法器225的第一級可更包括第一及閘區塊225_2及第一或閘區塊225_3。第一及閘區塊225_2可包括多個及閘(AND1_11、AND1_12至AND1_(n+2)1、AND1_(n+2)2)。作為實例,可對應於具有n個位元(M[0]至M[n-1])的模M的每一位元及所述二個零值中的每一者佈置二個及閘。以具有n個位元(M[0]至M[n-1])的模M的最低有效位元M[0]為例,第一及閘AND1_21可接收第二選擇訊號sel1及最低有效位元M[0]作為輸入,且第二及閘AND1_22可接收第一選擇訊號sel0及最低有效位元M[0]的經反相值作為輸入。
另外,第一或閘區塊225_3可包括第一或閘OR1_1至第(n+2)或閘OR1_(n+2)。以具有n個位元(M[0]至M[n-1])的模M的最低有效位元M[0]為例,第一及閘AND1_21及第二及閘AND1_22的輸出可作為輸入提供至第二或閘OR1_2。
部分乘法器225的第二級可更包括第二及閘區塊225_4及第二或閘區塊225_5。作為實例,第二及閘區塊225_4可包括多個及閘(AND2_11、AND2_12至AND2_n1、AND2_n2)。以具有n個位元(M[0]至M[n-1])的模M的二個最低有效位元M[0]及M[1]為例,第一及閘AND2_21可接收第四選擇訊號sel3及第一或閘區塊225_3的第三或閘OR1_3的輸出,且第二及閘AND2_22可接收第三選擇訊號sel2及第一或閘區塊225_3的第二或閘OR1_2的輸出。
第二或閘區塊225_5可包括第一或閘OR2_1至第n或閘OR2_n。以具有n個位元(M[0]至M[n-1])的模M的最低有效位元M[0]為例,第一及閘AND2_21及第二及閘AND2_22的輸出可作為輸入提供至第二或閘OR2_2。部分乘法器225中所包括的其他邏輯元件的詳細連接關係可如圖式中所示來實施,且因此不再對此予以贅述。
在圖10所示的邏輯元件中,上述重編碼結果可藉由第一控制訊號sel0至第四控制訊號sel3而與部分乘法運算一起實施。例如,第一控制訊號sel0及第二控制訊號sel1可確定正/負號,且第三控制訊號sel2及第四控制訊號sel3可確定部分乘法的係數對應於「1」或「2」。
當部分乘法結果為負時,正負號資料UMi_neg可用於產生2補數。例如,可按照-2M=~(M<<1)+1來計算-2M。在此方程式中,(M<<1)可對應於乘以2,且可使用反號(negation)(「~」) 及「+1」來產生2補數。
根據本發明概念實施例的部分乘法器可基於第一控制訊號sel0至第四控制訊號sel3而產生與藉由將單位隨機數乘以模M而獲得的值對應的單位模(UMi[n:0]及UMi_neg),且可將所產生的單位模(UMi[n:0]及UMi_neg)輸出至加法器(例如,圖3所示加法器212)。
圖11是示出根據示例性實施例的安全處理器10a的方塊圖。安全處理器10a可與參照圖2所述的安全處理器10相似,但可包括多個隨機運算元產生器。不再對先前參照圖2給出的說明予以贅述。
參照圖11,安全處理器10a可包括隨機數產生器100a及模計算器200a。模計算器200a可包括第一隨機運算元產生器210a、第二隨機運算元產生器230a及輸出資料產生器220a。
第一隨機運算元產生器210a可自隨機數產生器100a接收第一隨機數RN1,且自記憶體(圖1中的20)接收第一輸入資料ID1。隨機運算元產生器210a可基於第一隨機數RN1及第一輸入資料ID1而產生第一隨機運算元RO1。在實例中,第一隨機運算元產生器210a可藉由將模M乘以第一隨機數RN1且然後與第一輸入資料ID1相加來產生第一隨機運算元RO1(其中RO1=ID1+RN1*M)。
第二隨機運算元產生器230a可自隨機數產生器100a接收第二隨機數RN2,且自記憶體(圖1中的20)接收第二輸入資 料ID2。第二隨機運算元產生器230a可基於第二隨機數RN2及第二輸入資料ID2而產生第二隨機運算元RO2。在實例中,第二隨機運算元產生器230a可藉由將模M乘以第二隨機數RN2且然後與第二輸入資料ID2相加來產生第二隨機運算元RO2(其中RO2=ID2+RN2*M)。
輸出資料產生器220a可藉由接收第一隨機運算元RO1及第二隨機運算元RO2、對第一隨機運算元RO1及第二隨機運算元RO2執行算術運算(例如,加法、減法、乘法及除法)且對算術運算的結果執行餘數運算來產生輸出資料OD,在所述餘數運算中,模M用作除數。
根據餘數運算(mod)的性質,對於例如A、B、r等任意數值及模M以及任意算術運算△(例如,加法、減法、乘法及除法中的任一種),可滿足以下公式6。
[公式6](A△B) mod M={(A+rM)△(B+rM)} mod M
基於上述公式6,建立關於第一輸入資料ID1、第二輸入資料ID2、第一隨機運算元RO1及第二隨機運算元RO2的公式7。
[公式7](ID1△ID2) mod M={(ID1+RN1*M)△(ID2+RN2*M)} mod M=(RO1△RO2) mod M
換言之,根據本發明概念實施例的安全處理器10a可對基於第一輸入資料ID1及第一隨機數RN1而計算的第一隨機運算元RO1並對基於第二輸入資料ID2及第二隨機數RN2而計算的第二隨機運算元RO2執行餘數運算。與第一輸入資料ID1的情形相似,安全處理器10a可藉由使用由第二隨機數RN2產生的第二隨機運算元RO2對第二輸入資料ID2執行餘數運算。因此,可提高安全處理器10a的安全性(例如,藉由降低安全處理器10a對於基於功率分析的SCA的脆弱性)。
圖12是示出根據示例性實施例的安全處理器10b的方塊圖。安全處理器10b可與參照圖2所述的安全處理器10相似,但可針對每一操作生成多個隨機數及隨機運算元。不再對先前參照圖2給出的說明予以贅述。
參照圖12,安全處理器10b可包括隨機數產生器100b及模計算器200b。模計算器200b可包括隨機運算元產生器210b及輸出資料產生器220b。隨機數產生器100b可將第一隨機數RN1輸出至隨機運算元產生器210b。隨機運算元產生器210b可使用第一隨機數RN1產生第一隨機運算元ROa,且輸出資料產生器220b可在對第二輸入資料ID2的至少一些的運算中使用第一隨機運算元ROa。
隨機數產生器100b可在對第二輸入資料ID2的運算中將不同於第一隨機數RN1的第二隨機數RN2輸出至隨機運算元產生器210b。例如,隨機數產生器100b可在對第二輸入資料ID2 的運算中將輸出訊號自第一隨機數RN1更新成第二隨機數RN2。隨機運算元產生器210b可使用第二隨機數RN2產生第二隨機運算元ROb,且輸出資料產生器220b可在對第二輸入資料ID2的至少一些的運算中使用第二隨機運算元ROb。
根據本發明概念的實施例,藉由在對輸入資料的運算期間更新自隨機數產生器100b輸出的隨機數,可更提高第一隨機運算元ROa及第二隨機運算元ROb的隨機特性,且可有效地保護第一輸入資料ID1免受SCA的影響。
圖13是根據實施例的安全處理器10b的運算的圖。
參照圖12及圖13,第二輸入資料ID2可包括第一子輸入資料SID1及第二子輸入資料SID2。隨機數產生器100b可產生第一隨機數RN1,且隨機運算元產生器210b可使用第一隨機數RN1計算第一隨機運算元ROa。輸出資料產生器220b可在對第二輸入資料ID2中的第一子輸入資料SID1的運算中使用基於第一隨機數RN1而產生的第一隨機運算元ROa。例如,輸出資料產生器220b可藉由將第一子輸入資料SID1乘以第一隨機運算元ROa來產生第一子輸出資料SOD1。
接下來,隨機數產生器100b可產生第二隨機數RN2,且隨機運算元產生器210b可使用第二隨機數RN2來計算第二隨機運算元ROb。輸出資料產生器220b可在對第二輸入資料ID2中的第二子輸入資料SID2的運算中使用基於第二隨機數RN2而產生的第二隨機運算元ROb。在實例中,輸出資料產生器220b可藉由 將第二子輸入資料SID2乘以第二隨機運算元ROb來產生第二子輸出資料SOD2。
輸出資料產生器220b可產生藉由根據位數將所產生的第一子輸出資料SOD1與第二子輸出資料SOD2相加並將結果除以模M而獲得的餘數值作為輸出資料OD。在實例中,輸出資料產生器220b可將第一子輸出資料SOD1及藉由將第二子輸出資料SOD2的最低有效位元與第二子輸入資料SID2的最低有效位元匹配而獲得的結果相加。
圖14是示出根據示例性實施例的安全處理器10c的方塊圖。安全處理器10c可與參照圖2所述的安全處理器10相似,只不過安全處理器10c可在隨機運算元產生器內包括隨機數暫存器。不再對先前參照圖2給出的說明予以贅述。
參照圖14,安全處理器10c可包括隨機數產生器100c及模計算器200c。模計算器200c可包括隨機運算元產生器220c及輸出資料產生器230c。隨機運算元產生器220c可包括用於儲存隨機數的隨機數暫存器223c。
隨機運算元產生器220c可將隨機數請求訊號RSig_RN輸出至隨機數產生器100c。隨機數產生器100c可將因應於隨機數請求訊號RSig_RN而更新的經更新隨機數RN_upt儲存於隨機數暫存器223c中。
在實施例中,當發生特定事件時,隨機運算元產生器220c可將隨機數請求訊號RSig_RN輸出至隨機數產生器100c。在 實施例中,所述特定事件可為當對輸入資料的重編碼已完成時。在另一實施例中,所述特定事件可為當對特定數目個位元的重編碼已完成時。
在另一實施例中,當特定事件的時間點已過去時,隨機運算元產生器220c可將隨機數請求訊號RSig_RN輸出至隨機數產生器100c。
圖15是示出根據示例性實施例的應用處理器1000的方塊圖。
參照圖15,應用處理器1000可被實施為系統晶片(system-on-a-chip,SoC)。應用處理器1000可包括中央處理單元(CPU)1010、安全處理器1020、數據機1030、顯示控制器1040、唯讀記憶體(read-only memory,ROM)1050、記憶體控制器1060及RAM 1070。除了所示的組件之外,應用處理器1000可更包括其他組件,例如電源管理單元、圖形處理單元(graphics processing unit,GPU)及時脈單元。
CPU 1010可處理或執行ROM 1050及/或RAM 1070中所儲存的程式或資料。ROM 1050可儲存程序及/或資料。另外,RAM 1070可臨時儲存程式、資料及指令。記憶體控制器1060可執行與外部記憶體裝置的介接,且可藉由根據資料存取請求而控制外部記憶體裝置來讀取或寫入資料。另外,顯示控制器1040可藉由驅動顯示裝置來控制螢幕的顯示操作。
根據本發明概念的實施例,安全處理器1020可如本文 所述來執行安全操作。在實施例中,安全處理器1020可包括模計算器1021,且可使用隨機數來執行餘數運算。儘管在圖15中未示出,但安全處理器1020可更包括隨機數產生器等。
由於應用處理器1000中設置有數據機1030,因此應用處理器1000可被稱為數據機應用處理器(modem application processor,ModAP)。可向外部系統傳送/自外部系統接收需要藉由數據機1030進行安全計算的資訊。此時,安全處理器1020可根據上述實施例來執行安全計算。
如上所述,在圖式及說明書中已揭露了各實施例。雖然本文已參照具體用語闡述了實施例,但應理解,所述具體用語僅用於闡述本發明概念的技術理念,而非用於限制申請專利範圍中所定義的本發明概念的範圍。因此,此項技術中具有通常知識者應瞭解,在不背離本發明概念的範圍的條件下,可作出各種潤飾及等效實施例。因此,本發明概念的真正保護範圍應由隨附申請專利範圍的技術理念來確定。
10:安全處理器
100:隨機數產生器
200:模計算器
210:隨機運算元產生器
220:輸出資料產生器
ID1:第一輸入資料
ID2:第二輸入資料
OD:輸出資料
RN:隨機數
RO:隨機運算元

Claims (19)

  1. 一種安全處理器,包括:隨機數產生器,被配置成產生第一隨機數;以及模計算器,被配置成基於第一輸入資料及所述第一隨機數而產生第一隨機運算元,且藉由對所述第一隨機運算元的餘數運算來產生輸出資料,其中對於所述第一輸入資料的任一值,對所述第一輸入資料的所述餘數運算的結果值與對所述第一隨機運算元的所述餘數運算的結果值相同,其中所述模計算器包括:第一隨機運算元產生器,被配置成產生所述第一隨機運算元;以及輸出資料產生器,被配置成藉由在對第二輸入資料及所述第一隨機運算元執行算術運算之後執行所述餘數運算來產生所述輸出資料,以及其中所述隨機數產生器被配置成更產生第二隨機數,且其中所述模計算器更包括第二隨機運算元產生器,所述第二隨機運算元產生器被配置成基於所述第二輸入資料及所述第二隨機數而產生第二隨機運算元,且其中所述輸出資料產生器被配置成藉由在對所述第一隨機運算元及所述第二隨機運算元執行所述算術運算之後執行餘數運算來產生所述輸出資料。
  2. 如請求項1所述的安全處理器,其中所述第一隨機 運算元產生器包括:乘法器,被配置成將作為所述餘數運算的除數的模乘以所述第一隨機數;以及加法器,被配置成藉由將所述第一輸入資料與所述乘法器的乘法結果相加來產生所述第一隨機運算元。
  3. 如請求項2所述的安全處理器,其中所述乘法器包括:重編碼器,被配置成產生分別與構成所述第一隨機數的多個單位隨機數對應的多個控制訊號;以及單位模產生器,被配置成基於所述多個控制訊號來產生與藉由將所述模及所述多個單位隨機數相乘而獲得的值對應的多個單位模,其中所述加法器被配置成藉由根據位數將所述多個單位模與所述第一輸入資料相加來產生所述第一隨機運算元。
  4. 如請求項3所述的安全處理器,其中所述重編碼器被配置成將所述多個單位隨機數中的每一者轉換成多個重編碼值,且基於所述多個重編碼值而產生所述多個控制訊號。
  5. 如請求項4所述的安全處理器,其中所述重編碼器包括重編碼表及控制訊號表,所述重編碼表儲存用於基於布斯重編碼而將所述多個單位隨機數轉換成所述多個重編碼值的轉換資訊,所述控制訊號表儲存分別與所述多個重編碼值對應的所述多個控制訊號的轉換資訊,其中所述重編碼器被配置成基於所述重編碼表而將所述多個單位隨機數轉換成所述多個重編碼值且基於所述控制訊號表而將所述多個重編碼值中的每一者的所述多個控制訊號輸出至所述單位模產生器,且其中所述單位模產生器被配 置成基於所述多個控制訊號而產生所述多個單位模。
  6. 如請求項3所述的安全處理器,更包括儲存包括所述第一輸入資料在內的原始資料的記憶體,其中所述模計算器被配置成依序載入藉由將所述原始資料以m個位元為單位進行劃分而獲得的多段經劃分資料,其中m是自然數。
  7. 如請求項6所述的安全處理器,其中所述加法器被配置成在對所述多段經劃分資料中的第一經劃分資料執行第一運算之前,對第二經劃分資料執行第二運算,其中所述第一隨機運算元產生器更包括第一暫存器,所述第一暫存器用於儲存在所述第二運算中超過m個位元的無條件進位值,且其中所述加法器被配置成藉由根據位數將自所述第一暫存器載入的所述無條件進位值、所述多個單位模及所述第一經劃分資料相加來產生所述第一隨機運算元。
  8. 如請求項1所述的安全處理器,其中所述隨機數產生器更被配置成產生不同於所述第一隨機數的第三隨機數,且所述第一隨機運算元產生器更被配置成在對所述第二輸入資料的運算過程中基於所述第一輸入資料及所述第三隨機數而產生第三隨機運算元。
  9. 如請求項8所述的安全處理器,其中所述第二輸入資料包括第一子輸入資料及第二子輸入資料,且其中所述輸出資料產生器被配置成藉由在對所述第一隨機運算元及所述第一子輸入資料執行所述算術運算之後執行所述餘數運算來產生第一子輸 出資料,藉由在對所述第三隨機運算元及第三子輸入資料執行所述算術運算之後執行所述餘數運算來產生第二子輸出資料,且藉由在將所述第一子輸出資料與所述第二子輸出資料相加之後執行所述餘數運算來產生所述輸出資料。
  10. 如請求項8所述的安全處理器,其中所述第一隨機運算元產生器更包括儲存自所述隨機數產生器接收的至少一個隨機數的第二暫存器,且其中所述第一隨機運算元產生器被配置成在將所述第一隨機運算元輸出至所述輸出資料產生器之後,將隨機數請求訊號輸出至所述隨機數產生器,且其中所述隨機數產生器被配置成因應於所述隨機數請求訊號而將所述第三隨機數輸出至所述第二暫存器。
  11. 一種安全處理器,包括:隨機數產生器,被配置成產生第一隨機數;模計算器,被配置成藉由以下來產生輸出資料:將模乘以所述第一隨機數,將第一輸入資料與相乘結果相加以產生第一隨機運算元,且然後執行餘數運算,在所述餘數運算中,將所述第一隨機運算元除以所述模,其中所述模計算器被配置成對第二輸入資料及所述第一隨機運算元執行算術運算,且輸出藉由將所述算術運算的結果除以所述模而得到的餘數作為所述輸出資料,以及其中所述隨機數產生器被配置成更產生不同於所述第一隨機數的第三隨機數,且所述模計算器被配置成藉由在對所述第二輸 入資料的運算過程中將所述模乘以所述第三隨機數且然後將相乘後的所述模與所述第一輸入資料相加來更產生第三隨機運算元。
  12. 如請求項11所述的安全處理器,其中所述隨機數產生器更被配置成產生第二隨機數,且所述模計算器被配置成將所述模乘以所述第二隨機數,藉由將相乘後的所述模與所述第二輸入資料相加來產生第二隨機運算元,對所述第一隨機運算元及所述第二隨機運算元執行所述算術運算,且產生由於將所述算術運算的結果除以所述模而產生的餘數作為所述輸出資料。
  13. 如請求項11所述的安全處理器,其中所述第二輸入資料包括第一子輸入資料及第二子輸入資料,且其中所述模計算器被配置成對所述第一隨機運算元及所述第一子輸入資料執行第一算術運算,藉由將所述第一算術運算的結果值除以所述模來產生第一子輸出資料,對所述第三隨機運算元及所述第二子輸入資料執行第二算術運算,藉由將所述第二算術運算的結果值除以所述模來產生第二子輸出資料,且基於所述第一子輸出資料及所述第二子輸出資料來產生所述輸出資料。
  14. 如請求項11所述的安全處理器,其中所述模計算器被配置成基於對所述第一隨機數的布斯重編碼來產生與所述第一隨機數對應的多個控制訊號,且基於所述多個控制訊號來產生與將所述第一隨機數乘以所述模後的結果值對應的多個單位模。
  15. 如請求項14所述的安全處理器,其中所述模計 算器被配置成藉由根據位數將所述多個單位模與所述第一輸入資料相加來產生所述第一隨機運算元。
  16. 一種安全處理器的操作方法,所述操作方法包括:產生第一隨機數;基於模、所述第一隨機數及第一輸入資料進行算術運算而產生第一隨機運算元;產生第二隨機數;基於所述模、所述第二隨機數及第二輸入資料而產生第二隨機運算元;以及基於所述第一隨機運算元而產生輸出資料,其中對於所述第一輸入資料的任一值,將所述第一隨機運算元除以所述模後的餘數與將所述第一輸入資料除以所述模後的餘數相同,其中產生所述輸出資料包括:對第二輸入資料及所述第一隨機運算元執行算術運算;對所述第一隨機運算元及所述第二隨機運算元執行算術運算;以及產生藉由將執行所述算術運算後的結果值除以所述模而獲得的餘數作為所述輸出資料;以及。
  17. 如請求項16所述的操作方法,其中產生所述第一隨機運算元包括:將所述模乘以所述第一隨機數;以及將所述 乘法的結果值與所述第一輸入資料相加,其中由於所述相加而產生的資料是所述第一隨機運算元。
  18. 如請求項16所述的操作方法,更包括:產生第三隨機數;以及基於所述模、所述第三隨機數及所述第一輸入資料在對所述第二輸入資料的運算中產生第三隨機運算元。
  19. 一種加密或解密資料的方法,所述方法包括:產生第一隨機數;將所述第一隨機數乘以模;藉由將所述乘法的結果與第一輸入資料相加來產生第一隨機運算元;藉由使用所述模對所述第一隨機運算元執行餘數運算來產生輸出資料;藉由在對第二輸入資料及所述第一隨機運算元執行算術運算之後執行所述餘數運算來產生所述輸出資料;產生第二隨機數;基於所述第二輸入資料及所述第二隨機數而產生第二隨機運算元;藉由在對所述第一隨機運算元及所述第二隨機運算元執行所述算術運算之後執行餘數運算來產生所述輸出資料;以及基於所述輸出資料而執行加密或解密中的至少一者。
TW109101100A 2019-01-16 2020-01-13 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法 TWI821501B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190005855A KR102653018B1 (ko) 2019-01-16 2019-01-16 랜덤 넘버를 이용하여 나머지 연산을 수행하는 보안 프로세서 및 이의 동작 방법
KR10-2019-0005855 2019-01-16

Publications (2)

Publication Number Publication Date
TW202044083A TW202044083A (zh) 2020-12-01
TWI821501B true TWI821501B (zh) 2023-11-11

Family

ID=71517668

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109101100A TWI821501B (zh) 2019-01-16 2020-01-13 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法

Country Status (4)

Country Link
US (1) US11392725B2 (zh)
KR (1) KR102653018B1 (zh)
CN (1) CN111444518A (zh)
TW (1) TWI821501B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020148771A1 (en) * 2019-01-17 2020-07-23 Fortifyiq Inc Methods for protecting computer hardware from cyber threats
US11449642B2 (en) * 2020-09-04 2022-09-20 Arm Limited Attack protection by power signature blurring
US11789897B2 (en) 2020-10-27 2023-10-17 BOE Technology Development Co., Ltd. Data processing circuit, data processing method, and electronic device
CN112653706B (zh) * 2020-12-29 2022-11-04 杭州趣链科技有限公司 基于中国剩余定理的数据传输方法、装置和系统
US12095911B2 (en) 2021-04-07 2024-09-17 Samsung Electronics Co., Ltd. Electronic device to enhance randomness of security module using multiple hardware random number generator and the method thereof
CN113839769B (zh) * 2021-09-27 2023-08-22 刘昀宸 防止侧信道攻击的方法、算术逻辑单元以及处理器
TWI845059B (zh) * 2021-12-17 2024-06-11 美商谷歌有限責任公司 執行安全密碼操作之積體電路及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571268B1 (en) * 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US20110246789A1 (en) * 2010-03-31 2011-10-06 Inside Contactless Integrated circuit protected against horizontal side channel analysis
TW201633208A (zh) * 2014-11-18 2016-09-16 英特爾公司 自行加密儲存裝置之安全控制技術

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007187908A (ja) * 2006-01-13 2007-07-26 Hitachi Ltd サイドチャネル攻撃に耐性を有するモジュラーべき乗算計算装置及びモジュラーべき乗算計算方法
EP1840732A1 (en) 2006-03-31 2007-10-03 Axalto SA Protection against side channel attacks
US20090016523A1 (en) 2007-07-12 2009-01-15 Atmel Corporation Masking and Additive Decomposition Techniques for Cryptographic Field Operations
US7865793B2 (en) * 2008-04-30 2011-01-04 International Business Machines Corporation Test case generation with backward propagation of predefined results and operand dependencies
JP2010139544A (ja) * 2008-12-09 2010-06-24 Renesas Electronics Corp 剰余演算装置、及び剰余演算方法
KR101592920B1 (ko) 2009-06-10 2016-02-12 삼성전자주식회사 모듈러 연산 방법 및 이를 위한 장치
KR101344402B1 (ko) 2010-08-12 2013-12-26 한국전자통신연구원 Rsa 서명 방법 및 장치
KR101341810B1 (ko) 2011-11-17 2013-12-17 고려대학교 산학협력단 Crt-rsa를 이용하여 전력 분석 공격과 오류 주입 공격으로부터 정보를 보호하는 방법
US9959429B2 (en) 2013-03-15 2018-05-01 Cryptography Research, Inc. Asymmetrically masked multiplication
KR101553148B1 (ko) 2014-03-05 2015-09-14 울산대학교 산학협력단 비트 확장 방식을 이용한 암호화 장치 및 방법
US10181944B2 (en) 2015-06-16 2019-01-15 The Athena Group, Inc. Minimizing information leakage during modular exponentiation and elliptic curve point multiplication
US9880811B2 (en) * 2016-01-04 2018-01-30 International Business Machines Corporation Reproducible stochastic rounding for out of order processors
KR102594656B1 (ko) 2016-11-25 2023-10-26 삼성전자주식회사 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
KR101891898B1 (ko) 2016-12-21 2018-08-27 (주)라닉스 수평 상관 전력 분석 공격에 안전한 rsa 암호화 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6571268B1 (en) * 1998-10-06 2003-05-27 Texas Instruments Incorporated Multiplier accumulator circuits
US20110246789A1 (en) * 2010-03-31 2011-10-06 Inside Contactless Integrated circuit protected against horizontal side channel analysis
TW201633208A (zh) * 2014-11-18 2016-09-16 英特爾公司 自行加密儲存裝置之安全控制技術

Also Published As

Publication number Publication date
KR102653018B1 (ko) 2024-03-29
KR20200089145A (ko) 2020-07-24
CN111444518A (zh) 2020-07-24
US20200226294A1 (en) 2020-07-16
US11392725B2 (en) 2022-07-19
TW202044083A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
TWI821501B (zh) 安全處理器、所述安全處理器的操作方法、以及加密或解密資料的方法
Fritzmann et al. Efficient and flexible low-power NTT for lattice-based cryptography
Coron et al. Conversion from arithmetic to boolean masking with logarithmic complexity
Roy et al. HEPCloud: An FPGA-based multicore processor for FV somewhat homomorphic function evaluation
Koziel et al. A high-performance and scalable hardware architecture for isogeny-based cryptography
Dubey et al. BoMaNet: Boolean masking of an entire neural network
Xie et al. Special session: The recent advance in hardware implementation of post-quantum cryptography
Turan et al. Compact and flexible FPGA implementation of Ed25519 and X25519
US20120057695A1 (en) Circuits for modular arithmetic based on the complementation of continued fractions
KR102594656B1 (ko) 보안 프로세서, 이를 포함하는 어플리케이션 프로세서 및 보안 프로세서의 동작 방법
Bisheh Niasar et al. Efficient hardware implementations for elliptic curve cryptography over Curve448
Mazonka et al. Cryptoleq: A heterogeneous abstract machine for encrypted and unencrypted computation
EP1068565B1 (en) Acceleration and security enhancements for elliptic curve and rsa coprocessors
Langhammer et al. Efficient FPGA modular multiplication implementation
Caforio et al. Melting SNOW-V: improved lightweight architectures
Rahman et al. Efficient hardware implementation of 256-bit ECC processor over prime field
Foster et al. Flexible HLS-based implementation of the Karatsuba multiplier targeting homomorphic encryption schemes
US7113593B2 (en) Recursive cryptoaccelerator and recursive VHDL design of logic circuits
Anashin et al. ABC: A new fast flexible stream cipher
Cilardo Variable-latency signed addition on fpgas
Chaves et al. SCA-Resistance for AES: How Cheap Can We Go?
Addabbo et al. Efficient implementation of pseudochaotic piecewise linear maps with high digitization accuracies
Gallin et al. Architecture level optimizations for Kummer based HECC on FPGAs
Mathew et al. Arithmetic operations on encrypted data using fully homomorphic encryption
Kabin et al. Fast and Secure Unified Field Multiplier for ECC Based on the 4-Segment Karatsuba Multiplication