TWI526866B - 利用線上認證與經加密碼執行的碼保護 - Google Patents

利用線上認證與經加密碼執行的碼保護 Download PDF

Info

Publication number
TWI526866B
TWI526866B TW102143308A TW102143308A TWI526866B TW I526866 B TWI526866 B TW I526866B TW 102143308 A TW102143308 A TW 102143308A TW 102143308 A TW102143308 A TW 102143308A TW I526866 B TWI526866 B TW I526866B
Authority
TW
Taiwan
Prior art keywords
application
code segment
component
encrypted
decrypted
Prior art date
Application number
TW102143308A
Other languages
English (en)
Other versions
TW201443680A (zh
Inventor
安德魯 艾德斯坦
費朵 弗米謝弗
杰 黃
提摩西 洛帝斯
Original Assignee
輝達公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 輝達公司 filed Critical 輝達公司
Publication of TW201443680A publication Critical patent/TW201443680A/zh
Application granted granted Critical
Publication of TWI526866B publication Critical patent/TWI526866B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Description

利用線上認證與經加密碼執行的碼保護
本發明係關於利用線上認證與經加密碼執行的碼保護。
碼保護(code protection、CP)技術包括硬體製造商、出版商、著作權人和個人所利用作為控制使用數位內容和裝置之工具的一種存取控制技術。CP技術包括禁止內容提供者所不希望或預期之數位內容使用方式的技術。
CP技術設法在消費者購買數位內容或裝置之後,提供數位內容或裝置的控制給內容提供者或裝置銷售者。當關於數位內容時,這樣的控制能包括防止存取內容、防止內容複製及防止將內容轉換成其他格式。當用於裝置時,這樣的控制可包括限制可與裝置一起使用的硬體和軟體。
一些傳統CP技術很容易受到特定類型的攻擊。例如,軟體為基的CP技術會很容易受到基於軟體本身所包含之資訊的攻擊,因為軟體會包括能致能內容之解密的資訊(例如,解密金鑰)。因此,攻擊者也許能夠提取此資訊且直接地解密和複製內容,藉此迴避CP系統所強加的限制。
硬體為基的CP技術也同樣受到特定類型的攻擊。這些技術之一些者需要使用特別建立之硬體以聽取及/或看到內容。這種方法嘗試確保只有經授權使用者(具有硬體的那些使用者)才能存取內容。另外,它企圖 拒絕系統使用者存取祕密解密金鑰。
然而,雖然硬體為基的CP技術能提供健全的保護,但會非常難以建立健全到足以保護密鑰對抗足夠決心之敵手的硬體。此外,當已知密鑰時,建立能用以聽取及/或看到內容的硬體型式會是相對簡單的。因此,傳統技術會缺乏足以阻止具有決心之敵手的保護等級。
碼保護的傳統方法會缺乏足以阻止具有決心之敵手的保護等級。如以下所揭露,利用線上認證與經加密碼執行的碼保護硬體安全處理元件、架構和方法來解決這些缺點。然而,所主張的實施例並不限於解決任何或所有上述缺點的實作。在一實施例中,在已完成驗證應用程式的授權之後,針對從應用程式所缺少的一程式碼段(a piece of program code)或「著色器(shader)」,使用一安全處理元件作為安全、基於硬體的解密和執行之一部分之。利用該段程式碼的執行結果,使得當執行應用程式時,應用程式能正確地運作。在示範實施例中,安全處理元件係與線上伺服器和授權驗證伺服器結合使用,以便提出一種強到足以阻止具有決心之敵手的多級碼保護架構。
在一實施例中,在應用程式的授權被授權驗證伺服器驗證之後,利用一安全處理元件來存取被線上伺服器加密之應用程式的一經加密部分。安全處理元件之後利用被安全處理元件儲存的加密金鑰來解密應用程式的經加密部分,及基於所儲存的狀態資料來執行應用程式的經解密部分。將應用程式之經解密部分的執行結果提供至執行於第二處理元件上的應用程式。
在一實施例中,圖形處理元件執行應用程式的經解密部分。在一實施例中,圖形處理元件執行在記憶體的指定視頻保護區中之應用程式的經解密部分。然而,在一實施例中,用以從視頻保護區讀取的能力係 限於安全處理元件所有。在一實施例中,圖形處理元件在記憶體的非視頻保護區中執行與應用程式相關的第二程式碼段。
在一實施例中,狀態資料被保持在於其上形成安全處理元件的晶片上。在一實施例中,安全處理元件編碼和解碼狀態資料,且此狀態資料被保持在於其上形成安全處理元件的晶片外。
100‧‧‧操作環境
101‧‧‧晶片上系統
101a‧‧‧安全處理元件
101b‧‧‧中央處理單元
101c‧‧‧圖形處理元件
101d‧‧‧視頻保護區
101e‧‧‧金鑰庫
103‧‧‧裝置
105‧‧‧線上伺服器
107‧‧‧授權驗證伺服器
150‧‧‧應用程式
160‧‧‧著色器
201‧‧‧經加密碼存取元件
203‧‧‧經加密碼解密元件
205‧‧‧經解密碼執行元件
207‧‧‧結果存取提供元件
209‧‧‧著色器快取
211‧‧‧狀態快取
300‧‧‧流程圖
400‧‧‧流程圖
500‧‧‧流程圖
600‧‧‧流程圖
700‧‧‧流程圖
可藉由參考結合附圖的下面說明來最佳地了解本發明及其進一步優點,其中:圖1A顯示根據一實施例之碼保護安全處理元件的示範操作環境。
圖1B繪示根據一實施例之為碼保護架構之一部分的元件所進行之操作。
圖1C繪示根據一實施例之為碼保護架構之一部分的元件所進行之操作。
圖1D繪示根據一實施例之為碼保護架構之一部分的元件所進行之操作。
圖1E繪示根據一實施例之為碼保護架構之一部分的元件所進行之操作。
圖2顯示根據一實施例之碼保護安全處理元件的元件。
圖3顯示根據一實施例之在用於利用線上認證與經加密碼執行的碼保護之方法中所進行的操作之流程圖。
圖4顯示在用於利用線上認證與經加密碼執行的碼保護之方法中所進行的操作之流程圖,其中經解密碼的執行係藉由安全處理元件來進行。
圖5顯示在用於利用線上認證與經加密碼執行的碼保護之 方法中所進行的操作之流程圖,其中經解密碼的執行係藉由圖形處理器單元(GPU)來進行。
圖6顯示在用於利用線上認證與經加密碼執行的碼保護之方法中所進行的操作之流程圖,其中來自非視頻保護區(VPR)位置之第二著色器的執行係藉由GPU來進行。
圖7顯示根據一實施例之認證操作之流程圖,其被進行作為用於利用線上認證與經加密碼執行的碼保護之方法之一部分。
應注意圖中的相同的參考數字係指相同元件。
雖然已透過以下實施例來說明本發明,但本發明並不打算限於本文所提出的特定形式。反之,本發明可涵蓋如能合理地包括在由所附之申請專利範圍定義的本發明之範圍內之替換、修改、及等效作法。
在下面的詳細說明中,已提出了許多具體細節,如特定方法順序、結構、元件、及連接。然而,將了解不必使用這些和其他具體細節來實現本發明之實施例。在其他情況下,熟知的結構、元件、或連接已被省略,或未特別詳細地說明以免不必要地模糊本說明。
在本說明書中提到的「一個實施例」或「一實施例」係用以表示結合實施例所述之特定特徵、結構、或特性係包括在本發明之至少一個實施例中。在本說明書內各種地方出現之「在一個實施例中」的說法不一定都指相同的實施例,也不是單獨的或與其他實施例互斥的其他實施例。此外,說明了可藉由一些實施例而不是其他實施例來顯示的各種特徵。同樣地,說明了可能是對某些實施例而不是其他實施例之要求的各種要求。
針對電腦記憶體內資料位元上之操作的程序、步驟、邏輯方塊、處理、及其他符號表示來提出所遵循之詳細說明的一些部分。這些說明和表示係由資料處理領域之那些技藝者使用的工具以有效地傳達其作業 的真義給本領域之其他技藝者。程序、電腦執行步驟、邏輯方塊、過程等在此且通常被設想為導致期望結果之一串自相一致的步驟或指令。步驟係為需要物理量之物理操作的步驟。通常,雖然不一定,但這些量係採取電腦可讀儲存媒體之電或磁信號的形式且能夠在電腦系統中被儲存、傳輸、結合、比較、及以其他方式處理。主要由於共同使用的緣故,表現有時將這些信號稱為位元、值、元件、符元、字元、術語、數字或之類係方便地。
然而,應當牢記所有這些和類似術語係與適當物理量相關且僅僅是施用於這些量的方便標記。除非特別聲明,或從下面的討論可知,否則了解在整篇本發明中,利用如「存取」或「解密」或「執行」或「提供」或之類的詞之說明係指電腦系統、或類似電子計算裝置的動作和程序,其將表示為電腦系統之暫存器和記憶體及其他電腦可讀媒體內物理(電子)量的資料處理和轉換成同樣表示為電腦系統記憶體或暫存器或其他這類資訊儲存器、傳輸或顯示裝置內物理量的其他資料。
包括利用線上認證與經加密碼執行之安全處理元件的碼保護架構之元件的示範操作環境實施例
圖1A顯示根據一實施例之包括安全處理元件101的碼保護架構之元件的示範操作環境100。在一實施例中,安全處理元件101結合線上伺服器105和授權驗證伺服器107,以提供對於主應用程式缺少的程式碼段的安全硬體解密,以便提供強到足以阻止具有決心之敵手的多級複製保護架構。圖1A顯示晶片上系統(SoC)101、裝置103、線上伺服器105及授權驗證伺服器107。在圖1A實施例中,SoC 101包括安全處理元件101a、CPU 101b、GPU 101c、視頻保護區(VPR)101d及金鑰庫(keystore)101e。
參考圖1A,裝置103是用以操作安裝於其上之應用程式的平台。在一實施例中,來自此應用程式的程式碼段或「著色器(shader)」(其依賴於應用程式的正確操作)被保持在如圖1B所示的線上伺服器105。因此,參考圖1B,嘗試在裝置103上執行應用程式150而沒有從線上伺服器105 獲得所缺少的程式碼段160會導致應用程式150未正確地操作。在一實施例中,在已驗證用以操作應用程式之使用者的授權之後,能從線上伺服器105下載程式碼段160。然而,線上伺服器105加密程式碼段160,使得將其解密的能力限於與裝置103相關的安全處理元件(例如,圖1A中的安全處理元件101a)。於是,解密碼段的能力係限於裝置103。
再次參考圖1A,安全處理元件101a是能形成作為從中形成主系統處理器(CPU 101b)的半導體材料之一部分、或作為離散GPU 101c之一部分的處理核心。在另一實施例中,安全處理器元件101a、CPU 101b、和GPU 101c都會是晶片上系統101的一部分,如圖1A所示。在一實施例中,安全處理元件101a提供能在當中解碼和執行指定程式碼段(例如,圖1B中的程式碼段160)的安全空間。根據在安全處理元件101a所提供之安全空間中執行程式碼所產生之結果能被提供至執行於CPU 101b上的主應用程式(例如,圖1B中的應用程式150),以用於執行主應用程式。在一實施例中,安全處理元件101a能包括金鑰庫101e,其中保持能用以解密程式碼段(例如,圖1B中的程式碼段160)的祕密加密金鑰。在一實施例中,祕密加密金鑰在晶片製程期間能形成在保險絲(fuse)中。在一實施例中,安全處理元件101a專用存取形成於其中的祕密加密金鑰(祕密金鑰也許不允許被CPU 101b或GPU 101c存取)。
CPU 101b是主系統處理器。在一實施例中,CPU 101b執行主應用程式(例如,圖1B中的應用程式150)。在一實施例中,在將主應用程式中所缺少之碼段(例如,圖1B中的程式碼段160)提供至安全處理器101a(或在其他實施例中,提供至GPU 101c)以執行之前,驗證用以操作主應用程式(例如,圖1B中的應用程式150)的授權。由安全處理器101a(或在其他實施例中,由GPU 101c)產生的結果被提供至主應用程式(例如,圖1B中的應用程式150),以被CPU 101b用來執行主應用程式。在一實施例中,CPU 101b無法存取安全處理元件101a所保持的祕密加密金鑰。
在一實施例中,GPU 101c是能用以執行主應用程式所缺少之經解密版本之程式碼段(例如,圖1B中的程式碼段160)的圖形處理器。在一實施例中,GPU 101c能執行來自VPR 101d的程式碼段(例如,圖1B中的程式碼段160)。然而,存取執行結果係限於安全處理元件101a。在示範實施例中,如同CPU 101b,GPU 101c無法存取安全處理元件101a所保持的祕密加密金鑰。主應用程式所缺少之經解密版本之之程式碼段(例如,圖1B中的程式碼段160)從安全處理元件101a被提供至GPU 101c。
視頻保護區(VPR)101d是對主應用程式所缺少之程式碼段(例如,圖1B中的程式碼段160)提供安全執行區域之記憶體(例如,RAM)的安全部分。在一實施例中,視頻保護區101d是其中能寫入任何程序,但在硬體層級進行保護之記憶體的部分,使得讀取限於可信賴用戶。例如,在一實施例中,安全處理元件101a能從VPR 101d讀取,但不允許CPU 101b從VPR 101d讀取。在另一實施例中,讀取和寫入存取VPR 101d都限於透過安全處理元件101a。
線上伺服器105驗證裝置(例如,103)的簽章,並參與應用程式授權驗證操作,且若授權被驗證,則利用對應於相關裝置(例如,裝置103)之特有ID的加密金鑰來加密應用程式所缺少之程式碼段(例如,圖1B中的程式碼段160)或「著色器」。之後,線上伺服器105將經加密之所缺少的程式碼段(例如,圖1B中的程式碼段160)提供至應用程式(例如,圖1B中的應用程式150),應用程式接著將經加密之所缺少的程式碼段(例如,圖1B中的程式碼段160)提供至安全處理元件101a以供解密。在一實施例中,線上伺服器105針對由裝置供應商所指定需要碼保護的每個裝置(例如,裝置103)儲存特有ID和加密金鑰。在一實施例中,利用對應於裝置之特有ID的加密金鑰來加密所缺少的程式碼段(例如,圖1B中的程式碼段160)。在一實施例中,供應商保持上述私密加密金鑰的資料庫,使得線上伺服器105和安全處理元件101a能彼此安全地認證。
授權驗證伺服器107驗證需要使它們的授權被驗證之應用程式(例如,圖1B中的應用程式150)的授權,使得它們能正常地操作於特定裝置(例如,裝置103)上。應用程式之授權的驗證驅使線上伺服器加密所缺少的應用程式之程式碼段(例如,圖1B中的程式碼段160)且將其提供至應用程式(例如,圖1B中的應用程式150),使得它能被解密且用於執行應用程式。
操作過程
圖1C-1E繪示在一實施例中為碼保護架構之一部分的元件所進行之操作。為了清楚和簡單起見,繪示出關於利用線上認證與經加密碼執行之碼保護的這些操作。應了解依照實施例,能進行圖1C-1E中未示出的其他操作。
安全處理元件執行經解密碼
參考圖1C,在A中,在用以操作已安裝於裝置(例如,圖1A中的裝置103)上,且正執行於CPU 101b上之應用程式(例如,圖1B中的應用程式150)的授權被線上伺服器(例如,圖1A中的伺服器105)驗證之後,對應於應用程式(例如,圖1B中的應用程式150)的經加密程式碼段(或「著色器」)被應用程式(例如,圖1B中的應用程式150)存取且為了解密之目的而提供至安全處理元件101a。
在B中,藉由安全處理元件101a來解密經加密程式碼段。在一實施例中,安全處理元件101a利用安全處理元件101a所保持的秘密加密金鑰來解密經加密程式碼段。
在C中,藉由安全處理元件101a來執行經解密程式碼段。在一實施例中,結果與根據執行碼所產生的狀態資料一起被儲存。在一實施例中,狀態資料被保持在晶片上(on chip)。在其他實施例中,狀態資料被保持在晶片外(off chip)。在一實施例中,安全處理元件101a能編碼及/或解碼被保持在晶片外的狀態資料。
在D中,存取根據執行經解密程式碼段所產生的結果被提供至CPU 101b。在一實施例中,CPU 101b利用結果來執行執行於其上的對應之應用程式(例如,圖1B中的應用程式150)。
GPU元件執行經解密碼
參考圖1D,在A中,授權用以操作已安裝於裝置(例如,圖1A中的裝置103)上,且正執行於CPU 101b上之應用程式(例如,圖1B中的應用程式150),而在授權被線上伺服器(例如,圖1A中的105)驗證之後,對應於應用程式(例如,圖1B中的應用程式150)的經加密程式碼段、或「著色器」(例如,圖1B中的程式碼段160)被應用程式(例如,圖1B中的應用程式150)存取且為了解密之目的而提供至安全處理元件101a。
在B中,藉由安全處理元件101a來解密經加密的程式碼段。在一實施例中,安全處理元件101a利用安全處理元件101a所保持的秘密加密金鑰來解密經加密的程式碼段。
在C中,經解密的程式碼段係儲存於VPR 101e(例如,視頻保護區)中。在一實施例中,安全處理元件101a能從VPR 101e讀取,但CPU 101b不能從VPR 101e讀取。
在D中,藉由GPU 101c來執行經解密的程式碼段。在一實施例中,結果係儲存於VPR 101e的緩衝器中。
在E中,存取根據執行經解密程式碼段所產生的結果被寫入至記憶體(例如,RAM)且被CPU 101b存取以用於執行主應用程式(例如,圖1B中的應用程式150)。
GPU從非VPR位置執行第二著色器
參考圖1E,其中所示之操作A-D的說明類似於圖1C所示之操作A-D的說明,且因此為了清楚和簡單起見而不重覆。
再次參考圖1E,在E中,在如操作A-D之一部分所進行的解密和執行程式碼段或「著色器」之後,執行程式碼段的結果被用來作為 對藉由GPU 101c從非視頻保護區執行第二程式碼段或「著色器」的輸入。在一實施例中,將根據執行第二程式碼段所產生的結果提供給材質、畫面物件或其他圖形元件。
在示範實施例中,任何記憶體能被指定用於下載經加密的程式碼段,從中能產生給安全處理元件101a的輸入(快取、RAM等)。此外,任何記憶體能被指定用以從安全處理元件101a接收輸出。在一實施例中,輸入和輸出記憶體能被加密或不被加密。
根據一實施例之碼保護元件的元件
圖2顯示根據一實施例之碼保護安全處理元件101a的元件。在一實施例中,系統101a的元件係以硬體、用於碼保護的演算法來實作。在圖2實施例中,安全處理元件101a的元件包括經加密碼存取元件201、經加密碼解密元件203、經解密碼執行元件205、結果存取提供元件207、著色器快取209、狀態快取211及金鑰庫101e。
經加密的碼存取元件201從正執行於CPU(例如,圖1A中的CPU 101b)上之程式碼段所對應的應用程式存取已被線上伺服器加密的程式碼段(例如,「著色器」)。在一實施例中,正執行於CPU上之應用程式的正確運作依賴於程式碼段(例如,圖1B中的程式碼段160)。
經加密碼解密元件203利用儲存於安全處理元件101a之金鑰庫101e中的加密金鑰來解密經加密的程式碼段。在一實施例中,由解密產生的經解密的程式碼段係儲存於安全處理元件101a的著色器快取209中。
經解密碼執行元件205(係選擇性的)執行被經加密碼解密元件203所解密的程式碼段。在一實施例中,執行結果係儲存於指定記憶體中。在一實施例中,所儲存的狀態資料能用於執行經解密的程式碼段。在另一實施例中,藉由GPU來進行執行經解密的程式碼段。
結果存取提供元件207提供存取由經解密碼執行元件205 產生的結果。在一實施例中,存取執行結果被提供至經解密程式碼段所對應(且執行於CPU上)的應用程式(例如,圖1B中的應用程式150)。在一實施例中,當GPU執行經解密程式碼段時,執行結果被提供作為對執行非VPR區中之第二程式碼段的輸入。
著色器快取209儲存被經加密碼解密元件203解密的經解密程式碼段。在一實施例中,經解密程式碼段係儲存於著色器快取209中,直到從經解密程式碼段所對應之主應用程式產生引起其執行的呼叫為止。
狀態快取211儲存狀態資料,該狀態資料被提供作為對經解密程式碼執行操作(本文中關於圖4和5詳細所述)之輸入。在一實施例中,狀態資料能包括短期和長期狀態資料兩者。在一實施例中,短期狀態資料能包括但不限於從先前執行程式碼段或「著色器」取得的資料,其反映在已完成執行著色器之後的執行變數之配置。在一實施例中,長期狀態資料能包括但不限於如被保持且用以取得分數之玩家分數屬性的資料。在一實施例中,短期和長期狀態資料皆能保持在晶片上。在一實施例中,長期狀態資料能被安全處理元件編碼和解碼且儲存於晶片外。
金鑰庫101e儲存用以解密線上伺服器(例如,圖1A中的105)所提供之程式碼段的祕密加密金鑰。在一實施例中,金鑰庫101e儲存對應於於其上安裝程式碼段所對應之應用程式的裝置之特有ID的加密金鑰。
在一實施例中,安全處理元件101a的上述元件能以硬體來實作。在一實施例中,元件101a的元件和操作能被一或更多電腦元件(例如,圖1A中的CPU 101b或GPU 101c)的元件和操作所包含。在另一實施例中,系統101a的元件和操作能與上述一或更多電腦元件分開,但能與其元件和操作合作地操作。
根據一實施例之用於利用線上認證與經加密碼執行的碼保護之方法
圖3顯示根據一實施例之在用於利用線上認證與經加密碼 執行的碼保護之方法中所進行的操作之流程圖300。圖4、5和6顯示圖3之方法之示範實施例的流程圖400、500和600。圖7顯示根據一實施例之用於碼保護之方法的認證程序中所進行之操作的流程圖700。在一實施例中,流程圖包括能在電腦可讀和電腦可執行指令之控制下被處理器和電子元件執行的程序。雖然在流程圖中揭露了特定操作,但這樣的操作是示範性的。亦即,本實施例非常適用於進行流程圖所示之各種其他操作或操作的變化。雖然在流程圖中揭露了具體操作,但這樣的步驟是示範性的。亦即,本實施例非常適用於進行流程圖所示之各種其他操作或操作的變化。
用於碼保護的示範方法
參考圖3,在301中,存取經加密的程式碼段或「著色器」(例如,圖1B中的程式碼段160)。如本文所述,在已驗證對應用程式之操作的授權之後,經加密的程式碼段所對應之應用程式從線上伺服器(例如,圖1A中的線上伺服器105)存取經加密程式碼段。
在303中,解密經加密的程式碼段(圖1B中的程式碼段160)。如本文所述,經加密的程式碼段被硬體安全處理元件解密,該硬體安全處理元件係保持用來解密經加密的程式碼段之祕密加密金鑰。
在305中,執行經解密的程式碼段。在一實施例中,藉由安全處理元件(例如,圖1A中的安全處理元件101a)來執行經解密的程式碼段。在另一實施例中,經解密的程式碼段係儲存於VPR(例如,圖1A中的101d)中且被GPU(例如,圖1A中的GPU 101c)執行。
在307中,提供存取執行的程式碼結果。在一實施例中,執行的程式碼結果被正執行於CPU(例如,圖1A中的CPU 101b)上之所執行程式碼所對應的主應用程式存取,且被CPU用來執行主應用程式。在另一實施例中,當GPU執行經解密程式碼段時,執行結果被提供作為對執行非VPR區中之第二程式碼段的輸入。
安全處理元件執行經解密碼
圖4顯示為進行作為用於利用線上認證與經加密碼執行的碼保護之方法之一部分的操作之流程圖,其中經解密碼的執行係藉由安全處理元件來進行。參考圖4,作為方法的一部分,CPU 101b執行經解密碼所對應的主應用程式(例如,圖1B中的應用程式150)。操作401-421係與主應用程式(例如,圖1B中的應用程式150)之執行相關。如圖4所示,在401中,在應用程式已被購買且安裝於裝置上之後,能開始應用程式的初始化且判斷用於應用程式的安全程式碼段或「著色器」(例如,圖1B中的程式碼段160)是否存在。在403中,若用於應用程式的安全程式碼段(例如,圖1B中的程式碼段160)不存在,則檢查並初始化應用程式。在405中,若用於應用程式的安全程式碼段(例如,圖1B中的程式碼段160)存在,則將經加密程式碼段(例如,圖1B中的程式碼段160)發送至安全處理元件101a以供解密。在407中,完成應用程式初始化。在409中,從安全處理元件101a判斷程式碼段(例如,圖1B中的程式碼段160)是否就緒。在411中,若程式碼段(例如,圖1B中的程式碼段160)就緒,則開始用於應用程式的主執行迴圈。在413中,若程式碼段(例如,圖1B中的程式碼段160)尚未就緒,則離開或重新初始化應用程式。在415中,命令安全處理元件101a呼叫程式碼段(例如,圖1B中的程式碼段160)的指令被發送至安全處理元件101a。在417中,執行其他應用程式功能。在419中,根據執行程式碼段(例如,圖1B中的程式碼段160)的結果從安全處理元件101a被獲得且被利用。在421中,判斷執行是否繼續。若判斷執行繼續,則控制回到411。若判斷執行完成,則離開執行迴圈。
如圖4所示,在一實施例中,安全處理元件101a解密並執行對應於主應用程式(例如,圖1B中的應用程式150,其如上所述地執行於CPU 101b上)的程式碼段(例如,圖1B中的程式碼段160)。參考圖4來說明這些操作423-431。參考圖4,在423中,解密經加密程式碼段(例如,圖1B中的程式碼段160)。在一實施例中,處理器解密金鑰101e係用以解密 程式碼段(例如,圖1B中的程式碼段160)。在425中,判斷程式碼段(例如,圖1B中的程式碼段160)是否已被正確地解密,且判斷時限是否尚未過期。若是,則在427中,將程式碼段(例如,圖1B中的程式碼段160)儲存於安全處理裝置101a的著色器快取209中且針對著色器就緒詢問回傳「就緒」之回答。在429中,程式碼段(例如,圖1B中的程式碼段160)係從著色器快取209存取且執行。而且,在431中,根據執行程式碼段(例如,圖1B中的程式碼段160)所產生的輸出或結果被儲存並提供至主應用程式(例如,圖1B中的應用程式150)且狀態資料被儲存於狀態快取211(例如,RAM等)中。
GPU執行經解密碼
圖5顯示為進行作為用於利用線上認證與經加密碼執行的碼保護之方法之一部分的操作之流程圖,其中經解密碼的執行係藉由GPU 101c來進行。參考圖5,作為方法的一部分,CPU 101b執行主應用程式(例如,圖1B中的應用程式150)。操作501-523係與主應用程式(例如,圖1B中的應用程式150)之執行相關。如圖5所示,在501中,在應用程式已被購買且安裝於裝置上之後,能開始應用程式的初始化且判斷用於應用程式的安全程式碼段或「著色器」(例如,圖1B中的程式碼段160)是否存在。在503中,若用於應用程式的安全程式碼段(例如,圖1B中的程式碼段160)不存在,則檢查並初始化應用程式。在505中,若用於應用程式的安全程式碼段存在,則經加密程式碼段(例如,圖1B中的程式碼段160)被發送至安全處理元件101a以供解密。在507中,完成應用程式初始化。在509中,從安全處理元件101a判斷程式碼段(例如,圖1B中的程式碼段160)是否就緒。在511中,若程式碼段(例如,圖1B中的程式碼段160)就緒,則開始用於應用程式的主執行迴圈。在513中,若程式碼段(例如,圖1B中的程式碼段160)尚未就緒,則離開或重新初始化應用程式。在515中,將相關程式輸入(例如,圖1B中的程式碼段160)寫入至RAM。在517中,命令 GPU 101c執行程式碼段(例如,圖1B中的程式碼段160)的指令被發送至GPU 101c。在519中,執行其他應用程式功能。在521中,執行碼段或「著色器」(例如,圖1B中的程式碼段160)的結果從RAM被獲得且被利用。在523中,判斷執行是否繼續。若判斷執行繼續,則控制回到511。若判斷執行完成,則離開執行迴圈。
如圖5所示,在一實施例中,安全處理元件101a解密程式碼段(例如,圖1B中的程式碼段160),將程式碼段(例如,圖1B中的程式碼段160)置於VPR 101e中且命令GPU 101c執行程式碼段(例如,圖1B中的程式碼段160)。參考圖5來說明這些操作525-535。再次參考圖5,在525中,解密經加密的程式碼段(例如,圖1B中的程式碼段160)。在一實施例中,使用處理器解密金鑰101e以解密程式碼段(例如,圖1B中的程式碼段160)。在527中,若判斷程式碼段(例如,圖1B中的程式碼段160)已被正確地解密,且判斷時限尚未過期,則在529中,將程式碼段(例如,圖1B中的程式碼段160)置於VPR中。在527中,若判斷程式碼段(例如,圖1B中的程式碼段160)未被正確地解密,則此資訊被提供至執行於CPU 101b上的主應用程式(例如,圖1B中的應用程式150)(參見操作509)。在531中,在已將程式碼輸入寫入至RAM之後,程式碼輸入從RAM讀取且寫入至VPR 101d。在533中,安全處理元件101a命令GPU 101c執行程式碼段(例如,圖1B中的程式碼段160)。在535中,根據執行程式碼段(例如,圖1B中的程式碼段160)所產生的輸出從VPR讀取且寫入至RAM。在一實施例中,依據所使用的硬體,主應用程式(例如,圖1B中的應用程式150)或安全處理元件(例如,圖1A中的101a)能進行操作531和533。
如圖5所示,VPR 101d接收程式碼段(例如,圖1B中的程式碼段160)且提供用於安全執行程式碼段(例如,圖1B中的程式碼段160)的空間。參考圖5來說明這些操作537-545。參考圖5,在537中,VPR 101d接收程式碼段(例如,圖1B中的程式碼段160)。在539中,將程式碼段(例 如,圖1B中的程式碼段160)置於VPR 101d中的輸入緩衝器中。在541中,在被命令執行程式碼段(例如,圖1B中的程式碼段160)之後,藉由GPU 101d來執行程式碼段(例如,圖1B中的程式碼段160)。在543中,將輸出儲存於VPR 101d中的緩衝器中。在一實施例中,此輸出被提供至安全處理元件101a且被執行於CPU 101b上的主應用程式存取。而且,在545中,結束關於程式碼段(例如,圖1B中的程式碼段160)的操作。
GPU從非VPR位置執行第二著色器
圖6顯示為進行作為用於利用線上認證與經加密碼執行的碼保護之方法之一部分的操作之流程圖,其中從非VPR位置之第二著色器的執行係藉由GPU 101c來進行。參考圖6來說明這些操作。操作601-645之操作的說明類似於對上述操作501-545的說明且因此不重覆。參考圖6,在647中,根據執行程式碼段或「著色器」的輸出被接收且用以執行第二著色器。而且,在649中,將第二著色器輸出至材質、畫面物件或其他圖形元件。在一實施例中,依據所使用的硬體,主應用程式(例如,圖1B中的應用程式150)或安全處理元件(例如,圖1A中的101a)能進行操作631和633。
認證
圖7顯示根據一實施例之認證操作之流程圖,其被進行作為用於利用線上認證與經加密碼執行的碼保護之方法之一部分。參考圖7,在701中,檢查並初始化應用程式ID。在703中,獲得相關晶片上系統(SoC)的使用者ID和使用者ID簽章。在705中,從使用者ID和加密金鑰(安全處理元件)建立簽章。在707中,藉由主應用程式(例如,圖1B中的應用程式150)來建立使用者ID、簽章和應用程式ID。在709中,驗證用於使用者ID的簽章。在711中,產生符記(token)。在713中,判斷伺服器是否應驗證授權。若是,則在715中,判斷裝置是否具有經授權的應用程式ID(例如,使用完成請求且簽署符記的授權驗證伺服器107)。接著,在717中,驗證 授權之有效性及是否正確地簽署回應。若否,則在719中,對線上授權檢查利用符記(例如,使用完成請求且簽署符記的授權驗證伺服器107)。然後,在721中,授權回應被接收且發送至伺服器(參見717)。在723中,加密對應於應用程式ID的程式碼段或「著色器」。在725中,經加密著色器被提供至應用程式(例如,圖1B中的應用程式150)。而且,在727中,著色器被應用程式(例如,圖1B中的應用程式150)接收和儲存,且在729中,控制回到應用程式初始化。應了解關於圖7所論述之認證和驗證操作僅是示範性的,且能採用任何安全、伺服器為基的認證和驗證程序,其成功的完成導致將經加密著色器提供至主應用程式,如本文所論述(參見725)。
本實施例中所述之方法的示範特徵為相關應用程式缺少能在授權驗證之後被下載的金鑰程式碼段(例如,圖1B中的程式碼段160)。而且,對特定安全處理元件加密此所缺少的程式碼段(例如,圖1B中的程式碼段160)。因此,解密和執行程式碼段(例如,圖1B中的程式碼段160)會限於被授權人的個人裝置。此外,能以私密和安全方式來執行程式碼段(例如,圖1B中的程式碼段160),以便能防止偷竊。在一實施例中,若被授權人具有多個裝置,則每當應用程式安裝且執行於各別裝置上時進行授權驗證。
由於本實施例所述之架構,若移除本實施例所述之授權檢查,則應用程式(例如,圖1B中的應用程式150)將以缺少的金鑰程式碼段來執行。於是,雖然應用程式(例如,圖1B中的應用程式150)可能執行,但可能無法正確地運作。例如,若依照本文所述之原理來格式化遊戲,則從所缺少的程式碼段(例如,圖1B中的程式碼段160)取得其人工智慧(AI)的一部分,且只有授權檢查通過(授權被驗證),AI才能夠執行。藉此,若移除呼叫以避開授權檢查,則遊戲可能執行,但沒有適當的AI。此外,若沒有適當的AI,則遊戲有可能無法播放,因為AI形成玩遊戲的關鍵元件。
在另一實例中,若遊戲的碰撞偵測(collision detection)碼被安 全處理元件(例如,圖1A中的101a)二元地(binary)執行,而移除對安全處理元件(例如,圖1A中的101a)的授權伺服器檢查和呼叫,則非法的副本可被執行,但玩家能走路穿過遊戲中的牆壁及其他物件,如此破壞了遊戲經驗。
在又一實例中,若文字處理器之「產生可用字體」功能被安全處理元件二元地執行且移除對安全處理元件的呼叫,則應用程式(例如,圖1B中的應用程式150)可能不產生可用字體列表。此外,若沒有字體,則使用者不能寫任何東西,使得盜版文字處理器無用。
透過以上示範實施例,揭露了用於碼保護的元件、架構和方法。方法包括在對使用應用程式的授權被線上伺服器認證之後,利用安全處理元件來存取被線上伺服器加密之應用程式的經加密部分。安全處理元件係用以利用儲存於安全處理元件中的加密金鑰來解密應用程式的經加密部分。基於所儲存的狀態資料來執行應用程式的經解密部分。將結果提供至正執行於第二處理元件上的應用程式。
雖然為了方便起見,上面以單數來說明許多元件和程序,但本領域之技藝者將了解也能使用多個元件和重覆程序來實現本發明之技術。此外,儘管已具體地顯示出且參考其具體實施例來說明本發明,但本領域之那些技藝者將了解在不脫離本發明之精神或範圍下可改變所揭露實施例的形式和細節。例如,本發明之實施例可採用各種元件且不應限於上述元件。因此,預期本發明應被解釋為包括落在本發明之實際精神和範圍內的所有變化和等效物。
100‧‧‧操作環境
101‧‧‧晶片上系統
101a‧‧‧安全處理元件
101b‧‧‧中央處理單元
101c‧‧‧圖形處理元件
101d‧‧‧視頻保護區
101e‧‧‧金鑰庫
103‧‧‧裝置
105‧‧‧線上伺服器
107‧‧‧授權驗證伺服器

Claims (20)

  1. 一種碼保護的方法,包含:利用一處理元件,在對一應用程式的一授權被一線上伺服器驗證之後,存取被該線上伺服器加密之該應用程式的一經加密部分;利用該處理元件,利用儲存於該處理元件中的一加密金鑰來解密該應用程式的該經加密部分,其中產生了該應用程式的一對應經解密部分;利用所儲存的狀態資料來執行該應用程式的該經解密部分及產生執行結果;及利用該處理元件,將該些結果提供至正執行於一第二處理元件上的該應用程式。
  2. 如申請專利範圍第1項之方法,其中存取該加密金鑰係限於該處理元件。
  3. 如申請專利範圍第1項之方法,其中該執行該應用程式的該經解密部分係藉由該處理元件來進行。
  4. 如申請專利範圍第1項之方法,其中該執行該應用程式的該經解密部分係藉由一圖形處理元件來進行。
  5. 如申請專利範圍第4項之方法,其中該應用程式的該經解密部分係儲存於一記憶體的一指定視頻保護區中,且其中用以從該視頻保護區讀取的能力係限於該處理元件所有。
  6. 如申請專利範圍第5項之方法,其中用以從該視頻保護區讀取和寫入的能力係限於該處理元件所有。
  7. 如申請專利範圍第1項之方法,其中該處理元件是嵌入於該第二處理元件及一圖形處理元件中之其一者,其中該第二處理元件是一晶片上系統(system on chip)的一主處理器。
  8. 如申請專利範圍第1項之方法,其中將輸入提供至該處理元件且從該處理元件接收輸出之記憶體的一部分是經加密和非經加密之其一者。
  9. 如申請專利範圍第1項之方法,其中該狀態資料包含短期狀態資料和為保持在晶片上和保持在晶片外之其一者的長期狀態資料。
  10. 一種安全處理元件,包含:一存取元件,其在對一應用程式的一授權被一線上伺服器驗證之後,存取被該線上伺服器加密之該應用程式的一經加密部分;一解密元件,其利用儲存於該安全處理元件中的一加密金鑰來解密該應用程式的該經加密部分,其中產生了該應用程式的一對應經解密部分;一存取提供元件,其提供存取從執行該應用程式之該經解密部分產生的執行結果。
  11. 如申請專利範圍第10項之安全處理元件,其中該加密金鑰的存取係限於該安全處理元件。
  12. 如申請專利範圍第10項之安全處理元件,更包含一執行元件,執行該 應用程式之該經解密部分。
  13. 如申請專利範圍第10項之安全處理元件,其中一圖形處理元件執行該應用程式的該經解密部分。
  14. 如申請專利範圍第13項之安全處理元件,其中一記憶體的一指定視頻保護區儲存該應用程式的該經解密部分,且其中用以從該記憶體之該視頻保護區讀取的能力係限於該安全處理元件所有。
  15. 一種晶片上系統,包含:一處理器;一圖形處理器;及一安全處理元件,包含:一存取元件,其在對一應用程式的一授權被一線上伺服器驗證之後,存取被該線上伺服器加密之該應用程式的一經加密部分;一解密元件,其利用儲存於該處理元件中的一加密金鑰來解密該應用程式的該經加密部分,其中產生了該應用程式的一對應經解密部分;一存取提供元件,其提供存取從執行該應用程式之該經解密部分產生的執行結果。
  16. 如申請專利範圍第15項之晶片上系統,其中該加密金鑰的存取係限於該處理元件。
  17. 如申請專利範圍第15項之晶片上系統,更包含一執行元件,執行該應用程式之該經解密部分。
  18. 如申請專利範圍第15項之晶片上系統,其中該圖形處理器執行該應用程式的該經解密部分。
  19. 如申請專利範圍第15項之晶片上系統,其中該安全處理元件係嵌入於該處理器中,且其中該處理器是該晶片上系統的一主處理器。
  20. 如申請專利範圍第15項之晶片上系統,其中該安全處理元件係嵌入於該圖形處理器中。
TW102143308A 2012-11-30 2013-11-27 利用線上認證與經加密碼執行的碼保護 TWI526866B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/691,613 US9177121B2 (en) 2012-04-27 2012-11-30 Code protection using online authentication and encrypted code execution

Publications (2)

Publication Number Publication Date
TW201443680A TW201443680A (zh) 2014-11-16
TWI526866B true TWI526866B (zh) 2016-03-21

Family

ID=50726261

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102143308A TWI526866B (zh) 2012-11-30 2013-11-27 利用線上認證與經加密碼執行的碼保護

Country Status (4)

Country Link
US (1) US9177121B2 (zh)
CN (1) CN103856481B (zh)
DE (1) DE102013224578A1 (zh)
TW (1) TWI526866B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150242597A1 (en) * 2014-02-24 2015-08-27 Google Inc. Transferring authorization from an authenticated device to an unauthenticated device
US9830470B2 (en) * 2015-10-09 2017-11-28 Sap Se Encrypting data for analytical web applications
US9449189B1 (en) * 2015-11-03 2016-09-20 International Business Machines Corporation Protection of state data in computer system code
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
US10367639B2 (en) * 2016-12-29 2019-07-30 Intel Corporation Graphics processor with encrypted kernels
SG11202010188PA (en) * 2018-05-28 2020-11-27 Royal Bank Of Canada System and method for secure electronic transaction platform
CN109145654A (zh) * 2018-08-15 2019-01-04 阿里巴巴集团控股有限公司 防止破解算法模型的芯片及业务处理方法
US11271935B2 (en) * 2020-07-30 2022-03-08 Bank Of America Corporation Blind authenticator
US12001523B2 (en) * 2020-09-29 2024-06-04 International Business Machines Corporation Software access through heterogeneous encryption

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1282845A1 (en) * 2000-05-10 2003-02-12 Koninklijke Philips Electronics N.V. Controlled distributing of digital information, in particular audio
US7930537B2 (en) 2002-08-13 2011-04-19 Nokia Corporation Architecture for encrypted application installation
US7117284B2 (en) 2002-11-18 2006-10-03 Arm Limited Vectored interrupt control within a system having a secure domain and a non-secure domain
JP4770425B2 (ja) * 2005-11-24 2011-09-14 富士ゼロックス株式会社 保護済み実行プログラムの作成のためのプログラム、方法及び装置
US20090172331A1 (en) 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
JP2009194860A (ja) 2008-02-18 2009-08-27 Toshiba Corp 送信装置、受信装置、コンテンツ送受信システム、コンテンツ送信方法、コンテンツ受信方法及びプログラム
CN101393521B (zh) * 2008-11-13 2012-04-25 上海交通大学 Windows应用程序内部固化数据的提取系统
US8266448B2 (en) * 2008-12-09 2012-09-11 Nvidia Corporation Apparatus, system, method, and computer program product for generating and securing a program capable of being executed utilizing a processor to decrypt content
US20100153667A1 (en) 2008-12-15 2010-06-17 Sony Ericsson Mobile Communications Ab Method, computer program and electronic device
EP2515239B1 (en) 2009-12-14 2017-03-29 Panasonic Intellectual Property Management Co., Ltd. Information processing apparatus
US8499304B2 (en) 2009-12-15 2013-07-30 At&T Mobility Ii Llc Multiple mode mobile device
US20110154436A1 (en) 2009-12-21 2011-06-23 Mediatek Inc. Provider Management Methods and Systems for a Portable Device Running Android Platform
EP2549380B1 (en) 2010-03-16 2018-06-13 Panasonic Intellectual Property Management Co., Ltd. Information processing device, virtual machine generation method, and application software distribution system
CN101814124A (zh) * 2010-04-20 2010-08-25 浪潮电子信息产业股份有限公司 一种基于Java的软件安全性加强的方法

Also Published As

Publication number Publication date
CN103856481B (zh) 2017-09-22
DE102013224578A1 (de) 2014-06-05
CN103856481A (zh) 2014-06-11
TW201443680A (zh) 2014-11-16
US9177121B2 (en) 2015-11-03
US20140157423A1 (en) 2014-06-05

Similar Documents

Publication Publication Date Title
TWI526866B (zh) 利用線上認證與經加密碼執行的碼保護
US9043610B2 (en) Systems and methods for data security
JP4099039B2 (ja) プログラム更新方法
US8677142B2 (en) Method and system for protecting against the execution of unauthorized software
KR101397637B1 (ko) 다중 사용자 감응 코드 및 데이터를 보호하는 아키텍처를 포함하는 방법 및 장치
ES2318302T3 (es) Prueba de ejecucion que utiliza funcion aleatoria.
JP5636371B2 (ja) 汎用コンピューティングデバイスにおけるコード実行制御および再帰的セキュリティプロトコルでのコード実行制御のための方法およびシステム
US11163859B2 (en) Content protection via online servers and code execution in a secure operating system
TW201314492A (zh) 未知安全金鑰下開機影像之安全更新
US8245307B1 (en) Providing secure access to a secret
CN104956620B (zh) 用于验证和密钥交换的方法、装置和计算机可读存储媒体
TWI644229B (zh) 採加密技術之數據中心與數據中心操作方法
JP2007141044A (ja) 情報処理装置、及びプログラム実行制御方法
US20190044709A1 (en) Incorporating software date information into a key exchange protocol to reduce software tampering
KR20230150409A (ko) 비밀 데이터의 보안 프로그래밍
JP2002244989A (ja) デバイスドライバ作動方法
JP2007515723A (ja) アクティブなエンティティを使用するソフトウェア実行保護
JP2005303370A (ja) 半導体チップ、起動プログラム、半導体チッププログラム、記憶媒体、端末装置、及び情報処理方法
CN115357948A (zh) 一种基于tee及加密芯片的硬件防抄板加密方法及其装置
JP2022084708A (ja) 安全製造に適用される制御システム及び制御方法
JP6203556B2 (ja) 情報処理システム
EP3731127A1 (en) Control system and method thereof for secure manufacturing
TWI465957B (zh) 以終端裝置執行的之版權管理離線授權之方法與終端裝置
JP4580030B2 (ja) セキュアデバイス
BRPI0205818B1 (pt) Método, meio e dispositivo para criptograficamente proteger conteúdo de segurança

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees