新四季網

保護軟體項目的製作方法

2023-12-07 01:31:06 3


本發明涉及用於保護軟體項目的方法、用於使用受保護的軟體項目實施數據處理的方法以及用於實施此類方法的裝置和電腦程式。



背景技術:

眾所周知的是,常常有針對軟體項目的攻擊被發起。攻擊者可能希望獲得包含在軟體項目內的秘密信息(比如加密密鑰),其目的是濫用該秘密信息(例如通過把加密密鑰分發給其他人/系統,從而使得這些人/系統可以按照未經授權的方式使用加密密鑰)。類似地,攻擊者可能希望修改軟體項目的執行流程。舉例來說,軟體項目可能具有檢查軟體項目的用戶是否具有特定許可或訪問權利的判定點——如果用戶具有這些許可或訪問權利,則軟體項目可以準許用戶訪問特定功能或數據,否則會拒絕此類訪問。攻擊者可能希望嘗試修改軟體項目在該判定點處的執行,從而使得即使用戶不具有許可或訪問權利,軟體項目仍然準許用戶訪問該特定功能或數據。

存在許多眾所周知的軟體保護技術,這些技術可以被應用於初始軟體項目以便生成受保護的軟體項目,其目的是使得攻擊者不可能成功進行其攻擊(或者至少足夠困難)。



技術實現要素:

確保可以按照安全並且可升級的方式以及按照可以容易並且高效地實施安全性審核的方式高效地應用軟體保護技術是一項困難的挑戰。本發明的實施例旨在解決這樣的問題。

根據本發明的第一方面,提供一種保護軟體項目的方法,所述軟體項目被布置成基於一個或多個數據項目實施數據處理,所述方法包括:對所述軟體項目應用一種或多種軟體保護技術以生成受保護的軟體項目,其中所述一種或多種軟體保護技術被布置成使得所述受保護的軟體項目把所述數據處理至少部分地實施成在有限環上的一項或多項線性代數運算。

在一些實施例中,所述一項或多項線性代數運算當中的每一項是在所述有限環上的針對向量空間的相應線性代數運算,並且其中所述一項或多項線性代數運算當中的每一項對被表示成所述向量空間的一個或多個元素的相應輸入數據進行運算以產生相應輸出數據。對於所述一項或多項線性代數運算當中的至少一項,所述相應輸入數據可以至少部分地基於所述一個或多個數據項目當中的至少一個。所述有限環可以是環,並且所述向量空間於是可以是向量空間,其中n是正整數。

在一些實施例中,所述數據處理包括在有限環上的算術運算,並且所述對所述軟體項目應用所述一種或多種軟體保護技術包括使用在所述有限環上的一項或多項線性代數運算在所述受保護的軟體項目中實施所述算術運算。

在一些實施例中,所述數據處理包括在有限環上的邏輯運算,並且所述對所述軟體項目應用所述一種或多種軟體保護技術包括使用在所述有限環上的一項或多項線性代數運算在所述受保護的軟體項目中實施所述邏輯運算。

在一些實施例中,所述數據處理包括以下各項當中的至少一項:(a)至少部分地基於所述一個或多個數據項目當中的至少一個的判定;(b)安全性相關功能;(c)訪問控制功能;(d)加密功能;以及(e)權利管理功能。

在一些實施例中,所述一種或多種軟體保護技術包括以下各項當中的一項或多項:(i)白盒保護技術;(ii)節點鎖定技術;(iii)數據流模糊;以及(iv)控制流模糊。

根據本發明的第二方面,提供一種對一個或多個數據項目實施數據處理的方法,其中所述數據處理包括以下各項當中的至少一項:(a)至少部分地基於所述一個或多個數據項目當中的至少一個的判定;(b)安全性相關功能;(c)訪問控制功能;(d)加密功能;以及(e)權利管理功能;其中所述方法包括:執行受保護的軟體項目,所述受保護的軟體項目把所述數據處理至少部分地實施成在有限環上的一項或多項線性代數運算。

在一些實施例中,所述一項或多項線性代數運算當中的每一項是在所述有限環上的針對向量空間的相應線性代數運算,並且所述一項或多項線性代數運算當中的每一項對被表示成所述向量空間的一個或多個元素的相應輸入數據進行運算以產生相應輸出數據。對於所述一項或多項線性代數運算當中的至少一項,所述相應輸入數據可以至少部分地基於所述一個或多個數據項目當中的至少一個。所述有限環可以是環,並且所述向量空間可以是向量空間,其中n是正整數。

在一些實施例中,所述數據處理包括在有限環上的算術運算,並且所述受保護的軟體項目使用在所述有限環上的一項或多項線性代數運算來實施所述算術運算。

在一些實施例中,所述數據處理包括在有限環上的邏輯運算,並且所述受保護的軟體項目使用在所述有限環上的一項或多項線性代數運算來實施所述邏輯運算。

根據本發明的第三方面,提供一種被布置成實施至少一種前面提到的方法的裝置。

根據本發明的第四方面,提供一種電腦程式,其在由處理器執行時使得處理器實施至少一種前面提到的方法。所述電腦程式可以被存儲在計算機可讀介質上。

附圖說明

現在將參照附圖僅通過舉例的方式來描述本發明的實施例,其中:

圖1示意性地圖示了計算機系統的一個示例;以及

圖2示意性地圖示了根據本發明的一個實施例的系統。

具體實施方式

