一種微控制器目標代碼保護方法及系統與流程
2023-06-03 11:19:06 3

本發明涉及微控制器加密技術領域,具體來說是對ip供應商的目標代碼進行保護的一種微控制器目標代碼保護方法及系統。
背景技術:
在現代產業分工合作的潮流下,有許多電子產業的設計公司可支持提供設備方案的電路圖及核心目標代碼給客戶,以便客戶進行生產及二次開發程序,而在這種合作模式下,如何保障ip供應商自主研發的智慧財產權,如目標代碼等,並讓ip供應商能夠掌控客戶的設備生產數量,是開發商和客戶合作能夠達成的關鍵所在。
現有技術中是在某些微控制器中會引入存儲保護單元(mpu),通過存儲保護單元就可以實現對部分代碼塊進行保護,阻止內部非法讀出從而在保護自己代碼的情況下,允許客戶進行二次程序開發。比較常見的是單晶片二次開發模式和雙晶片二次開發模式。
如圖1所示,為單晶片二次開發模式流程,其主要是將微控制器存儲區分為方案商代碼存儲區和客戶代碼存儲區,存儲保護單元可以保護方案商代碼不被客戶區代碼讀出。當具體操作時,第一步,首先由ip供應商把自己的代碼寫入方案商代碼存儲區(a),然後把微控制器交給客戶;第二步,由客戶把自己的代碼寫入客戶代碼存儲區(b)。客戶寫入的客戶代碼可以調用方案商的代碼執行,但不能讀取代碼的二進位值。
但這個方法有兩個致命缺點,一是目標代碼的寫入必須由ip供應商自己寫入,否則如果目標代碼提供給客戶寫入,就會導致目標代碼洩露,客戶就可以不經過原作者許可,生產更多設備,從而無法控制客戶的生產數量;二是出廠後的設備中的代碼升級的問題,如果需要對受保護的目標代碼進行升級,會碰到「目標代碼寫入」同樣的問題,必須對出廠的設備召回,由原作者自己升級。
對此問題,也有一些解決方案,比如在設備中採用雙晶片,如圖2所示,為單晶片二次開發基礎上改進的雙晶片二次開發模式流程,這種方式通常是在設備的電路板上集成兩顆微控制器,分別為微控制器a和微控制器b,微控制器a用於運行ip供應商的代碼,微控制器b用於運行客戶的代碼。兩微控制器之間通過通信接口進行交互。第一步,首先由ip供應商把自己的代碼寫入微控制器a,然後把微控制器a交給客戶;第二步,客戶把自己的代碼寫入微控制器b,再把微控制器a和微控制器b都裝配到電路板上,但這種設計方案明顯的增加了製造成本,並不適用於廣泛推廣使用。
技術實現要素:
本發明的目的在於提供一種微控制器目標代碼保護方法及系統,在允許客戶進行生產及二次開發程序的前提下,實現對ip供應商的目標代碼的保護,並由此能有效控制客戶的生產數量。
為了解決上述技術問題,本發明採用了如下的技術方案:
本發明提供一種微控制器目標代碼保護方法,其中的微控制器內的存儲空間分為安全密鑰存儲區、目標代碼密文存儲區和客戶代碼存儲區,所述的目標代碼保護方法的具體步驟為:
s1.寫入安全密鑰:ip供應商將安全密鑰寫入微控制器內部的安全密鑰存儲區;
s2.加密目標代碼:ip供應商對需要保護的目標代碼使用安全密鑰進行加密,並將生成目標代碼密文提供給客戶;
s3.寫入目標代碼密文:將目標代碼密文寫入目標代碼密文存儲區;
s4.解密目標代碼:微控制器內部的解密模塊對目標代碼密文進行解密,再將解密後的目標代碼存入指令寄存器;
s5.寫入客戶代碼:客戶將客戶代碼寫入微控制器中的客戶代碼存儲區。
較佳地,所述的目標代碼保護方法還包括:
s6.更新目標代碼:在需要更新目標代碼時,ip供應商使用安全密鑰對更新後的目標代碼進行加密,將生成的目標代碼密文提供給客戶,由客戶將目標代碼密文寫入目標代碼密文存儲區,以更新微控制器中的目標代碼。
較佳地,在步驟s4中,當微控制器的程序計數器需要讀取目標代碼時,由解密模塊執行以下步驟:
s4-1.根據取指地址從目標代碼密文存儲區中讀取目標代碼密文;
s4-2.從安全密鑰存儲區中提取ip供應商寫入的安全密鑰;
s4-3.使用安全密鑰對目標代碼密文進行解密,形成目標代碼明文;
s4-4.將目標代碼明文存入指令寄存器。
較佳地,在所述步驟s3中,目標代碼密文由ip供應商或客戶或微控制器的生產商寫入。
較佳地,對所述目標代碼採用公開密鑰算法進行加密或解密,所述的加密或解密的具體過程為:
a.將密鑰進行密鑰變換,並進行循環迭代,分別得到子密鑰;
b.對目標代碼進行分組後進行初始變換,得到目標代碼初始數據;
c.在子密鑰的控制下,對目標代碼初始數據進行循環迭代,依次得到多個
目標代碼數據;
d.分別對目標代碼數據進行逆變換,形成目標代碼密文或目標代碼明文。
較佳地,所述的公開密鑰算法為des或aes。
相較於現有技術,本發明提供的微控制器目標代碼保護方法具有以下的優點和積極效果:
1.本發明由ip供應商對需要保護的目標代碼使用安全密鑰進行加密,生成目標代碼密文,使得在程序運行時,必須通過微控制器內得解密模塊對目標代碼密文進行解密,不僅保證了目標代碼的保密性,且目標代碼密文的寫入和升級過程都可由客戶自行操作,降低了製造使用成本;
2.本發明是對微控制器執行的目標代碼進行加密,且解密後的數據直接送微控制器的程序計數器中,不會對外輸出明文數據,避免了目標代碼的洩露;
3.由於本發明是在微控制器中寫入安全密鑰後才交給客戶,在保護目標代碼的基礎上,ip供應商還可通過控制寫入安全密鑰的微控制器的數量來控制客戶的生產數量;
4.解密過程是通過微控制器內部的解密模塊配合微控制器內部的硬體進行,解密後的目標代碼只存在於內部的指令寄存器中,即使用程序或各種調試手段也無法讀取解密後的目標代碼,保密程度高;
5.安全密鑰只可由ip供應商寫入,通過公開加密算法和私密密鑰對目標代碼進行加密,實現一設備對應一密鑰的加密方式,私密性高,抗攻擊強度高,有效保證了密鑰的存儲安全性。
本發明還包括一種微控制器目標代碼保護系統,所述的微控制器包括存儲模塊、指令寄存器、程序計數器和解密模塊,
存儲模塊內的存儲空間分為安全密鑰存儲區、目標代碼密文存儲區、客戶代碼存儲區,其中,
所述的安全密鑰存儲區用於存儲對目標代碼進行加密和解密的安全密鑰;
所述的目標代碼密文存儲區用於存儲目標代碼密文,所述的目標代碼密文由安全密鑰對目標代碼進行加密後生成;
所述的客戶代碼存儲區用於存儲客戶二次開發的客戶代碼;
所述的解密模塊分別連接存儲模塊、指令寄存器和程序計數器,用於接受程序計數器的指令從目標代碼密文存儲區中讀取目標代碼密文,並使用從安全密鑰存儲區中讀取的安全密鑰對目標代碼密文進行解密,再將解密後的目標代碼明文存入指令寄存器中。
較佳地,所述的安全密鑰由ip供應商寫入。
較佳地,所述的目標代碼密文由ip供應商或客戶或微控制器的生產商寫入。
較佳地,對所述目標代碼採用公開密鑰算法進行加密或解密。
相較於現有技術,本發明提供的微控制器目標代碼保護系統具有以下的優點和積極效果:
1.微控制器目標代碼保護系統將微控制器中的存儲區間合理分區,將安全密鑰、目標代碼密文和客戶代碼分別對應存入安全密鑰存儲區、目標代碼密文存儲區、客戶代碼存儲區中,滿足了客戶二次開發代碼的同時,避免了客戶代碼讀寫時目標代碼的洩露,保證了目標代碼的保密性;
2.ip供應商對需要保護的目標代碼使用安全密鑰進行加密,生成目標代碼密文,使得在程序運行時,必須通過解密模塊配合微控制器內部的硬體在微控制器內部進行解密,解密後的目標代碼只存入指令寄存器中,即使用程序或各種調試手段也無法讀取解密後的目標代碼,保密程度高;
3.安全密鑰只可由ip供應商寫入,通過公開加密算法和私密密鑰對目標代碼進行加密,實現一設備對應一密鑰的加密方式,私密性高,抗攻擊程度低,有效保證了密鑰的存儲安全性;
4.目標代碼密文可由ip供應商或客戶或微控制器的生產商寫入,方便後續的客戶二次開發和更新目標代碼密文,顯著降低了微控制器的製造、使用成本。
附圖說明
圖1是現有技術中的單晶片二次開發模式示意圖;
圖2是現有技術中的雙晶片二次開發模式示意圖;
圖3是本發明中目標代碼保護方法的控制流程圖;
圖4是本發明中目標代碼解密的流程示意圖;
圖5是本發明中分組密碼算法的示意圖;
圖6是本發明中目標保護系統中微控制器的組成示意圖。
具體實施方式
以下結合附圖和具體實施例對本發明提出的技術方案進一步詳細說明。根據下面說明和權利要求書,本發明的優點和特徵將更清楚。需說明的是,附圖均採用非常簡化的形式且均使用非精準的比率,僅用於方便、明晰地輔助說明本發明實施例的目的。
本發明在圖1及圖2所示的單晶片二次開發模式和雙晶片二次開發模式的基礎上,針對單晶片二次開發模式容易洩露目標代碼,更新不便,而雙晶片二次開發模式成本較高等技術問題,提供一種微控制器目標代碼保護方法及系統,以滿足客戶進行生產及二次開發程序的前提下,在較低成本的情況下實現對ip供應商的核心目標代碼的保護,並控制客戶生產數量。現結合圖3至圖5對本發明的技術方案進行詳細描述。
實施例1
本實施例詳細描述本發明的微控制器目標代碼保護方法,其流程圖可參見圖3,微控制器內的存儲空間分有安全密鑰存儲區、目標代碼密文存儲區和客戶代碼存儲區,目標代碼保護方法主要分為以下幾大步驟:
(1)寫入安全密鑰:ip供應商(即圖中的方案商)將安全密鑰寫入微控制器內部的安全密鑰存儲區;
其中安全密鑰是用於對目標代碼的加密和解密,為確保安全密鑰的保密性,安全密鑰必須由ip供應商寫入,並且只能被程序寫入和被內部邏輯讀取,不能被程序或各種調試手段(比如jtag)讀取。
(2)加密目標代碼:ip供應商對需要保護的目標代碼使用安全密鑰進行加密,並將生成目標代碼密文提供給客戶;
本實施例中對目標代碼的加密算法採用的是公開加密算法,由於公開加密算法是經過實踐長期檢驗的算法,其相較於私密加密算法,被攻擊的可能性極低,一般加密算法優選為分組密碼算法的des和aes等。
本發明中的分組密碼算法為對稱密碼體制,加密和解密都使用同一個密鑰,當加解密時,把目標代碼明文或目標代碼密文按一定長度進行分組,其實現原理見圖5,以下以加密過程為例進行說明:
a.先將密鑰按一定的變換規則進行密鑰變換,經過若干輪的循環迭代,分別得到子密鑰k1…kn;
b.將目標代碼明文進行分組,對分組後的各明文組中的目標代碼明文數據進行初始變換,得到目標代碼明文初始數據d0;
c.按一定的加密變換規則,在子密鑰k1…kn的控制下,對目標代碼明文初始數據d0進行若干輪的循環迭代,依次得到目標代碼明文數據d1、…dn;
d.最後對目標代碼明文數據dn進行逆變換,形成目標代碼密文;
解密形成目標代碼密文的過程與對目標代碼明文進行加密過程相同,且加密和解密使用相同的算法,在此不贅述,需注意的是,加密和解密唯一不同的是秘鑰的次序是相反的。
由於目標代碼密文是ip供應商採用安全密鑰對目標代碼進行加密後形成的,其可以防止反彙編逆向破解,也無法在沒有寫入安全密鑰的微控制器中運行,以此保證目標代碼的保密性。本發明的加密過程通過公開加密算法和私密密鑰對目標代碼進行加密,實現一設備對應一密鑰的加密方式,私密性高,抗攻擊程度低,有效保證了密鑰的存儲安全性。
當生成目標代碼密文後,ip供應商可將目標代碼密文提供給客戶,以供客戶可自行進行目標代碼密文的寫入。
(3)寫入目標代碼密文:將目標代碼密文寫入目標代碼密文存儲區;
目標代碼密文的寫入過程可由ip供應商或客戶或微控制器的生產商寫入,以方便後續的客戶二次開發和更新目標代碼密文,較佳地,為方便客戶使用,通常是由ip供應商將目標代碼密文提供給客戶,當後續需要更新時,也可直接向客戶提供更新後的目標代碼密文。
(4)解密目標代碼:微控制器內部的解密模塊對目標代碼密文進行解密,再將解密後的目標代碼存入指令寄存器;
解密過程在微控制器的程序計數器需要讀取目標代碼時啟動,目標代碼的解密流程圖請參見圖4,主要是由解密模塊進行處理,首先,解密模塊根據取指地址從目標代碼密文存儲區中讀取目標代碼密文;並從安全密鑰存儲區中提取ip供應商寫入的安全密鑰;而後通過使用安全密鑰對目標代碼密文進行解密,形成目標代碼明文;再將目標代碼明文直接送入存入指令寄存器,不會對外輸出明文數據,避免了目標代碼的洩露,以在保密性極高的情況下完成目標代碼密文的解密。
解密模塊包括邏輯解密電路,通過邏輯解密電路控制讀取目標代碼密文,並使用安全密鑰對目標代碼進行解密,再存入指令寄存器。由於解密過程是通過微控制器內部的解密模塊配合微控制器內部的硬體進行,解密後的目標代碼只存在於內部的指令寄存器中,即使用程序或各種調試手段也無法讀取解密後的目標代碼,保密程度高。邏輯解密電路的電路連接結構是根據具體的加密、解密方式由不同的邏輯門、觸發器等相互連接來實現,在此不做具體限定。
(5)寫入客戶代碼:客戶將客戶代碼寫入微控制器中的客戶代碼存儲區。
在完成上述操作後,客戶則可以把客戶代碼通過程序寫入微控制器的客戶代碼存儲區,由客戶在此微控制器的基礎上對進行二次程序開發,擴展微控制器的功能模塊。
此外,當需要對受保護的目標代碼進行升級更新時,還可直接由客戶對目標代碼進行更新,其具體為:
(6)更新目標代碼:在需要更新目標代碼時,ip供應商使用安全密鑰對更新後的目標代碼進行加密,將更新後生成的目標代碼密文提供給客戶,由客戶將更新後的目標代碼密文寫入目標代碼密文存儲區,以更新微控制器中的目標代碼。
本發明的更新過程不同於現有的開發模式,無需對出廠的設備進行召回,ip供應商直接可將更新後的目標代碼密文提供給客戶,由客戶自行升級,從而降低了微控制器的製造、使用成本。
本發明由ip供應商對需要保護的目標代碼使用安全密鑰進行加密,生成目標代碼密文,使得在程序運行時,必須通過微控制器內得解密模塊對目標代碼密文進行解密,不僅保證了目標代碼的保密性和安全性,且目標代碼密文的寫入和升級過程都可由客戶自行操作,降低了製造使用成本。
由於本發明是在微控制器中寫入安全密鑰後才交給客戶,只有寫入密鑰的微控制器,才能對目標代碼進行解密。因此,在保護目標代碼的基礎上,ip供應商還可通過控制寫入安全密鑰的微控制器的數量來控制客戶的生產數量。
實施例2
本實施例詳細描述本發明的微控制器目標代碼保護系統,可參圖5,圖5為微控制器的內部結構組成示意圖,如圖所示,微控制器包括存儲模塊、指令寄存器、程序計數器和解密模塊,為了便於說明目標代碼保護系統的原理,圖中僅繪製了本系統所需的存儲模塊、指令寄存器、程序計數器和解密模塊,微控制器內的其他模塊在圖6中並未詳細繪出。
本系統將存儲模塊內的存儲空間分為安全密鑰存儲區(a)、目標代碼密文存儲區(c)、客戶代碼存儲區(b),通過合理分區,使安全密鑰、目標代碼密文和客戶代碼能分別對應存入安全密鑰存儲區、目標代碼密文存儲區、客戶代碼存儲區中,滿足了客戶二次開發代碼的同時,避免了客戶代碼讀寫時目標代碼的洩露,保證了目標代碼的保密性。現對各存儲區進行詳細說明:
安全密鑰存儲區(a):
安全密鑰存儲區(a)用於存儲安全密鑰,安全密鑰用於對目標代碼進行加密和解密,為保證安全密鑰的安全性,安全密鑰必須由ip供應商寫入,並且只能被程序寫入和被內部邏輯讀取,不能被程序或各種調試手段(比如jtag)讀取。
客戶代碼存儲區(b):
客戶代碼存儲區(b)用於存儲客戶二次開發的客戶代碼,以便客戶在此微控制器的基礎上對進行二次程序開發,擴展微控制器的功能模塊。
目標代碼密文存儲區(c):
目標代碼密文存儲區(c)用於存儲目標代碼密文,目標代碼密文由安全密鑰加密目標代碼後生成,其可以防止反彙編逆向破解,也無法在沒有寫入安全密鑰的微控制器中運行,以此保證目標代碼的保密性,此外,為方便後續的客戶二次開發和更新目標代碼密文,目標代碼密文可由方案商、客戶、或生產商寫入。
解密模塊(d):
解密模塊(d)分別連接存儲模塊、指令寄存器和程序計數器,用於接受程序計數器的指令從目標代碼密文存儲區中讀取目標代碼密文,並使用從安全密鑰存儲區中讀取的安全密鑰對目標代碼密文進行解密,再將解密後的目標代碼明文存入指令寄存器中。
解密模塊的解密主要通過邏輯解密電路實現,通過邏輯解密電路控制讀取目標代碼密文,並使用安全密鑰對目標代碼進行解密,再存入指令寄存器,使得程序運行時,必需通過解密模塊配合微控制器內部的硬體在微控制器內部進行解密,解密後的目標代碼只存入指令寄存器中,即使用程序或各種調試手段也無法讀取解密後的目標代碼,保密程度高。邏輯解密電路的電路連接結構是根據具體的加密、解密方式由不同的邏輯門、觸發器等相互連接來實現,在此不做具體限定。
本實施例中對目標代碼的加密或解密採用的是公開加密算法,由於公開加密算法是經過實踐長期檢驗的算法,其相較於私密加密算法,被攻擊的可能性極低,一般加密算法優選為des和aes等。
本發明中的分組密碼算法為對稱密碼體制,加密和解密都使用同一個密鑰,當加解密時,把目標代碼明文或目標代碼密文按一定長度進行分組,其實現原理見圖5,以下以加密過程為例進行說明:
a.先將密鑰按一定的變換規則進行密鑰變換,經過若干輪的循環迭代,分別得到子密鑰k1…kn;
b.將目標代碼明文進行分組,對分組後的各明文組中的目標代碼明文數據進行初始變換,得到目標代碼明文初始數據d0;
c.按一定的加密變換規則,在子密鑰k1…kn的控制下,對目標代碼明文初始數據d0進行若干輪的循環迭代,依次得到目標代碼明文數據d1、…dn;
d.最後對目標代碼明文數據dn進行逆變換,形成目標代碼密文;
解密形成目標代碼密文的過程與對目標代碼明文進行加密過程相同,且加密和解密使用相同的算法,在此不贅述,需注意的是,加密和解密唯一不同的是秘鑰的次序是相反的。
通過安全密鑰結合公開加密算法的形式實現一設備對應一密鑰的加密方式,私密性高,抗攻擊程度低,有效保證了密鑰的存儲安全性。
顯然,本領域的技術人員可以對發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。