TWI598764B - 透過線上伺服器與在安全作業系統中執行程式碼的內容保護 - Google Patents

透過線上伺服器與在安全作業系統中執行程式碼的內容保護 Download PDF

Info

Publication number
TWI598764B
TWI598764B TW101132280A TW101132280A TWI598764B TW I598764 B TWI598764 B TW I598764B TW 101132280 A TW101132280 A TW 101132280A TW 101132280 A TW101132280 A TW 101132280A TW I598764 B TWI598764 B TW I598764B
Authority
TW
Taiwan
Prior art keywords
software application
code portion
operating system
application
software
Prior art date
Application number
TW101132280A
Other languages
English (en)
Other versions
TW201331780A (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 TW201331780A publication Critical patent/TW201331780A/zh
Application granted granted Critical
Publication of TWI598764B publication Critical patent/TWI598764B/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]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting 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/74Protecting 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 operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/106Enforcing content protection by specific content processing
    • G06F21/1064Restricting content processing at operating system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

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

Description

透過線上伺服器與在安全作業系統中執行程式碼的內容保護
本發明一般係關於數位權利管理之領域,特別是關於軟體應用程式之複製保護的領域。
數位權利管理包含用以控制或限制數位內容之使用的各種方法,其包含硬體及軟體兩者。這類方法一般用以試圖確保數位內容的所有使用者係合法地購買數位內容。這類方法也可用以控制或限制軟體應用程式。
軟體複製保護一般使用以下技術之一或結合:在購買或註冊後可提供完整的應用程式;使用序號或金鑰可啟動完整軟體應用程式;或在安裝過程中或當軟體運行時,可查詢線上伺服器以驗證安裝為合法或一註冊複製。在購買或註冊(在光碟上或是經由網際網路下載)後提供完整軟體應用程式的問題為合法的購買者可複製軟體並將其提供給其他人,其可能接著將軟體安裝及運行於其他裝置上。使用序號或金鑰來啟動完整軟體應用程式的一問題為合法使用者也可將此序號給其他人,其可接著以相同的金鑰來啟動軟體的另一個複製。最後,查詢線上伺服器以驗證安裝是否合法或一註冊複製(在安裝過程中或當軟體運行時)的一問題為可設法避開執行線上伺服器檢查的程式碼,而總是回傳一「合法」狀態。
隨著「保持在線(always online)」裝置的出現,查詢線上伺服器的選項成為受歡迎的版權保護形式。遺憾地,線上伺服器 檢查可被輕易地移除或修改。針對桌上型及行動裝置軟體,當修改後的可執行程式由作業系統(OS)執行而無額外的檢查或通知將會造成嚴重的問題。桌上型及行動裝置軟體的盜版率可能相當高。舉例來說,已有報導指出,當比較個別軟體銷售的數量與軟體應用程式下載的數量,行動裝置之軟體應用程式的盜版率高達10:1。因此,需要用以控制數位內容及用以提供軟體應用程式之複製保護的改良方法。
本發明具體實施例對管理軟體應用程式中的複製保護所固有的挑戰提供了解決方案。本發明具體實施例藉由提供執行於第一作業系統(其包括對執行於一安全作業系統中之一函數或程序或常式等之一呼叫)中的軟體應用程式而改善複製管理。回應此呼叫所回傳的結果在當第一軟體應用程式未被驗證時係導致第一軟體應用程式的一不可操作狀態,且在當第一軟體應用程式被成功驗證時係導致第一軟體應用程式的一可操作狀態。從造成第一軟體應用程式中之不可用狀態之呼叫所回傳的結果係包含一預定回應、垃圾資料、及無回傳結果之其中一者。
根據本發明一具體實施例,揭露一種用於複製管理的方法。方法包含在第一作業系統執行第一軟體應用程式的一軟體迴圈。亦執行在軟體迴圈中之第一函數呼叫。執行第二作業系統中之第一軟體應用程式的一解密第一函數以回應第一函數呼叫,其中第一函數係解密以回應第一軟體應用程式的成功驗證。若第一軟體應用程式未被驗證,則呼叫第一函數將導致上鎖或其他程式假像或失效。當第一軟體應用程式未被驗證,則 呼叫第一函數呼叫將導致預定回應、垃圾資料、及無回傳結果之其中一者。
根據本發明一具體實施例,電腦系統係包含處理器及用以儲存指令的記憶體,當指令由處理器執行時將實施一複製保護方法。複製保護方法包含執行在第一作業系統中之第一軟體應用程式的一軟體迴圈。第一函數呼叫係執行於軟體迴圈中。第一軟體應用程式的一解密第一函數係於第二作業系統中執行以回應第一函數呼叫。第一函數係解密以回應第一軟體應用程式的成功驗證。若第一軟體應用程式未被驗證,則呼叫第一函數將導致上鎖或其他程式假像或失效。當第一軟體應用程式未被驗證,則呼叫第一函數呼叫將導致預定回應、垃圾資料、及無回傳結果之其中一者。
根據本發明一具體實施例,電腦系統係包含一處理器及一隨機存取記憶體,其中隨機存取記憶體包含一不安全部分及一安全部分。不安全部分包含運行第一軟體應用程式之第一作業系統。第一軟體應用程式包含一軟體迴圈。安全部分包含運行第二軟體應用程式之第二作業系統。電腦系統更包含儲存第一函數的一安全儲存區域;以及用以儲存指令的一記憶體,當指令由處理器執行時將實施一複製保護方法。方法包含執行第一軟體應用程式的一軟體迴圈以及執行在軟體迴圈中的第一函數呼叫。執行第二作業系統中之第一軟體應用程式的第一函數以回應第一函數呼叫。第一函數呼叫的結果在當第一軟體應用程式未成功地驗證時產生在第一軟體應用程式中的一不可用狀態,且在當第一軟體應用程式已成功地驗證時產生在第一軟體 應用程式中的一可用狀態。若第一軟體應用程式未被驗證,則呼叫第一函數將導致上鎖或其他程式假像或失效。從造成第一軟體應用程式中之不可用狀態之呼叫所回傳的結果係包含一預定回應、垃圾資料、及無回傳結果之其中一者。
現在將詳細參考本發明的具體實施例,附圖內將說明其範例。雖然本發明將結合這些具體實施例來說明,將瞭解到這並意欲限制本發明於這些具體實施例。相反地,本發明係意圖涵蓋可由後附申請專利範圍所定義之本發明精神及範疇內所包含之變化、修改與均等。此外,在下列本發明的詳細說明中,將提出許多特定細節以提供對本發明技術的通盤瞭解。不過,將瞭解到本發明可無這些特定細節而實施。在其他實例中,已知的方法、程序、構件和電路並未詳述,以避免不必要地模糊本發明具體實施例的態樣。顯示本發明具體實施例的圖式為半圖解式且不按比例繪製,特別是,在圖式中為了呈現之清晰性起見而誇示一些尺寸。類似地,儘管圖式中之視圖通常為了便於描述而展示類似定向,但諸圖中之此描繪大部份為任意的。
符號及術語:
以下之詳細描述的某些部分係以在一電腦記憶體內之資料位元上操作的程序、步驟、邏輯塊、處理、及其他符號表示來呈現。這些說明及表示為熟習資料處理技藝者所使用的手段,以有效地將其工作內容傳達給其他熟此技藝者。於本文中,程序、電腦執行步驟、邏輯塊、處理等通常視為導致所需結果之自相一致順序的步驟或指令。這些步驟為需要物理量的物理操 控者。通常但非必要,這些量採用電或磁信號的形式,其能被儲存、轉移、結合、比較、或操控於電子系統中。已證實,主要出於常用原因,將此等信號稱作位元、數值、元件、符號、字母、術語、數字、及/或類似者有時為方便的。
然而,應注意,所有這些及其他類似用語係與適當的物理量相關聯,且僅為應用於此等量的便利符號。於下討論中除非有特別指明,應理解本發明的討論中使用例如「處理」或「存取」或「執行」或「儲存」或「使得」或類似者之用語之討論係表示電腦系統或類似電子計算裝置的動作及處理,其將表示為電腦系統之暫存器及記憶體及其他電腦可讀媒體內之物理(電子)量之資料操縱且轉換成類似地表示為電腦系統記憶體或暫存器或其他此等資訊儲存、傳輸或顯示裝置內之物理量之其他資料。當一組件出現於數個具體實施例中,使用相同的元件符號係表示組件為最初具體實施例中所描述的相同組件。
本發明具體實施例對數位權利管理及軟體應用程式的複製保護之不斷增加的固有挑戰提供了解決方案。本說明書的各種具體實施例藉由併入軟體應用程式之一部份(例如「二元(binary)」)以於一安全作業系統中執行而提供了軟體應用程式確認及複製保護。如以下將詳細討論,範例軟體應用程式係執行於一傳統、不安全的作業系統,而一部份的軟體應用程式(二元)係執行且維持於一安全作業系統。在一範例具體實施例中,軟體應用程式執行一主要程式迴圈,其包含對要在一安全作業系統中執行之一函數的一呼叫。對一函數的呼叫可定義為對一次常式、常式、程序、或其他功能的一呼叫。如以下將詳細討論, 在安全作業系統中的範例函數等僅可在軟體應用程式已適當地確認時被解密。
發佈針對此二元之一函數呼叫的結果在軟體應用程式未被確認時係產生軟體應用程式的一不可操作狀態,而在軟體應用程式已成功地確認時則產生軟體應用程式的一可操作狀態。不可操作狀態藉由回傳垃圾資料而使得應用程式為不可用。在一範例具體實施例中,若軟體應用程式未被確認,則呼叫二元將導致上鎖或其他程式假像或失效。在一範例具體實施例中,從造成軟體應用程式中之不可操作狀態的呼叫所回傳的結果係包含一預定回應、垃圾資料、及無回傳結果之其中一者。如以下將詳細討論,安全函數的解密以及安全函數之初始化及執行係由在安全作業環境中運行之一「安全服務」應用程式所提供。
圖1描述一範例電腦系統100。電腦系統100包含處理器102、隨機存取記憶體(RAM)模組104、安全RAM模組106、安全儲存模組108、及儲存模組110(其為不安全儲存模組)。在不同的具體實施例中,電腦系統100可為桌上型電腦、膝上型電腦、行動計算裝置、智慧型手機、平板電腦、或某些其他計算裝置。在一範例具體實施例中,處理器102為一微處理器。在一具體實施例中,電腦系統包含系統單晶片(SOC)。在一範例具體實施例中,安全RAM 106為RAM 104的部分。作為安全RAM 106之RAM 104的部分是可選擇的。在一範例具體實施例中,針對一記憶體位址之一可選擇位元可指派記憶體位址作為安全區域的部分。在一範例具體實施例中,安全儲存模組108為較大非揮發性記憶體裝置的部分。在另一範例具體實施例中,安 全儲存模組108為獨立的非揮發性記憶體裝置。
如以下將詳細討論,圖1的電腦系統100可提供使用RAM 104及儲存模組110之一傳統、不安全、主要的作業環境(主要OS),同時亦運行使用安全RAM 106及安全儲存108之一安全作業環境(安全OS)。在一具體實施例中,安全OS可包含運行在主要OS之安全空間中的一囊封(encapsulated)OS核心。在一範例具體實施例中,安全OS為與主要OS分開之一單獨的作業系統,且在開機時於背景中運行。安全OS可利用電腦處理器102中的安全特性以針對基本作業系統及針對運行於安全OS中之處理及服務提供安全開機,其具有加密檔案系統(安全儲存108)、安全RAM 106、及單獨的CPU處理。在一具體實施例中,如以下將詳細討論,安全OS可運行在安全OS內所執行的應用程式。在一具體實施例中,運行於安全OS中的應用程式可透過特定API呼叫而由標準程序所存取。因為此類應用程式僅可在安全OS之內存取,其可具有加密的處理、儲存、及RAM。
圖2描述實施一複製保護技術的範例電腦作業系統環境。如圖2所示,範例軟體作業環境200包含傳統主要作業系統(不安全OS)202及安全作業環境(安全OS)204。安全OS 204包含安全軟體應用程式(「安全服務」)206,其包含軟體應用程式210的加密部分(例如加密二元)212、用以解密加密二元212之解密模組214、用以解譯、初始化、及準備解密二元220供執行之解譯器模組216、以及準備好供執行之初始化二元(「二元」)218。在一範例具體實施例中,解譯器模組216可由本機的CPU指令所取代。如以下將詳細討論,範例解譯器模組216或其他類似 模組可根據安全OS限制提供解譯服務。
在一範例具體實施例中,解譯器216解譯解密二元220的程式碼,使其可執行以實施其所需功能。如以下所討論,因為二元218可為任何編譯函數(compiled function),安全服務206取得解密二元220的編譯程式碼、將其反編譯、並產生能夠實施加密二元212之所需功能的二元218。
同樣描述於圖2,不安全OS 202包含軟體應用程式210(如圖2所示,其可包括一加密二元212),可傳遞至在安全OS 204中的安全服務206,用以在解密模組214中解密。圖2亦描述應用程式210連接至DRM伺服器208、裝置伺服器222、及應用程式伺服器224。在一範例具體實施例中,加密二元212並未保留在軟體應用程式210中,而是根據需要在一確認階段過程中(如下述)或在確認階段之後從應用程式伺服器224下載並透過軟體應用程式210傳遞至安全服務206供解密。
同樣描述於圖2且將討論於下,一旦由安全服務206解密及解譯/初始化,二元218已準備好供執行,以回應其來自軟體應用程式210的對應函數呼叫。如圖2所述,應用程式210可呼叫二元218並接收二元結果。在一範例具體實施例中,當呼叫二元218,應用程式210傳遞一或多個變數至二元218。二元218係以所提供的變數執行,且任何結果係回傳至應用程式210。連接至安全服務206的安全儲存108(如圖2所示)可包含複數個對應應用程式之複數個解密部分或解密二元220。如以下所討論,在應用程式210的驗證後,加密二元212可被解密且 解密二元220係複製到安全儲存108供之後的擷取。舉例來說,當下次開啟應用程式210時,解密二元220(若有的話)可從安全儲存108載入至安全服務206並由解譯器216初始化/準備以運行為二元218。
如以下將詳細討論,對二元218發佈一呼叫的結果可取決於軟體應用程式210是否已適當地確認(validated)或驗證(verified)。如上述及以下所討論,只有當軟體應用程式210已被確認,解密金鑰才會提供至解密模組214以解密加密二元212。若加密二元212未被解密,則呼叫二元218將導致二元218回傳包含「垃圾」資料之一回應,使得應用程式210將進入由所提供結果決定之一無法操作或無法使用的狀態。換言之,若應用程式210未被確認,則可回傳無法識別或垃圾資料(而不是所需二元218以所傳遞變數(passed variables))以回應二元218呼叫。在一範例具體實施例中,若應用程式210未被確認,則呼叫二元218將導致上鎖或其他程式假像(artifact)或失效。在一範例具體實施例中,從造成應用程式210中之不可操作狀態之呼叫所回傳的結果係包含一預定回應、垃圾資料、及無回傳結果之其中一者。若加密部分已適當地解密,則所需二元218將為可得,且呼叫二元218將基於二元呼叫中所提供的變數而產生適當的結果,且應用程式210將維持在一可操作狀態。
圖3描述使用包含一不安全作業系統202及一安全作業系統204之作業系統環境而在一範例主要應用程式執行迴圈中執行之複數個電腦控制步驟的範例流程圖。在一範例具體實施例中,應用程式210可包含保持運行的一執行迴圈。此一執行迴 圈可具有一開始及一結束。如圖3所描述,在執行迴圈的某處可為在安全OS 204中執行之必須被呼叫的部份程式碼(例如一函數(二元218))。在一範例具體實施例中,應用程式210的剩餘部分將取決於由二元218所計算的結果。
如圖3所描述,在主要應用程式執行迴圈300開始於步驟304之前,先於步驟302開啟應用程式210。如以下所討論,當應用程式210在步驟302開啟時,可準備二元,以由安全服務206於安全OS 204中執行。在圖3的步驟304中,範例性主要應用程式執行迴圈300首先在不安全OS 202中呼叫及執行一或多個函數。
在圖3的步驟306中,執行迴圈300針對位於安全OS 204中的函數Z而在不安全OS 202中執行一函數呼叫。如圖2所示,針對函數Z的函數呼叫為對二元218的呼叫。如圖3所示,在步驟306執行針對函數Z的函數呼叫可包含傳送一或多個變數至函數Z(二元)218供執行。如以下所討論,在一範例具體實施例中,一或多個變數可包含軟體應用程式210的一應用程式ID、以及用以由二元218處理的一或多個資料塊。
在圖3的步驟308中,已接收具有變數之函數呼叫的二元218可執行二元函數並回傳結果至應用程式210。在圖3的步驟310中,在接收二元218執行的結果後,主要應用程式迴圈300可使用二元結果並繼續執行迴圈300。如圖3所示,在步驟310中,執行迴圈300可繼續在不安全OS 202中呼叫及執行一或多個函數。在一範例具體實施例中,在步驟310中的一或 多個函數係不用於在步驟304中的一或多個函數。在一範例具體實施例中,步驟310中的一或多個函數係與在步驟304中的一或多個函數相同。在一範例具體實施例中,在步驟310中執行的一或多個函數利用二元執行的結果。在圖3的步驟312中,應用程式210決定是否繼續運行應用程式執行迴圈300。若執行迴圈300要結束,則執行迴圈300進行至步驟314並結束。若執行迴圈300要繼續,則執行迴圈300回到步驟304。
如以下將詳細討論,從運行二元218所回傳的結果係取決於應用程式210是否已適當的確認(validated)。如本文中所討論,若應用程式210已被確認,則適當解密的二元212可由解譯器216解譯/初始化,使得當在步驟306中發佈對二元218的函數呼叫時,二元218將為可得。然而,若應用程式210未被適當的確認,則加密二元212將未被解密。在一範例具體實施中,當加密二元212未被解密,則對二元218的任何呼叫將回傳包含無法識別或垃圾資料的一結果。此類垃圾資料可由應用程式210的製造者修改以針對應用程式210產生所需的無法操作狀態。在一範例具體實施中,若應用程式210未被確認,則呼叫二元218將導致上鎖或其他程式假像或失效。在一範例具體實施例中,從造成應用程式210中之不可用狀態之呼叫所回傳的結果係包含一預定回應、垃圾資料、及無回傳結果之其中一者。
在一範例具體實施例中,由安全服務206在安全OS 204中運行為二元218之一部分的應用程式210可為視頻遊戲的人工智慧(AI)的一部份。如所討論,二元218將只在軟體應用程式授 權確認程序成功時才執行。因此,若對安全服務206的任何呼叫係移除以試圖避開授權驗證,則視頻遊戲將運行,但無適當的AI(只有接收所選的垃圾資料而非來自二元218的回應)。缺少AI,遊戲很可能無法進行,因為AI可能形成遊戲玩法的一主要構件。
在一範例具體實施例中,由安全服務206在安全OS 204中運行為二元218之一部分的應用程式210可為視頻遊戲之碰撞偵測(collision detection)程式碼的一部分,其係取決於視頻遊戲之授權伺服器檢查。在一具體實施例中,若移除對安全服務206的呼叫(針對授權伺服器檢查),則可執行軟體應用程式之未確認的複製,但在視頻遊戲內的人物可能會穿過遊戲虛擬世界中的牆壁或其他物體,而破壞感受。預定的垃圾資料(而非執行其碰撞偵測程式碼的二元218)將被回傳,以回應二元呼叫。
在一範例具體實施例中,由安全服務206在安全OS 204中運行為二元218之一部分的應用程式210可為文字處理器之「產生可用字體」功能的一部分。因此,在此實施中若移除對安全服務206的呼叫,則應用程式210可能不再產生可用字體的列表。缺少字體,應用程式210將無法寫入或編輯文字,使得此未確認的文字處理程式為無用的。
因此,如本文所描述,藉由結合安全OS 204的安全執行空間、可執行程式碼的安全服務206、以及線上授權伺服器檢查以提供軟體應用程式的複製保護,軟體製造者可大大地降低其視頻遊戲及應用程式的盜版行為。
圖4描述用以管理軟體應用程式之複製保護之電腦控制方法的範例流程圖,其利用在安全OS 204中的安全服務206。如圖4所述,方法的步驟係發生於應用程式210及安全服務206中。在圖4的步驟402中,取得應用程式210並安裝於裝置100上。在一具體實施例中,若應用程式210為一購買的應用程式,則本文所描述的複製保護方法可假設交易係經由一服務而發生,該服務係提供日後經由一授權驗證伺服器(license verification server)驗證(verify)目前軟體安裝具有一有效軟體應用授權的能力。
在一具體實施例中,在裝置100上使用本文所述之複製保護的每一個別應用程式210係儲存用以驗證授權或二元218之數個關鍵的資料片段。這些可在下文所述之圖5之步驟524中的最終驗證步驟過程中儲存。在一範例具體實施例中,安全服務206可為客製化(custom)程式碼,其執行於裝置100上的安全OS 204內。在一範例具體實施例中,非安全軟體應用程式可使用製造者定義之API呼叫(「DRM API呼叫」)(其亦包括用以與DRM伺服器208通訊之API呼叫)來呼叫安全服務206。
在一具體實施例中,針對每一個所支援的應用程式,DRM伺服器208可儲存特定應用程式資料,其包括:一獨特應用程式識別碼(「appID」)、安全服務206可用以解密應用程式之二元218的一軟體應用程式的二元解密金鑰(「appBinaryDecryptionKey」)、以及軟體應用程式二元之密碼簽章(「appSignature」)。針對每一裝置100,DRM伺服器208 可儲存裝置特定的資料。此資料可由DRM伺服器208使用以與裝置100安全地通訊並驗證裝置100。此資料可包括一獨特裝置識別碼(「deviceID」)及用於驗證階段之各個部分的裝置加密金鑰。在一範例具體實施例中,可使用在製造過程中熔合至晶片中的製造者晶片識別碼。在一範例具體實施例中,可使用用於無線裝置的國際移動設備識別(International Mobile Equipment Identity,「IMEI」)。在另一範例具體實施例中,可產生一獨特ID。
如以下所討論,在一範例具體實施例中,加密二元212的加密對每一裝置100為獨特的。雖然相同類型的加密可用於加密二元212,裝置100所接收用以解密加密二元212之金鑰對一特定裝置100/應用程式210組合可為獨特的。在一範例具體實施例中,可有針對每一軟體應用程式的一通用金鑰。此外,用於解密加密二元212的通用金鑰本身可由對每一特定裝置100/應用程式210組合為獨特的一金鑰進行加密。
在圖4的步驟404中,開啟應用程式210。在一範例具體實施例中,啟動應用程式210,且應用程式210在初始化過程中發佈包含其appID的「開啟應用程式(open app)」DRM API呼叫。在圖4的步驟406中,在開啟應用程式函數執行的過程中,安全服務206檢查appID是否在安全儲存108中。若所請求的appID不在安全儲存108中,則安全服務206回傳「重新檢查」至應用程式210。若在安全儲存108中有一個儲存的appID,則安全服務206檢查在安全儲存108中是否有針對該應用程式210的一解密二元220。若無針對應用程式210的二元218,則安全 服務206回傳「傳送二元」至應用程式210,否則安全服務206回傳「OK」至應用程式210。
如上述,「二元(Binary)」為軟體應用程式開發者在開發過程中使用由安全服務206之開發者所提供之編輯工具而產生之加密程式碼的部分。工具可編輯一程式碼部分並以一應用程式加密金鑰(「appKey」)將其加密。開發者接著將二元列入應用程式中(如圖2所示,所包括的二元為加密二元212)。在一具體實施例中,加密二元212僅可由在安全OS204內之安全服務206使用正確的appKey而解密。如圖2所示,安全儲存108可持有針對一或多個應用程式的一或多個解密二元220,其中每一應用程式210有一解密二元220。如本文所討論,在一具體實施例中,加密二元212可在應用程式210中,在另一具體實施例中,加密二元212並不保留於應用程式210中且需由應用程式210在驗證階段過程中或之後依所需而從應用程式伺服器224下載,且其係由應用程式210傳遞至安全服務206。
在圖4的步驟408中,若開啟應用程式函數係回傳「重新檢查(recheck)」,則應用程式210開始圖5之步驟502的驗證階段,否則程序繼續進行至步驟410。在圖4的步驟410中,若開啟應用程式函數係回傳「傳送二元」,則應用程式210發佈包含其appID及加密二元212之一「輸入二元」DRM API呼叫。在一具體實施例中,加密二元212可從裝置儲存110、或其他由軟體應用程式開發者所決定的位置載入。在一範例具體實施例中,加密二元212可從應用程式伺服器224下載並傳遞至安全服務206。除此之外,方法步驟繼續至步驟416。
在圖4的步驟414中,在輸入二元函數中,安全服務206以appBinaryDecryptionKey(在驗證階段過程中從DRM伺服器208下載)解密加密二元212,並以appSignature(亦在驗證階段過程中從DRM伺服器208下載)驗證解密二元220的簽章。若二元218被驗證,解密二元220可儲存於安全儲存108中,否則由應用程式開發者所決定之垃圾資料可針對該appID而儲存於安全儲存108中。
在圖4的步驟416中,應用程式210呼叫「開啟二元」DRM API與其appID,以載入解密二元220至安全RAM 106。在圖4的步驟418中,安全服務206從安全儲存108載入對應appID的解密二元220,且解譯器216準備解密二元220以於安全服務206內執行。在一範例具體實施例中,解密二元220係依所需而初始化。如圖2所示,一旦由解譯器216初始化及/或解譯,解密二元220即為二元218。
在圖4的步驟420中,可開始主要應用程式執行迴圈的執行。主要應用程式執行迴圈300之執行的一範例具體實施例亦描述於圖3。在執行迴圈中的一預定點,軟體應用程式將進行至步驟422。在圖4的步驟422中,軟體應用程式將發佈包含appID的「使用二元(use Binary)」DRM API呼叫以及要被傳遞至安全服務206內之二元218的資料塊。在一範例具體實施例中,所傳遞的資料可為開發者所選擇的任何東西,例如可為由二元218執行的函數。
在圖4的步驟424中,安全服務206可執行具有所傳遞資料塊之appID的二元218,以回應使用二元呼叫。在一範例具體實施例中,二元218可執行、處理輸入資料並儲存結果至一輸出緩衝器。當二元218完成執行,安全服務206可將輸出緩衝器複製回應用程式210。在圖4的步驟426中,應用程式210從安全服務206接收儲存於輸出緩衝器的資料並使用該資料,如開發者所決定。
在一範例具體實施例中,若應用程式210未被驗證(verified),使得加密二元212未被解密,則呼叫二元218所產生的結果可為垃圾資料。若應用程式210在步驟414未被驗證,則導致應用程式210中之一所需、可預測、無法操作狀態的垃圾程式碼或資料(而非解密二元220)儲存於安全儲存108中。在一範例具體實施例中,若應用程式210未被驗證,則呼叫二元218的結果為不正確的軟體行為(因為垃圾資料係供應至連續執行迴圈),但應用程式210並無損壞或無法運作。在一具體實施例中,當應用程式210未被驗證時之呼叫二元218的結果為離開應用程式210。
在圖4的步驟428中,應用程式210檢查以查看其是否應繼續回到步驟420或離開,其係基於使用者決定或由開發者所選擇之其他結束條件。如圖4所示,若應用程式210選擇繼續,則應用程式210回到步驟420並繼續迴圈的執行。否則,程序將繼續至步驟430並終止應用程式210。
圖5描述用以針對複製保護而驗證/確認應用程式210之電 腦控制方法的範例流程圖。以下程序在本質上為範例性,且不意味為限制性的。其他用以驗證及確認應用程式210的方法也可利用不同的驗證及確認需求及程序而實施。如圖5所示,圖5所描述的驗證階段包含在DRM伺服器208、應用程式210、安全OS 204中的安全服務206、以及複數個其他伺服器(例如授權驗證伺服器、線上交易伺服器(例如應用程式伺服器224及第三方伺服器)及裝置伺服器222)中完成的步驟。在圖5的步驟502中,驗證階段開始於應用程式210發佈一「產生簽章(Generate Signature)」DRM API呼叫至安全服務206。
在圖5的步驟504中,安全服務206產生一簽章,其係獨特地識別應用程式210及裝置100。在一範例具體實施例中,為產生簽章(「devAppSignature」),安全服務206結合appID及deviceID,並接著以裝置100所特有且僅裝置100及DRM伺服器208知道之一加密金鑰簽署結果。接著,簽章devAppSignature回傳到應用程式210。在圖5的步驟506中,應用程式210藉由在「請求交易符記(Request Transaction Token)」DRM伺服器呼叫中傳送deviceID、appID及devAppSignature而從DRM伺服器208請求一交易符記(「Token」)。
在圖5的步驟508中,DRM伺服器208驗證devAppSignature對deviceID及appID兩者為有效。在一範例具體實施例中,DRM伺服器208產生此驗證期間裝置100所特有的一符記並數位地簽署符記。如圖5所示,符記及簽章接著傳送回應用程式210。在圖5的步驟510中,應用程式210接收符記及簽章並在「請求隨機數(Request Nonce)」DRM API呼叫中將其傳遞至安全服 務206。
在圖5的步驟512中,隨機數係產生於安全服務206中。在請求隨機數函數中,安全服務206可驗證符記以及來自DRM伺服器208的簽章。安全服務206可接著產生一加密、簽署、隨機的「使用一次之數字(number for use once)」(一「隨機數(nonce)」),安全服務206可將其回傳至應用程式210,供與授權驗證或購買交易伺服器及DRM伺服器208使用。在一範例具體實施例中,若符記未驗證,則可產生一「垃圾」隨機數。
在圖5的步驟514中,應用程式210可建立到一授權驗證伺服器(若檢查先前購買的授權)或一交易伺服器(若購買當時的授權或應用程式的「未鎖定」部分)的連接。在一範例具體實施例中,傳送至伺服器的資料可基於目標伺服器(驗證或交易)而改變。在一範例具體實施例中,DRM伺服器208請求資料包含隨機數,且DRM伺服器208可回傳以一應用程式私用金鑰(「appPrivateKey」)(由開發者所持有並提供給DRM伺服器208的操作者)所產生之簽章,其中應用程式私用金鑰係匹配儲存於DRM伺服器208中的應用程式公用金鑰(「appPublicKey」),如上述。應用程式210可接著傳送需要的資料至所需的伺服器供授權驗證。
在圖5的步驟516中,可驗證軟體應用程式的授權。在一範例具體實施例中,驗證或交易伺服器將使用由應用程式210所供應的資料。在一範例具體實施例中,一線上授權驗證伺服器可確認主體安裝係關聯於對軟體應用程式的一有效授權。在 一範例具體實施例中,一線上交易伺服器可完成應用程式210所請求的購買。在一範例具體實施例中,伺服器(驗證或交易)以appPrivateKey簽署回應資料並回傳簽章(「交易簽章(Transaction Signature)」)及回應資料至應用程式210。在一範例具體實施例中,若在安裝時加密二元212未隨應用程式210提供或之後遺失,則伺服器(例如驗證或交易伺服器)可用以下載加密二元212至應用程式210。
在圖5的步驟518中,應用程式210接收來自步驟516的回應資料及/或交易簽章並請求安全服務206將其加密。在圖5的步驟520中,安全服務206在一加密伺服器回應函數中結合伺服器回應資料及交易簽章,並以裝置100所特有且DRM伺服器208所知的一加密金鑰將其加密。此加密回應及簽章係回傳至應用程式210。
在圖5的步驟522中,應用程式210接收現在加密的資料並將其傳送至DRM伺服器208供交易驗證。在圖5的步驟524中,DRM伺服器208可確認之前的每一步驟係正確地完成。在一範例具體實施例中,DRM伺服器208使用裝置的獨特加密金鑰來解密加密資料。DRM伺服器208接著擷取資料:交易簽章、符記、及隨機數。具有所擷取的資料,DRM伺服器208現在可驗證每一部份。DRM伺服器208因此驗證來自線上授權驗證或交易伺服器的回應。在一範例具體實施例中,DRM伺服器也加密appID、appBinaryDecryptionKey、及appSignature作為資料訊息。DRM伺服器208可接著簽署資料訊息並將加密的資料訊息及簽章傳送回應用程式210。
在圖5的步驟526中,軟體應用程式210將加密資料訊息及簽章傳遞至安全服務206。在一範例具體實施例中,加密資料訊息及簽章係經由「輸入訊息及簽章(Input Messate and Signature)」DRM API呼叫的使用而傳遞至安全服務206。在圖5的步驟528中,回應輸入訊息及簽章呼叫,安全服務206將加密資料訊息解密並驗證簽章以確保其正在接收僅來自DRM伺服器208的資料。安全服務206接著擷取appBinaryDecryptionKey及AppSignature,並相對於appID而將其儲存於安全儲存108中,準備好供在上述執行階段過程中使用。在圖5的步驟530中,當驗證階段完成,程序繼續至步驟532並回到初始化階段。
在一範例具體實施例中,每一裝置100係伴隨一主要金鑰(master key)。裝置100第一次上線且由DRM伺服器208識別時,一金鑰環(key ring)將產生並由裝置的主要金鑰加密。此加密金鑰環可傳送至裝置100,且由DRM伺服器208儲存。這允許DRM伺服器208及裝置100彼此安全地通訊。
在一範例具體實施例中,每一裝置100係以一裝置ID識別,使得一特定裝置ID可用以連接一裝置與一主要金鑰。一旦金鑰環由DRM伺服器208及裝置100初始化,DRM伺服器208及裝置100能夠彼此安全地通訊。
在一範例具體實施例中,當加密部分已被解密並儲存於安全儲存108中之後,裝置100不需再次上線。此一安排將允許 應用程式210在完成驗證階段及第一次運行後避免必須再次上線。然而,若解密部分遺失或損壞,可從應用程式210請求新的加密二元212,並再次解密及儲存於安全儲存108中。在另一具體實施例中,加密部分並不與應用程式210儲存於不安全儲存110中,而是必須從應用程式伺服器224下載。在另一具體實施例中,加密二元212可儲存於DRM伺服器208中供需要時擷取。
在一範例具體實施例中,若應用程式210不具有加密二元212,則可從DRM伺服器208或從應用伺服器224請求加密二元212。在一範例具體實施例中,若驗證階段已完成,安全服務206可僅具有解密二元220,其係儲存於安全儲存108中。在一範例具體實施例中,部分的應用程式驗證可為已加密之二元(例如加密二元212)的傳送,使得僅有其在此時亦接收到之組合裝置/應用程式金鑰將能夠將其解密。
在一範例具體實施例中,加密二元212係由應用程式210在應用程式210的安裝過程中放置於不安全儲存110(或某些其他局部位置)中。加密二元212僅能在應用程式210已完成驗證階段後解密,其中針對特定應用程式210/裝置100組合的一獨特金鑰係提供至安全服務206以解密加密二元212。
無論局部地儲存或僅在安全伺服器(例如DRM伺服器208或應用程式伺服器244)中發現,加密二元212必須被解密並準備執行,因為應用程式210的主要執行迴圈將週期地呼叫二元。未能驗證軟體應用程式的授權且因此而未完成驗證階段將導致垃圾程式碼或資料被儲存於解密二元220的位置。因此,呼叫 二元將導致垃圾資料被回傳至應用程式210,其可導致應用程式210進入由垃圾資料所決定的不可操作狀態。因此,未能完成授權驗證階段可能導致應用程式210無法適當地運行或無法一起使用。
儘管本文揭露了某些較佳具體實施例和方法,但熟此技藝者從上文公開內容可輕易理解到,在不脫離本發明精神及範疇的情況下可以進行這些具體實施例和方法的變化及修改。本發明意在僅受限於所附隨之申請專利範圍所要求的範圍以及所適用法律的規則及原則。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧隨機存取記憶體模組
106‧‧‧安全RAM模組
108‧‧‧安全儲存模組
110‧‧‧儲存模組
200‧‧‧軟體作業環境
202‧‧‧不安全作業系統
204‧‧‧安全作業系統
206‧‧‧安全服務
208‧‧‧DRM伺服器
210‧‧‧應用程式
212‧‧‧加密二元
214‧‧‧解密模組
216‧‧‧解譯器模組
218‧‧‧二元
220‧‧‧解密二元
222‧‧‧裝置伺服器
224‧‧‧應用程式伺服器
300‧‧‧執行迴圈
本發明將藉由詳細描述連同所附隨圖式的閱讀而有較佳的理解,其中類似的參考符號表示類似的元件,其中:圖1顯示根據本發明之一具體實施例之具有隨機存取記憶體之安全部分及一安全儲存區域之電腦系統的範例簡化方塊圖;圖2顯示根據本發明之一具體實施例之包含執行數位權利管理之安全作業系統部分之作業系統環境的範例簡化方塊圖;圖3顯示根據本發明之一具體實施例之包含一不安全作業系統及一安全作業系統之作業系統環境的範例簡化方塊圖;圖4顯示根據本發明之一具體實施例之用以管理軟體應用程式之複製保護之方法的範例流程圖;以及圖5顯示根據本發明之一具體實施例之用以針對複製保護而確認一應用程式之方法的範例流程圖。

Claims (16)

  1. 一種複製保護方法,包含:在一第一作業系統執行一第一軟體應用程式的一軟體迴圈;執行在該軟體迴圈中之對一程式碼部分的一第一呼叫;若該第一軟體應用程式的一解密程式碼部分存在於一安全儲存區域,則在一第二作業系統從該安全儲存區域載入該解密程式碼部分,以及若該解密程式碼部分不存在於該安全儲存區域,則解密該第一軟體應用程式之一加密程式碼部分;在該第二作業系統執行該第一軟體應用程式的該解密程式碼部分以回應該第一呼叫,其中該程式碼部分係解密以回應該第一軟體應用程式之一成功確認,以及其中一失敗確認導致一不可操作狀態於該第一軟體應用程式中,其中該第二作業系統為包含一解譯器模組的一安全作業系統,該解譯器模組可操作以解譯該解密程式碼部分。
  2. 如請求項1所述之複製保護方法,其中在該第二作業系統中之一第二軟體應用程式執行該程式碼部分且實施該確認。
  3. 如請求項2所述之複製保護方法,更包含:使用一金鑰,解密該第一軟體應用程式之該加密程式碼部分以產生該解密程式碼部分。
  4. 如請求項3所述之複製保護方法,其中該解密之步驟包含: 從該第一作業系統複製該第一軟體應用程式之該加密程式碼部分至該第二作業系統;在完成該第一軟體應用程式之該確認後,下載用以解密該程式碼部分之一解密金鑰,其中該解密金鑰係專屬於一特定裝置及第一軟體應用程式組合;在具有該第二軟體應用程式之該第二作業系統中,以該解密金鑰解密該第一軟體應用程式之該程式碼部分;以及儲存該解密程式碼部分於該安全儲存區域。
  5. 如請求項1所述之複製保護方法,其中該程式碼部分包含一函數、一常式、一次常式、及一程序之其中一者。
  6. 一種電腦系統,包含:一處理器;一記憶體,用以儲存指令,當該指令由該處理器執行時係實施一複製保護方法,其包含:在一第一作業系統執行一第一軟體應用程式的一軟體迴圈;執行在該軟體迴圈中對一程式碼部分的一第一呼叫;若該第一軟體應用程式的一解密程式碼部分存在於一安全儲存區域,則在一第二作業系統從該安全儲存區域載入該解密程式碼部分,以及若該解密程式碼部分不存在於該安全儲存區域,則解密該第一軟體應用程式之一加密程式碼部分;在該第二作業系統執行該第一軟體應用程式的該解密程式碼部分以回應該第一呼叫,其中該程式碼部分係解密以回應該第一軟體應用程式之一成功確認,以及其中一失敗確認導 致一不可操作狀態於該第一軟體應用程式中,其中該第二作業系統為包含一解譯器模組的一安全作業系統,該解譯器模組可操作以解譯該解密程式碼部分。
  7. 如請求項6所述之電腦系統,其中在該第二作業系統中之一第二軟體應用程式執行該程式碼部分且實施該確認。
  8. 如請求項6所述之電腦系統,其中該解密之步驟包含:從該第一作業系統複製該第一軟體應用程式之該加密程式碼部分至該第二作業系統;在完成該第一軟體應用程式之該確認後,下載用以解密該程式碼部分之一解密金鑰,其中該解密金鑰係專屬於一特定裝置及第一軟體應用程式組合;在具有該第二軟體應用程式之該第二作業系統中,以該解密金鑰解密該第一軟體應用程式之該程式碼部分;以及儲存該解密程式碼部分於該安全儲存區域。
  9. 如請求項6所述之電腦系統,其中該程式碼部分包含一函數、一常式、一次常式、及一程序之其中一者。
  10. 一種電腦系統,包含:一處理器;一記憶體,包含一不安全部分及一安全部分,其中該不安全部分包含運行一第一軟體應用程式之一第一作業系統,其中該第一軟體應用程式包含一軟體迴圈,且其中該安全部分包含 運行一第二軟體應用程式之一第二作業系統;一安全儲存區域,儲存一程式碼部分;以及一記憶體,用以儲存指令,當該指令由該處理器執行時係實施一複製保護方法,其包含:執行該第一軟體應用程式之該軟體迴圈;執行在該軟體迴圈中對該程式碼部分的一第一呼叫;若該第一軟體應用程式的一解密程式碼部分存在於該安全儲存區域,則在該第二作業系統從該安全儲存區域載入該解密程式碼部分,以及若該解密程式碼部分不存在於該安全儲存區域,則解密該第一軟體應用程式之一加密程式碼部分;以及在該第二作業系統執行該第一軟體應用程式的該程式碼部分以回應該第一呼叫,其中回應該第一呼叫而回傳之一結果產生以下之一:一不可用狀態於該第一軟體應用程式中當該第一軟體應用程式未成功地被確認時,以及一可用狀態於該第一軟體應用程式中當該第一軟體應用程式已成功地被確認時;其中該第二作業系統為包含一解譯器模組的一安全作業系統,該解譯器模組可操作以解譯該解密程式碼部分。
  11. 如請求項10所述之電腦系統,其中該程式碼部分及該確認係由在該第二作業系統中之一第二軟體應用程式所實施。
  12. 如請求項10所述之電腦系統,更包含:若該程式碼部分之該解密複製不存在於該安全儲存區域中,則使用一金鑰以解密該第一軟體應用程式之該加密程式碼 部分。
  13. 如請求項12所述之電腦系統,其中該解密之步驟包含:從該第一作業系統複製該第一軟體應用程式之該加密程式碼部分至該第二作業系統;在完成該第一軟體應用程式之該確認後,下載用以解密該程式碼部分之一解密金鑰,其中該解密金鑰係專屬於一特定裝置及第一軟體應用程式組合;在具有該第二軟體應用程式之該第二作業系統中,以該解密金鑰解密該第一軟體應用程式之該程式碼部分;以及儲存該解密程式碼部分於該安全儲存區域。
  14. 如請求項10所述之電腦系統,其中該程式碼部分包含一函數、一常式、一次常式、及一程序之其中一者。
  15. 如請求項10所述之電腦系統,其中從造成在該第一軟體應用程式中之該不可用狀態之該第一呼叫所回傳之該結果係包含一預定回應、一垃圾資料、及無回傳結果之其中一者。
  16. 如請求項15所述之電腦系統,其中當該第一軟體應用程式未成功地被確認時,該程式碼部分包含垃圾程式碼及垃圾資料之其中一者。