在後面的描述中以及在附圖中描述了本發明的特定實施例。但是將認識到,本發明不限於所描述的實施例,並且一些實施例可以不包括後面所描述的所有特徵。但是將顯而易見的是,在不背離所附權利要求書中所闡述的本發明的更寬泛的精神和範圍的情況下,可以在這裡做出各種修改和改變。

1—系統總覽

圖1示意性地圖示了計算機系統100的一個示例。系統100包括計算機102。計算機102包括:存儲介質104,存儲器106,處理器108,接口110,用戶輸出接口112,用戶輸入接口114,以及網絡接口116,它們全部通過一條或多條通信總線118連結在一起。

存儲介質104可以是任何形式的非易失性數據存儲設備,比如硬碟驅動器、磁碟、光碟、ROM等等當中的一項或多項。存儲介質104可以存儲供處理器108執行的作業系統,以使得計算機102運轉。存儲介質104還可以存儲一個或多個電腦程式(或者軟體或指令或代碼)。

存儲器106可以是適合於存儲數據和/或電腦程式(或者軟體或指令或代碼)的任何隨機存取存儲器(存儲單元或易失性存儲介質)。

處理器108可以是適合於執行一個或多個電腦程式(比如存儲在存儲介質104上和/或存儲器106中的電腦程式)的任何數據處理單元,其中一些電腦程式可以是根據本發明的實施例的電腦程式,或者是在由處理器108執行時使得處理器108實施根據本發明的一個實施例的方法並且把系統100配置成根據本發明的一個實施例的系統的電腦程式。處理器108可以包括單個數據處理單元,或者並行地或彼此協作地操作的多個數據處理單元。處理器108在實施針對本發明的實施例的數據處理操作時可以向存儲介質104和/或存儲器106存儲數據和/或從其讀取數據。

接口110可以是用於提供去到處於計算機102外部或者可以從計算機102移除的設備122的接口的任何單元。設備122可以是數據存儲設備,例如光碟、磁碟、固態存儲設備等等當中的一項或多項。設備122可以具有處理能力——例如所述設備可以是智慧卡。接口110因此可以根據其接收自處理器108的一條或多條命令從設備122訪問數據、或者向設備122提供數據或者與設備122接口。

用戶輸入接口114被布置成接收來自系統100的用戶或操作員的輸入。用戶可以通過連接到用戶輸入接口114或者與之通信的系統100的一個或多個輸入設備(比如滑鼠(或其他指示設備)126和/或鍵盤124)來提供該輸入。但是將認識到,用戶可以通過一個或多個附加的或替換的輸入設備(比如觸控螢幕)來向計算機102提供輸入。計算機102可以把通過用戶輸入接口114接收自輸入設備的輸入存儲在存儲器106中以供處理器108隨後訪問和處理,或者可以將其直接傳遞到處理器108,從而使得處理器108可以相應地對用戶輸入做出響應。

用戶輸出接口112被布置成向系統100的用戶或操作員提供圖形/視覺和/或音頻輸出。因此,處理器108可以被布置成指令用戶輸出接口112形成表示所期望的圖形輸出的圖像/視頻信號,並且將該信號提供到與用戶輸出接口112連接的系統100的監視器(或者屏幕或顯示單元)120。附加地或替換地,處理器108可以被布置成指令用戶輸出接口112形成表示所期望的音頻輸出的音頻信號,並且將該信號提供到與用戶輸出接口112連接的系統100的一個或多個揚聲器121。

最後,網絡接口116為計算機102提供從一個或多個數據通信網絡下載數據和/或上傳數據到一個或多個數據通信網絡的功能。

將認識到,在圖1中圖示並且在前面描述的系統100的架構僅僅是示例性的,並且在本發明的實施例中可以使用具有不同架構(例如具有少於圖1中所示出的組件或者具有圖1中所示出的之外的附加和/或替換組件)的其他計算機系統100。作為示例,計算機系統100可以包括以下各項當中的一項或多項:個人計算機;伺服器計算機;行動電話;平板設備;膝上型計算機;電視機;機頂盒;遊戲機;其他行動裝置或消費電子設備;等等。

圖2示意性地圖示了根據本發明的一個實施例的系統200。系統200包括:軟體生成系統210;軟體保護系統250;用戶系統280;以及網絡290。

軟體生成系統210包括(或者執行或使用)生成初始軟體項目220的軟體生成工具212。軟體生成工具212例如可以是軟體生成系統210的處理器所執行的軟體應用。軟體生成系統210可以被布置成自主地生成初始軟體項目220;附加地或替換地,軟體生成系統210可以被布置成在一個或多個軟體開發人員的控制下生成初始軟體項目220,所述軟體開發人員至少部分地編寫形成初始軟體項目220的部分的軟體代碼。用於生成或開發軟體項目的工具是非常眾所周知的,因此這裡將不更詳細地描述。

初始軟體項目220可以包括原始碼、對象代碼、可執行代碼和二進位代碼當中的一項或多項。初始軟體項目220可以用一種或多種程式語言來編程或編寫,所述程式語言可以包括編譯程式語言和/或解譯或腳本程式語言。初始軟體項目220可以包括一個或多個模塊或軟體組件或電腦程式,其可以被呈現或存儲在一個或多個文件內。實際上,初始軟體項目220可以是整個軟體應用、軟體庫、或者一個或多個軟體函數或過程的整體或一部分或者介於其間的任何情況(正如本領域技術人員將認識到的那樣)。

