TWI662474B - 用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片 - Google Patents
用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片 Download PDFInfo
- Publication number
- TWI662474B TWI662474B TW107107338A TW107107338A TWI662474B TW I662474 B TWI662474 B TW I662474B TW 107107338 A TW107107338 A TW 107107338A TW 107107338 A TW107107338 A TW 107107338A TW I662474 B TWI662474 B TW I662474B
- Authority
- TW
- Taiwan
- Prior art keywords
- original data
- programmer
- generate
- integrated circuit
- encrypted version
- Prior art date
Links
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/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/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- 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/73—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 by creating or determining hardware identification, e.g. serial numbers
-
- 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/76—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 application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
Abstract
本發明提供一種用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片。該方法包含:利用積體電路編程器產生包含其特徵資訊的種子檔案;利用編碼器至少依據特徵資訊來加密代表一程式碼的原始資料,以產生原始資料之加密版本;利用積體電路編程器依據特徵資訊來解密加密版本,以產生原始資料;利用積體電路編程器至少依據預定資訊來加密原始資料,以產生原始資料之另一加密版本;以及利用微控制器芯片至少依據儲存於微控制器芯片中之預定資訊來解密該另一加密版本,以產生原始資料,且將原始資料寫入非揮發性記憶體。
Description
本發明係有關於芯片保護,尤指一種用來對一微控制器芯片(microcontroller chip)進行韌體編程(firmware programming)之方法與裝置、以及對應的微控制器芯片。
微控制器芯片(可簡稱為MCU芯片)可應用於電子產品,而執行於MCU芯片上的各種不同的程式碼(program code)可使電子產品具備對應的功能。舉例來說,電子產品的製造商可委託方案廠商(solution provider)開發程式碼,以供執行於MCU芯片。在完成程式碼的設計之後,該方案廠商可將程式碼發佈(release)給第三方,諸如編程服務商(programming service provider),以供進行積體電路編程(IC programming),也就是燒錄,其中該編程服務商可為代工廠(Original Equipment Manufacturer, OEM)。在完成編程工作之後,該編程服務商可將MCU芯片交付給該製造商,以供進行電子產品的生產。在理想的狀況下,該方案廠商可取得一次性工程費用(NRE, Non-recurring Engineering),或根據電子產品的生產數量收取權利金。然而,某些問題諸如權益侵害可能發生。例如:該編程服務商可能燒錄多於協議數量的MCU芯片來規避權利金。又例如:該編程服務商可能破解保護機制並取得程式碼來規避權利金,甚至將程式碼轉賣給該製造商的競爭對手。因此,需要一種新穎的架構來改善關於程式碼的保護機制。
本發明的一目的在於提供一種用來對一微控制器芯片(microcontroller chip)進行韌體編程(firmware programming)之方法與裝置、以及對應的微控制器芯片,以解決上述問題。
本發明的另一目的在於提供一種用來對一微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片,以提昇程式碼的保護。
本發明的至少一實施例提供一種用來對一微控制器芯片進行韌體編程之方法,該方法可包含:利用一積體電路編程器(integrated circuit programmer, IC programmer)產生一種子檔案,其中該種子檔案包含該積體電路編程器的特徵資訊,且該特徵資訊對應於該積體電路編程器;利用一編碼器至少依據該特徵資訊來加密(encrypt)代表一程式碼的原始資料,以產生該原始資料之一加密版本;利用該積體電路編程器依據該特徵資訊來解密(decrypt)該原始資料之該加密版本,以產生該原始資料;利用該積體電路編程器至少依據儲存於該積體電路編程器中之預定資訊來加密該原始資料,以產生該原始資料之另一加密版本,其中該微控制器芯片也儲存有該預定資訊;以及利用該微控制器芯片至少依據儲存於該微控制器芯片中之該預定資訊來解密該原始資料之該另一加密版本,以產生該原始資料,且將該原始資料寫入該微控制器芯片中之一非揮發性記憶體。
本發明的至少一實施例提供一種用來對一微控制器芯片進行韌體編程的裝置,該裝置可包含一編碼器,而該編碼器可用來進行編碼。一積體電路編程器可產生一種子檔案,該種子檔案可包含該積體電路編程器的特徵資訊,且該特徵資訊對應於該積體電路編程器。另外,該編碼器可包含一資料處理電路,而該資料處理電路可用來為該編碼器進行資料處理,其中該資料處理電路至少依據該特徵資訊來加密代表一程式碼的原始資料,以產生該原始資料之一加密版本。此外,該積體電路編程器可依據該特徵資訊來解密該原始資料之該加密版本,以產生該原始資料。該積體電路編程器可至少依據儲存於該積體電路編程器中之預定資訊來加密該原始資料,以產生該原始資料之另一加密版本,其中該微控制器芯片也儲存有該預定資訊。該微控制器芯片可至少依據儲存於該微控制器芯片中之該預定資訊來解密該原始資料之該另一加密版本,以產生該原始資料,且將該原始資料寫入該微控制器芯片中之一非揮發性記憶體。
本發明的至少一實施例提供一種用來對一微控制器芯片進行韌體編程的裝置,而該裝置可包含一積體電路編程器,其可用來進行編程。該積體電路編程器可包含一資料處理電路,該資料處理電路可用來產生一種子檔案,其中該種子檔案可包含該積體電路編程器的特徵資訊,該特徵資訊可對應於該積體電路編程器。另外,一編碼器可至少依據該特徵資訊來加密代表一程式碼的原始資料,以產生該原始資料之一加密版本。此外,該資料處理電路可依據該特徵資訊來解密該原始資料之該加密版本,以產生該原始資料。該資料處理電路可至少依據儲存於該積體電路編程器中之預定資訊來加密該原始資料,以產生該原始資料之另一加密版本,其中該微控制器芯片也儲存有該預定資訊。該微控制器芯片可至少依據儲存於該微控制器芯片中之該預定資訊來解密該原始資料之該另一加密版本,以產生該原始資料,且將該原始資料寫入該微控制器芯片中之一非揮發性記憶體。
本發明的方法、裝置與微控制器芯片可在未引入任何副作用的情況或以不太可能引入副作用的方式下解決相關技術中的問題。相較於相關技術,本發明的方法、裝置與微控制器芯片能避免關於該程式碼的各類的權益侵害。
本發明的一或多個實施例提供一種用來對一微控制器芯片(microcontroller chip,可簡稱為「MCU芯片」)進行韌體編程(firmware programming)之方法與裝置以及對應的MCU芯片。該方法可應用於一編程系統,而該裝置可包含該編程系統的至少一部分(例如一部分或全部)。基於該方法與該裝置,程式碼能被妥善地保護,尤其可防止多個類型的攻擊,諸如反向工程(reverse engineering)或回放(playback)攻擊,以避免任何權益侵害。為了便於理解,該MCU芯片可包含至少一裸晶(die),而該至少一裸晶可包含一或多個裸晶,諸如包含一微控制器與一非揮發性記憶體(non-volatile memory,NV memory)的單一裸晶、或包含該微控制器的裸晶以及包含該非揮發性記憶體的裸晶所形成的晶片堆疊,但本發明不限於此。依據某些實施例,該MCU芯片可另包含上述至少一裸晶的封裝(package)。
第1圖係依據本發明一實施例的一種編程系統100的示意圖,其中編程系統100可作為上述編程系統的一個例子。編程系統100可包含編碼器110、積體電路編程器(integrated circuit programmer, IC programmer)諸如燒錄器(其亦可稱為編程器)120、以及MCU芯片130。編碼器110可包含控制電路112、介面電路114與118、以及儲存裝置116,其中控制電路112可包含資料處理電路112DP;燒錄器120可包含控制電路122以及介面電路124與128,其中控制電路122可包含資料處理電路122DP;以及MCU芯片130可包含核心電路130C、非揮發性記憶體130M、保護電路132以及介面電路134,其中核心電路130C與非揮發性記憶體130M可分別作為該微控制器以及上述之非揮發性記憶體的例子;但本發明不限於此。控制電路112與122可分別用來控制編碼器110與燒錄器120,而資料處理電路112DP與122DP可分別用來為編碼器110與燒錄器120進行資料處理。控制電路112可以依據各種方式來實施。例如:控制電路112可包含處理器及相關電路(諸如隨機存取記憶體(Random Access Memory,可簡稱為「RAM」)、控制芯片組、匯流排等),而資料處理電路112DP可代表正在執行對應於該方法之控制程式的這個處理器。又例如:控制電路112可為特殊應用積體電路(Application-Specific Integrated Circuit,可簡稱為「ASIC」),而資料處理電路112DP可代表於這個ASIC中之對應於該方法之子電路。又例如:控制電路112可為微控制器,而資料處理電路112DP可代表正在執行對應於該方法之控制程式的這個微控制器。另外,控制電路122可以依據各種方式來實施。例如:控制電路122可包含處理器及相關電路(諸如RAM、控制芯片組、匯流排等),而資料處理電路122DP可代表正在執行對應於該方法之控制程式的這個處理器。又例如:控制電路122可為ASIC,而資料處理電路122DP可代表於這個ASIC中之對應於該方法之子電路。又例如:控制電路122可為微控制器,而資料處理電路122DP可代表正在執行對應於該方法之控制程式的這個微控制器。
依據本實施例,儲存裝置116可用來儲存資訊,諸如預計要編程至MCU芯片130的程式碼,但本發明不限於此。依據某些實施例,儲存裝置116可取代為外部儲存裝置。儲存裝置116的例子可包含(但不限於):非揮發性記憶體(例如快閃記憶體(Flash memory)或其它類型的記憶體);其中介面電路114可為對應的通訊介面電路,以容許控制電路112存取(access)儲存裝置116。另外,介面電路118與128可符合相同的通訊標準,諸如現有通訊標準(例如:USB標準、I2C標準等)中的任一者,以容許編碼器110與燒錄器120彼此通訊以交換資訊、或透過額外的裝置來間接地交換資訊,但本發明不限於此。介面電路124與134可符合相同的通訊標準,諸如現有通訊標準(例如:JTAG標準、SWD標準等)中的任一者,以容許燒錄器120與MCU芯片130彼此通訊以交換資訊。非揮發性記憶體130M可用來儲存資訊,諸如代表該程式碼的資料。保護電路132可依據該方法來保護該程式碼,且可用來進行資料處理,以容許韌體編程被進行於MCU芯片130上。舉例來說,在正常狀況下(例如該編程服務商在該製造商的授權下進行編程工作),保護電路132可容許燒錄器120將該程式碼編程至MCU芯片130,使該程式碼被儲存於非揮發性記憶體130M中;以及在異常狀況下(例如某人在缺乏授權下進行編程工作),保護電路132可禁止該程式碼編程至MCU芯片130;但本發明不限於此。在MCU芯片130被取代為傳統的MCU芯片的狀況下,由於該傳統的MCU芯片中不存在保護電路132,故燒錄器120可依據該方法保護該程式碼,以避免該程式碼被編程至該傳統的MCU芯片。此外,於該程式碼已被編程至MCU芯片130之後,該製造商可取得已完成編程之MCU芯片130,以供生產電子產品。在電子產品的生產完成之後,當電子產品開機時,核心電路130C可讀取該程式碼。在執行該程式碼之核心電路130C的控制下,MCU芯片130可控制電子產品的運作。
依據某些實施例,燒錄器120可包含儲存裝置,其可用來儲存資訊,諸如該程式碼的編碼資料,但本發明不限於此。該儲存裝置的例子可包含(但不限於):非揮發性記憶體(例如快閃記憶體或其它類型的記憶體)。
第2圖係依據本發明一實施例的該方法(上述用來對該微控制器芯片進行韌體編程之方法)的控制方案。舉例來說,資料處理電路112DP可包含多個資料處理子電路以及多個儲存電路(例如暫存器、緩衝器、或任何其它類型的儲存電路);資料處理電路122DP可包含多個資料處理子電路以及多個儲存電路(例如暫存器、緩衝器、或任何其它類型的儲存電路);以及保護電路132可包含多個資料處理子電路以及多個儲存電路(例如暫存器、緩衝器、或任何其它類型的儲存電路);但本發明不限於此。於第2圖中,金鑰產生器KEY_GEN、編碼電路ENC_A與ENC_B以及解碼電路DEC_A與DEC_B可視為這些資料處理子電路的例子,而相關資訊可於此架構中產生、輸入、輸出、及/或傳遞,也可暫存於這些儲存電路中的一或多個儲存電路。上述相關資訊可包含:資料{HEX_0, HEX_1, HEX_2, HEX_3, …}、預定數量PCNT、編程器識別碼(programmer identification, programmer ID)PID、時間戳記TS、獨一識別碼(unique ID)UID、以及金鑰KEYB1與KEYB2,其中金鑰KEYB2可為私鑰,而編程器識別碼PID、時間戳記TS、獨一識別碼UID與金鑰KEYB2可視為內稟值(intrinsic value);但本發明不限於此。資料HEX_0可代表預計要編程至MCU芯片130的程式碼,而資料{HEX_1, HEX_2, HEX_3}可代表資料HEX_0的各種加密版本(encrypted version)。例如:資料HEX_1可代表資料HEX_0的一加密版本,資料HEX_2可代表編程器識別碼PID、時間戳記TS、預定數量PCNT、金鑰KEYB1以及資料HEX_1的組合資料{(PID, TS), PCNT, KEYB1, HEX_1}的一加密版本,資料HEX_3可代表資料HEX_0的另一加密版本。
依據本實施例,不論編碼器110與燒錄器120是否位於相同的地方或不同的地方、且不論編碼器110與燒錄器120是否被相同的人員或不同的人員所持有,編程系統100均可依據該方法來運作。為了便於理解,假設編碼器110與燒錄器120位於不同的地方、且編碼器110與燒錄器120被不同的人員所持有,但本發明不限於此。燒錄器120可儲存有編程器識別碼PID,例如編程器識別碼PID可儲存於燒錄器120中的非揮發性記憶體。有權限的人員(諸如該方案廠商的人員)可將編程器識別碼PID預先設定於燒錄器120中,再將燒錄器120提供給該編程服務商。當需要進行編程工作時,燒錄器120的持有者(諸如該編程服務商的人員)可操作燒錄器120以從燒錄器120取得一種子檔案,但無法從該種子檔案得知編程器識別碼PID與時間戳記TS。例如資料處理電路112DP可內建一預定加密(encryption)程序,且該種子檔案已透過該預定加密程序被加密。資料處理電路112DP依據編程器識別碼PID與時間戳記TS產生該種子檔案,以供編碼器110進一步使用,並且儲存這一組編程器識別碼PID與時間戳記TS於燒錄器120中的非揮發性記憶體。由於時間戳記TS會隨著時間變化,故在不同的時間點的多個種子檔案可以彼此相異。編碼器110的持有者(諸如該方案廠商的人員)可從該種子檔案取得編程器識別碼PID與時間戳記TS,例如利用對應於該預定加密程序之一預定解密(decryption)程序來解密該種子檔案,以將編程器識別碼PID與時間戳記TS輸入至編碼器110,並且將預定數量PCNT與資料HEX_0(諸如預計要編程至MCU芯片130的程式碼)輸入至編碼器110。
於編碼器110中:金鑰產生器KEY_GEN可依據編程器識別碼PID與時間戳記TS的組合資料(PID, TS)產生金鑰KEYB1;編碼電路ENC_B可依據金鑰KEYB1來加密資料HEX_0,以產生資料HEX_1;以及編碼電路ENC_A可依據組合資料(PID, TS)來加密組合資料{(PID, TS), PCNT, KEYB1, HEX_1}(其可暫存於儲存電路),以產生資料HEX_2;其中資料HEX_0、組合資料{(PID, TS), PCNT, KEYB1, HEX_1}以及資料HEX_2可暫存於資料處理電路112DP的該多個儲存電路。編碼器110的持有者(諸如該方案廠商的人員)可將資料HEX_2提供給燒錄器120的持有者(諸如該編程服務商的人員)。另外,於燒錄器120中:解碼電路DEC_A可依據預先儲存的這一組編程器識別碼PID與時間戳記TS來解密資料HEX_2,以產生組合資料{(PID, TS), PCNT, KEYB1, HEX_1};解碼電路DEC_B可依據金鑰KEYB1來解密資料HEX_1,以產生資料HEX_0;資料處理電路122DP可從MCU芯片130取得獨一識別碼UID,而一資料處理子電路諸如組合電路(其可用標示了符號「+」的小圓圈來表示)可組合金鑰KEYB2與獨一識別碼UID,以產生組合資料{KEYB2, UID};以及編碼電路ENC_B可依據組合資料{KEYB2, UID}來加密資料HEX_0,以產生資料HEX_3,且將資料HEX_3與資料HEX_EN傳送至MCU芯片130;其中組合資料{(PID, TS), PCNT, KEYB1, HEX_1}、資料HEX_0、組合資料{KEYB2, UID}以及資料HEX_3可暫存於資料處理電路122DP的該多個儲存電路,且金鑰KEYB2可預先儲存於燒錄器120中,例如儲存於燒錄器120中的非揮發性記憶體,但本發明不限於此。此外,於MCU芯片130中:保護電路132中的一資料處理子電路,諸如組合電路(其可用標示了符號「+」的小圓圈來表示),可組合金鑰KEYB2與獨一識別碼UID,以產生組合資料{KEYB2, UID};以及解碼電路DEC_B可依據組合資料{KEYB2, UID}來解密資料HEX_3,以產生資料HEX_0;其中金鑰KEYB2與獨一識別碼UID可預先儲存於MCU芯片130中,例如儲存於MCU芯片130中的某一非揮發性記憶體(例如:非揮發性記憶體130M、或另一非揮發性記憶體),而組合資料{KEYB2, UID}可暫存於保護電路132中的一儲存電路。
舉例來說,資料HEX_EN可代表啟用資訊(enabling information),以供啟用MCU芯片130的編程功能,這表示:在缺乏該啟用資訊的狀況下,MCU芯片130的編程功能會被禁用(disable)。另外,預定數量PCNT可用來控制及管理於編程工作中預定要編程的多個MCU芯片{130}(諸如MCU芯片130)的數量,且可隨著每一次的授權來決定。資料處理電路122DP可計數(count)編程次數,例如依據預定數量PCNT進行剩餘次數的倒數(count down),尤其從預定數量PCNT起、每進行一次編程就將剩餘次數減一。當剩餘次數等於零時,燒錄器120的持有者(諸如該編程服務商的人員)就無法利用燒錄器120進行任何額外的編程工作。因此,本發明之方法與裝置可避免權益侵害。
第3圖繪示第1圖所示編程系統100的於一實施例中的實施細節。使用者介面裝置UI(A)與UI(B)可用來提供使用者介面,以容許使用者USR(A)與USR(B)分別操作編碼器110與燒錄器120。使用者介面裝置UI(A)與UI(B)的例子可包含(但不限於):個人電腦(例如桌上型電腦或膝上型電腦)、平板電腦以及多功能行動電話。為了便於理解,編碼器110中之介面電路118與燒錄器120中之介面電路128可符合通用序列匯流排(Universal Serial Bus,可簡稱為「USB」)標準、且可分別透過(編碼器110與燒錄器120的各自的)USB埠耦接至使用者介面裝置UI(A)與UI(B);並且編碼器110與燒錄器120可分別提供網頁樣式的控制頁,以容許使用者USR(A)與USR(B)透過分別執行於使用者介面裝置UI(A)與UI(B)上的瀏覽器來控制編碼器110與燒錄器120,以進行韌體編程的一系列運作,諸如第2圖所示控制方案中描述的運作;但本發明不限於此。使用者介面裝置UI(A)與UI(B)可透過至少一網路(例如一或多個網路)來彼此進行通訊。例如:使用者USR(B)可利用使用者介面裝置UI(B)將該種子檔案透過網際網路傳輸至使用者介面裝置UI(A)。又例如:使用者USR(A)可利用使用者介面裝置UI(A)將資料HEX_2透過網際網路傳輸至使用者介面裝置UI(B)。本實施例與前述實施例相仿之處不再重複贅述。
第4圖繪示依據本發明一實施例的一種編程工具400的示意圖。編程工具400可作為該裝置(上述用來對該微控制器芯片進行韌體編程之裝置)之一例。控制電路112與122可整合成為同一個控制電路,諸如控制電路412,其中控制電路412可包含資料處理電路112DP與122DP。另外,介面電路118與128可整合成為同一個介面電路,諸如介面電路418。舉例來說,介面電路418可符合USB標準、且可透過編程工具400的USB埠耦接至一使用者介面裝置,諸如使用者介面裝置UI(A)與UI(B)中之一者,但本發明不限於此。有權限的人員(諸如該方案廠商的人員、或該製造商的人員)可預先設定編程工具400,以啟用資料處理電路112DP與122DP中之一者,且尤其另禁用資料處理電路112DP與122DP中之另一者。當資料處理電路112DP被啟用、且資料處理電路122DP被禁用,編程工具400可用來作為編碼器110。當資料處理電路122DP被啟用、且資料處理電路112DP被禁用,編程工具400可用來作為燒錄器120。本實施例與前述實施例相仿之處不再重複贅述。
依據某些實施例,該裝置可包含編程系統100中的編碼器110。尤其是,該裝置可包含另一積體電路編程器,且該另一積體電路編程器是編程系統100中的該積體電路編程器(諸如燒錄器120)的等效電路。例如:該裝置可包含編程工具400,其中資料處理電路112DP被啟用、且資料處理電路122DP被禁用。這些實施例與前述實施例相仿之處不再重複贅述。
依據某些實施例,該裝置可包含編程系統100中的該積體電路編程器(諸如燒錄器120)。尤其是,該裝置可包含另一編碼器,且該另一編碼器是編程系統100中的編碼器110的等效電路。例如:該裝置可包含編程工具400,其中資料處理電路122DP被啟用、且資料處理電路112DP被禁用。這些實施例與前述實施例相仿之處不再重複贅述。
第5圖繪示該方法的一工作流程500。
於步驟S10中,利用該積體電路編程器諸如燒錄器120(例如:其內的資料處理電路122DP),產生該種子檔案,其中該種子檔案包含該積體電路編程器的特徵資訊,例如該特徵資訊對應於該積體電路編程器。依據本實施例,該特徵資訊可包含該積體電路編程器的編程器辨識碼PID。尤其是,該特徵資訊可另包含時間戳記TS,例如時間戳記TS可對應於產生該種子檔案的時間,但本發明不限於此。
於步驟S20中,利用編碼器110(例如:其內的資料處理電路112DP)至少依據該特徵資訊來加密(encrypt)代表該程式碼的原始資料(諸如資料HEX_0),以產生該原始資料之一加密版本(諸如資料HEX_2)。
於步驟S30中,利用該積體電路編程器諸如燒錄器120(例如:其內的資料處理電路122DP),依據該特徵資訊來解密(decrypt)該原始資料之該加密版本,以產生該原始資料。
於步驟S40中,利用該積體電路編程器諸如燒錄器120(例如:其內的資料處理電路122DP),至少依據儲存於該積體電路編程器中之預定資訊來加密該原始資料,以產生該原始資料之另一加密版本(諸如資料HEX_3),其中MCU芯片130也儲存有該預定資訊。依據本實施例,該預定資訊可包含金鑰KEYB2。例如:金鑰KEYB2可以是一私鑰(private key)。
於步驟S50中,利用MCU芯片130(例如:其內的保護電路132,諸如保護電路132的資料處理子電路)至少依據儲存於MCU芯片130中之該預定資訊來解密該原始資料之該另一加密版本,以產生該原始資料,且將該原始資料寫入MCU芯片130中之非揮發性記憶體130M。
依據本實施例,於步驟S20中,該編碼器中之資料處理電路112DP可依據該特徵資訊以及預定數量PCNT來加密該原始資料(諸如資料HEX_0),以產生該原始資料之該加密版本(諸如資料HEX_2),其中預定數量PCNT可代表多個微控制器芯片{130}的數量,以容許該積體電路編程器對該多個微控制器芯片{130}進行關於該程式碼的韌體編程。例如:資料處理電路112DP可依據該特徵資訊產生金鑰KEYB1、且依據金鑰KEYB1來加密該原始資料(諸如資料HEX_0),以產生該原始資料之一中間(intermediate)加密版本(諸如資料HEX_1);並且,資料處理電路112DP可依據該特徵資訊來加密包含該特徵資訊、預定數量PCNT、金鑰KEYB1以及該中間加密版本的組合資料,諸如資料組合{(PID, TS), PCNT, KEYB1, HEX_1},以產生該原始資料之該加密版本(諸如資料HEX_2)。
另外,MCU芯片130之獨一辨識碼UID係儲存於MCU芯片130中。於步驟S40中,燒錄器120中之資料處理電路122DP可依據包含獨一辨識碼UID以及該預定資訊的組合資料,諸如組合資料{KEYB2, UID},來加密該原始資料,以產生該原始資料之該另一加密版本。例如:資料處理電路122DP可接收來自MCU芯片130的獨一辨識碼UID;以及資料處理電路122DP可組合獨一辨識碼UID與該預定資訊,以產生這個組合資料諸如組合資料{KEYB2, UID},以供加密該原始資料。此外,解密該原始資料之該另一加密版本以產生該原始資料可藉由利用MCU芯片130中之保護電路132來進行。藉助於保護電路132的解密以及該積體電路編程器(諸如燒錄器120)的加密之間的對應性,該方法能避免MCU芯片130被代換為另一MCU芯片,其中該另一MCU芯片缺乏保護電路132之任何等效電路。本實施例與前述實施例相仿之處不再重複贅述。
依據某些實施例,編碼器110可實施成個人電腦(例如桌上型電腦或膝上型電腦),其中介面電路118與128可為符合現有通訊標準的通訊介面電路,但本發明不限於此。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100‧‧‧編程系統
110‧‧‧編碼器
112, 122, 412‧‧‧控制電路
112DP, 122DP‧‧‧資料處理電路
114, 118, 124, 128, 134, 418‧‧‧介面電路
116‧‧‧儲存裝置
120‧‧‧燒錄器
130‧‧‧MCU芯片
130C‧‧‧核心電路
130M‧‧‧非揮發性記憶體
132‧‧‧保護電路
400‧‧‧編程工具
500‧‧‧工作流程
S10, S20, S30, S40, S50‧‧‧步驟
DEC_A, DEC_B‧‧‧解碼電路
ENC_A, ENC_B‧‧‧編碼電路
HEX_0, HEX_1, HEX_2, HEX_3, …‧‧‧資料
KEYB1, KEYB2‧‧‧金鑰
KEY_GEN‧‧‧金鑰產生器
PCNT‧‧‧預定數量
PID‧‧‧編程器識別碼
TS‧‧‧時間戳記
UID‧‧‧獨一識別碼
UI(A), UI(B)‧‧‧使用者介面裝置
USR(A), USR(B)‧‧‧使用者
第1圖係依據本發明一實施例的一種編程系統的示意圖。 第2圖係依據本發明一實施例的一種用來對一微控制器芯片(microcontroller chip)進行韌體編程(firmware programming)之方法的控制方案。 第3圖繪示第1圖所示編程系統的於一實施例中的實施細節。 第4圖係依據本發明一實施例的一種編程工具的示意圖。 第5圖繪示該方法的一工作流程。
Claims (11)
- 一種用來對一微控制器芯片(microcontroller chip)進行韌體編程(firmware programming)之方法,該方法包含有:利用一積體電路編程器(integrated circuit programmer,IC programmer)產生一種子檔案,其中該種子檔案包含該積體電路編程器的特徵資訊,且該特徵資訊對應於該積體電路編程器;利用一編碼器至少依據該特徵資訊來加密(encrypt)代表一程式碼的原始資料,以產生該原始資料之一加密版本;利用該積體電路編程器依據該特徵資訊來解密(decrypt)該原始資料之該加密版本,以產生該原始資料;利用該積體電路編程器至少依據儲存於該積體電路編程器中之預定資訊來加密該原始資料,以產生該原始資料之另一加密版本,其中該微控制器芯片也儲存有該預定資訊;利用該微控制器芯片至少依據儲存於該微控制器芯片中之該預定資訊來解密該原始資料之該另一加密版本,以產生該原始資料,且將該原始資料寫入該微控制器芯片中之一非揮發性記憶體;其中解密該原始資料之該另一加密版本以產生該原始資料是藉由利用該微控制器芯片中之一保護電路來進行;以及該方法另包含:藉助於該保護電路的解密以及該積體電路編程器的加密之間的對應性,避免該微控制器芯片被代換為另一微控制器芯片,其中該另一微控制器芯片缺乏該保護電路之任何等效電路。
- 如申請專利範圍第1項所述之方法,其中該特徵資訊包含該積體電路編程器的編程器辨識碼(programmer identification,programmer ID)。
- 如申請專利範圍第2項所述之方法,其中該特徵資訊另包含一時間戳記(timestamp)。
- 如申請專利範圍第3項所述之方法,其中該時間戳記對應於產生該種子檔案的時間。
- 如申請專利範圍第1項所述之方法,其中利用該編碼器至少依據該特徵資訊來加密代表該程式碼的該原始資料以產生該原始資料之該加密版本之步驟另包含:利用該編碼器中之一資料處理電路依據該特徵資訊以及一預定數量來加密該原始資料,以產生該原始資料之該加密版本,其中該預定數量代表多個微控制器芯片的數量,以容許該積體電路編程器對該多個微控制器芯片進行關於該程式碼的韌體編程。
- 如申請專利範圍第5項所述之方法,其中利用該編碼器至少依據該特徵資訊來加密代表該程式碼的該原始資料以產生該原始資料之該加密版本之步驟另包含:利用該資料處理電路依據該特徵資訊產生一金鑰、且依據該金鑰來加密該原始資料,以產生該原始資料之一中間(intermediate)加密版本;以及利用該資料處理電路依據該特徵資訊來加密包含該特徵資訊、該預定數量、該金鑰以及該中間加密版本的組合資料,以產生該原始資料之該加密版本。
- 如申請專利範圍第1項所述之方法,其中該預定資訊包含一金鑰。
- 如申請專利範圍第7項所述之方法,其中該金鑰是一私鑰(private key)。
- 如申請專利範圍第1項所述之方法,其中該微控制器芯片之一獨一辨識碼(unique identification,unique ID)係儲存於該微控制器芯片中;以及利用該積體電路編程器至少依據儲存於該積體電路編程器中之該預定資訊來加密該原始資料以產生該原始資料之該另一加密版本之步驟另包含:利用該積體電路編程器中之一資料處理電路依據包含該獨一辨識碼以及該預定資訊的組合資料來加密該原始資料,以產生該原始資料之該另一加密版本。
- 如申請專利範圍第9項所述之方法,其中利用該積體電路編程器至少依據儲存於該積體電路編程器中之該預定資訊來加密該原始資料以產生該原始資料之該另一加密版本之步驟另包含:利用該資料處理電路接收來自該微控制器芯片的該獨一辨識碼;以及利用該資料處理電路組合該獨一辨識碼與該預定資訊,以產生該組合資料,以供加密該原始資料。
- 一種微控制器芯片(microcontroller chip),包含有:一非揮發性記憶體,用來儲存資訊;以及一保護電路,耦接至該非揮發性記憶體,用來進行資料處理,以容許韌體編程(firmware programming)被進行於該微控制器芯片上,其中:一積體電路編程器(integrated circuit programmer,IC programmer)產生一種子檔案,其中該種子檔案包含該積體電路編程器的特徵資訊,且該特徵資訊對應於該積體電路編程器;一編碼器至少依據該特徵資訊來加密(encrypt)代表一程式碼的原始資料,以產生該原始資料之一加密版本;該積體電路編程器依據該特徵資訊來解密(decrypt)該原始資料之該加密版本,以產生該原始資料;該積體電路編程器至少依據儲存於該積體電路編程器中之預定資訊來加密該原始資料,以產生該原始資料之另一加密版本,其中該微控制器芯片也儲存有該預定資訊;以及該保護電路至少依據儲存於該微控制器芯片中之該預定資訊來解密該原始資料之該另一加密版本,以產生該原始資料,且將該原始資料寫入該非揮發性記憶體。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107107338A TWI662474B (zh) | 2018-03-06 | 2018-03-06 | 用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片 |
CN201810515786.9A CN110231940B (zh) | 2018-03-06 | 2018-05-25 | 对微控制器芯片进行固件编程的方法、装置及对应的芯片 |
US16/011,650 US10565381B2 (en) | 2018-03-06 | 2018-06-19 | Method and apparatus for performing firmware programming on microcontroller chip, and associated microcontroller chip |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107107338A TWI662474B (zh) | 2018-03-06 | 2018-03-06 | 用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI662474B true TWI662474B (zh) | 2019-06-11 |
TW201939267A TW201939267A (zh) | 2019-10-01 |
Family
ID=67764486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107107338A TWI662474B (zh) | 2018-03-06 | 2018-03-06 | 用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10565381B2 (zh) |
CN (1) | CN110231940B (zh) |
TW (1) | TWI662474B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI720694B (zh) * | 2019-11-18 | 2021-03-01 | 中華電信股份有限公司 | 具時間序列演算之燒錄認證裝置及方法 |
US11183262B2 (en) * | 2020-04-17 | 2021-11-23 | Taiwan Semiconductor Manufacturing Company, Ltd. | Data verifying method, chip, and verifying apparatus |
CN111951025B (zh) * | 2020-07-28 | 2022-08-19 | 广州邦讯信息系统有限公司 | 芯片防伪方法 |
CN112379889B (zh) * | 2021-01-15 | 2021-04-02 | 南京沁恒微电子股份有限公司 | 一种ic远程自助烧录方法与系统 |
CN113076274B (zh) * | 2021-04-30 | 2022-08-09 | 成都优博创通信技术有限公司 | 一种光模块以及软件程序获取方法 |
CN116150731B (zh) * | 2022-11-28 | 2023-09-15 | 深圳市富临通实业股份有限公司 | 一种基于uid的mcu内部程序防抄袭的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050180572A1 (en) * | 2004-02-18 | 2005-08-18 | Graunke Gary L. | Apparatus and method for distributing private keys to an entity with minimal secret, unique information |
US20070165264A1 (en) * | 2006-01-18 | 2007-07-19 | Pfu Limited | Target device, method and system for managing device, and external device |
TW201333702A (zh) * | 2012-02-14 | 2013-08-16 | Nuvoton Technology Corp | 具有防複製功能的微處理器晶片及其晶片燒錄系統與電子裝置 |
TW201337629A (zh) * | 2012-03-09 | 2013-09-16 | Nuvoton Technology Corp | 燒錄系統 |
CN105468935A (zh) * | 2015-11-13 | 2016-04-06 | 福州瑞芯微电子股份有限公司 | 一种保证key安全烧录的方法、发送端、工具端及烧录端 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9930145D0 (en) * | 1999-12-22 | 2000-02-09 | Kean Thomas A | Method and apparatus for secure configuration of a field programmable gate array |
SG97852A1 (en) * | 2000-02-25 | 2003-08-20 | Kent Ridge Digital Labs | Method and apparatus for digital content copy protection |
US10110380B2 (en) * | 2011-03-28 | 2018-10-23 | Nxp B.V. | Secure dynamic on chip key programming |
US20120303974A1 (en) * | 2011-05-25 | 2012-11-29 | Condel International Technologies Inc. | Secure Removable Media and Method for Managing the Same |
US9224000B1 (en) * | 2011-06-14 | 2015-12-29 | Ionic Security, Inc. | Systems and methods for providing information security using context-based keys |
ES2782359T3 (es) * | 2011-08-12 | 2020-09-14 | Abb Schweiz Ag | Procedimiento y sistema para la transmisión protegida de archivos |
JP6361221B2 (ja) * | 2014-03-27 | 2018-07-25 | 株式会社デンソー | 空気吹出装置 |
US9904805B2 (en) * | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
-
2018
- 2018-03-06 TW TW107107338A patent/TWI662474B/zh active
- 2018-05-25 CN CN201810515786.9A patent/CN110231940B/zh active Active
- 2018-06-19 US US16/011,650 patent/US10565381B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050180572A1 (en) * | 2004-02-18 | 2005-08-18 | Graunke Gary L. | Apparatus and method for distributing private keys to an entity with minimal secret, unique information |
US20070165264A1 (en) * | 2006-01-18 | 2007-07-19 | Pfu Limited | Target device, method and system for managing device, and external device |
TW201333702A (zh) * | 2012-02-14 | 2013-08-16 | Nuvoton Technology Corp | 具有防複製功能的微處理器晶片及其晶片燒錄系統與電子裝置 |
TW201337629A (zh) * | 2012-03-09 | 2013-09-16 | Nuvoton Technology Corp | 燒錄系統 |
CN105468935A (zh) * | 2015-11-13 | 2016-04-06 | 福州瑞芯微电子股份有限公司 | 一种保证key安全烧录的方法、发送端、工具端及烧录端 |
Also Published As
Publication number | Publication date |
---|---|
US20190278912A1 (en) | 2019-09-12 |
CN110231940A (zh) | 2019-09-13 |
US10565381B2 (en) | 2020-02-18 |
TW201939267A (zh) | 2019-10-01 |
CN110231940B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI662474B (zh) | 用來對微控制器芯片進行韌體編程之方法與裝置、以及對應的微控制器芯片 | |
US10341091B2 (en) | Secure memory storage | |
US9100187B2 (en) | Authenticator | |
CN103210396B (zh) | 包括用于保护敏感代码和数据的架构的方法和装置 | |
US10110380B2 (en) | Secure dynamic on chip key programming | |
US9160531B2 (en) | Host device, semiconductor memory device, and authentication method | |
EP2506174B1 (en) | Enabling a software application to be executed on a hardware device | |
CN1791111A (zh) | 通过多接口实现安全性的方法和装置 | |
EP2629225A1 (en) | System, devices and methods for collaborative execution of a software application comprising at least one encrypted instruction | |
CN104732159A (zh) | 一种文件处理方法及装置 | |
JP6930053B2 (ja) | 装置認証キーを利用したデータ暗号化方法およびシステム | |
US11019098B2 (en) | Replay protection for memory based on key refresh | |
CN111914309A (zh) | 密码保护的数据储存装置以及非挥发式存储器控制方法 | |
CN106326690B (zh) | 密钥保护装置及密钥保护方法 | |
TWM575144U (zh) | A computing device that verifies a password through an operating system for encryption and decryption | |
US8929555B2 (en) | Data encryption systems and methods | |
JP2019121955A (ja) | 半導体装置及び暗号鍵の生成方法 | |
TW201642621A (zh) | 金鑰保護裝置及金鑰保護方法 | |
TWI675578B (zh) | 加解密系統、加密裝置、解密裝置和加解密方法 | |
KR102218715B1 (ko) | 채널별로 데이터를 보호할 수 있는 반도체 장치 | |
JP7170588B2 (ja) | データ処理方法及びデータ処理システム | |
US20200204339A1 (en) | Portable electronic device and ic module | |
CN116451185A (zh) | 一种应用程序的保护方法及装置 | |
TW201142645A (en) | Microprocessor and method for generating unpredictable key | |
JP2009075474A (ja) | 暗号処理装置 |