TWI827237B - 密碼加速器以及加解密運算防篡改方法 - Google Patents
密碼加速器以及加解密運算防篡改方法 Download PDFInfo
- Publication number
- TWI827237B TWI827237B TW111133629A TW111133629A TWI827237B TW I827237 B TWI827237 B TW I827237B TW 111133629 A TW111133629 A TW 111133629A TW 111133629 A TW111133629 A TW 111133629A TW I827237 B TWI827237 B TW I827237B
- Authority
- TW
- Taiwan
- Prior art keywords
- encryption
- decryption
- redundant
- normal
- rounds
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000004044 response Effects 0.000 claims abstract description 17
- 238000004364 calculation method Methods 0.000 abstract description 12
- 230000007246 mechanism Effects 0.000 description 38
- 238000004458 analytical method Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 230000015654 memory Effects 0.000 description 6
- 230000002123 temporal effect Effects 0.000 description 3
- 239000000725 suspension Substances 0.000 description 2
- 101001043818 Mus musculus Interleukin-31 receptor subunit alpha Proteins 0.000 description 1
- 101150080148 RR10 gene Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Error Detection And Correction (AREA)
Abstract
一種加解密運算防篡改方法,其中一加解密運算包括複數個正常回合以及複數個冗餘回合。該加解密運算防篡改方法包括:經由亂數產生器得到第一變數x和第二變數y;依據第一變數x將該等正常回合劃分成第一正常部分與第二正常部分、並依據第一變數x及第二變數y將該等冗餘回合劃分成第一冗餘部分與第二冗餘部分;使用一時脈信號依序執行第一正常部分及第一冗餘部分;以及因應於第一冗餘部分完成且第一正常部分的第一運算結果及第一冗餘部分的第二運算結果相同,依序執行第二正常部分及第二冗餘部分,以完成該加解密運算。
Description
本發明有關於一種密碼加速器,且特別是有關於執行差分故障分析的密碼加速器以及加解密運算防篡改方法。
近年來,加解密應用廣泛地使用各種電子產品中,而加解密應用非常重視如何保護機密資訊,以避免運算資料被分析而遭竊取。
在加解密的過程中,電壓毛刺攻擊(Voltage Glitch attack)是通過快速改變輸入到積體電路的電壓,使得積體電路的一些電晶體會受到影響而產生錯誤的輸出值,從而導致處理器會操作錯誤或是對錯誤的資料進行處理。此外,積體電路內隱藏的資訊也會隨著處理器發生的錯誤而洩露出來。
因此,分析運算中的資料是否被攻擊是加解密應用中需解決的問題之一。
本發明提供一種密碼加速器,包括:一加解密電路,用以根據一控制信號,執行一加解密運算,其中該加解密運算包括複數個正常回合以及複數個冗餘回合;一控制器,用以根據一第一變數x和一第二變數y,提供該控制信號至該加解密電路,以控制該加解密電路執行該等正常回合以及該等冗餘回合的順序,其中該第一變數x及該第二變數y為正整數;一第一儲存器,用以儲存執行該等正常回合的狀態;以及一第二儲存器,用以儲存執行該等冗餘回合的狀態;其中該加解密電路依據該第一變數x將該等正常回合劃分成一第一正常部分與一第二正常部分、並依據該第一變數x及該第二變數y將該等冗餘回合劃分成一第一冗餘部分與一第二冗餘部分;其中,該加解密電路使用一時脈信號以依序執行該第一正常部分及該第一冗餘部分,其中,因應於該加解密電路完成該第一冗餘部分並且判斷該第一正常部分的第一運算結果及該第一冗餘部分的第二運算結果相同,該加解密電路依序執行該第二正常部分及該第二冗餘部分,以完成該加解密運算。
在一些實施例中,該第一正常部分的結束時間為該時脈信號的第x個時脈週期,且該第一冗餘部分的結束時間為該時脈信號的第2x個時脈週期。
在一些實施例中,該等正常回合具有第一數量z,且該等正常回合的結束時間為第(z+x)個時脈週期,且該等冗餘回合的結束時間為第(z+x+y)個時脈週期,其中該第一數量z為正整數。
在一些實施例中,因應於該加解密電路完成該第二冗餘部分,該加解密電路判斷該第二正常部分的第三運算結果及該第二冗餘部分的第四運算結果是否相同。因應於該加解密電路判斷該第二
正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果相同,該加解密電路判斷該加解密運算成功,並將該第三運算結果回報為該加解密運算的該加解密結果。因應於該加解密電路判斷該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果不同,該加解密電路係將該加解密運算的加解密結果清除為0。
本發明更提供一種加解密運算防篡改方法,其中一加解密運算包括複數個正常回合以及複數個冗餘回合,該加解密運算防篡改方法包括:經由一亂數產生器,得到一第一變數x和一第二變數y,其中該第一變數x及該第二變數y為正整數;依據該第一變數x將該等正常回合劃分成一第一正常部分與一第二正常部分、並依據該第一變數x及該第二變數y將該等冗餘回合劃分成一第一冗餘部分與一第二冗餘部分;使用一時脈信號依序執行該第一正常部分及該第一冗餘部分;以及因應於該第一冗餘部分完成且該第一正常部分的第一運算結果及該第一冗餘部分的第二運算結果相同,依序執行該第二正常部分及該第二冗餘部分,以完成該加解密運算。
在一些實施例中,該第一正常部分的結束時間為該時脈信號的第x個時脈週期,且該第一冗餘部分的結束時間為該時脈信號的第2x個時脈週期。
在一些實施例中,該等正常回合具有第一數量z,且該等正常回合的結束時間為第(z+x)個時脈週期,且該等冗餘回合的結束時間為第(z+x+y)個時脈週期,其中該第一數量z為正整數。
在一些實施例中,該方法更包括:因應於完成該第二冗餘部分,判斷該第二正常部分的第三運算結果及該第二冗餘部分的第四運算結果是否相同。
在一些實施例中,該方法更包括:因應於該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果相同,判斷該加解密運算成功,並將該第三運算結果回報為該加解密運算的該加解密結果;以及因應於該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果不同,將該加解密運算的加解密結果清除為0。
10:匯流排
20:密碼加速器
30:匯流排介面
40:輸入/輸出緩衝器
50:控制器
60:加解密電路
70、80:儲存器
110:處理器
120:正常模式有限狀態機單元
130:分析模式有限狀態機單元
140:亂數產生器
150:多工器
400、500、600、700:時間冗餘檢查機制
601-604、701-704:範圍
CTRL:控制信號
Comp_State:信號
IN:輸入資料
Normal_FSM、TRRSM_FSM:有限狀態機資訊
NR:正常回合
O1-O10:運算結果
R1-R10:回合
NR0:第一正常部分
NR1:第二正常部分
RR0:第一冗餘部分
RR1:第二冗餘部分
RC:隨機時脈週期
RNG:隨機變數
RR:冗餘回合
x:第一變數
y:第二變數
S810-S840:步驟
第1圖為依據本發明一些實施例所述之執行加解密演算法的示意圖。
第2圖為依據本發明一些實施例所述之密碼加速器。
第3圖為依據本發明一些實施例所述之第2圖的控制器。
第4圖為使用傳統時間冗餘檢查機制的示意圖。
第5圖為依據本發明一實施例所述之執行加解密運算的時間冗餘檢查機制的示意圖。
第6圖為依據本發明另一實施例所述之執行加解密運算的時間冗餘檢查機制的示意圖。
第7圖為依據本發明又一實施例所述之執行加解密運算的時間冗餘檢查機制的示意圖。
第8圖為依據本發明一實施例中之加解密運算防篡改方法的流程圖。
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
第1圖為依據本發明一些實施例所述之執行加解密演算法的示意圖。在一些實施例中,加解密演算法可以是進階加密標準(Advanced Encryption Standard,AES)演算法,其是現今被多方分析且廣為使用的演算法。在一些實施例中,加解密演算法可以是查查(ChaCha)演算法。在一些實施例中,加解密演算法可以是SM4分組密碼演算法。
在第1圖中,加解密演算法會執行多次的回合(round)。此外,每一回合是使用相同的電路來對前一回合的狀態執行相同或相似的運算。在第1圖中,加解密演算法會執行10個回合R1-R10。首先,根據輸入資料IN,第一回合R1會被執行,以得到運算結果O1。接著,第一回合R1的運算結果O1會被代入到第二回合R2進行運算,以得到輸出O2。接著,第二回合R2的運算結果O2會被代入到第三回合R3進行運算,以得到運算結果O3並被代入到第四回合R4。以此類推,第四回合R4至第十回合R10會依序被執行,並分別產生運算結果O4至運算結果O10。於是,完成具有10個回合R1-R10的加解密演算之後,可得到最後的運算結果O10。
在積體電路執行加解密(加密/解密)運算的過程中,可透過正常回合R1-R10以及冗餘回合R1-R10來執行差分故障(differential fault)分析,以判斷加解密過程是否受到惡意攻擊(例如電壓毛刺(Voltage Glitch)攻擊)。首先,可根據輸入資料的初始狀態來執行正常回合R1-R10(以下稱為正常回合NR1-NR10),並得到由正常回合NR10所產生的正常回合運算結果NO10。接著,根據輸入資料的初始狀態來執行冗餘的回合R1-R10(以下稱為冗餘回合RR1-RR10),並得到由冗餘回合RR10所產生的冗餘回合運算結果
RO10。需注意的是,每一冗餘回合RR的操作是相同於所對應的正常回合NR。
接著,判斷正常回合運算結果NO10與冗餘回合運算結果RO10是否相同。如果正常回合運算結果NO10與冗餘回合運算結果RO10一致,則表示加解密運算並未發生故障(即加解密過程未被攻擊),故可將正常回合運算結果NO10傳送給其他電路,以執行後續操作。相反地,如果正常回合運算結果NO10不同於冗餘回合運算結果RO10,則表示加解密運算發生故障(即加解密過程被攻擊)。於是,積體電路會重新執行正常回合NR1-NR10以及冗餘回合RR1-RR10,直到正常回合運算結果NO10與冗餘回合運算結果RO10會一致。在一些實施例中,當正常回合運算結果NO10不同於冗餘回合運算結果RO10時,積體電路會直接結束加解密運算,並通知其他電路(例如藉由傳送特定值)加解密過程被攻擊而運算失敗。
第2圖為依據本發明一些實施例所述之密碼加速器(Cipher Accelerator)20。密碼加速器20實施於積體電路中,用以對經由匯流排10來自其他電路的資料進行加解密,並將已加密/已解密的資料傳送回原來的電路或是傳送至其他電路。
密碼加速器20包括匯流排介面30、輸入/輸出緩衝器40、控制器50、加解密電路60、儲存器70和儲存器80。在一些實施例中,儲存器70和80例如為揮發性記憶體、非揮發性記憶體或暫存器,但本發明並不限於此。匯流排介面30耦接於匯流排10。匯流排介面30可將匯流排10上其他電路的指令傳送至控制器50,並將控制器50所提供的回應傳送至匯流排10。此外,匯流排介面30可將欲加密或欲解密的資料傳送至輸入/輸出緩衝器40,並將來自輸入/輸出緩衝器40的已
加密或已解密的資料傳送至匯流排10。
相應於來自匯流排介面30的指令,控制器50會提供控制信號至加解密電路60,而控制信號CTRL包括加解密運算相關的有限狀態機(finite state machine,FSM)資訊。在一些實施例中,控制器50可提供具有對應於正常模式的有限狀態機資訊或是對應於差分故障分析模式的有限狀態機資訊的控制信號CTRL至加解密電路60。
在正常模式下,控制信號CTRL僅指示加解密電路60執行正常加解密運算而不會執行冗餘加解密運算,即加解密電路60僅執行正常回合NR。因此,在完成正常回合NR之後,加解密電路60會得到已加密/已解密資料,並將已加密/已解密資料傳送至輸入/輸出緩衝器40。於是,已加密/已解密資料會經由匯流排介面30而提供至匯流排10,以供其他電路執行後續程序。
在差分故障分析模式下,除了正常加解密運算之外,控制信號CTRL更指示加解密電路60執行冗餘加解密運算,即加解密電路60會進一步執行冗餘回合RR。在完成正常加解密運算與冗餘加解密運算之後,加解密電路60會將兩者的結果進行比較,以判斷正常加解密運算與冗餘加解密運算的運算結果是否一致。如果正常加解密運算與冗餘加解密運算的運算結果不一致,則加解密電路60會提供信號Comp_State至控制器50,以便通知控制器50有故障發生。反之,如果正常加解密運算與冗餘加解密運算的運算結果為相同,加解密電路60會將已加密/已解密資料傳送至輸入/輸出緩衝器40。於是,已加密/已解密資料會經由匯流排介面30而提供至匯流排10,以供其他電路執行後續程序。
在差分故障分析模式下,密碼加速器20執行正常加解密運算過程中所產生的結果(加解密狀態)是儲存在儲存器70,而執行冗餘加解密運算過程中所產生的結果(加解密狀態)是儲存在儲存器80。意即,當密碼加速器20欲判斷正常加解密運算與冗餘加解密運算的運算結果是否一致時,密碼加速器20可讀取在儲存器70中的正常加解密運算的運算結果及在儲存器80中的冗餘加解密運算的運算結果以進行比較。此外,執行冗餘加解密運算所需的冗餘回合RR的數量會少於執行正常加解密運算所需的正常回合NR的數量。換言之,執行冗餘加解密運算所需的時間(即時脈週期的數量)是少於執行正常加解密運算所需的時間(即時脈週期的數量)。因此,使用密碼加速器20可加速差分故障分析操作並減少所需要的分析時間。
第3圖為依據本發明一些實施例所述之第2圖的控制器50。控制器50包括多工器(multiplexer,MUX)150、處理器110、正常模式有限狀態機單元120、分析模式有限狀態機單元130以及亂數產生器140。在第3圖中,為了簡化說明,控制器50僅描述相關的電路,而其他電路將省略。
在正常模式下,處理器110會控制正常模式有限狀態機單元120產生對應於正常加解密運算的有限狀態機資訊Normal_FSM。此外,在差分故障分析模式下,處理器110會控制分析模式有限狀態機單元130產生對應於正常加解密運算結合冗餘加解密運算的有限狀態機資訊TRRSM_FSM。值得注意的是,分析模式有限狀態機單元130會根據來自亂數產生器的隨機變數RNG而提供有限狀態機資訊TRRSM_FSM。此外,執行冗餘加解密運算所需的冗餘回合RR的數量是由隨機變數RNG(例如可包含第一變數x及/或第二變數y)
所決定。換言之,每次執行冗餘加解密運算所需的冗餘回合RR的數量是可變的。
同時參考第2圖和第3圖,在正常模式下,處理器110會控制多工器150選擇來自正常模式有限狀態機單元120的有限狀態機資訊Normal_FSM,以作為控制信號CTRL。此外,在差分故障分析模式下,處理器110會控制多工器150選擇來自分析模式有限狀態機單元130的有限狀態機資訊TRRSM_FSM,以作為控制信號CTRL。
如前所述,在差分故障分析模式下,加解密電路60會判斷正常加解密運算與冗餘加解密運算的運算結果是否一致,並提供信號Comp_State至控制器50,以便通知控制器50是否有故障發生。當信號Comp_State指示有故障發生時,處理器110會控制分析模式有限狀態機單元130再次產生有限狀態機資訊TRRSM_FSM,以便控制加解密電路60重新執行正常加解密運算與冗餘加解密運算。在一些實施例中,當信號Comp_State指示有故障發生時,處理器110會直接結束加解密運算,並通知其他電路(例如藉由傳送特定值)加解密過程被攻擊而運算失敗。
第4圖為使用傳統時間冗餘檢查機制的示意圖。請同時參考第3圖及第4圖。
在第4圖之傳統的時間冗餘檢查機制400中,為了便於說明,假設正常回合NR及冗餘回合RR的總數量均為32,且每執行一個正常回合或冗餘回合需耗費一個時脈週期。首先,密碼加速器20會先將正常回合NR及冗餘回合RR的加解密狀態設定為初始狀態。接著,密碼加速器20先執行完32個正常回合NR,再切換到冗餘回合RR的加解密狀態,再從頭執行32個冗餘回合RR。最後,密碼加速器20檢
查正常回合NR及冗餘回合RR的加解密狀態是否相同。若密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態不同,則表示在加解密的過程中有不明故障發生,故密碼加速器20會將加解密結果清除為0。
第5圖為依據本發明一實施例所述之執行加解密運算的時間冗餘檢查機制的示意圖。請同時參考第3圖及第5圖。
為了方便說明,假設第5圖中正常回合NR的總數量為32,即加解密運算需要執行正常回合NR1~NR32。當正常回合NR的總數量為32時,第一變數x可為介於1至27之間的隨機整數。首先,密碼加速器20將正常回合NR的加解密狀態設定為初始狀態,並開始進行正常回合NR的運作。當正常回合NR執行到第x個時脈週期(即第x回合),密碼加速器20將正常回合NR的加解密狀態複製到冗餘回合RR的加解密狀態。當完成32個正常回合NR後,密碼加速器20則開始執行y個隨機時脈週期RC(random cycles)。等待y個隨機時脈週期RC執行完畢後,密碼加速器20開始執行冗餘回合RR之運算。因為冗餘回合RR的加解密狀態為正常回合NR第x個時脈週期的加解密狀態,故密碼加速器20只會執行(32-x)個時脈週期的冗餘回合RR(即(32-x)個冗餘回合RR)。因此,在此實施例中,冗餘回合RR將會在(64-x+y)時脈週期結束。
第6圖為依據本發明另一實施例所述之執行加解密運算的時間冗餘檢查機制的示意圖。請同時參考第3圖及第6圖。
在此實施例中,密碼加速器20係設定第一變數x及第二變數y,且第一變數x及第二變數y均為隨機整數。當正常回合NR的總數量為32時,第一變數x可為介於1至27之間的隨機整數,且第二變
數y可為介於0至(32-x)之間的隨機整數。首先,密碼加速器20將正常回合NR的加解密狀態設定為初始狀態,並開始進行正常回合NR的運算。當正常回合NR執行到第x個時脈週期(即第x回合),密碼加速器20將正常回合NR的加解密狀態複製到冗餘回合RR的加解密狀態。接著,密碼加速器20會轉換到冗餘回合RR的加解密狀態,並接著執行冗餘回合RR的運算直到第(x+y)個時脈週期。在範圍601中(例如對應於第1個時脈週期至第x個時脈週期)的正常回合NR例如可稱為第一正常部分,且在範圍602中(例如對應於第(x+1)個時脈週期至第(x+y)個時脈週期)的冗餘回合RR例如可稱為第一冗餘部分。
接著,密碼加速器20再轉換到正常回合NR的加解密狀態並完成剩餘的正常回合NR的運算。密碼加速器20會在第(32+y)個時脈週期完成,並轉換至冗餘回合RR的加解密狀態並完成剩餘的冗餘回合RR的運算,意即在第(64-x)個時脈週期完成冗餘回合RR的運算。
第7圖為依據本發明又一實施例所述之執行加解密運算的時間冗餘檢查機制的示意圖。請同時參考第3圖及第7圖。
在此實施例中,密碼加速器20係設定第一變數x及第二變數y。假設密碼加速器20使用SM4分組密碼演算法,正常回合NR的總數量為32,且第一變數x及第二變數y均為介於4至11之間的隨機整數,意即4x,y11。舉例來說,當第一變數x大於或等於4,可避免新穎差分故障分析方法主要攻擊加解密運算的前4個回合的情況。當第二變數y大於或等於4,可避免大部分差分故障分析方法主要是攻擊加解密運算的後4個回合的情況。此外,因為SM4分組密碼演算法的正常回合數量為32,故第一變數x及第二變數y的總和會小於或等於32。若
亂數產生器140產生3位元的隨機亂數,其數值會介於0至7之間,且再考量到第一變數x及第二變數y之限制,則可得到第一變數x之範圍為4+(0~7)=4~11,且第二變數y之範圍同樣為4+(0~7)=4~11,此時,第一變數x及第二變數y之總和會介於8至22之間。若亂數產生器140產生3位元以上的隨機亂數,則密碼加速器20需額外配置檢查電路(未繪示)以檢查第一變數x及第二變數y之總和是否會超過32(意即SM4分組密碼演算法的正常回合NR之總數量),並在該總和超過32時,通知亂數產生器140以重新產生第一變數x及第二變數y。在範圍701中(例如對應於第1個時脈週期至第x個時脈週期)的正常回合NR例如可稱為第一正常部分NR0,且在範圍702中(例如對應於第(x+1)個時脈週期至第2x個時脈週期)的冗餘回合RR例如可稱為第一冗餘部分RR0。首先,密碼加速器20將正常回合NR及冗餘回合RR的加解密狀態均設定為初始狀態,並開始進行正常回合NR的運算。當正常回合NR執行到第x個時脈週期(即第x回合),密碼加速器20會轉換到冗餘回合RR的加解密狀態,並接著執行冗餘回合RR的運算直到第2x個時脈週期,密碼加速器20會先檢查第一正常部分NR0及第一冗餘部分RR0的加解密狀態是否一致。
當密碼加速器20判斷第一正常部分NR0及第一冗餘部分RR0的加解密狀態不一致,密碼加速器20會結束所有正常回合NR及冗餘回合RR的運算並回傳加解密結果為0。當密碼加速器20判斷第一正常部分NR0及第一冗餘部分RR0的加解密狀態(例如為運算結果)一致,密碼加速器20會再傳換到正常回合NR的加解密狀態,並執行正常回合NR的運算直到第(32+x-y)時脈週期,密碼加速器20會再將正常回合NR的加解密狀態複製到冗餘回合RR的加解密狀態,並繼續進
行剩餘的正常回合NR(即第二正常部分NR1)的運算。因此,密碼加速器20在第(32+x)個時脈週期會完成所有正常回合NR的運算,並且切換至冗餘回合RR的加解密狀態以繼續進行剩餘的冗餘回合RR的運算。因此,密碼加速器20在第(32+x+y)個時脈週期會完成所有冗餘回合RR(即第二冗餘部分RR1)的運算,並再度檢查正常回合NR及冗餘回合RR的加解密狀態是否一致。在範圍703中(例如對應於第(2x+1)個時脈週期至第(32+x)個時脈週期)的正常回合NR例如可稱為第二正常部分NR1,且在範圍704中(例如對應於第(32+x+1)個時脈週期至第(32+x+y)個時脈週期)的冗餘回合RR例如可稱為第二冗餘部分RR1。
此時,當密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態不一致,密碼加速器20會回傳加解密結果為0。當密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態一致,密碼加速器20則會回傳正常回合NR的運算結果。
請再一併參考第4圖~第7圖。在第4圖中的正常回合NR及冗餘回合RR的結束時間分別為第32個時脈週期及第64個時脈週期。對於使用差分故障分析法的攻擊者來說,只要可以在第32個時脈週期及第64個時脈週期製造相同的故障,則第4圖中的時間冗餘機制會無法偵測出錯誤而造成失效。再者,密碼加速器20的攻擊者為了要有效率地找出在晶片中的加解密方程式,使用差分故障分析法通常會在加解密運算結束前的幾個時脈週期才開始進行攻擊。
相對於第4圖之傳統的時間冗餘檢查機制400,第5圖的時間冗餘檢查機制500的冗餘回合RR會在第(64-x+y)個時脈週期結束(即加解密運算的整體執行時間),故攻擊者必需猜測冗餘回合RR的結束時間(即第一變數x)及隨機時脈週期的數量(即第二變數y)。然
而,時間冗餘檢查機制500中的第二變數y有機會讓加解密運算的整體執行時間超過傳統的時間冗餘檢查機制400的64個時脈週期,且時間冗餘檢查機制500的正常回合NR的結束時間是固定的,例如第32個正常回合的結束時間NR[32]=32(即表示第32個時脈週期)。此外,時間冗餘檢查機制500的冗餘回合RR的結束時間為第(64-x+y)個時脈週期,對於攻擊者而言,等同於僅需猜測一個隨機變數(-x+y),故時間冗餘檢查機制500的安全性雖然比傳統的時間冗餘檢查機制400為佳,但仍然會有上述的安全性問題。
在第6圖的時間冗餘檢查機制600中,加解密運算的整體執行時間則降低為(64-x)個時脈週期,且攻擊者需要同時猜測冗餘回合RR的結束時間(例如與第一變數x有關)及正常回合NR的結束時間(例如與第二變數y有關)。因此,相較於時間冗餘檢查機制500,時間冗餘檢查機制600同時增加了攻擊難度並降低加解密運算的整體執行時間。然而,對於SM4分組密碼演算法來說,密碼加速器20的攻擊者可使用某些新穎的差分故障分析方法以利用SM4加密運算開始的前4個回合具有內部碰撞的弱點,再利用位元組導向隨機故障模組的方法以將SM4金鑰限制在224或248種可能性。在上述數量的可能性中,攻擊者即可利用窮舉法進行破解以得到SM4金鑰。對於時間冗餘檢查機制500及600而言,均無法有效檢查出加解密運算的前4個回合是否發生故障。雖然傳統的時間冗餘檢查機制400可以檢查所有回合是否發生故障,但其正常回合NR及冗餘回合RR的開始時間及結束時間均為固定是其缺點,且上述新穎的差分故障分析方法可在正常回合NR及冗餘回合RR中製造相同故障而順利成功攻擊而取得加解密運算的金鑰。
在第7圖的時間冗餘檢查機制700則採取了雙重檢查
機制以提高差分故障分析方法的困難度,故可大幅降低加解密運算的資料被攻擊者篡改的機會。舉例來說,若攻擊者同樣使用上述新穎的差分故障分析方法以在加解密運算的前幾個回合插入故障,則攻擊者需要先猜測出檢查第一正常部分的加解密狀態及第一冗餘部分的加解密狀態的中止時間點(例如分別為第x個及第2x個時脈週期)。若攻擊者所使用的差分故障分析方法在加解密運算的後幾個回合插入故障,攻擊者需要猜測第二正常部分的加解密狀態及第二冗餘部分的加解密狀態的中止時間點(例如分別為第(32+x)個及第(32+x+y)個時脈週期)。換言之,本發明所提出的時間冗餘檢查機制700可以檢查在加解密運算開始的前幾個時脈週期或結束前的幾個時脈週期是否有不明故障發生,故可大幅提昇差分故障分析方法的困難度。
假設正常回合NR的數量為32,則時間冗餘檢查機制400~700的執行時間TEXE、正常回合NR前四回合的開始時間TNR1-4、冗餘回合RR前四回合的開始時間TRR1-4、正常回合NR最後回合的開始時間TNR_last、及冗餘回合RR最後回合的開始時間TRR_last如表1所示:
其中在時間冗餘檢查機制400~700中的變數x及y之定義及範圍可參考第4~7圖的實施例,故於此不再重複說明。註1:當第一變數x為1時,冗餘回合RR的前四回合才能都執行到。
如表1所示,本發明所提出的時間冗餘檢查機制700的整體執行時間TEXE比傳統的時間冗餘檢查機制400短,且整體執行時間TEXE是由隨機值(包括第一變數x及第二變數y)所保護。此外,正常回合NR及冗餘回合RR最後回合的開始時間均由隨機值(例如分別為第一變數x、以及第一變數x+第二變數y)保護,且冗餘回合RR的前四回合的開始時間有隨機值(例如第一變數x)保護。再者,時間冗餘檢查機制700更可有效地檢查加解密運算開始後的前幾個時脈週期及結束前的幾個時脈週期的故障發生情況。因此,相較於傳統的時間冗餘檢查機制400或是時間冗餘檢查機制500及600,時間冗餘檢查機制700可讓攻擊者更難以在加解密運算的開始後的前幾個時脈週期或結束前的幾個時脈週期製造相同的故障,進而降低時間冗餘檢查機制的失效機率,故可增加密碼加速器的安全性。
第8圖為依據本發明一實施例中之加解密運算防篡改方法的流程圖。請同時參考第3圖、第7圖及第8圖。
在步驟S810,經由一亂數產生器,得到一第一變數x和一第二變數y,其中該第一變數x及該第二變數y為正整數。在一實施例中,假設正常回合NR的總數量為32時,第一變數x及第二變數y均為介於4至11之間的隨機整數。
在步驟S820,依據該第一變數x將該等正常回合劃
分成一第一正常部分與一第二正常部分、並依據該第一變數x及該第二變數y將該等冗餘回合劃分成一第一冗餘部分與一第二冗餘部分。舉例來說,在第7圖中的範圍701及703可分別表示正常回合NR的第一正常部分及第二正常部分,且範圍702及704可分別表示冗餘回合RR的第一冗餘部分及第二冗餘部分。
在步驟S830,使用一時脈信號依序執行該第一正常部分及該第一冗餘部分。舉例來說,第一正常部分例如包括x個正常回合NR,且第一冗餘部分包括x個冗餘回合RR。密碼加速器20將正常回合NR及冗餘回合RR的加解密狀態均設定為初始狀態,並開始進行正常回合NR的運算。當正常回合NR執行到第x個時脈週期(即第x回合),密碼加速器20會轉換到冗餘回合RR的加解密狀態,並接著執行冗餘回合RR的運算直到第2x個時脈週期。
在步驟S840,因應於該第一冗餘部分完成且該第一正常部分的第一運算結果及該第一冗餘部分的第二運算結果相同,依序執行該第二正常部分及該第二冗餘部分,以完成該加解密運算。舉例來說,在第2x個時脈週期,密碼加速器20已完成第一冗餘部分的運算,且密碼加速器20會先檢查第一正常部分及第一冗餘部分的加解密狀態是否一致,例如比較第一正常部分的第一運算結果及第一冗餘部分的第二運算結果。當密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態不一致,密碼加速器20會結束所有正常回合NR及冗餘回合RR的運算並回傳加解密結果為0。當密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態(例如為運算結果)一致,密碼加速器20會再轉換到正常回合NR的加解密狀態,並執行正常回合NR的運算直到第(32+x-y)時脈週期,密碼加速器20會再將正常回合NR的加
解密狀態複製到冗餘回合RR的加解密狀態,並繼續進行剩餘的正常回合NR(即第二正常部分)的運算。因此,密碼加速器20在第(32+x)個時脈週期會完成所有正常回合NR的運算,並且切換至冗餘回合RR的加解密狀態以繼續進行剩餘的冗餘回合RR(即第二冗餘部分)的運算。因此,密碼加速器20在第(32+x+y)個時脈週期會完成所有冗餘回合RR的運算。
需注意的是,當密碼加速器20完成第二正常部分及第二冗餘部分的運算後,密碼加速器20會再度檢查正常回合NR及冗餘回合RR的加解密狀態是否一致,例如比較第二正常部分的第三運算結及第二冗餘部分的第四運算結果。此時,當密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態不一致,密碼加速器20會回傳加解密結果為0。當密碼加速器20判斷正常回合NR及冗餘回合RR的加解密狀態一致,密碼加速器20則會回傳正常回合NR的運算結果。
綜上所述,本發明係提供一種密碼加速器及一種加解密運算防篡改方法,其可採用雙重檢查機制以提高差分故障分析方法的困難度,並且縮短加解密運算的整體執行時間、以及可有效地檢查加解密運算開始後的前幾個時脈週期及結束前的幾個時脈週期的故障發生情況,進而降低時間冗餘檢查機制的失效機率以及增加密碼加速器的安全性。
雖然本發明已以較佳實施例發明如上,然其並非用以限定本發明,任何所屬技術領域中包括通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
S810-S840:步驟
Claims (10)
- 一種密碼加速器,包括: 一加解密電路,用以根據一控制信號,執行一加解密運算,其中該加解密運算包括複數個正常回合以及複數個冗餘回合; 一控制器,用以根據一第一變數x和一第二變數y,提供該控制信號至該加解密電路,以控制該加解密電路執行該等正常回合以及該等冗餘回合的順序,其中該第一變數x及該第二變數y為正整數; 一第一儲存器,用以儲存執行該等正常回合的狀態;以及 一第二儲存器,用以儲存執行該等冗餘回合的狀態; 其中該加解密電路依據該第一變數x將該等正常回合劃分成一第一正常部分與一第二正常部分、並依據該第一變數x及該第二變數y將該等冗餘回合劃分成一第一冗餘部分與一第二冗餘部分; 其中,該加解密電路使用一時脈信號以依序執行該第一正常部分及該第一冗餘部分; 其中,因應於該加解密電路完成該第一冗餘部分並且判斷該第一正常部分的第一運算結果及該第一冗餘部分的第二運算結果相同,該加解密電路依序執行該第二正常部分及該第二冗餘部分,以完成該加解密運算。
- 如請求項1之密碼加速器,其中該第一正常部分的結束時間為該時脈信號的第x個時脈週期,且該第一冗餘部分的結束時間為該時脈信號的第2x個時脈週期。
- 如請求項1之密碼加速器,其中該等正常回合具有第一數量z,且該等正常回合的結束時間為第(z+x)個時脈週期,且該等冗餘回合的結束時間為第(z+x+y)個時脈週期,其中該第一數量z為正整數。
- 如請求項1之密碼加速器,其中,因應於該加解密電路完成該第二冗餘部分,該加解密電路判斷該第二正常部分的第三運算結果及該第二冗餘部分的第四運算結果是否相同。
- 如請求項4之密碼加速器,其中,因應於該加解密電路判斷該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果相同,該加解密電路判斷該加解密運算成功,並將該第三運算結果回報為該加解密運算的該加解密結果; 其中,因應於該加解密電路判斷該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果不同,該加解密電路係將該加解密運算的加解密結果清除為0。
- 一種加解密運算防篡改方法,其中一加解密運算包括複數個正常回合以及複數個冗餘回合,該加解密運算防篡改方法包括: 經由一亂數產生器,得到一第一變數x和一第二變數y,其中該第一變數x及該第二變數y為正整數; 依據該第一變數x將該等正常回合劃分成一第一正常部分與一第二正常部分、並依據該第一變數x及該第二變數y將該等冗餘回合劃分成一第一冗餘部分與一第二冗餘部分; 使用一時脈信號依序執行該第一正常部分及該第一冗餘部分;以及 因應於該第一冗餘部分完成且該第一正常部分的第一運算結果及該第一冗餘部分的第二運算結果相同,依序執行該第二正常部分及該第二冗餘部分,以完成該加解密運算。
- 如請求項6之加解密運算防篡改方法,其中該第一正常部分的結束時間為該時脈信號的第x個時脈週期,且該第一冗餘部分的結束時間為該時脈信號的第2x個時脈週期。
- 如請求項6之加解密運算防篡改方法,其中該等正常回合具有第一數量z,且該等正常回合的結束時間為第(z+x)個時脈週期,且該等冗餘回合的結束時間為第(z+x+y)個時脈週期,其中該第一數量z為正整數。
- 如請求項6之加解密運算防篡改方法,更包括: 因應於完成該第二冗餘部分,判斷該第二正常部分的第三運算結果及該第二冗餘部分的第四運算結果是否相同。
- 如請求項9之加解密運算防篡改方法,更包括: 因應於該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果相同,判斷該加解密運算成功,並將該第三運算結果回報為該加解密運算的該加解密結果;以及 因應於該第二正常部分的該第三運算結果及該第二冗餘部分的該第四運算結果不同,將該加解密運算的加解密結果清除為0。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111133629A TWI827237B (zh) | 2022-09-06 | 2022-09-06 | 密碼加速器以及加解密運算防篡改方法 |
CN202310881650.0A CN117675171A (zh) | 2022-09-06 | 2023-07-18 | 密码加速器以及加解密运算防篡改方法 |
US18/460,899 US20240078345A1 (en) | 2022-09-06 | 2023-09-05 | Cipher accelerator and method for tamper protection in cryptographic operations |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW111133629A TWI827237B (zh) | 2022-09-06 | 2022-09-06 | 密碼加速器以及加解密運算防篡改方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI827237B true TWI827237B (zh) | 2023-12-21 |
TW202412486A TW202412486A (zh) | 2024-03-16 |
Family
ID=90053368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111133629A TWI827237B (zh) | 2022-09-06 | 2022-09-06 | 密碼加速器以及加解密運算防篡改方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240078345A1 (zh) |
CN (1) | CN117675171A (zh) |
TW (1) | TWI827237B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2720402A1 (en) * | 2012-10-12 | 2014-04-16 | Altis Semiconductor | Hardware encryption and decryption apparatus using a N round AES algorithm |
TW201904228A (zh) * | 2017-03-20 | 2019-01-16 | 南洋理工大學 | 用以反制側通道攻擊的硬體安全 |
CN111555862A (zh) * | 2020-05-13 | 2020-08-18 | 华南师范大学 | 基于掩码保护的随机冗余轮函数的白盒aes实现方法 |
-
2022
- 2022-09-06 TW TW111133629A patent/TWI827237B/zh active
-
2023
- 2023-07-18 CN CN202310881650.0A patent/CN117675171A/zh active Pending
- 2023-09-05 US US18/460,899 patent/US20240078345A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2720402A1 (en) * | 2012-10-12 | 2014-04-16 | Altis Semiconductor | Hardware encryption and decryption apparatus using a N round AES algorithm |
TW201904228A (zh) * | 2017-03-20 | 2019-01-16 | 南洋理工大學 | 用以反制側通道攻擊的硬體安全 |
CN111555862A (zh) * | 2020-05-13 | 2020-08-18 | 华南师范大学 | 基于掩码保护的随机冗余轮函数的白盒aes实现方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202412486A (zh) | 2024-03-16 |
CN117675171A (zh) | 2024-03-08 |
US20240078345A1 (en) | 2024-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dupuis et al. | A novel hardware logic encryption technique for thwarting illegal overproduction and hardware trojans | |
KR101772002B1 (ko) | 통계적 프로세싱 | |
US8799679B2 (en) | Message authentication code pre-computation with applications to secure memory | |
US8826035B2 (en) | Cumulative integrity check value (ICV) processor based memory content protection | |
EP3577642B1 (en) | Methods and devices for protecting data | |
KR20180094118A (ko) | 메모리 동작 암호화 | |
US20200089921A1 (en) | Tamper-resistant component networks | |
US8200727B2 (en) | Method and apparatus for verifying and diversifying randomness | |
CN109766729B (zh) | 一种防御硬件木马的集成电路及其加密方法 | |
EP3214567B1 (en) | Secure external update of memory content for a certain system on chip | |
US20170046537A1 (en) | Electronic device against side channel attacks | |
JP4386766B2 (ja) | データ処理装置における誤り検出 | |
TWI827237B (zh) | 密碼加速器以及加解密運算防篡改方法 | |
US12015693B2 (en) | Information security protection system and information security protection method | |
TWI785952B (zh) | 密碼加速器以及加解密運算的差分故障分析方法 | |
CN113228012A (zh) | 用于鉴别fpga配置的方法和设备 | |
EP4307155A1 (en) | Method and circuit for protecting an electronic device from a side-channel attack | |
Weidler et al. | On the Limitations of Obfuscating Redundant Circuits in Frustrating Hardware Trojan Implantation | |
EP3479287A1 (en) | Secure loading of secret data to non-protected hardware registers | |
US20210173946A1 (en) | Method for executing a computer program by means of an electronic apparatus | |
Garay et al. | MAC precomputation with applications to secure memory | |
CN116432202A (zh) | 一种高隐蔽性硬件木马电路及其控制方法 | |
Garay et al. | E cient Techniques for Securing O-Chip Memory |