在由處理器執行時,初始軟體項目220被布置成基於一個或多個數據項目來實施(或者使得處理器實施)數據處理。每一個數據項目可以分別是任何類型的數據,比如音頻數據、視頻數據、多媒體數據、文本數據、財務數據、一個或多個加密密鑰、數字權利管理數據、條件訪問數據等等。所述數據處理可以包括以下各項當中的一項或多項:(a)至少部分地基於所述一個或多個數據項目當中的至少一個的判定;(b)安全性相關功能;(c)訪問控制功能;(d)加密功能;以及(e)權利管理功能。但是將認識到,數據處理可以包括一種或多種其他類型的功能或操作作為前面的示例的附加或替換。作為一個示例,數據處理可以涉及提供對於作為已加密內容接收和/或存儲的內容(比如音頻和/或視頻數據)的用戶訪問,其中只有在用戶具有適當的訪問許可/權利的情況下才為用戶提供對於內容的訪問。因此,所述一個或多個數據項目可以包括:已加密內容;關於用戶和/或用戶系統280的細節或用戶和/或用戶系統280的標識;規定一項或多項許可和/或權利的數據;以及一個或多個加密密鑰(其可以作為初始軟體項目220的部分而被存儲)。因此,希望保護初始軟體項目220,以使得攻擊者無法按照未經授權的方式使用初始軟體項目220,未經授權方式是指即使攻擊者未被授權訪問內容也能夠通過該方式獲得對於內容的訪問;也就是說防止攻擊者繞過由初始軟體項目220提供的條件訪問和/或數字權利管理功能(例如通過確定一個或多個解密密鑰,或者規避初始軟體項目220中的涉及是否應當為用戶提供對於內容的訪問的判定點或分支點)。將認識到,當然存在將希望為之提供針對攻擊者的保護(出於類似的或者可能的其他原因)的初始軟體項目220所能實施的其他功能和/或初始軟體項目220所使用的其他信息。因此,如圖2中所示,初始軟體項目220被提供(或者傳輸或傳送)到軟體保護系統250。

軟體保護系統250包括(或者執行或使用)軟體保護工具252。軟體保護工具252例如可以是軟體保護系統250的處理器所執行的軟體應用。軟體保護工具252被布置成接收初始軟體項目220作為輸入。軟體保護工具252基於所接收到的初始軟體項目220生成受保護的軟體項目260。軟體保護工具252生成受保護的軟體項目260的方法將在後面描述。

軟體保護系統250可以包括軟體資料庫254。軟體資料庫254包括可以由軟體保護工具252在生成受保護的軟體項目260時使用的軟體的一個或多個部分——後面將對此進行更加詳細的描述。

軟體生成系統210和軟體保護系統250可以由不同的實體運行或操作。因此,如圖2中所示,軟體保護系統250可以向軟體生成系統210輸出受保護的軟體項目260。在該模型的情況下,軟體保護系統250向軟體生成系統210提供保護服務。替換地,軟體生成系統210和軟體保護系統250可以由相同的實體運行或操作——實際上,軟體生成系統210和軟體保護系統250可以形成單個系統的部分(在圖2中通過虛線270圖示),該系統使用軟體生成工具212生成初始軟體項目220,並且使用軟體保護工具252通過生成受保護的軟體項目260來保護該初始軟體項目220。

因此,軟體生成系統210和/或軟體保護系統250可以通過網絡290向用戶系統280輸出(或者提供或傳送)受保護的軟體項目260。但是將認識到,可以由未在圖2中示出的不同實體來實施受保護的軟體項目260的分發。

還將認識到,在受保護的軟體項目260已經由軟體保護系統250生成之後並且在分發到用戶系統280之前,受保護的軟體項目260可以經歷各種附加的處理。因此將認識到,在後面的描述中,對受保護的軟體項目260的分發或使用的提及包括通過對受保護的軟體項目260應用附加的處理所得到的軟體片段的分發或使用。舉例來說,受保護的軟體項目260可能需要被編譯和/或與其他軟體項目連結(例如如果受保護的軟體項目260將要形成將被分發到用戶系統280的更大軟體應用的部分的話)。然而將認識到,可以不需要這樣的附加處理(例如如果受保護的軟體項目260是準備好分發的最終的JavaScript片段的話)。

網絡290可以是適合於向用戶系統280傳送或傳輸受保護的軟體項目260的任何種類的數據通信網絡。因此,網絡290可以包括以下各項當中的一項或多項:區域網,廣域網,城域網,網際網路,無線通信網絡,有線或電纜通信網絡,衛星通信網絡,電話網絡等等。軟體生成系統210和/或軟體保護系統250可以被布置成通過網絡290經由任何適當的數據通信協議與用戶系統280進行通信。實際上,可以通過物理介質(比如存儲在一個或多個CD或DVD上)將受保護的軟體項目260提供到用戶系統280,因此網絡290於是可以包括用於通過物理方式把物理介質遞送到用戶系統280的遞送系統。

用戶系統280被布置成使用受保護的軟體項目260,例如通過在用戶系統280的一個或多個處理器上執行受保護的軟體項目280。

用戶系統280可以是適合於執行受保護的軟體項目280的任何系統。因此,用戶系統280可以是以下各項當中的一項或多項:個人計算機,膝上型計算機,筆記本計算機,平板計算機,行動電話,機頂盒,電視,伺服器,遊戲機等等。軟體保護系統250和軟體生成系統210例如可以包括一臺或多臺個人計算機和/或伺服器計算機。因此,用戶系統280、軟體保護系統250和軟體生成系統210當中的每一個可以包括前面參照圖1描述的一個或多個相應的系統100。

