專利名稱:集成電路外掛軟件的加密方法
技術領域:
本發明系關于一種集成電路外掛軟件的加密方法,尤指一種以函數/反函數還原原理用于CPU/MCU與其外掛控制軟件間的加密/解密措施的方法。
由上述可知,將控制軟件以固件形式直接封存于集成電路中系存在成本高、存貨種類多等種種問題。因而,將CPU/MCU的控制軟件外掛為可以考慮的另一個方向。以電腦內部的儲存單元中實際存放的程式指令為例,用于數據運算處理的電腦,由于程式指令龐大,所以多儲存于其硬盤上,而以程式控制為主要功能的電腦,大多將程式固化為固件(Firmware),直接燒錄在CPU/MCU內置的儲存單元或其周邊具有斷電保護的外掛儲存芯片內。然而,任何一種儲存芯片的輸出入方式都是標準的,其讀取數據時,系依一定的時序將某一地址碼以適當的高低電位分別加于地址總線之上,使該地址所對應的儲存單體(Cell)內容依一定的時序出現在數據總線上。由于這是一種通用標準過程,所以儲存芯片的內容無法依賴現有的通用結構加以保密。
由此可見,盡管外掛方式可以增加軟件開發的彈性,并減少CPU/MCU供應廠的產品各類,但保密問題仍然影響軟件開發者采用外掛軟件的意愿。因為外掛軟件業者的權益通常會受到兩種方式的侵犯。第一種是直接仿冒。由于電子產品多采用通用的CPU/MCU,所以仿冒者只需在公開市場采購到相同的CPU/MCU,然后將想要仿冒的產品中外掛的儲存芯片的內容加以拷貝,再燒入自備的通用型的儲存芯片之中,即可自行生產仿冒的產品。第二種是盜取功能碼(通常是匯編形式)。因為目前外掛的軟件都是為通用CPU/MCU編寫,只要將其讀出,經過反匯編軟件的解讀,就能輕易的將CPU/MCU用的機器碼(以0和1的方式存在)翻譯成編程人員能了解的匯編碼(依IBM的定義俗稱Assembly)而達到竊取功能秘密的目的。
本發明的技術方案是這樣的,一種集成電路外掛軟件的加密解密方法,令具執行控制軟件功能之集成電路以外掛方式儲存其控制軟件,其特征在于外掛的控制軟件,先經過一個加密函數的處理,再被燒錄于通用的儲存芯片之上,又在集成電路內部設一以前述函數的反函數為基礎的解密單元,專司對自外掛外儲存芯片上讀取的已加密的控制軟件進行解密的功能。
這種加密保護方法的理論基礎如下。
由前述可知,開發廠商所需保護的是其設計的軟件。這種軟件在開發完畢時通常是以16進制的可執行文件或類似的形式存在,等待被燒錄于儲存芯片之上。其內容依目前的習慣,不外是以byte或word的型式組成,每個byte含8個bit,每個word則依所用的CPU/MCU不同,可含8,12,13,14,15,16個或甚至更多個bit不等。此外,因為這些byte或word在文件內各占有一定的排序位置,這些位置就對應于他們被燒錄在儲存芯片中的硬件地址。所以在文件中某一位置An(其數值=n),就存有Dn的內容。
由于D是開發完成后的最終可執行文件內容,并且是以通用型式存在,便利抄襲,所以開發商都想將其改變為不通用的形態。但是CPU/MCU的執行單元只認識這種通用標準的內容,不容改變。所以本發明就是要提出一個主要的技術手段,能同時滿足兩者的需求。
從數學函數的理論,當一個函數滿足了某些特殊條件時,它就有反函數存在。假設F是一個這樣的函數,則它的反函數G就具有以下的特性。
G=F-1G·F=F-1·F=I在此I是Identity函數,不管作用在任何數據上,其輸出永遠和輸入相同。
對一個通用的可執行文件D,只要將它做為輸入數據(在此隱含了引用其內容Dn及所對應的地址An),經加密函數的操作,就可得到一個經過加密的可執行文件D′。這個文件已經不是標準型式,而且也不能被標準的CPU/MCU核心執行。這個過程的數學模式如下D′=F(D)在此當開發商以D′文件燒錄于外掛儲存芯片之上,就不會被輕易的抄襲了。但是這也衍生了一個新問題,就是如何讓CPU/MCU核心來執行此一文件。
為了執行加密文件D′,在CPU/MCU芯片上于運算處理及執行單元之前必須以硬件方式實現反函數G。在執行過程中,當D′文件的內容D′n(隱含其地址An)被送至G作為輸入數據時,函數G的操作可使它還原成可執行文件D,再被送入運算處理及執行單元,按照標準程式執行。這個過程的數學模式如下G(D′)=F-1(F(D))=I(D)=D這整個過程一方面使曝露在外掛儲存芯片上的程式以非標準的方式D′存在,而受到了保護。另一方面對CPU/MCU的執行單元而言,它能實時而準確的讀到執行文件D,而完成任務,維護了設計功能。
又由于不同的廠商可選用不同加密(F)/解密(G)函數對,所以加密執行文件D′是以多變化的非標準型式出現,更強化了保密(護)功能。而每一個F/G函數組,在實踐時也可以依輸入數據中的地址An做動態加密,使得被破解的可能性更大幅度降低。如果CPU/MCU廠家愿意進一步的努力,更可以為開發商提供在生產線上即時動態加密的能力,又更進一步的保障了知識產權。
圖2為本發明產生加密可執行文件之流程圖。
圖3為本發明以“類”C語言形式表示以異或(XOR)函數加密的一種后處理軟件內容(配合實施例一)。
圖4為本發明以異或(XOR)構成解密函數“G”(“F”函數的反函數)的一種硬件架構示意圖(配合實施例一)。
圖5為本發明以“類”C語言形式表示以bit位移函數加密的又一種后處理軟件內容(配合實施例二)。
圖6為本發明以數據總線bit位移構成解密函數“G”(“F”函數的反函數)的又一種硬件架構示意圖(配合實施例二)。
圖7為本發明以組合方式設定解密函數的再一種硬件結構示意圖,此圖僅為可能的組合方式之一。
圖8為圖7所示硬件之一種解密函數參數設定方式示意圖。
圖9為圖7所示硬件之另種解密函數參數設定方式示意圖。
圖10為圖7所示硬件之另種解密函數參數設定方式示意圖。
圖號部分(10)集成電路(12)解碼器(11)運算處理暨程式執行單元(13)地址產生器 (14)數據總線 (15)地址總線(16)接點切換單元(17)邏輯閘(31)(32)參數設定單元(310)(320)控制線在實際應用時,固件(Firmware)的開發者,面對一種CPU/MCU的開發平臺進行程式化,經過種種軟件工程步驟以后完成一個經過嚴密測試的版本,亦即可以燒錄進芯片的程式文件,這個程式文件是以二進位機器碼組成的可執行組合語言指令,然而對于儲存芯片而言,前述的組合語言指令也是一種廣義的數據,當其燒錄進芯片后,在儲存芯片中的每一個地址位置,就存有一份相對應的指令(或廣義的數據)。如果這些數據是以通用的標準型式存在,任何人依照一定的程序均可由儲存芯片中將其讀出并予復制,然后和標準的CPU/MCU合用制成仿冒產品,所以對開發者毫無保障。因而本發明利用數學方法將這些標準指令(數據)進行加密,然后在執行前加以解密,即為本發明的主要技術特徵所在。
如圖1所示(本發明之系統示意圖),其是由一個具有執行程式功能的集成電路(10)(如CPU/MCU)以外掛方式連結一個儲存控制軟件的通用儲存芯片(20);其中,該集成電路(10)至少包括有一運算處理暨程式執行單元(11)、一解碼器(12)及一地址產生器(13);該運算處理暨程式執行單元(11)除透過解碼器(12)、數據總線(14)與儲存芯片(20)連接,又透過地址產生器(13)、地址總線(15)與儲存芯片(20)連接。藉此,該運算處理暨程式執行單元(11)可透過地址產生器(13)產生欲讀取數據的儲存芯片地址,經由地址總線(15)送至儲存芯片(20),儲存芯片(20)將對應地址的控制軟件數據經由數據總線送回集成電路(10),經解碼器(12)作解碼處理后送至運算處理暨程式執行單元(11)執行。
由于儲存芯片(20)中的控制軟件燒錄前由加密函數作加密處理,即使透過一般程序讀出,亦無法了解其實際內容,故可達保護軟件創作之目的。又此項經加密的控制軟件在送至集成電路(10)的運算處理暨程式執行單元(11)執行前,先經解碼器(12)進行解密,故不影響控制軟件之執行。由于解密函數是直接置入集成電路(10)中,外人亦無從取得或破解。
有關前述的加密/解密方法,謹進一步詳述如依軟件及儲存儲存芯片的特性,軟件的內容可以下列的二進位方式表示Dn=dk-1,ndk-2,n…d1,nd0,nAn=aj-1,naj-2,n…a1,na0n前式中的dk-1,n,aj-1,n等代表一個word之中個別的bit,n代表地址,其范圍自0至2j-1,其中j是整數。
Dn是位于地址An的軟件內容,對一個K-bit寬的系統而言(即每個word含有K bits),可用二進位方式表示,如d(k-1),nd(k-2),n…d1,nd0,nd(k-1),n代表最高bit,d0.n代表最低bitAn是Dn所在的地址,如果地址起點為0,則An=n,其亦可用二進位方式表示,如a(j-1),na(j-2),n…a1,na0,1a(j-1),n表示最高bit,a0,n表示最低bit為進行加密,故選用一能對二進位系統進行操作的函數“F”,其滿足了具有反函數“G”的特性,其數學表示如下G[F(D)]=F-1[F(D)]=I(D)=D對可執行軟件進行加密的過程系如圖2所示,用戶可將已完成測試的標準軟件D,經由函數處理而得到加密函數如下D′=F(D)這個新的加密可執行程式D′,就可以被燒錄于外掛儲存芯片之上,等候應用。在此,最合理的方法是將加密函數嵌在PC機上可執行的包裝軟件中。當然還有其它可用的方法,不過成本可能較高。由于這個軟件由開發商自己監控,并可自行擬訂內部參數,所以加密/解密函數組被盜用或破解的機會極低。在不知加密/解密函數的情況下,因為即使從外掛儲存芯片上讀出D′文件的內容,還是無法破解原碼的內容。
在執行時,即如前述圖1所示,集成電路(10)中加入一反函數的解碼器(12),由外掛儲存芯片(20)讀入之D′加密文件,通過設有解密G函數的解碼器(12)時發生下列的還原作用G(D′)=G[F(D)]=F-1[F(D)]=I(D)=D因而送至運算處理暨程式執行單元(11)執行的仍是原始可執行軟件D。
為便于了解,以下將透過兩個簡化的具體實施例作進一步的說明實施例一(邏輯運算函數加密)首先,在第一個應用實施例中,系以一個8bit的系統為例,選用對地址總線和數據總線進行配對的異或(XOR)運算作為加密函數,亦即D′=F(D)=XOR(A,D)在此,D是欲保護的密可執行程式,A是可執行程式D個別內容的對應地址集合。F是一個以a0對d0,a1對d1,……a7對d7,bit配對方式進行異或(XOR)邏輯運算函數,其反函數G則為G(D′)=XOR(A,D′)=D適與F函數相同假設一份已經開發完成的可執行軟件D,其中某一內容的地址碼為16進制中3C,其數據為16進制的6C,故未經加密的數據如以二進位表示系為Dn=01101100其地址則為An=00111100經加密函數異或(XOR)運算后則已經加密的數據為D′n=01010000這份數據被燒錄于儲存芯片(20)之上,地址為An=00111100的單元中。
又集成電路(10)之解碼器(12)中使用異或(XOR)為解密反函數G對前述數據解密,則經加密的數據為D′n=01010000對應地址仍為An=00111100經過異或(XOR)運算后,運算處理暨程式執行單元(11)所收到的內容為Dn=01101100其與原始的可執行軟件內容相同,故可供正常執行。
前述加密/解密方法的具體技術內容請參閱圖3,4所示,其中圖3系以“類”C語言形式表示加密用的后處理軟件。圖4則為解密函數“G”(“F”函數的反函數)的硬件架構。
在此必須指出,在實際應用時,F/G函數組不局限于異或(XOR)一種,可依用戶需要選擇開發。即使是異或(XOR)函數也不局限于a0與d0,a1與d1……a7與d7一種配對方式。其它配對方式可依用戶所選的參數設置。
實施例二(移位函數加密)在此一實施例中,系以一個4bit的系統為例,選擇一種數據內容bit位移方式作為加密函數F,其方法如下d0→d1′d1→d2′d2→d3′d3→d0′其解密反函數G為d0′→d3d1′→d0d2′→d1d3′→d2假設在一已完成測試的可執行軟件D中某一位置內容為二進位的0101(依d3d2d1d0順序排列)。即Dn=dn,3dn,2dn,1dn,0=0101在經過嵌入F函數的加密軟件處理后,獲得Dn′=F(Dn)=d′n,3d′n,2d′n,1d′n,0=1010并被燒錄于儲存芯片(20)之上。
當此一內容被集成電路(10)讀入后,經過硬件(12)解密反函數G的處理而發生以下變化。
G(D′n)=0101=Dn當運算處理及程式執行單元(11)收到這份指令,因其和原始內容完全一致,故得以順利執行。
前述加密/解密方法的具體技術內容請參閱圖5、圖6所示,其中圖5系以“類”C語言形式表示以移位函數加密的后處理軟件。圖6則為以移位法為解密函數“G”(“F”函數的反函數)的硬件結構。
由上述數學模式及具體實施例均可證明此一加密方法簡易可行。對CPU/MCU制造廠而言,可向客戶提供一份后處理軟件(PostProcessor)以供產生于外掛控制軟件的儲存芯片中的加密程式,然后在集成電路(10)的運算處理暨程式執行單元(11)的前端加入一解密硬件結構,如前述嵌入解密反函數的解碼器(12)。該加密用軟件及解密用硬件必須配套,而它們供選擇用的控制參數也必須配套。至于控制參數的輸入與儲存,對加密而言,十分方便。因為加密過程是完全由軟件在PC等類型的硬件上執行。所以只要留下參數輸入的窗口,即可達到目的。但對解密而言,則相對困難,因解密是在CPU/MCU芯片的前端的解碼器(12)進行,所以參數必須以一有效方法輸入并儲存于芯片上。又因為加/解密必須具有一定的復雜性以防被人破解,所以更進一步增加困難度。典型的解密硬件控制參數輸入方法如下(其相應的加密軟件結構可由此推斷出)。
如圖7所示,提示一種硬件形式的解密反函數參數設定方式,主要系令數據總線(14)及地址總線(15)共同連接至一接點切換單元(Crosspoint)(16),該接點切換單元(Crosspoint)(16)輸出端又連接一邏輯閘(17),邏輯閘(17)輸出端系連接至運算處理暨程式執行單元(11)的數據總線;其中,該接點切換單元(Crosspoint)(16)與邏輯閘(17)系分別由一參數設定單元(31)(32)經由控制線(310)(320)所控制。這兩個參數設定單元(31)(32)可用來設定并記存反函數的控制參數。目前可用的方法有三種。
第一種方法系如圖8所示,系以暫存器方式作為兩參數設定單元(31)(32)。另有寫入控制電路便利用戶自行燒錄所選的參數于兩參數設定單元(31)(32)之中。實施時由廠方提供含有多個加密函數的后處理軟件,在硬件方面則提供由EEPROM等技術構成的參數設定單元(31)(32),可由用戶在最終產品出廠前寫入以選擇不同的解密函數和加密函數。藉此,客戶可掌握到最大的加密彈性與保密性,當然其生產成本也相對較高。
第二種方法如圖9所示,系先令前述兩參數設定單元(31)(32)的個別儲存單體(Cell)分別與接地端GND、電源VCC構成接點,俟設定反函數時則以激光修整法(Laser trim)在出廠前選擇性的燒掉接地端接點或電源接點,如此即可方便針對不同客戶在解碼器(12)上設定不同的解密反函數參數;前述方法的優點在成本低,但客戶不能隨時自由選擇加密函數參數。
第三種方法如圖10所示,系先令前述兩參數設定單元(31)(32)的個別儲存單體(Cell)經由熔絲和地端GND及電源VCC連接。如一般可編程邏輯元件(PLD)的結構。這種方法可允許用戶在最終產品出廠前,以寫碼器將熔絲選擇性的燒斷,以達到選擇不同解密函數參數的目的。
由上述說明可知,以往有軟件開發業者將軟件制成固件(Firmware),根據CPU/MCU制造廠提供的條件,封存于集成電路中,因其生產成本高,存貨種類復雜及用戶彈性空間較小等問題,不得不朝向外掛方式考慮。然而將控制軟件等軟件儲存在外掛于CPU/MCU之外的儲存芯片中(ROM,EEPROM,Flash等),雖可改善前列缺點,但儲存芯片中的軟件創作透過一般程序即可輕易讀出并予復制,對于軟件開發業者而言毫無保障,故極少業者采用。經本發明利用數學上的函數與反函數還原的操作原理,以函數對控制軟件進行加密,在CPU/MCU內則設占用空間較小的反函數硬件予以解密。由于函數及反函數可由用戶以自行選定的邏輯運算實現,故為一容易達到、可讓業者放心將控制軟件外掛而可有效降低成本之方法。
權利要求
1.一種集成電路外掛軟件的加密解密方法,令具執行控制軟件功能之集成電路以外掛方式儲存其控制軟件,其特征在于外掛的控制軟件,先經過一個加密函數的處理,再被燒錄于通用的儲存芯片之上,又在集成電路內部設一以前述函數的反函數為基礎的解密單元,專司對自外掛外儲存芯片上讀取的已加密的控制軟件進行解密的功能。
2.根據權利要求1所述的集成電路外掛軟件的加密解密方法,其特征在于所述的加密函數為一具有反函數的邏輯函數;輸入為原控制軟件(隱含其個別內容所占地址),輸出為已加密的控制軟件,其解密函數為前述加密函數的反函數。輸入為前述的已加密控制軟件(隱含其個別內容所對應的地址),輸出為已還原的控制軟件。
3.根據權利要求1所述的集成電路外掛軟件的加密解密方法,其特征在于所述的加密函數為一具有反函數的bit位移函數。輸入為原控制軟件(隱含其個別內容所占地址),輸出為已加密的控制軟件,其解密函數為前述加密函數的反函數。輸入為前述的已加密控制軟件(隱含其個別內容所對應的地址),輸出為已還原的控制軟件。
4.根據權利要求1或2或3,所述集成電路外掛軟件的加密解密方法,其特征在于所述加密的裝置以通用計算機的軟件實施,將選定的加密函數轉換為通用計算機,如PC機等的可執行軟件,這個可執行軟件以所需加密的控制軟件數據為輸入,并且可能允許用戶自行輸入或選定一些加密參數,經過運行之后,其輸出即為加密控制軟件,可以燒錄于外掛儲存芯片之上。
5.根據權利要求1或2或3,所述集成電路外掛軟件的加密解密方法,其特征在于所述加密的裝置以專用的軟、硬件實施,為將選定的加密函數轉換為專用的軟、硬件結構,這個結構以所需加密的控制軟件數據為輸入,并且具有按鍵、顯示屏,或計算機通訊界面,或兩者兼有做為人機界面,經過運行后,其輸出即為加密控制軟件,可以燒錄于外掛儲存芯片之上。
6.根據權利要求1或2或3,所述集成電路外掛軟件的加密解密方法。其特征在于所述解密裝置以結合于集成電路上的專用硬件單元實施,一集成電路,其至少由一運算處理暨程式執行單元、一解碼器及一地址產生器所組成;一外部儲存芯片,其上儲存有控制軟件,其中解碼器是以專用電路構成,其可能的組成可包含有接收切換單元(Crosspoint),邏輯閘電路或其它的數學函數電路等;其執行時的參數可在生產時決定,也可以由控制單元依用戶編列的參數在執行時決定;但不論如何組合,它的總體功能必須是所對應的加密函數的反函數,該運算處理暨程式執行單元系透過解碼器,數據總線與儲存芯片連接,又經地址產生器,地址總線與儲存芯片連接。
7.根據權利要求6所述集成電路外掛軟件的加密解密方法,其特征在于所述解密裝置其組成可由一可執行微碼(Micro code)的單元來取代專用硬件單元;所有可能非專用硬件執行的功能,如接收切換單元(Crosspoint),邏輯閘運算,或其它數學函數的運算,或它們的組合功能,都可由執行微碼(Micro code)來代替,這個單元也可以允許用戶以設定參數的方式來影響微碼的執行。
8.根據權利要求6或7所述集成電路外掛軟件的加密解密方法,其特征在于所述解密裝置的組成可由部份專用硬件,部份微碼(Micro code)執行單元聯合構成,并且也可能允許用戶以設定參數方式來影響執行的方式。
9.根據權利要求6或7或8所述集成電路外掛軟件的加密解密方法,其特征在于所述解密裝置如允許用戶以參數方式影響其執行,這些參數系利用軟件方式寫入不受斷電影響的寄存器之中,得以長期保存,而這些不受斷電影響的寄存器(non-volatile)嵌入于集成電路內部。
10.根據權利要求9所述集成電路外掛軟件的加密解密方法,其特征在于所述不受斷電影響(non-volatile)寄存器的每一個bit在芯片上都各由一個上拉至電源VCC的電阻元件及一個下拉至接地端GND的電阻元件所取代,選定參數的方法是由CPU/MCU廠商在封裝前,可以激光修整法(Laser Trim)將每一個bit的其中一個連接燒斷,使其成為固定的“0”或者“1”。對不同的客戶可以用不同的組合來區分。
11.根據權利要求10所述集成電路外掛軟件的加密解密方法,其特征在于所述中上下拉電阻元件的連接線上增加熔絲單元結構,并在芯片上增加選擇性燒斷熔絲的編程控制電路。這樣安排可以讓軟件開發商在燒錄完加密軟件后,再利用寫碼器依設計、燒斷CPU/MCU上的選定的熔絲,而達到設定應參數的目的。
12.根據權利要求1或2或3或4或5或6或7或8或9或10或11所述集成電路外掛軟件的加密解密方法。其中加/解密函數/反函數的最終選擇是由設定后處理軟件或硬件的參數,和設定CPU/MCU上的解碼器參數而決定,這種參數的選擇必須能夠保證加密過程與解密過程之間函數與反函數的不可分割關系,這種保證可由一預設的表格或依數學公式發展的程式加以實現。
全文摘要
本發明系關于一種集成電路外掛的加密方法,主要系令中央處理單元(CPU)或微控制器(MCU)等集成電路的控制軟件以外掛方式構成,該外掛的控制軟件系以一函數進行加密,并在集成電路中內建一對應的反函數進行解密。藉此,集成電路可因控制軟件系為外掛,達成簡化存貨種類、降低生產成本之目的外,且外掛的控制軟件亦因前述加密/解密措施可獲得周延的保護。
文檔編號G06F11/36GK1405678SQ0213499
公開日2003年3月26日 申請日期2002年10月22日 優先權日2002年10月22日
發明者吳坦 申請人:陳少鵬