TWI791995B - 軟體保護方法及其系統 - Google Patents
軟體保護方法及其系統 Download PDFInfo
- Publication number
- TWI791995B TWI791995B TW109118038A TW109118038A TWI791995B TW I791995 B TWI791995 B TW I791995B TW 109118038 A TW109118038 A TW 109118038A TW 109118038 A TW109118038 A TW 109118038A TW I791995 B TWI791995 B TW I791995B
- Authority
- TW
- Taiwan
- Prior art keywords
- execution environment
- execution
- encrypted
- file
- processor
- Prior art date
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
一種軟體保護方法,包含透過處理器對已加密的執行檔解密,其中解密的步驟包含以下操作。在第一執行環境中,執行連結指令;在第一執行環境中,根據連結指令,產生對應於已加密的執行檔的特徵值;在第一執行環境中,根據特徵值及雜湊表,執行解密演算法並產生金鑰;以及在第一執行環境中,將金鑰傳送至不同於第一執行環境的第二執行環境中的已加密的執行檔。一種軟體保護系統亦在此揭露。
Description
本揭示文件是有關於一種軟體保護技術,特別是關於對執行檔加密的技術。
隨著科技快速發展,軟體技術也相應進步。目前關於軟體保護的技術包含對執行檔加密,利用金鑰對執行檔中某些程式碼加密而達到保護的目的,其中加密與解密所需的金鑰需考慮如何隱藏。然而,目前對金鑰隱藏的方式受到限制,包含受限於連上網路的要求、軟體所載入裝置的運算能力或是支援加密狗(dongle)裝置的要求等等。
本揭示文件提供一種軟體保護方法,包含透過第一處理器對已加密的執行檔解密,其中解密的步驟包含以下操作。在第一執行環境中,執行連結指令;在第一執行環境中,根據連結指令,產生對應於已加密的執行檔的特徵值;在第一執行環境中,根據特徵值及雜湊表,執行解密演算法並產生金鑰;以及在第一執行環境中,將金鑰傳送至不同於第一執行環境的第二執行環境中的已加密的執行檔。
本揭示文件亦提供一種軟體保護系統,包含第一處理器以及第一記憶體。第一記憶體用以儲存第一電腦程式碼,其中第一處理器用以執行第一記憶體中的第一電腦程式碼,以執行解密程式。執行解密程式的步驟包含以下操作。在第一執行環境中,執行連結指令;在第一執行環境中,根據連結指令,產生對應於已加密的執行檔的特徵值;在第一執行環境中,根據特徵值及雜湊表,執行解密演算法並產生金鑰;以及在第一執行環境中,將金鑰傳送至不同於第一執行環境的第二執行環境中的已加密的執行檔。
下文係舉實施例配合所附圖式作詳細說明,以更好地理解本揭示文件的態樣,但所提供之實施例並非用以限制本揭露所涵蓋的範圍,而結構操作之描述非用以限制其執行之順序,任何由元件重新組合之結構,所產生具有均等功效的裝置,皆為本揭露所涵蓋的範圍。此外,根據業界的標準及慣常做法,圖式僅以輔助說明為目的,並未依照原尺寸作圖,實際上各種特徵的尺寸可任意地增加或減少以便於說明。下述說明中相同元件將以相同之符號標示來進行說明以便於理解。
此外,在本揭示文件中所使用的用詞『包含』、『包括』、『具有』、『含有』等等,均為開放性的用語,即意指『包含但不限於』。此外,本文中所使用之『及/或』,包含相關列舉項目中一或多個項目的任意一個以及其所有組合。
於本揭示文件中,當一元件被稱為『連接』或『耦接』時,可指『電性連接』或『電性耦接』。『連接』或『耦接』亦可用以表示二或多個元件間相互搭配操作或互動。此外,雖然本文中使用『第一』、『第二』、…等用語描述不同元件,該用語僅是用以區別以相同技術用語描述的元件或操作。除非上下文清楚指明,否則該用語並非特別指稱或暗示次序或順位,亦非用以限定本發明。
本揭示文件的各實施例中的軟體保護系統或方法,是針對軟體的執行檔(executable file)或目的檔(object file)加密,透過金鑰對軟體中某段程式碼加密以及隱藏金鑰的方式,達到軟體保護的功效。在本揭示文件的各實施例中,以執行檔執行加密或解密的操作為示例說明。
在一些實施例中,執行檔包含程式碼及資料,且執行檔被分割為多個不同的區塊(section)。每個區塊包含對應的程式碼或資料,並以第一個位元組作為此區塊對應於記憶體中的位址,用以存取對應的資料並執行相應的操作。在一些實施例中,本揭示文件所述的執行檔或可執行程式是指經過編譯(compile)且可經執行而進行特定功能的程式碼(code) 或指令(instruction)。
第1圖為根據本揭示文件中一些實施例所繪示的軟體保護系統的架構示意圖。如第1圖所示,軟體保護系統100包含第一處理器110、第二處理器120、第一記憶體130及第二記憶體140。第一處理器110及第一記憶體130運作於第一裝置D1中,且第二處理器120及第二記憶體140運作於第二裝置D2中,其中第一裝置D1與第二裝置D2相互通訊連接。
在一些實施例中,第一記憶體130用以儲存解密程式P3,其中第一處理器110用以執行第一記憶體130中的解密程式P3,使得軟體保護系統100可對已加密的執行檔執行解密的操作。在一些實施例中,第二記憶體140用以儲存加密程式P1,其中第二處理器120用以執行第二記憶體140中的加密程式P1,使得軟體保護系統100可對執行檔進行加密的操作。
在一些實施例中,加密程式P1為一種對執行檔(或目的檔)加密的應用程式,透過執行加密程式P1可利用加密演算法對執行檔、目的檔或其他檔案進行加密。在一些實施例中,前述加密演算法包含特徵提取演算法、雜湊演算法或其他類似的演算法。
在一些實施例中,解密程式P3為一種對已加密的執行檔(或目的檔)解密的應用程式,能利用解密演算法找到已加密的執行檔(或目的檔)的金鑰,用以解密並還原已加密的執行檔(或目的檔),以產生原本的執行檔(或目的檔)。
在一些實施例中,第一處理器110及第二處理器120各自以中央處理器(CPU)、多核心處理器(multi-core processor)、分散式運算系統及特殊應用積體電路(ASIC)中的一者來實現,在此不限制第一處理器110及第二處理器120的種類。
在一些實施例中,第一記憶體130及第二記憶體140各自以一種電腦可讀取媒體(computer readable media)來實現,且分別為固態記憶體、磁帶、可移除電腦磁碟、隨機存取記憶體(RAM)、唯讀記憶體(ROM)、壓縮磁碟-唯讀記憶體(CD-ROM)、壓縮磁碟-讀/寫(CD-R/W)及數位視訊光碟(DVD)中的一者,在此不限制第一記憶體130及第二記憶體140的種類。
在一些實施例中,第一記憶體130及第二記憶體140分別包含揮發性記憶體(volatile memory;VM)單元(圖中未示)以及非揮發性記憶體(non-volatile memory;NVM)單元(圖中未示)。在一些實施例中,第一記憶體130的揮發性記憶體單元用以儲存解密程式P3,且第一記憶體130的非揮發性記憶體單元用以儲存雜湊表(hash table)H。第二記憶體140的揮發性記憶體單元用以儲存加密程式P1,且第二記憶體140的非揮發性記憶體單元用以儲存雜湊表H。
在一些實施例中,第一裝置D1及第二裝置D2分別為伺服器、行動裝置及電腦中的一者,在此不限制第一裝置D1及第二裝置D2的種類。操作上,第一裝置D1是以無線傳輸的方式與第二裝置D2進行通信,並用以傳送已加密的執行檔至第二裝置D2,使第二記憶體140儲存已加密的執行檔。
舉例來說,第二裝置D2為伺服器並對應軟體開發端,且載有執行檔以及加密程式P1於第二記憶體140中。第一裝置D1為智慧型手機並對應任意使用者,且透過藍芽傳輸接收來自第二裝置D2的已加密的執行檔,更將已加密的執行檔以載入第一記憶體130中。使用者可藉由操作第一裝置D1,使第一處理器110執行解密程式P3而對已加密的執行檔執行解密的操作,藉此還原未經加密的執行檔,然後使用者即可透過第一裝置D1執行還原的執行檔以進行相應的操作。
在不同實施例中,上述軟體保護系統100可包含多個第一處理器110、多個第二處理器120、多個第一記憶體130及/或多個第二記憶體140,且上述元件可對應地運作於多個第一裝置D1及/或多個第二裝置D2中,在此不限制軟體保護系統100的處理器以及記憶體的數量。
舉例而言,在不同實施例中,多個第一處理器110運作於一個第一裝置D1中,並共享其中的一個第一記憶體130,而多個第二處理器120分別運作於多個第二裝置D2中,且分別用以與對應的多個第二記憶體140進行相應的操作。
第2圖為根據本揭示文件中一些實施例所繪示的執行加密流程的示意圖。下述第2圖所示實施例係以第1圖所示的第二裝置D2為例來作說明,但不以其為限,任何可用於執行第2圖所示加密流程的裝置均在本案思及範圍內。
如第1圖及第2圖所示,第二處理器120與第二記憶體140可協同操作以執行加密操作,其中第二記憶體140可用以儲存執行檔E1、加密程式P1、雜湊表H以及已加密的執行檔E2。上述加密操作的具體流程如下所述。
第3圖為根據本揭示文件中一些實施例所繪示的加密操作方法的流程圖。如第3圖所示,加密操作方法300包含步驟310、320、330、340及350,且至少步驟320、330、340及350對應於執行加密程式P1的操作。為清楚說明起見,下述加密操作方法300係搭配第1圖及第2圖所示實施例來作說明,然而加密操作方法300並不限於應用在第1圖及第2圖所示實施例。
首先,在步驟310中,存取加密程式。舉例而言,如第1圖及第2圖所示,第二處理器120可存取第二記憶體140中的加密程式P1,並執行加密程式P1而進行後續對應的加密操作。
接著,在步驟320中,產生對應於執行檔E1的特徵值(pattern)。舉例而言,如第1圖及第2圖所示,第二處理器120執行加密程式P1,以進行加密演算法(如上述的特徵提取演算法),藉此萃取出執行檔E1的特徵值,並產生對應於執行檔E1的特徵值。
其次,在步驟330中,產生相應的雜湊值。舉例而言,如第1圖及第2圖所示,第二處理器120執行加密程式P1,以根據雜湊表H進行加密演算法(如上述的雜湊演算法),藉此計算對應於執行檔E1的特徵值,並產生相應的雜湊值。
再者,在步驟340中,產生對應於執行檔E1的金鑰。舉例而言,如第1圖及第2圖所示,第二處理器120執行加密程式P1,以根據雜湊表H再進行加密演算法(如上述的雜湊演算法),藉此產生對應於執行檔E1的金鑰。
在一些實施例中,上述特徵值、雜湊值及金鑰均為對應執行檔E1的資料,其中透過雜湊演算法計算出的雜湊值及金鑰為不可逆計算的資料,藉以具有高資料保護性。
在一些實施例中,上述特徵值、雜湊值及金鑰中至少一者的資料格式為一組字串。在其他實施例中,上述特徵值、雜湊值及金鑰中至少一者的資料格式為多組長度不相同的字串。在此不限制特徵值、雜湊值及金鑰的資料格式。
在一些實施例中,雜湊表H的資料格式為二維陣列或三維陣列,且特徵值的記憶體容量大於512位元組(byte)。如此一來,對於多個不同的執行檔E1,執行加密程式P1所計算出的多個雜湊值均相同(即,衝突(collision))的機率甚低,進而使不同執行檔E1對應的金鑰為相同的機率降低,藉此可提高資料安全性。
然後,在步驟350中,產生已加密的執行檔。舉例而言,如第1圖及第2圖所示,第二處理器120執行加密程式P1,以根據上述產生的金鑰再進行加密演算法,以對執行檔E1進行加密,藉此產生已加密的執行檔E2。已加密的執行檔E2接著由第二裝置D2傳送至第一裝置D1,並且由第一裝置D1對已加密的執行檔E2進行解密操作。
相較於原始的執行檔E1,上述已加密的執行檔E2無法被正常地讀取及/或執行,因此需要另外對已加密的執行檔E2進行解密的操作,具體如下述參照第4A圖及第4B圖的說明。
需說明的是,在一些實施例中,已加密的執行檔E2的程式碼中多附加一段用於解密的程式碼,在一些實施例中前述用於解密的程式碼又稱為附加程式碼(appended code)。此段附加的程式碼為可供特定硬體執行的附加程式P2(如第2圖所示),且附加程式P2是為了後續執行解密的操作而在加密過程中產生的程式碼。在一些實施例中,附加程式P2又稱為附加程式碼或附加程式區塊(appended section)。附加程式P2並不包含加密過程中產生的金鑰,並與金鑰彼此獨立,藉以達到良好的保護效果。另外,在一些實施例中,附加程式P2包含一段用於位址指向的程式碼,在一些實施例中此段用於位址指向的程式碼又稱為連結指令(下述關於第4A圖至第5圖會更詳細說明)。
基於上述,藉由上述的加密流程,能使執行檔E1被加密為具有高保護性的已加密的執行檔E2。
第4A圖及第4B圖為根據本揭示文件中一些實施例所繪示的執行解密流程的示意圖。下述第4A圖及第4B圖所示實施例係以第1圖所示的第一裝置D1為例來作說明,但不以其為限,任何可用於執行第4A圖及第4B圖所示解密流程的裝置均在本案思及範圍內。
如第1、4A及4B圖所示,第一處理器110與第一記憶體130可協同操作以執行解密操作,其中第一記憶體130可用以儲存已加密的執行檔E2、解密程式P3以及雜湊表H。
在一些實施例中,如第4A及4B圖所示,第一記憶體130用以儲存多個執行環境,其中執行環境又可稱為作業環境,主要是指硬體與軟體的總稱,包含對應的記憶體、處理器以及儲存於記憶體中的作業系統與程式…等。
在一些實施例中,如第4A圖所示,上述執行環境包含普通執行環境(rich execution environment;REE) 410(又稱為豐富世界(rich world)),其關聯於第一作業系統。另外,如第4B圖所示,上述執行環境包含信任執行環境(trusted execution environment;TEE) 440(又稱為安全世界(secure world)),其關聯於第二作業系統,且第二作業系統相異於第一作業系統。普通執行環境410與信任執行環境440為相互獨立的作業環境,兩者可以透過各自的核心(kernel)(例如,核心驅動器(kernel driver))進行溝通/傳遞或交換資料,但在執行各自的操作時為相互隔離的狀態。亦可理解為,基於此記憶體,建構了多個獨立的作業系統,包含普通作業系統(普通執行環境410)以及信任作業系統(信任執行環境440)。在一些實施例中,上述第一作業系統及第二作業系統分別為視窗作業系統(Microsoft Windows)或Linux作業系統中的一者。
在一些實施例中,信任執行環境440具有第一安全級別(security level),以供執行需要保密的操作,例如身分認證或本揭示文件的實施例中的解密操作。普通執行環境410具有第二安全級別,且此第二安全級別的保密性較第一安全級別還低,以供執行其餘的操作,例如一般應用程式的功能。
在一些實施例中,在信任執行環境440中,所執行的操作是由普通執行環境410輸入指示或要求而被動地執行相應的操作,且每個操作與對應的資料或程式碼皆獨立於普通執行環境410。另一方面,在普通執行環境410中,可以輸入指示或要求至信任執行環境440,使信任執行環境440中的程式執行相應的操作,但無法要求存取信任執行環境440的程式碼或資料。
在一些實施例中,普通執行環境410用以儲存一般的應用程式(例如:已加密的執行檔E2以及雜湊表)、整合應用程式介面(application programming interface;API)415、開發端應用程式介面420、客戶端應用程式介面425、儲存單元430以及普通驅動程式(device driver)435。
整合應用程式介面415用以整合開發端應用程式介面420以及客戶端應用程式介面425。客戶端應用程式介面425包含至少一個可執行的函數,例如打電話、付款或瀏覽,用以要求存取儲存單元430中的資料,以執行對應的可執行的函數。開發端應用程式介面420包含至少一個程式函數,用以與普通執行環境410的核心(圖中未示)溝通,以交換資料。
儲存單元430用以儲存普通執行環境410的核心的資料,以供開發端應用程式介面420或客戶端應用程式介面425利用系統呼叫(system call)的方式存取或交換其中的資料。
在一些實施例中,儲存單元430是以回放保護記憶體區塊(relay protected memory block;RPMB)來實現,並用以儲存解密操作需要的雜湊表。在一些實施例中,儲存單元430是存放於信任執行環境440的核心模式中(圖中未示此實施例)。
普通驅動程式435用以經執行而使客戶端應用程式介面425或開發端應用程式介面420的程式碼或指令相應地被執行,藉此與普通執行環境410的核心溝通。此外,普通驅動程式435也能經執行而進一步與信任執行環境440的核心溝通,作為普通執行環境410與信任執行環境440之間的溝通中間者。在一些實施例中,普通驅動程式435是指核心驅動器,用以經執行而使普通執行環境410與信任執行環境440各自的核心之間可以傳遞資料。
此外,在不同實施例中,第2圖所示之附加程式P2包含一個區塊,其用以指向程式碼中特定的位址,例如:普通驅動程式435的位址、雜湊表存放的位址、已加密的執行檔E2中某一區塊的位址、…等。因此,附加程式P2在一些實施例中又稱為連結指令或安全指令(secure lib)。
在一些實施例中,第4A圖及第4B圖中所示的「使用者模式」(user mode)以及「核心模式」(kernel mode)是關聯於存取作業系統的權限能力。舉例而言,「使用者模式」是指在此執行的程式具有低系統存取權限,可以執行一般的操作,但若需存取核心資料或指令,需透過使用者模式與核心模式之間的應用程式介面(例如,客戶端應用程式介面425)以系統呼叫的方式與核心模式溝通。另一方面,「核心模式」是指在此執行的程式具有高系統存取權限,可以執行特殊的指令或操作,包含記憶體管理、行程管理等。例如,已加密的執行檔E2用以存取普通執行環境410核心中的資料的權限受到限制。
如第4B圖所示,信任執行環境440用以儲存多個處理保密資料的應用程式、信任應用程式介面455、信任核心460、信任函數庫/信任連結庫465、硬體抽象層(hardware abstraction layer;HAL)470以及硬體475。在一些實施例中,上述處理保密資料的應用程式可例如包含解密程式P3、付款認證程式445及企業機密程式450。
在一些實施例中,信任應用程式介面455包含至少一個可執行的函數及/或至少一個程式函數,用以與信任執行環境440的核心(即,信任核心460)溝通,以交換資料。另外,在普通執行環境410中的應用程式可以透過信任應用程式介面455與信任執行環境440中的應用程式(例如,付款認證程式445)交換資料(例如:網路協定位址)。
在一些實施例中,信任核心460用以控制或管理用來執行信任執行環境440對應的操作或函數的資源,例如匯流排(bus)、處理器或信任函數庫/信任連結庫465等。另外,在不同實施例中,信任核心460更用以與普通執行環境410溝通,以交換資料。
在一些實施例中,信任函數庫/信任連結庫465包含函數、靜態連結庫或匯入庫中的至少一者,用以儲存對應的資料。
在一些實施例中,硬體抽象層470用以直接存取硬體475的資料,其中硬體475用以儲存解密操作需要的資料,包含上述之雜湊表。
在一些實施例中,上述用來執行解密操作的第一記憶體130及第一處理器110是以ARM架構設計的Trust Zone的架構,並分為普通世界(normal world,或稱為豐富世界)以及安全世界(secure world),即分別對應為實施例中所述的普通執行環境410以及信任執行環境440。在不同實施例中,上述用來執行解密操作的第一記憶體130及第一處理器110是以Intel架構設計的software guard extensions(SGX)的架構,包含指定位址空間(enclave),即對應上述的信任執行環境440。在本揭示文件的一些實施例中,是以ARM的Trust Zone為架構作示例說明,但不以此為限。
第5圖為根據本揭示文件中一些實施例所繪示的解密操作方法的流程圖。如第5圖所示,解密操作方法500包含步驟510、515、520、525、530、535、540及545,且至少步驟510、515、520、525、530、535、540及545對應於執行解密程式P3的操作。為清楚說明起見,下述解密操作方法500係搭配第1、4A及4B圖所示實施例來作說明,然而解密操作方法500並不限於應用在第1、4A及4B圖所示實施例。
在一些實施例中,如第1圖及第2圖所示,第一處理器110係執行第一記憶體130中所儲存之已加密的執行檔E2中的附加程式P2以及解密程式P3,以進行下述的解密操作方法500。
首先,在步驟510中,存取附加程式,以傳送連結指令至信任執行環境。舉例而言,如第1、4A及4B圖所示,在普通執行環境410的使用者模式中,第一處理器110執行第二記憶體140中的附加程式P2,藉此透過客戶端應用程式介面425以及普通驅動程式435傳送連結指令至信任執行環境440的核心模式中。在一些實施例中,第一處理器110執行附加程式P2,以直接透過普通驅動程式435傳送連結指令至信任執行環境440中。
接著,在步驟515中,存取解密程式,以接收連結指令。舉例而言,如第1、4A及4B圖所示,在信任執行環境440的核心模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過信任應用程式介面455傳送連結指令至解密程式P3,使解密程式P3接收連結指令。
接著,在步驟520中,執行連結指令,以產生對應於已加密的執行檔的特徵值。舉例而言,如第1、4A及4B圖所示,在信任執行環境440的使用者模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過解密程式P3執行連結指令,並根據此連結指令產生對應於已加密的執行檔E2的特徵值。
其次,在步驟525中,產生相應的雜湊值。舉例而言,如第1、4A及4B圖所示,在信任執行環境440的使用者模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過解密程式P3根據雜湊表執行解密演算法(例如,雜湊演算法)計算對應於已加密的執行檔E2的特徵值,並產生相應的雜湊值。
再者,在步驟530中,產生對應於已加密的執行檔的金鑰。舉例而言,如第1、4A及4B圖所示,在信任執行環境440的使用者模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過解密程式P3根據已加密的執行檔E2的特徵值以及雜湊表,執行解密演算法(例如,雜湊演算法)計算步驟525中的雜湊值,並產生對應於已加密的執行檔E2的金鑰。
一些實施例中,在用於解密操作的記憶體中所儲存的雜湊表與在用於加密操作的記憶體中所儲存的雜湊表相同。因此,解密操作所產生的金鑰等同於加密操作所產生的金鑰。
需說明的是,在一些實施例中,上述用以儲存雜湊表的記憶體,例如前述一些實施例中的儲存單元430或硬體475、用於執行加密操作的第二記憶體140等,為一種非揮發性記憶體。藉此,能降低雜湊表被任意讀取的機率,進而提升程式碼的保護性。
再者,在步驟535中,傳送金鑰至普通執行環境。舉例而言,如第1、4A及4B圖所示,在信任執行環境440的核心模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過信任應用程式介面455傳送金鑰至信任核心460,並透過信任核心460傳送金鑰至普通執行環境410。
接著,在步驟540中,傳送金鑰至已加密的執行檔。舉例而言,如第1、4A及4B圖所示,在普通執行環境410的使用者模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過普通驅動程式435接收金鑰,並透過客戶端應用程式介面425傳送金鑰至已加密的執行檔E2。
然後,在步驟545中,解密還原為執行檔。舉例而言,如第1、4A及4B圖所示,在普通執行環境410的使用者模式中,第一處理器110執行第一記憶體130中的解密程式P3,藉此透過解密程式P3根據所接收的金鑰,執行解密演算法對已加密的執行檔E2解密,並解密還原為執行檔E1(繪示於第2圖)。
一些實施例中,第一記憶體130中的電腦程式碼更用以實現Arm Trusted Firmware(ATF),用以執行安全檢查,並用以存取解密程式P3,以執行環境檢查。一些安全檢查的例子包含信任執行環境440的存取權限檢查、身分權限(root permission)檢查等。藉此,能防止以動態分析的方法破解軟體保護系統。
綜上所述,加密或解密操作中的金鑰只會用在產生已加密的執行檔或是解密還原成執行檔的步驟,且金鑰並不需要透過使用者輸入任何認證資料或者另外連接硬體(如加密狗)即可自動被計算獲得。特別是解密的步驟中,操作過程產生或需要的資料皆在信任執行環境中執行,因此達到金鑰保護的高度安全性。
雖然本揭示文件已以實施例揭露如上,然其並非用以限定本揭示文件,任何熟習此技藝者,在不脫離本揭示文件之精神和範圍內,當可作各種之更動與潤飾,因此本揭示文件之保護範圍當視後附之申請專利範圍所界定者為準。
D1:第一裝置
D2:第二裝置
110:第一處理器
120:第二處理器
130:第一記憶體
140:第二記憶體
P1:加密程式
P2:附加程式
P3:解密程式
H:雜湊表
E1:執行檔
E2:已加密的執行檔
310:步驟
320:步驟
330:步驟
340:步驟
350:步驟
410:普通執行環境
415:整合應用程式介面
420:開發端應用程式介面
425:客戶端應用程式介面
430:儲存單元
435:普通驅動程式
440:信任執行環境
445:付款認證程式
450:企業機密程式
455:信任應用程式介面
460:信任核心
465:信任函數庫/信任連結庫
470:硬體抽象層
475:硬體
510:步驟
515:步驟
520:步驟
525:步驟
530:步驟
535:步驟
540:步驟
545:步驟
第1圖繪示根據本揭示文件的一實施例的軟體保護系統的架構示意圖。
第2圖繪示根據第1圖的架構用以執行加密流程的示意圖。
第3圖繪示根據第2圖的加密操作方法的流程圖。
第4A圖及第4B圖繪示根據第1圖的架構用以執行解密操作方法的示意圖。
第5圖繪示根據第3圖的解密操作方法的流程圖。
無
P3:解密程式
440:信任執行環境
445:付款認證程式
450:企業機密程式
455:信任應用程式介面
460:信任核心
465:信任函數庫/信任連結庫
470:硬體抽象層
475:硬體
Claims (12)
- 一種軟體保護方法,包含:透過一第一處理器對已加密的執行檔解密,其中解密的步驟包含:在一第一執行環境中,根據該已加密的執行檔中的一解密程式執行連結指令;在該第一執行環境中,根據該連結指令,透過該解密程式進行解密演算法以產生對應於該已加密的執行檔的特徵值;在該第一執行環境中,根據該特徵值及一雜湊表,執行該解密演算法並產生金鑰;以及在該第一執行環境中,將該金鑰傳送至在不同於該第一執行環境的一第二執行環境中的該已加密的執行檔。
- 如請求項1所述之軟體保護方法,其中該解密的步驟更包含:在該第二執行環境中,根據該金鑰,解密還原該已加密的執行檔為執行檔,其中該第一執行環境與該第二執行環境為互相獨立的作業環境,且該第一執行環境透過核心驅動程式與該第二執行環境進行資料傳遞。
- 如請求項2所述之軟體保護方法,其中該第一執行環境關聯於一第一作業系統, 該第二執行環境關聯於一第二作業系統,該第二作業系統用以儲存執行包含該已加密的執行檔,且該第一作業系統用以儲存包含用以執行該解密的步驟的電腦程式碼及該雜湊表。
- 如請求項2所述之軟體保護方法,其中該解密的步驟更包含:在該第二執行環境中,執行附加程式碼,以透過該核心驅動器傳送該連結指令至該第一執行環境中。
- 如請求項1所述之軟體保護方法,更包含:透過與該第一處理器通訊連結的一第二處理器對執行檔加密,其中加密的步驟包含:產生對應於該執行檔的該特徵值;根據該特徵值及該雜湊表,執行加密演算法並產生該金鑰;以及根據該金鑰,加密該執行檔,以產生該已加密的執行檔,其中該已加密的執行檔包含該連結指令。
- 如請求項5所述之軟體保護方法,更包含:透過該第二處理器傳送該已加密的執行檔至與該第一處理器關聯的記憶體。
- 如請求項1所述之軟體保護方法,其中該已加密的執行檔包含附加程式碼,且該附加程式碼用以指向該第一處理器對應的記憶體的核心驅動程式,並用以透過該核心驅動程式傳送該連結指令至用以執行該解密的步驟的執行環境。
- 一種軟體保護系統,包含:一第一處理器;以及一第一記憶體,用以儲存第一電腦程式碼,其中該第一處理器用以執行該第一記憶體中的該第一電腦程式碼,以執行:執行解密程式,其步驟包含:在一第一執行環境中,根據已加密的執行檔中的一解密程式執行連結指令;在該第一執行環境中,根據該連結指令,透過該解密程式進行解密演算法以產生對應於該已加密的執行檔的特徵值;在該第一執行環境中,根據該特徵值及一雜湊表,執行該解密演算法並產生金鑰;以及在該第一執行環境中,將該金鑰傳送至不同於該第一執行環境的一第二執行環境中該已加密的執行檔。
- 如請求項8所述之軟體保護系統,其中該第 一記憶體更用以儲存:關聯於該第二執行環境的該已加密的執行檔;以及關聯於該第一執行環境的該解密程式及該雜湊表,其中該第一執行環境與該第二執行環境為互相獨立的作業環境,且該第一執行環境透過核心驅動程式與該第二執行環境進行資料傳遞。
- 如請求項9所述之軟體保護系統,其中該第一處理器用以執行該第一記憶體中的該第一電腦程式碼,以在該第二執行環境中執行:透過該核心驅動程式傳送該連結指令至該第一執行環境中的該解密程式。
- 如請求項9所述之軟體保護系統,其中該第一處理器用以執行該第一記憶體中的該第一電腦程式碼,以在該第二執行環境中執行:接收來自該第一執行環境的該金鑰;以及根據該金鑰,解密還原該已加密的執行檔為執行檔。
- 如請求項8所述之軟體保護系統,更包含:一第二處理器,通訊連接與該第一處理器;以及一第二記憶體,用以儲存第二電腦程式碼,其中該第二處理器用以執行該第二記憶體中的該第二電腦程式碼,以執行: 執行加密程式,其步驟包含:產生對應於該執行檔的該特徵值;根據該特徵值及該雜湊表,執行加密演算法並產生該金鑰;以及根據該金鑰,加密該執行檔,以產生該已加密的執行檔,其中該已加密的執行檔包含該連結指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109118038A TWI791995B (zh) | 2020-05-29 | 2020-05-29 | 軟體保護方法及其系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109118038A TWI791995B (zh) | 2020-05-29 | 2020-05-29 | 軟體保護方法及其系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202145041A TW202145041A (zh) | 2021-12-01 |
TWI791995B true TWI791995B (zh) | 2023-02-11 |
Family
ID=80783870
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109118038A TWI791995B (zh) | 2020-05-29 | 2020-05-29 | 軟體保護方法及其系統 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI791995B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201525761A (zh) * | 2013-12-31 | 2015-07-01 | Giga Byte Tech Co Ltd | 開放系統之函式庫的加密及解密方法 |
-
2020
- 2020-05-29 TW TW109118038A patent/TWI791995B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW201525761A (zh) * | 2013-12-31 | 2015-07-01 | Giga Byte Tech Co Ltd | 開放系統之函式庫的加密及解密方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202145041A (zh) | 2021-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
US10409990B2 (en) | Encryption and decryption method and apparatus in virtualization system, and system | |
CN109936626B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN110032885B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
JP5611598B2 (ja) | Usbトークン上の暗号化キーコンテナ | |
US10496841B2 (en) | Dynamic and efficient protected file layout | |
KR100678927B1 (ko) | 비보안 영역에 보안 영역을 할당하는 방법 및 이를제공하는 휴대용 저장 장치 | |
CN110020549B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN106997439B (zh) | 基于TrustZone的数据加解密方法、装置及终端设备 | |
AU2006205315B2 (en) | Method and portable storage device for allocating secure area in insecure area | |
CN110032876B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
JP2013232219A (ja) | マイクロコントローラにおけるデータの安全な取扱いのための方法および装置 | |
US20080229115A1 (en) | Provision of functionality via obfuscated software | |
CN110033265B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
CN110059497B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
WO2022161182A1 (zh) | 基于数据流的可信计算的方法及装置 | |
KR20080029687A (ko) | 암호화 기능이 내장된 메모리를 이용한 고속 대용량의암호화 장치 및 그 구현 방법 | |
CN110008737B (zh) | 区块链中实现隐私保护的方法、节点和存储介质 | |
US20220129566A1 (en) | Secure application execution in a data processing system | |
US11610003B2 (en) | Software protection method and system thereof | |
US20230093105A1 (en) | Method of dynamically loading encryption engine | |
TWI791995B (zh) | 軟體保護方法及其系統 | |
US20230015537A1 (en) | Reducing latency of hardware trusted execution environments | |
JP2022141962A (ja) | データの照会と書き込み方法、装置、電子機器、読み取り可能な記憶媒体およびコンピュータプログラム | |
WO2022019910A1 (en) | Read protection for uefi variables |