將認識到,雖然圖2把系統200圖示成包括單個用戶設備280、單個軟體生成系統210和單個軟體保護系統250,但是系統200可以包括多個用戶設備280和/或多個軟體生成系統210和/或多個軟體保護系統250。

2—軟體保護技術

正如前面所提到的那樣,軟體保護工具252的目的是保護初始軟體項目220的功能或數據處理,和/或保護由初始軟體項目220使用或處理的數據。具體來說,受保護的軟體項目260將提供與初始軟體項目220相同的功能或數據處理——但是該功能或數據處理以一種方式被實施在受保護的軟體項目260中使得用戶系統280的操作員無法按照非預期的或者未經授權的方式從受保護的軟體項目260訪問或使用該功能或數據處理(然而,如果為用戶系統280提供了初始軟體項目220,則用戶系統280的操作員可能能夠按照非預期的或者未經授權的方式訪問或使用所述功能或數據處理)。類似地,受保護的軟體項目260可以按照受保護的或者模糊化的方式存儲秘密信息(比如加密密鑰),從而使得攻擊者更難(如果不是不可能的話)推斷出或訪問該秘密信息(然而,如果為用戶系統280提供了初始軟體項目220,則用戶系統280的操作員可能能夠從初始軟體項目220推斷出或訪問該秘密信息)。

例如:

-初始軟體項目220可以包括至少部分地基於將由初始軟體項目220處理的一個或多個數據項目當中的至少一個的判定(或者判定塊或分支點)。如果初始軟體項目220被提供到用戶系統280,則攻擊者可能能夠強制初始軟體項目220執行,從而使得在處理判定之後的執行路徑被遵循,即使該執行路徑原本不應當被遵循。舉例來說,所述判定可以包括測試程序變量B是真(TRUE)還是假(FALSE),並且初始軟體項目220可以被布置成使得如果判定識別出B為真,則執行路徑PT被遵循/執行,而如果判定識別出B為假,則執行路徑PF被遵循/執行。在這種情況下,攻擊者可以(例如通過使用調試器)在判定識別出B為真的情況下強制初始軟體項目220遵循路徑PF,和/或在判定識別出B為假的情況下強制初始軟體項目220遵循路徑PT。因此,在一些實施例中,軟體保護工具250旨在通過在生成受保護的軟體項目260時對初始軟體項目220內的判定應用一種或多種軟體保護技術來防止攻擊者這樣做(或者至少使其更加困難)。

-初始軟體項目220可以包括以下各項當中的一項或多項:安全性相關功能;訪問控制功能;加密功能;以及權利管理功能。這樣的功能常常涉及使用秘密數據,比如一個或多個加密密鑰。所述處理可以涉及使用一個或多個加密密鑰和/或對一個或多個加密密鑰進行操作或者利用其進行操作。如果攻擊者能夠識別或確定秘密數據,則會發生安全漏洞,並且對於受到秘密數據保護的數據(比如音頻和/或視頻內容)的控制或管理可能會被規避掉。因此,在一些實施例中,軟體保護工具250旨在通過在生成受保護的軟體項目260時對初始軟體項目220內的此類功能應用一種或多種軟體保護技術來防止攻擊者識別或確定一項或多項秘密數據(或者至少使其更加困難)。

「白盒(white-box)」環境是用於軟體項目的執行環境,其中假設軟體項目的攻擊者對於軟體項目的正被操作的數據(包括中間數值)、存儲器內容以及執行/過程流程具有完全的訪問權限和可見性。此外,在白盒環境中,假設攻擊者能夠例如通過使用調試器修改軟體項目的正被操作的數據、存儲器內容以及執行/過程流程——這樣,攻擊者可以對軟體項目的操作進行實驗並且嘗試操縱軟體項目的操作,其目的是規避初始意圖的功能和/或識別秘密信息和/或出於其他目的。實際上,人們甚至可以假設攻擊者知曉正由軟體項目實施的底層算法。但是軟體項目可能需要使用秘密信息(例如一個或多個加密密鑰),其中該信息需要對於攻擊者保持隱藏。類似地,將會希望防止攻擊者修改軟體項目的執行/控制流,例如防止攻擊者強制軟體項目在判定塊之後採取並非合法執行路徑的一條執行路徑。有許多技術(其在這裡被稱作「白盒模糊技術」)用於把初始軟體項目220變換成受保護的軟體項目260,從而使得受保護的軟體項目260抵抗白盒攻擊,也就是說使得受保護的軟體項目260在白盒環境中執行時抵抗攻擊者的攻擊(比如前面所提到的攻擊)。這樣的白盒模糊技術的示例可以在如下文獻中找到:「White-Box Cryptography and an AES Implementation」 S. Chow et al,Selected Areas in Cryptography,9th Annual International Workshop,SAC 2002,Lecture Notes in Computer Science 2595(2003),p250-270)以及「A White-box DES Implementation for DRM Applications」,S. Chow et al,Digital Rights Management,ACM CCS-9 Workshop,DRM 2002,Lecture Notes in Computer Science 2696(2003),p1-15,其全部公開內容通過引用被合併在此。附加的示例可以在US61/055,694和WO2009/140774中找到,這兩個文獻的全部公開內容通過引用被合併在此。一些白盒模糊技術實施數據流模糊——例如參見US7,350,085、US7,397,916、US6,594,761和US6,842,862,其全部公開內容通過引用被合併在此。一些白盒模糊技術實施控制流模糊——例如參見US6,779,114、US6,594,761和US6,842,862,其全部公開內容通過引用被合併在此。但是將認識到,存在其他白盒模糊技術,並且本發明的實施例可以使用任何白盒模糊技術。

