TWI818221B - 可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 - Google Patents
可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 Download PDFInfo
- Publication number
- TWI818221B TWI818221B TW109147180A TW109147180A TWI818221B TW I818221 B TWI818221 B TW I818221B TW 109147180 A TW109147180 A TW 109147180A TW 109147180 A TW109147180 A TW 109147180A TW I818221 B TWI818221 B TW I818221B
- Authority
- TW
- Taiwan
- Prior art keywords
- debugging
- function
- debug
- chip
- user
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 26
- 230000006870 function Effects 0.000 claims description 192
- 238000012795 verification Methods 0.000 claims description 14
- 230000003213 activating effect Effects 0.000 claims 1
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 238000004891 communication Methods 0.000 description 8
- CNQCVBJFEGMYDW-UHFFFAOYSA-N lawrencium atom Chemical compound [Lr] CNQCVBJFEGMYDW-UHFFFAOYSA-N 0.000 description 5
- 235000012431 wafers Nutrition 0.000 description 4
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- 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
Abstract
一種可認證晶片外部除錯功能韌體程式與除錯使用者的晶片,其運行安全啟動韌體執行安全啟動流程以驗證是否可以執行自外部儲存裝置的已簽章程式中的除錯功能韌體程式,以及在成功驗證已簽章程式後,透過運行除錯功能韌體程式來執行已簽章程式中的除錯使用者認證演算法,藉此啟動除錯使用者認證流程。在驗證與晶片連接之外部的除錯工具的除錯使用者為合法的除錯使用者,則允許除錯工具可以依據其權限使用晶片中的除錯功能。
Description
本發明涉及一種可認證除錯使用者的晶片與方法,且特別是一種可認證晶片外部除錯功能韌體程式(off-chip debug firmware program)與除錯工具之除錯使用者的晶片與方法。
在一個具有微處理器的晶片中,因所執行的軟體程式較複雜,所需的儲存空間較大,因此要執行的軟體程式或韌體程式一般不會儲存於晶片中,而是倚賴晶片外的外部儲存裝置來存放晶片所需之軟體程式或韌體程式,故此類晶片通常沒有大容量(千個位元組以上)的非揮發性記憶體(Non-volatile memory)單元,而是僅有數個小容量(千個位元組以下)的非揮發性記憶體單元。數個小容量(千個位元組以下)的非揮發性記憶體單元則用以儲存關聯於晶片特性的設定值,且基於成本考量或其他因素,數個小容量(千個位元組以下)的非揮發性記憶體單元通常為一次性燒寫(One-time program)的非揮發性記憶體單元,例如,唯讀記憶體(Read-Only Memory)單元。
晶片在開發過程中,尤其是開發底層的軟體程式或韌體程式時,通常需要使用到晶片外部的除錯工具來進行除錯,因此一般晶片必須配備有至少一個以上的除錯功能,其中除錯功能用於讓外部之除錯工具存取晶片資源或
控制晶片之處理器。然而,當晶片一旦進入開發階段,晶片中即可能存在有價值的資產。為保護這些資產的安全,這些除錯功能的權限管理便顯得相當重要。
本發明的實施例提供一種可認證晶片外部除錯功能韌體程式之除錯使用者與除錯工具的晶片與方法,所述晶片或方法可以對無法儲存除錯軟體程式或除錯韌體程式之晶片進行除錯功能管理,以藉此避免未被認證與授權之外部的除錯使用者透過除錯工具隨意地存取晶片與獲得晶片上具有價值的資產。
本發明的實施例提供一種可認證晶片外部除錯功能韌體程式與除錯使用者的晶片,包括:非揮發性記憶體,儲存有安全啟動(Secure boot)韌體、安全啟動公鑰與除錯功能預設值;除錯功能控制元件,包括至少一除錯功能以及用於暫存至少一除錯功能狀態值的暫存器,其中所述暫存器暫存的所述除錯功能狀態值之初始值為所述除錯功能預設值;揮發性記憶體;以及至少一處理器,用於運行所述安全啟動韌體,以根據所述安全啟動公鑰驗證外部儲存裝置儲存的已簽章程式,並在成功驗證所述已簽章程式後,運行所述已簽章程式的除錯功能韌體程式,以透過所述已簽章程式的除錯使用者認證演算法驗證所述晶片連接之外部的除錯工具的除錯使用者是否為合法的除錯使用者,其中所述除錯功能可供合法的所述除錯使用者所使用。
可選地,已簽章程式更包括除錯使用者與對應除錯功能權限,以讓合法的所述除錯使用者依照其權限使用所述除錯功能。
可選地,所述晶片更包括除錯埠、外部啟動通道、除錯認證通道與除錯通道,其中所述除錯埠通過所述除錯通道與所述除錯工具進行通訊的通道,所述除錯認證通道為所述除錯工具之所述除錯使用者與所述晶片進行認證
的通道,以及所述外部啟動通道為所述晶片與所述外部儲存裝置進行通訊的通道。
可選地,透過運行所述除錯功能韌體程式,改變所述除錯功能狀態值,以讓合法的所述除錯使用者使用所述除錯功能。
可選地,所述除錯功能為所述除錯工具對系統記憶體空間進行存取的功能。
可選地,所述除錯功能為所述除錯工具令所述處理器進入除錯狀態以暫停運行的功能。
可選地,所述除錯功能為所述除錯工具記錄所述處理器執行程式的過程的功能。
可選地,所述外部儲存裝置更儲存有程式簽章,所述處理器使用所述安全啟動公鑰對所述程式簽章做校對,以驗證所述已簽章程式。
可選地,所述除錯使用者輸入認證請求,且所述處理器根據所述認證請求的密碼或金鑰認證所述除錯使用者是否為合法的除錯使用者。
本發明的實施例提供一種可認證晶片外部除錯功能韌體程式與除錯使用者的方法,包括:運行安全啟動韌體,以根據安全啟動公鑰驗證外部儲存裝置儲存的已簽章程式,其中使用所述安全啟動公鑰對所述外部儲存裝置的程式簽章做校對,以驗證所述已簽章程式;以及在成功驗證所述已簽章程式後,運行所述已簽章程式的除錯功能韌體程式,以透過所述已簽章程式的除錯使用者認證演算法驗證晶片連接之外部的除錯工具的除錯使用者是否為合法的除錯使用者,其中根據所述除錯使用者輸入的認證請求的密碼或金鑰認證所述除錯使用者是否為合法的除錯使用者,以及所述晶片的除錯功能可供合法的所述除錯使用者所使用。
綜上所述,本發明實施例提供之可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片與方法可以避免未被認證與授權之外部的除錯工具隨意地存取晶片與獲得晶片上具有價值的資產。
為了進一步理解本發明的技術、手段和效果,可以參考以下詳細描述和附圖,從而可以徹底和具體地理解本發明的目的、特徵和概念。然而,以下詳細描述和附圖僅用於參考和說明本發明的實現方式,其並非用於限制本發明。
10:晶片
101:處理器
102:非揮發性記憶體
1021:安全啟動韌體
1022:安全啟動公鑰
1023:除錯功能預設值
103:除錯功能控制元件
1031:暫存器
1032~1034:除錯功程
104:除錯埠
11:外部儲存裝置
111:已簽章程式
1111:除錯使用者認證演算法
1112:除錯功能韌體程式
1113:除錯使用者及對應除錯功能權限
112:程式簽章
12:除錯工具
S21~S36:步驟
提供的附圖用以使本發明所屬技術領域具有通常知識者可以進一步理解本發明,並且被併入與構成本發明之說明書的一部分。附圖示出了本發明的示範實施例,並且用以與本發明之說明書一起用於解釋本發明的原理。
圖1是本發明實施例之可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片的系統方塊圖。
圖2是本發明實施例之晶片進行安全啟動的流程圖。
圖3是本發明實施例之晶片對除錯工具之除錯使用者進行認證的流程圖。
現在將詳細參考本發明的示範實施例,其示範實施例會在附圖中被繪示出。在可能的情況下,在附圖和說明書中使用相同的元件符號來指代相同或相似的部件。另外,示範實施例的做法僅是本發明之設計概念的實現方式之一,下述的該等示範皆非用於限定本發明。
本發明實施例提供一種可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片與方法,所述晶片包括至少一個處理器、揮發性記
憶體、非揮發性記憶體、除錯埠與除錯功能控制元件,其中非揮發性記憶體可以包括數個小容量(千個位元組以下)的非揮發性記憶體單元,以分別儲存安全啟動韌體、安全啟動公鑰、除錯功能預設值,除錯功能控制元件包括有至少一個除錯功能與暫存器,且暫存器暫存除錯功能狀態值。
當除錯工具透過除錯通道與除錯認證通道連接晶片,以及外部儲存裝置透過外部啟動通道連接晶片時,非揮發性記憶體的安全啟動韌體會被處理器執行,以透過安全啟動公鑰來認證外部儲存裝置儲存的已簽章程式,從而決定處理器是否能運行載入的已簽章程式中的除錯功能韌體程式,其中已簽章程式儲存有除錯使用者認證演算法、除錯功能韌體程式與除錯使用者及對應除錯功能權限。
接著,透過除錯使用者認證演算法,除錯工具的除錯使用者可以被驗證是否為合法的除錯使用者,以及在驗證成功後,透過除錯使用者及對應除錯功能權限,除錯功能控制元件會依據除錯工具的使用者類型及權限被設定,從而讓除錯工具依照其除錯使用者類型及權限對晶片中的除錯功能控制元件進行控制,從而運行可被允許控制的除錯功能。
簡單地說,本發明實施例所提供的可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片與方法主要是透過安全啟動來對外部儲存裝置的除錯功能韌體程式進行簽章校驗,且在校驗成功後,進一步地透過除錯使用者認證演算法認證除錯工具的除錯使用者是否為合法的除錯使用者。甚至,透過除錯使用者及對應除錯功能權限,可以管理合法的除錯使用者使用除錯功能控制元件的權限與次數。因此,本發明實施例提供之可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片與方法可以避免未被認證與授權之外部的除錯工具隨意地存取晶片與獲得晶片上具有價值的資產。
在說明完本發明的發明概念後,接著進一步地說明本發明實施例所提供的可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片與方法之細節。首先,請參照圖1,圖1是本發明實施例之可認證晶片外部除錯功能韌體程式與除錯工具之使用者的晶片之系統方塊圖。晶片10包括至少一個處理器101、非揮發性記憶體102、除錯功能控制元件103、除錯埠104與揮發性記憶體105,其中除錯功能控制元件103電性連接處理器101、非揮發性記憶體102與除錯埠104。另外,晶片10還包括外部啟動通道、除錯通道與除錯認證通道,其中外部啟動通道作為晶片10與外部儲存裝置11之間的通訊通道,除錯通道作為晶片10之除錯埠104與除錯工具12之間的通訊通道,以及除錯認證通道作為晶片10對除錯工具12進行認證的通訊通道。
處理器101用以執行程式以控制晶片10。進一步地說,處理器101可以存取除錯功能控制元件103的暫存器1031、非揮發性記憶體102與揮發性記憶體105,且可以透過建立的外部啟動通道存取外部儲存裝置11。處理器101可以透過外部啟動通道載入外部儲存裝置11所儲存的已簽章程式111,運行非揮發性記憶體102所儲存的安全啟動韌體1021,以及運行已簽章程式111的除錯功能韌體程式1112與除錯使用者認證演算法1111。
在此請注意,雖然,本發明實施例以一個處理器101設置於晶片10為例說明,但實際上,晶片10可以不限於一個處理器101,即可以設置有一個以上的處理器101。舉例來說,晶片10可以設有兩個處理器,且兩個處理器處理運行的工作或功能可以彼此相同或不同。另外,外部啟動通道可以採用USB、SD card、eMMC、NAND Flash、SPI Flash等介面的其中一者,且不需被處理器101直接定址,但需令處理器101可透過此介面存取外部儲存裝置11中之資料。
非揮發性記憶體102儲存有安全啟動韌體1021、安全啟動公鑰1022與除錯功能預設值1023。安全啟動韌體1021可被處理器101運行,以進行安
全啟動。安全啟動公鑰1022為安全啟動時用於認證外部之除錯功能韌體程式之公鑰。除錯功能預設值1023為除錯功能1032~1034之狀態預設值,且於其中一個實施例中,可以使用至少1個位元的除錯功能預設值1023來編碼除錯功能1032~1034之狀態預設值,例如,「0」表示除錯功能1032~1034為全部開啟狀態,以及「1」表示除錯功能1032~1034為全部關閉狀態。在其他實施例中,也可以使用3個位元的除錯功能預設值1023來分別編碼除錯功能1032~1034之狀態預設值。非揮發性記憶體102中用於儲存安全啟動韌體1021、安全啟動公鑰102與除錯功能預設值1023之任一者的非揮發性記憶體單元可以是一次性燒寫的非揮發性記憶體單元。
附帶說明的是,安全啟動主要用以驗證已簽章程式111的完整性(Integrity)及真實性(Authenticity)。安全啟動方式使用公鑰加密系統(Public key cryptography)的一對公私鑰,透過使用私鑰對已簽章程式111或已簽章程式111的雜湊(Hash)值進行加密產生程式簽章112,其中RSA、ECDSA、EdDSA為常見的加密方式。另外,安全啟動公鑰1022的持有人可使用安全啟動公鑰1022對程式簽章112做校對,以驗證已簽章程式111是否由某個擁有者所提供。利用此機制可以將晶片10與其外部的已簽章程式111進行綁定,使得晶片10僅會執行經驗證之合法的已簽章程式111。處理器101每次從外部儲存裝置11載入已簽章程式111時,處理器101使用安全啟動公鑰1022對從外部輸入的已簽章程式111進行簽章校驗,唯有正確通過校驗的已簽章程式111才可被運行在晶片10上。
揮發性記憶體105用於暫存從外部儲存裝置11讀取之資料,例如,已簽章程式111中通過安全啟動驗證的除錯功能韌體程式1112。揮發性記憶體105可以被處理器101直接定址,且處理器101可執行儲存於揮發性記憶體105中的除錯功能韌體程式1112。另外,外部除錯認證通道為除錯工具12與晶片10暫存之除錯功能韌體程式1112進行通訊的通道,以及外部除錯認證通道可以使
用UART、SWD、SPI與USB等介面的其中一者。除錯埠104提供除錯通道給經過驗證之合法除錯使用者的除錯工具12存取晶片10中的各除錯功能1032~1034,除錯通道可以使用JTAG與SWD等介面的其中一者,以及除錯通道可能為一個或多個實體入口(Entrance)。除此之外,外部除錯認證通道與對應除錯埠104使用的除錯通道可以是同一個通訊通道(即,外部除錯認證通道與除錯通道共用相同的通訊通道)。
除錯功能控制元件103包括暫存器1031與多個除錯功能1032~1034。除錯功能1032~1034是否可被存取受到除錯功能控制元件103控制,且進一步地說,除錯功能控制元件103用以控制除錯功能1032~1034是否可被外部的除錯工具12所存取。除錯功能1032~1034為除錯工具12對晶片10進行除錯時所需要使用之功能,例如但不限於:(1)除錯工具12對系統記憶體空間進行存取;(2)除錯工具12令處理器101進入除錯狀態,且當處理器101進入除錯狀態時會暫停運行(Halt);以及除錯工具12記錄處理器101執行程式的過程(Tracing code)。
除錯功能控制元件103提供介面給處理器101對除錯功能1032~1034進行存取,以達到軟硬體協同的目的。運行的除錯功能韌體程式1112可透過此介面存取除錯功能控制元件103中的暫存器,以令各個預設為關閉狀態的除錯功能1032~1034被改變成開啟狀態,或者令各個預設為開啟狀態的除錯功能1032~1034被改變成關閉狀態。暫存器1031為硬體裝置,且除錯功能狀態包含但不限於二種狀態:關閉狀態與開啟狀態,即除錯功能狀態值不一定為「0」與「1」的二元值。
當除錯功能控制元件103設定除錯功能1032在開啟狀態時,除錯功能1032為開啟狀態,除錯工具12可存取晶片10中的除錯功能1032。當除錯功能控制元件103設定除錯功能1034在關閉狀態時,除錯功能1034為關閉狀態,除
錯工具12不能存取晶片10的除錯功能1034,但除錯功能韌體程式1112可透過設定暫存器1031暫存的除錯功能狀態值將除錯功能1032~1034從關閉狀態改變為開啟狀態。除錯功能1032~1034的預設狀態是根據非揮發性記憶體102的除錯功能預設值預設為開啟狀態或關閉狀態。當除錯功能1032~1034的除錯功能預設狀態為開啟狀態時,則除錯功能1032~1034無需經過認證流程即開放予除錯工具12進行存取,但一般則是,除錯功能1032~1034的除錯功能預設狀態為關閉狀態,除錯功能1032~1034是否能夠變成開啟狀態則根據除錯工具12的除錯使用者類型與權限而被決定。
外部儲存裝置11儲存了驗證除錯工具12之除錯使用者之程式及資料等,並至少包含已簽章程式111以及程式簽章112,其中已簽章程式111包含除錯功能韌體程式1112、除錯使用者認證演算法1111與除錯使用者及對應除錯功能權限1113。除錯功能韌體程式1112包括了存取晶片10的除錯功能控制元件103之功能與建立除錯認證通道以接收除錯工具12之指令輸入的功能。程式簽章112使用公私鑰加密系統所產生的數位簽章,更進一步地說,程式簽章112為使用安全啟動公鑰1022所配對之私鑰根據除錯功能韌體程式1112所產生的數位簽章。在其中一個實施例中,程式簽章112使用上述私鑰對除錯功能韌體程式1112本身或其雜湊值進行加密所產生的數位簽章。
除錯使用者認證演算法1111使用基於密碼學之認證方法來認證除錯工具12的除錯使用者是否為合法的除錯使用者,例如使用密碼比對方法或是公鑰認證方法,且本發明不以此為限制。當認證失敗時,晶片10不會讓除錯工具12對除錯功能控制元件103進行操作;當認證成功時,晶片10透過除錯功能韌體程式基於除錯工具12的除錯使用者類型與權限設定除錯功能控制元件103,以讓除錯使用者透過除錯工具12可以操作其權限可以被允許的除錯功能1032~1034。再者,除錯使用者及對應除錯功能權限1113可以記載除錯工具12
之除錯使用者類型與權限,即記錄不同使用者密碼所對應的除錯使用者及每一個除錯使用者可被允許操作除錯功能1032~1034的權限。
在晶片10的處理器101運行安全啟動韌體1021時,會從外部儲存裝置11將已簽章程式111與程式簽章112載入至揮發性記憶體中105。在執行安全啟動的過程中,為了確保安全啟動過程的安全性,除錯工具12對記憶體空間進行存取的除錯功能會被強制設定為關閉狀態,除錯工具12令執行安全啟動的處理器101進入除錯狀態的除錯功能會被強制設定為關閉狀態,以及除錯工具12記錄執行安全啟動的處理器101執行程式過程的除錯功能會被強制設定為關閉狀態。再者,在順利完成安全啟動,並結束安全啟動後,上述被強制設定為關閉狀態的除錯功能將不再被強制設定為關閉狀態,其根據其除錯功能狀態而為開啟狀態或關閉狀態。
接著,請參照圖1與圖2,圖2是本發明實施例之晶片進行安全啟動的流程圖,且安全啟動的細節流程說明如下。首先,在步驟S21中,使用對應的介面來建立外部啟動通道。然後,在步驟S22中,搜尋外部儲存裝置11是否有儲存已簽章程式111與程式簽章112。在步驟S23中,判斷是否存在已簽章程式111與程式簽章112。若存在已簽章程式111與程式簽章112,則執行步驟S24,否則,則結束安全啟動流程。在步驟S24中,從外部儲存裝置11將已簽章程式111與程式簽章112載入至晶片10。然後,在步驟S25中,使用安全啟動公鑰1022來驗證已簽章程式111。在步驟S26中,判斷已簽章程式111與程式簽章112是否通過驗證。若已簽章程式111與程式簽章112通過驗證,則執行步驟S27,否則,則結束安全啟動流程。在步驟S27中,晶片10運行已簽章程式111中的除錯功能韌體程式1112。
在安全啟動流程結束後,透過晶片10運行除錯功能韌體程式1112會進行除錯使用者認證流程,且除錯使用者認證流程用以令晶片10得以驗證意
圖進行除錯之除錯使用者是否為合法的除錯使用者。請參照圖1與圖3,圖3是本發明實施例之晶片對晶片外部除錯功能韌體程式與除錯工具進行認證的流程圖。在步驟S31中,使用對應的介面來建立除錯認證通道。然後,在步驟S32中,等待外部輸入。在步驟S33中,判斷是否有從外部輸入的認證請求,例如,輸入除錯使用者的密碼或金鑰。若有從外部輸入的認證請求,則執行步驟S34,否則,則執行步驟S32。在步驟S35中,執行除錯使用者認證演算法,以根據外部輸入的認證請求判斷除錯工具12的除錯使用者是否為合法的除錯使用者。若驗證為合法的除錯使用者,則接著執行步驟S36,否則,則結束除錯使用者認證流程,並回報驗證錯誤。在步驟S36中,根據除錯使用者及對應除錯功能權限1113決定除錯使用者類型與權限,以開啟除錯功能控制元件103中相對應的除錯功能1032~1034至開啟狀態。
接著,請繼續參照圖1,在其中一個實現方式中,至少一個處理器101可以是兩個處理器,且分別為ARM架構的Cortex-A35處理器與Cortex-M4處理器,其中Cortex-A35處理器作為晶片10的核心處理器,而Cortex-M4處理器則不介入除錯認證功能。非揮發性記憶體102可以是一次性燒寫的唯讀記憶體,除錯通道使用SWD介面,除錯認證通道使用UART介面,除錯功能1032~1034分別是控制MEM-AP硬體被外部除錯工具使用的的能力(MEM-AP為安謀架構中常見用以令除錯工具12存取晶片10的記憶體空間的裝置)、控制除錯工具12令Cortex-A35處理器進入除錯狀態的能力與控制除錯工具12令Cortex-M4處理器進入除錯狀態的能力。外部儲存裝置11可以是快閃記憶體(Flash),以及揮發性記憶體105可以是靜態隨機存取記憶體(SRAM)。
於此實現方式中,除錯使用者被定義為1個,且合法的除錯使用者可以使用上述3個除錯功能1032~1034。在開始運作時,Cortex-A35處理器執行非揮發性記憶體102所儲存的安全啟動韌體1021,以進行執行前述的安全啟動
流程。已簽章程式111以及程式簽章112是被儲存於晶片10外的外部儲存裝置11中,外部儲存裝置11使用SPI協定與晶片10溝通,晶片10中的Cortex-A35處理器透過SPI介面從外部儲存裝置11中讀入已簽章程式111以及程式簽章112,放置於揮發性記憶體105中,並執行安全啟動流程之驗證程序。
當安全啟動流程對已簽章程式111認證無誤後,Cortex-A35處理器會載入並執行已簽章程式111的除錯功能韌體程式1112,當除錯功能韌體程式1112被執行後,便執行前述的除錯使用者認證流程。於此實現方式中,除錯認證功能預設值全為1,因此除錯工具12的除錯使用者在未被認證前,無法使用任何除錯功能。除錯功能韌體程式1112使用UART通訊協定與除錯工具12溝通,因此除錯使用者可使用UART通訊協定發出認證請求,並輸入密碼以供比對。一旦比對正確,除錯功能韌體程式1112會將上述3個除錯功能開啟以供除錯工具12進行存取。
綜合以上所述,相較於先前技術,本發明實施例提供之可認證晶片外部除錯功能韌體程式與除錯工具之除錯使用者的晶片與方法透過安全啟動流程來避免未經認證的除錯功能韌體程式在晶片中被執行,以及使用與除錯使用者認證流程來避免未被認證與授權之外部的除錯工具隨意地存取晶片與獲得晶片上具有價值的資產。甚至,本發明實施例提供的晶片與方法更可以透過除錯使用者及對應除錯功能權限,來管理合法的除錯使用者使用除錯功能控制元件的權限與次數。
應當理解,本文描述的示例和實施例僅用於說明目的,並且鑑於其的各種修改或改變將被建議給本領域技術人員,並且將被包括在本申請的精神和範圍以及所附權利要求的範圍之內。
101:處理器
102:非揮發性記憶體
1021:安全啟動韌體
1022:安全啟動公鑰
1023:除錯功能預設值
103:除錯功能控制元件
1031:暫存器
1032~1034:除錯功能
104:除錯埠
11:外部儲存裝置
111:已簽章程式
1111:除錯使用者認證演算法
1112:除錯功能韌體程式
1113:除錯使用者及對應除錯功能權限
112:程式簽章
12:除錯工具
Claims (9)
- 一種可認證晶片外部除錯功能韌體程式與除錯使用者的晶片,包括:非揮發性記憶體,儲存有安全啟動韌體、安全啟動公鑰與除錯功能預設值;除錯功能控制元件,包括至少一除錯功能以及用於暫存至少一除錯功能狀態值的暫存器,其中所述暫存器暫存的所述除錯功能狀態值之初始值為所述除錯功能預設值;揮發性記憶體;以及至少一處理器,用於運行所述安全啟動韌體,以根據所述安全啟動公鑰驗證外部儲存裝置儲存的已簽章程式,並在成功驗證所述已簽章程式後,運行所述已簽章程式的除錯功能韌體程式,以透過所述已簽章程式的除錯使用者認證演算法驗證所述晶片連接之外部的除錯工具的除錯使用者是否為合法的除錯使用者,其中所述除錯功能可供合法的所述除錯使用者所使用;其中所述除錯功能狀態值用於表示所述除錯功能為關閉狀態或開啟狀態,所述除錯功能預設值設定成所述除錯功能為關閉狀態,當所述除錯使用者被驗證為合法,且所述認證請求的密碼或金鑰正確時,所述除錯功能韌體程式才將所述除錯使用者的權限內的所述除錯功能狀態值設定成所述除錯功能為開啟狀態。
- 如請求項1所述之晶片,其中已簽章程式更包括除錯使用者與對應除錯功能權限,以讓合法的所述除錯使用者依照其所述權限使用所述除錯功能。
- 如請求項1所述之晶片,更包括除錯埠、外部啟動通道、除錯認證通道與除錯通道,其中所述除錯埠通過所述除錯通道與所述除錯工具進行通訊的通道,所述除錯認證通道為所述除錯工具之所述除錯使用者與所述晶片進行認證的通道,以及所述外部啟動通道為所述晶片與所述外部儲存裝置進行通訊的通道。
- 如請求項1所述之晶片,其中所述除錯功能為所述除錯工具對系統記憶體空間進行存取的功能。
- 如請求項1所述之晶片,其中所述除錯功能為所述除錯工具令所述處理器進入除錯狀態以暫停運行的功能。
- 如請求項1所述之晶片,其中所述除錯功能為所述除錯工具記錄所述處理器執行程式的過程的功能。
- 如請求項1所述之晶片,其中所述外部儲存裝置更儲存有程式簽章,所述處理器使用所述安全啟動公鑰對所述程式簽章做校對,以驗證所述已簽章程式。
- 如請求項1所述之晶片,其中所述除錯使用者輸入認證請求,且所述處理器根據所述認證請求的所述密碼或所述金鑰認證所述除錯使用者是否為合法的除錯使用者。
- 一種可認證晶片外部除錯功能韌體程式與除錯使用者的方法,運行於可認證晶片外部除錯功能韌體程式與除錯使用者的晶片,包括:運行安全啟動韌體,以根據安全啟動公鑰驗證外部儲存裝置儲存的已簽章程式,其中使用所述安全啟動公鑰對所述外部儲存裝置的程式簽章做校對,以驗證所述已簽章程式;以及在成功驗證所述已簽章程式後,運行所述已簽章程式的除錯功能韌體程式,以透過所述已簽章程式的除錯使用者認證演算法驗證晶片連接之外部的除錯工具的除錯使用者是否為合法的除錯使用者,其中根據所述除錯使用者輸入的認證請求的密碼或金鑰認證所述除錯使用者是否為合法的除錯使用者,以及所述晶片的至少一除錯功能可供合法的所述除錯使用者所使用;其中所述晶片的除錯功能控制元件包括所述至少一除錯功能以及用於暫存至少一除錯功能狀態值的暫存器,所述暫存器暫存的所述除錯功能狀態值之初始值為所述除錯功能預設值,所述除錯功能狀態值用於表示所述除錯功能為關閉狀態或開啟狀態,所述除錯功能預設值設定成所述除錯功能為關閉狀態,當所述除錯使用者被驗證為合法,且所述認證請求的所述密碼或所述金鑰正確時,所述除錯功能韌體程式才將所述除錯使用者的權限內的所述除錯功能狀態值設定成所述除錯功能為開啟狀態。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109147180A TWI818221B (zh) | 2020-12-31 | 2020-12-31 | 可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 |
CN202111552725.8A CN114692108A (zh) | 2020-12-31 | 2021-12-17 | 用于验证与调试的芯片与方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109147180A TWI818221B (zh) | 2020-12-31 | 2020-12-31 | 可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202227972A TW202227972A (zh) | 2022-07-16 |
TWI818221B true TWI818221B (zh) | 2023-10-11 |
Family
ID=82135463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109147180A TWI818221B (zh) | 2020-12-31 | 2020-12-31 | 可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114692108A (zh) |
TW (1) | TWI818221B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838995A (zh) * | 2014-03-19 | 2014-06-04 | 北京深思数盾科技有限公司 | 可自定义设置的信息安全设备 |
US9165143B1 (en) * | 2013-03-15 | 2015-10-20 | Xilinx, Inc. | Image file generation and loading |
US20170139008A1 (en) * | 2015-11-13 | 2017-05-18 | Samsung Electronics Co., Ltd. | System on chip and secure debugging method |
CN106776308A (zh) * | 2016-12-06 | 2017-05-31 | 福州高图信息技术有限公司 | 一种基于Uboot的电子产品故障调试方法及系统 |
CN107229880A (zh) * | 2017-05-12 | 2017-10-03 | 深圳市博巨兴实业发展有限公司 | 一种带用户安全调试功能的微处理器芯片 |
US20190347401A1 (en) * | 2018-01-29 | 2019-11-14 | Shenzhen GOODIX Technology Co., Ltd. | Chip accessing method, security controlling module, chip and debugging device |
WO2020002441A1 (en) * | 2018-06-27 | 2020-01-02 | Nordic Semiconductor Asa | Method of debugging a device |
US10657265B1 (en) * | 2017-12-20 | 2020-05-19 | Xilinx, Inc. | Outputting internal states of an integrated circuit after initiation of a secure lockdown mode |
CN111813614A (zh) * | 2020-09-03 | 2020-10-23 | 湖北芯擎科技有限公司 | 调试处理方法、装置与调试处理系统 |
-
2020
- 2020-12-31 TW TW109147180A patent/TWI818221B/zh active
-
2021
- 2021-12-17 CN CN202111552725.8A patent/CN114692108A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9165143B1 (en) * | 2013-03-15 | 2015-10-20 | Xilinx, Inc. | Image file generation and loading |
CN103838995A (zh) * | 2014-03-19 | 2014-06-04 | 北京深思数盾科技有限公司 | 可自定义设置的信息安全设备 |
US20170139008A1 (en) * | 2015-11-13 | 2017-05-18 | Samsung Electronics Co., Ltd. | System on chip and secure debugging method |
CN106776308A (zh) * | 2016-12-06 | 2017-05-31 | 福州高图信息技术有限公司 | 一种基于Uboot的电子产品故障调试方法及系统 |
CN107229880A (zh) * | 2017-05-12 | 2017-10-03 | 深圳市博巨兴实业发展有限公司 | 一种带用户安全调试功能的微处理器芯片 |
US10657265B1 (en) * | 2017-12-20 | 2020-05-19 | Xilinx, Inc. | Outputting internal states of an integrated circuit after initiation of a secure lockdown mode |
US20190347401A1 (en) * | 2018-01-29 | 2019-11-14 | Shenzhen GOODIX Technology Co., Ltd. | Chip accessing method, security controlling module, chip and debugging device |
WO2020002441A1 (en) * | 2018-06-27 | 2020-01-02 | Nordic Semiconductor Asa | Method of debugging a device |
CN111813614A (zh) * | 2020-09-03 | 2020-10-23 | 湖北芯擎科技有限公司 | 调试处理方法、装置与调试处理系统 |
Non-Patent Citations (3)
Title |
---|
期刊 Z. Ning and F. Zhang, "Understanding the Security of ARM Debugging Features," 2019 IEEE Symposium on Security and Privacy (SP) 2019 pp. 602-619; * |
網路文獻 ARM, "Arm® Debug Interface Architecture Specification", ARM, 24 July 2020, https://documentation-service.arm.com/static/5f900b6cf86e16515cdc0648;網路文獻 NXP, "AN11553 Serial Wire Debug (SWD) programming specification", NXP, 30 MAY 2014, https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/lpc/39003/1/SWD%20Programming%20AN11553.pdf;網路文獻 STMicroelectronics, "RM0399 Reference manual", STMicroelectronics, Feburary 2020, https://www.compel.ru/wordpress/wp-content/uploads/2018/01/en.dm00314099.pdf;網路文獻 Wikipedia, "JTAG" Wikipedia, 27 December 2020, https://web.archive.org/web/20200701000000*/https://en.wikipedia.org/wiki/JTAG * |
網路文獻 Wikipedia, "JTAG" Wikipedia, 27 December 2020, https://web.archive.org/web/20200701000000*/https://en.wikipedia.org/wiki/JTAG |
Also Published As
Publication number | Publication date |
---|---|
TW202227972A (zh) | 2022-07-16 |
CN114692108A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313690B (zh) | 自包含的加密引导策略验证 | |
JP5038487B2 (ja) | 電子デバイスにおいてSIMlock情報を保護する方法及び装置 | |
TWI438686B (zh) | 用於使用狀態確認來保護作業系統啟動過程的系統及方法 | |
EP2248063B1 (en) | Method and apparatus for controlling system access during protected modes of operation | |
TWI674533B (zh) | 授權將於目標計算裝置上執行之操作的設備 | |
TWI648649B (zh) | 行動通信裝置及其操作方法 | |
JP5565040B2 (ja) | 記憶装置、データ処理装置、登録方法、及びコンピュータプログラム | |
US20190253417A1 (en) | Hardware device and authenticating method thereof | |
US20230020278A1 (en) | Secure boot assist for devices, and related systems, methods and devices | |
US20160241398A1 (en) | System and method for computing device with improved firmware service security using credential-derived encryption key | |
JP4848458B2 (ja) | 永続的セキュリティシステム及び永続的セキュリティ方法 | |
US20050021968A1 (en) | Method for performing a trusted firmware/bios update | |
JP5373062B2 (ja) | システム管理コマンドを提供するシステム及び方法 | |
CN113168476A (zh) | 操作系统中个性化密码学安全的访问控制 | |
CN113434853B (zh) | 一种将固件烧录至存储设备的方法及控制器 | |
TWI745629B (zh) | 電腦系統以及初始化電腦系統的方法 | |
KR20090007123A (ko) | 보안 부팅 방법 및 그 방법을 사용하는 반도체 메모리시스템 | |
CN110795126A (zh) | 一种固件安全升级系统 | |
JP4791250B2 (ja) | マイクロコンピュータおよびそのソフトウェア改竄防止方法 | |
WO2010130171A1 (zh) | 一种移动终端及保护其系统数据的方法 | |
US11836254B2 (en) | System and method for securing a series of firmware function calls using session tokens | |
JP4724107B2 (ja) | リムーバブル・デバイスを用いたユーザの認証方法およびコンピュータ | |
TWI818221B (zh) | 可認證晶片外部除錯功能韌體程式與除錯使用者的晶片與方法 | |
CN115688120A (zh) | 安全芯片固件导入方法、安全芯片及计算机可读存储介质 | |
US20230418946A1 (en) | Chip and method capable of authenticating off-chip debug firmware program and debug user |