TW101132280A 2011-09-09 2012-09-05 透過線上伺服器與在安全作業系統中執行程式碼的內容保護 TWI598764B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201161533060P 2011-09-09 2011-09-09
US13/458,891 US9489541B2 (en) 2011-09-09 2012-04-27 Content protection via online servers and code execution in a secure operating system

Publications (2)

Publication Number Publication Date
TW201331780A TW201331780A (zh) 2013-08-01
TWI598764B true TWI598764B (zh) 2017-09-11

Family

ID=47830926

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101132280A TWI598764B (zh) 2011-09-09 2012-09-05 透過線上伺服器與在安全作業系統中執行程式碼的內容保護

Country Status (4)

Country Link
US (2) US9489541B2 (zh)
CN (1) CN103198239A (zh)
DE (1) DE102012215770A1 (zh)
TW (1) TWI598764B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5961164B2 (ja) * 2011-05-19 2016-08-02 日本放送協会 放送通信連携受信装置及びリソースアクセス制御プログラム
US20140230052A1 (en) * 2013-02-11 2014-08-14 Motorola Mobility Llc System and method for testing a secured manufactured device
EP3000054A4 (en) * 2013-05-20 2017-04-05 Citrix Systems Inc. Methods and systems for validating multiple methods of input using a unified rule set
US9680872B1 (en) * 2014-03-25 2017-06-13 Amazon Technologies, Inc. Trusted-code generated requests
CN106415565B (zh) * 2014-03-28 2019-11-05 爱迪德技术有限公司 保护软件项目
CN105468659B (zh) 2014-09-28 2019-01-04 阿里巴巴集团控股有限公司 一种数据同步方法及装置
US10419401B2 (en) * 2016-01-08 2019-09-17 Capital One Services, Llc Methods and systems for securing data in the public cloud
US11520913B2 (en) * 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)
EP3611642B1 (en) * 2018-08-17 2020-08-12 Omron Corporation Method for operating an industrial pc device and industrial pc device

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NO302388B1 (no) * 1995-07-13 1998-02-23 Sigurd Sigbjoernsen Fremgangsmåte og anordning for å beskytte programvare mot bruk uten tillatelse
US6289452B1 (en) * 1997-11-07 2001-09-11 Cybersource Corporation Method and system for delivering digital products electronically
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US7587368B2 (en) * 2000-07-06 2009-09-08 David Paul Felsher Information record infrastructure, system and method
CA2469839A1 (en) * 2001-11-26 2003-06-05 Igt Pass-through live validation device and method
US7680743B2 (en) * 2002-05-15 2010-03-16 Microsoft Corporation Software application protection by way of a digital rights management (DRM) system
US7103914B2 (en) * 2002-06-17 2006-09-05 Bae Systems Information Technology Llc Trusted computer system
US7930537B2 (en) * 2002-08-13 2011-04-19 Nokia Corporation Architecture for encrypted application installation
US20040088697A1 (en) * 2002-10-31 2004-05-06 Schwartz Jeffrey D. Software loading system and method
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
US7539853B2 (en) * 2002-11-18 2009-05-26 Arm Limited Handling interrupts in data processing of data in which only a portion of a function has been processed
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
CN100422946C (zh) * 2003-09-12 2008-10-01 联华电子股份有限公司 检测非法软件加载的系统、方法及其识别电路与注册系统
US20050114870A1 (en) * 2003-11-21 2005-05-26 Song Dong H. System and method for executing an application on a secured run-time environment
EP1870814B1 (en) * 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7940932B2 (en) * 2004-04-08 2011-05-10 Texas Instruments Incorporated Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor
JP4827467B2 (ja) * 2004-09-10 2011-11-30 キヤノン株式会社 ライセンス転送システム及びライセンス情報発行サーバ
US20070266444A1 (en) * 2004-12-03 2007-11-15 Moshe Segal Method and System for Securing Data Stored in a Storage Device
US8713667B2 (en) * 2005-07-08 2014-04-29 Hewlett-Packard Development Company, L.P. Policy based cryptographic application programming interface in secure memory
GB0514492D0 (en) * 2005-07-14 2005-08-17 Ntnu Technology Transfer As Secure media streaming
US20070167210A1 (en) * 2005-09-07 2007-07-19 Kelly Bryan M Affiliated Gaming Method
US8840462B2 (en) * 2005-09-07 2014-09-23 Bally Gaming, Inc. Tournament bonus awards and related methods
WO2007127188A2 (en) * 2006-04-24 2007-11-08 Encryptakey, Inc. Portable device and methods for performing secure transactions
US8272048B2 (en) * 2006-08-04 2012-09-18 Apple Inc. Restriction of program process capabilities
DE102006049646B3 (de) * 2006-10-20 2008-06-19 Siemens Ag Verfahren und Sendevorrichtung zum gesicherten Erstellen und Versenden einer elektronischen Nachricht sowie Verfahren und Empfangsvorrichtung zum gesicherten Empfangen und Verarbeiten einer elektronischen Nachricht
US20080262968A1 (en) * 2007-03-26 2008-10-23 Infosys Technologies Ltd. Software licensing control via mobile devices
US20090006261A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Portable device for carrying licenses
JP4936538B2 (ja) * 2007-07-19 2012-05-23 キヤノン株式会社 情報処理装置、使用権譲渡方法、使用権取得方法、及びコンピュータプログラム
GB2453518A (en) * 2007-08-31 2009-04-15 Vodafone Plc Telecommunications device security
US20090172331A1 (en) * 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
JP2009194860A (ja) * 2008-02-18 2009-08-27 Toshiba Corp 送信装置、受信装置、コンテンツ送受信システム、コンテンツ送信方法、コンテンツ受信方法及びプログラム
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
US20100269179A1 (en) * 2009-04-16 2010-10-21 Comcast Cable Communications, Llc Security Client Translation System and Method
US9656092B2 (en) * 2009-05-12 2017-05-23 Chronicmobile, Inc. Methods and systems for managing, controlling and monitoring medical devices via one or more software applications functioning in a secure environment
WO2011074168A1 (ja) * 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置
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
US8418259B2 (en) * 2010-01-05 2013-04-09 Microsoft Corporation TPM-based license activation and validation
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
US8468600B1 (en) * 2011-03-04 2013-06-18 Adobe Systems Incorporated Handling instruction received from a sandboxed thread of execution
US8528083B2 (en) * 2011-03-10 2013-09-03 Adobe Systems Incorporated Using a call gate to prevent secure sandbox leakage
US8914876B2 (en) * 2011-05-05 2014-12-16 Ebay Inc. System and method for transaction security enhancement
US10496824B2 (en) * 2011-06-24 2019-12-03 Microsoft Licensing Technology, LLC Trusted language runtime on a mobile platform
US8949929B2 (en) * 2011-08-10 2015-02-03 Qualcomm Incorporated Method and apparatus for providing a secure virtual environment on a mobile device
EP2618266A4 (en) * 2011-11-04 2015-08-05 Sk Planet Co Ltd PROCESS FOR COOPERATION BETWEEN A SAFE REGION AND AN UNCERTAIN REGION, METHOD, SERVER AND DEVICE FOR CONTROLLING THE DOWNLOAD OF SAFE APPLICATIONS AND CONTROL SYSTEM FOR USING THIS METHOD