作為另一個示例,有可能的情況是初始軟體項目220可能意圖被提供(或者分發)到特定用戶設備280(或者特定用戶設備280的集合)並且由其使用,並且因此希望把軟體項目220「鎖定」到(一個或多個)特定用戶設備280,也就是說防止軟體項目220在另一個用戶設備280上執行。因此,有許多技術(其在這裡被稱作「節點鎖定」技術)用於把初始軟體項目220變換成受保護的軟體項目260,從而使得受保護的軟體項目260可以在一個或多個預定/特定用戶設備280上執行(或者由其執行)但是將不會在其他用戶設備上執行。這樣的節點鎖定技術的示例可以在WO2012/126077中找到,該文獻的全部公開內容通過引用被合併在此。但是將認識到,存在其他節點鎖定技術,並且本發明的實施例可以使用任何節點鎖定技術。

數字加水印是一種眾所周知的技術。具體來說,數字加水印涉及修改初始數字對象以產生加有水印的數字對象。做出修改以把特定數據(其被稱作有效載荷數據)嵌入或隱藏到初始數字對象中。所述有效載荷數據例如可以包括標識數字對象的所有權或其他權利信息的數據。有效載荷數據可以標識加有水印的數字對象的(預期)接收者,在這種情況下,有效載荷數據被稱作數字指紋——這樣的數字加水印可以被用來幫助追蹤數字對象的未經授權的拷貝的起源。數字加水印可以被應用於軟體項目。這樣的軟體加水印技術的示例可以在US7,395,433中找到,該文獻的全部公開內容通過引用被合併在此。但是將認識到,存在其他軟體加水印技術,並且本發明的實施例可以使用任何軟體加水印技術。

可能希望把受保護的軟體項目260的不同版本提供到不同的用戶系統280。受保護的軟體項目260的不同版本為不同的用戶系統280提供相同的功能——但是受保護的軟體項目260的不同版本被不同地編程或實施。這樣有助於限制攻擊者成功地攻擊受保護的軟體項目260的影響。具體來說,如果攻擊者成功地攻擊了他的受保護的軟體項目260的版本,則該攻擊(或者通過該攻擊發現或訪問的比如加密密鑰之類的數據)可能不適於供受保護的軟體項目260的不同版本使用。因此,有許多技術(其在這裡被稱作「多樣性(diversity)」技術)用於把初始軟體項目220變換成受保護的軟體項目260,從而使得受保護的軟體項目260的不同版本被生成(也就是說從而引入「多樣性」)。這樣的多樣性技術的示例可以在WO2011/120123中找到,該文獻的全部公開內容通過引用被合併在此。但是將認識到,存在其他多樣性技術,並且本發明的實施例可以使用任何多樣性技術。

前面提到的白盒模糊技術、節點鎖定技術、軟體加水印技術和多樣性技術是軟體保護技術的示例。將認識到,存在對初始軟體項目220應用保護以生成受保護的軟體項目260的其他方法。因此,這裡所使用的術語「軟體保護技術」應當被理解成表示對初始軟體項目220應用保護以生成受保護的軟體項目260的任何方法(目的是挫敗攻擊者的攻擊,或者至少使得攻擊者成功進行他的攻擊更加困難),比如任一種前面提到的白盒模糊技術和/或任一種前面提到的節點鎖定技術和/或任一種前面提到的軟體加水印技術和/或任一種前面提到的多樣性技術。

在本發明的實施例中,軟體保護工具252可以對初始軟體項目220應用一種或多種前面提到的軟體保護技術,以便生成受保護的軟體項目260。

存在許多方式可以用來在受保護的軟體項目260內實施前面提到的軟體保護,也就是說存在許多方式可以用來對初始軟體項目應用前面提到的軟體保護技術以獲得受保護的軟體項目260。具體來說,為了從初始軟體項目220生成受保護的軟體項目260,軟體保護工具252可以修改初始軟體項目220內的一個或多個代碼部分,和/或可以將一個或多個新的代碼部分添加或引入到初始軟體項目220中。用來做出這些修改的實際方式或者用來編寫新的代碼部分的實際方式當然可以有所不同——畢竟存在許多編寫軟體以實現相同功能的方式。但是已經創造性地認識到,實施軟體保護技術的當前方法存在以下問題:

(a)一些軟體保護技術(或者一些軟體保護技術的至少部分)的應用是手動過程。因此,所應用的軟體保護將特定於初始軟體項目220及其特性。這意味著保護的質量或強度將取決於正在手動實施或應用軟體保護的安全團隊的技術。於是這可能對軟體保護技術的應用的後續自動化步驟具有負面影響(例如在所得到的受保護的軟體項目260的代碼的效率和/或尺寸和/或安全性方面)。

(b)一些軟體保護技術(比如白盒模糊技術)的應用常常導致非常晦澀(obscure)的代碼。晦澀性並不一定意味著安全性,因為這使得安全性審核任務變得複雜,並且可能導致未被檢測到的弱點。將希望能夠消除這樣的未被檢測到的弱點(或者至少降低其可能性),並且使得安全性審核任務更加容易。此外,如果在後來檢測到弱點,則固有的晦澀性意味著使得提供軟體更新以修正所檢測到的弱點的能力更加困難、緩慢並且成本高昂。

(c)初始軟體項目220常常涉及使用混合的算術和邏輯數學(比如)。這總是會使得一些軟體保護技術對初始軟體項目220的應用更加困難,並且減少了針對使得一些軟體保護技術的應用自動化的選項。

(d)一些軟體保護技術適用於字注釋(word-wise)數據元素(例如其總是對被表示成32比特字的數據進行運算)。這代表著風險,因為這使得攻擊者更容易追蹤關鍵資產和/或檢測處理樣式。

如應當變得顯而易見的,本發明的實施例解決了這些問題當中的一個或多個個。

3—在有限環上使用向量空間

在本發明的實施例中,軟體保護工具252對初始軟體項目220應用一種或多種軟體保護技術,從而使得所得到的受保護的軟體項目260把數據處理(即如前面所描述的由初始軟體項目220提供的功能)至少部分地實施成在有限環上的一項或多項線性代數運算。

具體來說,受保護的軟體項目260把數據處理至少部分地實施成在有限環上的一項或多項線性代數運算,而不是僅僅使用在有限環上的算術運算或者在有限環上的邏輯運算來實施該數據處理。舉例來說,初始軟體項目220通常被編寫成使得程序變量和數據實際上是有限環的元素(或者被表示成其元素),也就是具有對正整數n按模計算的加法和乘法的n比特數的環。於是初始軟體項目220使用對作為該有限環的元素(或者被表示成該有限環的元素)的數據(或者參數或變量)進行運算的算術運算和邏輯運算來實施其功能。在這裡,n常常是32或64(針對32比特或64比特字以及32比特或64比特處理器)。與此相對,在本發明的實施例中,所得到的受保護的軟體項目260將數據處理至少部分地實施成在有限環上的一項或多項線性代數運算。在這裡「線性代數」運算是對向量空間的一個或多個元素的運算或函數。

如根據後面的內容將變得顯而易見的,有限環的元素可以被表示成在有限環上的向量空間的對應元素,並且反之亦然。在這裡,向量空間是其元素為向量的向量空間,其中每一個向量的分量或元素是有限環的元素。類似地,有限環上的算術運算和該有限環上的邏輯運算可以被實施成針對向量空間的對應的相應線性代數運算,其中每一項線性代數運算對被表示成向量空間的一個或多個元素的相應輸入數據進行運算,以便產生對應的輸出數據。因此,在本發明的實施例中,軟體保護工具252至少部分地通過如下方式實施一種或多種軟體保護技術:將代碼添加到初始軟體項目220中和/或修改初始軟體項目220的現有代碼,從而使得所添加的代碼和/或經過修改的代碼包括(或者被實施成)針對向量空間的一項或多項線性代數運算(並且對向量空間的元素進行運算)。最終結果是初始軟體項目220仍然使相同的軟體保護技術對其應用——但是這些軟體保護技術按照與他們先前被應用於初始軟體項目220或者實施在初始軟體項目220內的方式不同的方式被應用於初始軟體項目220或者被實施在初始軟體項目220內(不同點在於所添加的代碼和/或對現有代碼做出的(一項或多項)修改包括對向量空間的元素進行運算的針對向量空間的一項或多項線性代數運算)。

在後面,有限環將是前面所討論的商環,並且向量空間將是向量空間(即向量空間的元素是具有本身是有限環的元素的n個元素/分量的向量)。但是將認識到,本發明的實施例同樣適用於不同的有限環和向量空間。

3.1—從到的映射

定義函數如下:

於是函數提供把向量空間的任何元素u映射到有限環的元素的一種方式。因此,關於向量空間的一個或多個元素定義的表達式(或者公式或運算)可以被映射到對有限環的一個或多個對應元素進行運算的對應表達式(或者公式或運算)。

函數具有以下屬性:。

將認識到,存在其他方式可以用來定義把向量空間的元素映射(或者關聯)到有限環的對應元素的函數,並且本發明的實施例不限於前面給出的示例性函數。

3.2—從到的映射

設函數是把有限環的元素映射(關聯)到向量空間的對應元素的函數。存在許多方式可以用來定義函數,並且將認識到,本發明的實施例不限於後面給出的示例。

函數的一個示例是如下定義的函數:

函數的另一個示例是如下定義的函數。如果並且的二進位表示是,則

注意。

3.3—的元素的歸一化形式

定義函數如下:

向量空間的元素可以被視為向量空間的元素u的「歸一化」形式。應當簡要描述函數的使用。

注意,對於環的任何元素p,如果,則。

3.4—邏輯乘法

定義函數如下:

其中,,,並且M(u)標示具有如下定義的元素mij的對角矩陣:對於i=0,…,n-1,mii=ui,並且對於i≠j,mij=0。

應當簡要描述函數的使用。

3.5—的元素的加法

注意,

因此,如果中的兩個元素p和q在中被表示成和,則中的p和q的和p+q等效於中的和u+v。這是因為通過映射把u+v從映射回到得到。

3.6—的元素的乘法

定義函數如下:

其中,,,並且。

注意,

因此,如果中的兩個元素p和q在中被表示成和,則中的p和q的乘積等效於中的乘積。這是因為通過映射把從映射回到得到。

3.7—的元素的多項式變換

考慮通過係數如下定義的二次變換T:

如果中的元素x在中被表示成,則我們需要確定中的哪一個元素u等效於中的經過變換的元素,也就是中的使得的元素u。

設。則

其中並且

其中,

因此,如果中的元素x在中被表示成,則中的經過變換的元素等效於中的元素。這是因為通過映射把u從映射回到得到。

我們還有:

將認識到,前述內容類似地適用於任意階的任何多項式變換。具體來說,考慮通過係數如下定義的一般多項式變換T:。於是如果中的元素x在中被表示成,則中的經過變換的元素等效於中的元素。這是因為通過映射把u從映射回到得到。

3.8—的元素的邏輯與(AND)

定義函數或算子如下:

其中,,並且。

於是。因此,如果中的兩個元素p和q在中被表示成和,則中的p和q的邏輯(逐比特)與等效於中的。這是因為通過映射把從映射回到得到。

3.9—的元素的邏輯異或(XOR)

定義函數或算子如下:

於是

因此,如果中的兩個元素p和q在中被表示成和,則中的p和q的邏輯(逐比特)異或等效於中的。這是因為通過映射把從映射回到得到:

3.10—的元素的其他邏輯算子

由於針對的元素的所有邏輯算子都可以按照針對的元素的邏輯(逐比特)與和異或算子來表達,並且由於針對的元素的邏輯(逐比特)與和異或算子在中具有對應的線性代數算子,因此針對的元素的所有其他邏輯算子都可以按照前面提到的線性代數算子和來表達。

3.11—的元素的移位運算

定義函數:如下:

其中,,並且其中是如下定義的矩陣:

假設中的元素x在中被表示成,並且假設x的二進位表示是,使得,於是中的向右移位k個位置得到中的元素,其二進位表示是。中的元素等效於中的元素。這是因為通過映射把從映射回到得到,由於,使得。因此,。

類似地,定義函數如下:

其中,,並且其中是如下定義的矩陣:

假設中的元素x在中被表示成,並且假設x的二進位表示是,使得,於是中的向左移位k個位置得到中的元素,其二進位表示是。中的元素等效於中的元素。這是因為通過映射把從映射回到得到,由於,使得。因此,。

3.12—的其他函數或算子

前面的示例性函數和算子表明,對於(a)對作為環的元素的一個或多個運算對象(或參數)進行運算以便(b)生成作為環的元素的一項或多項結果的函數F1,存在等效的函數或算子F2,其(a)根據與之間的映射對作為向量空間的元素並且對應於的一個或多個運算對象(或參數)進行運算並且(b)根據與之間的映射生成對應於的一項或多項結果。雖然在前面已經描述了中的多個示例性函數和算子及其在中的等效函數和算子,但是將認識到,基於這些示例可以定義和確定中的更多函數和算子及其在中的等效函數和算子。此外,按照類似於前面所討論的方式,技術人員將能夠針對中的任何函數或算子確定其在中的等效函數或算子。

因此將認識到,軟體保護工具252可以被布置成至少部分地通過如下方式實施一種或多種軟體保護技術:將代碼添加到初始軟體項目220中和/或修改初始軟體項目220的現有代碼從而使得所添加的代碼和/或經過修改的代碼包括(或者被實施成)針對向量空間的一項或多項線性代數運算(並且對向量空間的元素進行運算),這代替使用在有限環上的一項或多項算術和/或邏輯運算來添加代碼和/或修改代碼。舉例來說,使用前面的等效性,可以把實施一種或多種軟體保護技術(但是僅僅使用在環上的算術和/或邏輯運算這樣做)的現有技術轉換成按照功能上等效的方式實施所述一種或多種軟體保護技術(但是使用針對向量空間的線性代數運算這樣做)的技術。

在一些實施例中,軟體保護系統250包括資料庫254。資料庫254包括可以由軟體保護工具252在生成受保護的軟體項目260時使用的軟體或代碼的一個或多個部分。舉例來說,資料庫254可以包括用於實施如在前面的3.7節中闡述的向量空間中的多項式變換的代碼的一個或多個部分。通過這種方式,可以開發並且保持參考/模板代碼部分的集合,以供將來由軟體保護252和/或軟體保護252的操作員使用。如圖2中所示,資料庫254中的這些代碼部分當中的一個或多個可以利用軟體生成系統210來編寫或開發。

通過採用在有限域上使用線性代數運算而不是在有限域上使用算術和/或邏輯運算的方法來實施軟體保護技術,提供了許多優點和好處。舉例來說:

-使用精簡的數學運算集合(也就是有限域上的線性代數運算)實施軟體保護技術,從而建立有助於改進安全性審核的標準。具體來說,安全性審核的範圍可以被擴展到軟體保護技術的設計。工程團隊(其編寫初始軟體項目220和/或使用軟體保護工具252實施軟體保護技術)與安全性審核團隊之間的溝通和理解可以得到改進,這是因為基於該精簡的數學運算集合實現對於保護框架的更好的共識。

-通過把算術和邏輯運算表達成針對向量空間的線性代數運算,消除了前面提到的保護包括混合算術/邏輯數學的初始軟體項目220的困難。這於是使得軟體保護過程更自動化。

-對於弱點和安全漏洞的分析以及產生針對此類弱點和漏洞的解決方案得到了促進,這是因為軟體保護技術是使用精簡的數學運算集合來實施的。

4—示例

下面提供了前面所提到的技術的示例。但是將認識到,這僅僅是一個示例,並且本發明的實施例可以同樣被應用於其他軟體保護技術並且按照其他方式來應用。

假設初始軟體項目220被布置成生成控制字CW(即用於對已加密內容進行解密的加密密鑰)。因此,初始軟體項目220可以根據公式或函數來計算CW,其中M是「掩碼」,並且K是密鑰,具體來說M和K都是32比特無符號字。

環是,並且向量空間是。

M和K都是的元素,因此設和是它們在中的等效元素。