Also Published As

Publication number Publication date
US20170235930A1 (en) 2017-08-17
DE102012215770A1 (de) 2013-03-14
US20130067240A1 (en) 2013-03-14
US11163859B2 (en) 2021-11-02
CN103198239A (zh) 2013-07-10
US9489541B2 (en) 2016-11-08
TW201331780A (zh) 2013-08-01

Similar Documents

Publication Publication Date Title
TWI598764B (zh) 透過線上伺服器與在安全作業系統中執行程式碼的內容保護
US11012241B2 (en) Information handling system entitlement validation
TWI384381B (zh) 升級記憶卡使其具有防止安全內容及應用之複製之安全性機制
TWI598814B (zh) 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法
EP1942430B1 (en) Token Passing Technique for Media Playback Devices
US9135425B2 (en) Method and system of providing authentication of user access to a computer resource on a mobile device
US8660964B2 (en) Secure device licensing
US8549606B2 (en) Device for protecting digital content, device for processing protected digital content, method for protecting digital content, method for processing protected digital content, storage medium storing program for protecting digital content, and storage medium storing program for processing protected digital content
TWI489315B (zh) 用於電子裝置之暫時安全開機流程之系統與方法
CN103221961B (zh) 包括用于保护多用户敏感代码和数据的架构的方法和装置
CN102165457B (zh) 票券授权的安全安装和引导
KR101492757B1 (ko) 애플리케이션 사용 정책 시행
CN101571900B (zh) 一种软件版权保护方法、设备和系统
TW202109320A (zh) 基於可信執行環境的應用程式啟動方法及裝置
KR20130114593A (ko) 전자 라이센스 관리
CN102456111B (zh) 一种Linux操作系统许可控制的方法及系统
US9177121B2 (en) Code protection using online authentication and encrypted code execution
JP2007512787A (ja) トラステッド・モバイル・プラットフォーム・アーキテクチャ
JP4226556B2 (ja) プログラム実行制御装置、os、クライアント端末、サーバ、プログラム実行制御システム、プログラム実行制御方法、プログラム実行制御プログラム
US20130173923A1 (en) Method and system for digital content security cooperation
JP5118700B2 (ja) 仮想マシンのアクティブ化を伴う携帯可能な大容量記憶装置
JP4541901B2 (ja) 保護情報の使用を権限付与する携帯用権限付与装置及び関連方法
US7577849B2 (en) Keyed-build system for controlling the distribution of software
CN103703718A (zh) 用于模糊处理密码协议的初始值的系统和方法
JP6517435B2 (ja) アプリケーションを管理する方法