用於保護對一個或多個軟體變量進行運算的函數的一種眾所周知的技術涉及對這些變量應用相應的線性變換,並且隨後對這些經過變換的變量實施所述函數的經過變換的版本——例如參見如下文獻:「White-Box Cryptography and an AES Implementation」,S. Chow et al,Selected Areas in Cryptography,9th Annual International Workshop,SAC 2002,Lecture Notes in Computer Science 2595(2003),p250-270以及「A White-box DES Implementation for DRM Applications」,S. Chow et al,Digital Rights Management,ACM CCS-9 Workshop,DRM 2002,Lecture Notes in Computer Science 2696(2003),p1-15。對經過變換的變量實施函數的經過變換的版本的結果本身可以被變換,以便隨後從該函數獲得正確的結果。這產生了正確的結果,但是該處理將是對經過變換的變量實施的,而從未揭示這些變量的真實(未經變換的)數值,從而對攻擊者隱藏了這些數值。

將這個過程應用於本示例,然後對於,定義變換和如下:

和,其中如果,則。因此,是函數的逆。類似地,對於,定義變換和如下:

和,其中如果,則。因此,是函數的逆。隨後,可以獲得和的經過變換的版本如下:和。

正如前面所討論的那樣,如果中的兩個元素p和q在中被表示成和,則中的p和q的邏輯(逐比特)異或等效於中的。因此,中的M和K的邏輯(逐比特)異或等效於中的。

於是:

其中,。

因此人們可以把cw表達成cw=A+B+C,其中

因此,可以使用線性代數運算來計算向量A、B和C。內容提供者或條件訪問系統於是可以像前面那樣生成向量A、B和C,並且隨後將這些向量傳送到用戶系統280。在用戶系統280上執行的受保護的軟體項目260不是被布置成從內容提供者或條件訪問系統接收M和K並且如在初始軟體項目220中那樣計算,而是被布置成從內容提供者或條件訪問系統接收向量A、B和C並且計算。

因此,已經對初始軟體項目220應用了前面提到的軟體保護技術以生成受保護的軟體項目260,其中所述軟體保護技術是使用針對的線性代數運算來實施的。

在前面的示例中,關於把cw劃分成特定的向量A、B和C的選擇是有用的,這是因為:B更新用戶系統280上的掩碼M,C包含與內容有關的密鑰K,並且A隨後把B和C「粘合」在一起以使得用戶系統280能夠如前面所闡述的那樣獲得CW。用戶系統280不需要明確地對向量A、B和C進行「去變換(de-transform)」以便明確地計算掩碼M和密鑰K從而計算CW,因此觀察所述處理(例如在調試器中)的攻擊者無法確定掩碼M和密鑰K的數值,即使掩碼M和密鑰K正被使用。

但是將認識到,存在其他方式可以用來把cw劃分成兩個或更多個向量,並且本發明的實施例不限於把cw劃分成如前面所闡述的特定向量A、B和C。

5—修改

將認識到,所描述的方法被示出為按照特定順序實施的個體步驟。但是技術人員將認識到,這些步驟可以被組合或者按照不同的順序來實施,同時仍然實現所期望的結果。

將認識到,可以使用各種不同的信息處理系統來實施本發明的實施例。具體來說,雖然附圖及其討論提供了示例性的計算系統和方法,但是這些僅僅是為了在討論本發明的各個方面時提供有用的參考而被呈現的。本發明的實施例可以被實施在任何適當的數據處理設備上,數據處理設備比如是個人計算機、膝上型計算機、個人數字助理、行動電話、機頂盒、電視、伺服器計算機等等。當然,對於所述系統和方法的描述出於討論的目的而被簡化,並且其僅僅是可以被用於本發明的實施例的許多不同類型的系統和方法的其中之一。將認識到,邏輯塊之間的邊界僅僅是說明性的,並且替換的實施例可以合併邏輯塊或元件,或者可以對各個邏輯塊或元件施加替換的功能分解。

將認識到,前面提到的功能可以被實施成作為硬體和/或軟體的一個或多個對應模塊。舉例來說,前面提到的功能可以被實施成一個或多個軟體組件以供系統的處理器執行。替換地,前面提到的功能可以被實施成硬體,比如在一個或多個現場可編程門陣列(FPGA)上,和/或一個或多個專用集成電路(ASIC),和/或一個或多個數位訊號處理器(DSP),和/或其他硬體布置。前面所描述的方法步驟各自可以由對應的相應模塊實施;多個方法步驟可以一起由單個模塊實施。

將認識到,如果本發明的實施例是通過電腦程式實施的,則承載電腦程式的存儲介質和傳送介質形成本發明的方面。電腦程式可以具有一條或多條程序指令或程序代碼,其在由計算機執行時實施本發明的實施例。這裡所使用的術語「程序」可以是被設計用於在計算機系統上執行的指令序列,並且可以包括子例程、函數、過程、模塊、對象方法、對象實施方式、可執行應用、小應用程式、小服務程序、原始碼、對象代碼、共享庫、動態連結庫和/或被設計用於在計算機系統上執行的其他指令序列。存儲介質可以是磁碟(比如硬碟驅動器或軟盤)、光碟(比如CD-ROM、DVD-ROM或BluRay盤)或者存儲器(比如ROM、RAM、EEPROM、EPROM、快閃記憶體或者可攜式/可移除存儲器設備)等等。傳送介質可以是通信信號、數據廣播、兩臺或更多臺計算機之間的通信連結等等。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