使用基函數(shù)編碼來保護可訪問的系統(tǒng)的制作方法
【專利摘要】提供了用于保護可訪問的計算機可執(zhí)行程序代碼和系統(tǒng)的系統(tǒng)與技術。一個或多個基函數(shù)可以被生成并與現(xiàn)有程序代碼摻合,使得潛在攻擊者可能難以或者不可能從現(xiàn)有代碼中區(qū)分基函數(shù)。還可以使用各種其他摻合和保護技術來保護所述系統(tǒng)和代碼,所述其他摻合和保護技術諸如分式、變量相關編碼、動態(tài)數(shù)據(jù)識別編碼以及交叉鏈接,它們可以單獨或組合使用,和/或可以與基函數(shù)摻合。
【專利說明】使用基函數(shù)編碼來保護可訪問的系統(tǒng)
【技術領域】
[0001] 本發(fā)明總地涉及電子計算設備和計算機系統(tǒng),并且更特別地,涉及保護是可訪問 的而受攻擊的設備和系統(tǒng)上的軟件和固件。
【背景技術】
[0002] 計算機、電子計算設備以及計算機軟件在所有它們各種形式上的使用被認為是非 常普遍的并且日益增長。此外,隨著強大通信網(wǎng)絡的普遍,計算機軟件程序和數(shù)據(jù)文件可以 被訪問、交換、拷貝和分發(fā)的簡便也日益增長。為了利用這些計算機和通信系統(tǒng)以及它們提 供的效率,存在對用于安全地存儲和交換計算機軟件與數(shù)據(jù)的方法的需要。
[0003] 已經(jīng)證明廣泛使用和接受的維持機密性或隱私的一種方法是使用秘密密碼密鑰 對數(shù)據(jù)加密。現(xiàn)有的加密系統(tǒng)被設計為保護它們的秘密密鑰或其他秘密數(shù)據(jù)免受"黑盒攻 擊"。這是這樣的情形,其中攻擊者具有算法的知識并且可以檢查來自算法的各種輸入和輸 出,但是對于算法本身的執(zhí)行沒有可見性(諸如自適應選擇的輸入/輸出攻擊)。
[0004] 盡管依賴于黑盒模型的密碼系統(tǒng)是非常普遍的,但是已經(jīng)表明該模型并未反映現(xiàn) 實。通常,攻擊者處于觀察算法的執(zhí)行的至少某個方面的位置,并且具有對目標算法的足夠 訪問以掛載成功的攻擊(即,信道側(cè)攻擊,諸如定時分析、功率分析、高速緩存攻擊、故障注 入等。)這樣的攻擊通常稱為"灰盒"攻擊,所假設的是攻擊者能夠觀察系統(tǒng)執(zhí)行的至少部 分。
[0005] 認識到此,已經(jīng)做出努力來設計抵抗更強大的攻擊模型一"白盒攻擊"的加密 算法和數(shù)據(jù)信道。白盒攻擊是對軟件算法的攻擊,其中假設攻擊者對于算法的執(zhí)行具有完 全可見性。迄今為止,這樣的保護系統(tǒng)已經(jīng)經(jīng)歷了合理的成功,但是因為這樣的保護系統(tǒng)變 得越來越精密,所以攻擊技術也越來越精密(諸如編碼減少攻擊、統(tǒng)計分桶(bucketing)攻 擊以及同態(tài)映射攻擊)。因此,許多現(xiàn)有的白盒保護系統(tǒng)正被表明對于抵抗聯(lián)合攻擊是無效 的。
[0006] 借助于簡單編碼的軟件混淆有時已經(jīng)在使用。為了是有用的,這樣的編碼在軟件 混淆中的應用必須不會過度增加軟件的時間和空間消耗,因此這樣的編碼典型地相對簡 單。因此,盡管它們可以整體地保護軟件,但是它們未提供高度的安全性。在軟件中存在許 多通信邊界,所述邊界代表具體的脆弱性:未受保護形式的數(shù)據(jù)進或出混淆程序的通道、數(shù) 據(jù)進或出軟件或硬件中的密碼實現(xiàn)的通道等等?,F(xiàn)有編碼策略的強度典型地受它們保護的 數(shù)據(jù)大小的嚴重限制。對于常規(guī)編碼,這樣的受保護的項大約為32比特,有時為64比特, 并且有時是諸如字符或字節(jié)的更小數(shù)據(jù)段。鑒于編碼和操作數(shù)大小的限制,一般無法防止 對這樣的編碼的相當迅速的暴力破解。
[0007] 因此,存在對更有效的秘密隱藏和防篡改技術的需要,從而提供對軟件代碼和數(shù) 據(jù)的總體保護以及對秘密秘密密鑰、生物計量數(shù)據(jù)、加密的數(shù)據(jù)等的保護。還期望提供比常 規(guī)簡單編碼強得多形式的對軟件邊界的保護。
【發(fā)明內(nèi)容】
[0008] 本發(fā)明的實施例總地旨在提供更有效的秘密隱藏和防篡改技術,從而提供對軟件 代碼和數(shù)據(jù)的保護,而不用擔心安全性將被破壞。
[0009] 本文公開的方法和系統(tǒng)不限于任何特定基本程序。它們可以應用于密碼系統(tǒng),但 是等同地,可以應用于非密碼系統(tǒng)。被保護的代碼也不規(guī)定保護它做了寫什么,所以保護技 術不受基本代碼的約束。相對于可能留下或創(chuàng)建基于基本代碼的模式的其他保護技術,這 可以提供益處。這樣的模式可能提供可被攻擊者利用的弱點。
[0010] 本文公開的一些實施例提供"深刻數(shù)據(jù)相關性",這可以使得難以或不可能排解或 者區(qū)分受保護的代碼和正在提供保護的代碼。例如,AES算法典型地始終執(zhí)行相同方式,而 不管是何輸入數(shù)據(jù)。這使得攻擊者直接直到他在找什么以及去哪里找到它。大多數(shù)白盒保 護系統(tǒng)具有剛性等式結(jié)構,其未解決該類型的問題。即,攻擊者可以知道找什么類型的操作 或效果,以及何時在代碼或執(zhí)行中進行查看以找到那些操作或效果。相對地,本文公開的實 施例可以提供非剛性的編碼,諸如其中,保護算法的每次迭代導致不同的編碼。因此,系統(tǒng) 是極其不可重復的。除了別的以外,這可以使本文公開的實施例對于"比較"類型攻擊是更 有抵抗力的,在該"比較"類型攻擊中,攻擊者改變1比特并觀察目標程序如何改變。以本 文公開的一些實施例中,如果攻擊者改變1比特,則受保護的代碼將看起來完全不同。
[0011] 作為概述,本文描述的工具、一系列工具以及技術的實施例可以分組如下: 1)用于模糊目標代碼模塊之間以及目標代碼與保護代碼之間的邊界的系統(tǒng)和技術。這 例如可以通過將代碼與周圍代碼摻合在一起以及將密碼與其他代碼進行交織來實現(xiàn),這在 其他保護性系統(tǒng)中通常未完成。
[0012] 2)用于確保破裂需要人干預的系統(tǒng)和技術。人尋找它們之前已經(jīng)看到的模式。通 過根據(jù)本文公開的實施例引入隨機函數(shù),可以移除重復性和/或常見模式,使得自動攻擊 是很大程度上無效的。
[0013] 3)用于保護防范"比較攻擊"的系統(tǒng)和技術。如上所提及的,比較攻擊是其中比較 代碼執(zhí)行的兩次迭代以參看差異的攻擊,諸如改變單個輸入比特以查看操作和輸出如何改 變。如本文所公開的保護算法可以以受保護代碼的每次迭代產(chǎn)生動態(tài)不同的函數(shù),所以比 較攻擊未提供任何有用信息。
[0014] 本文描述的混淆技術可以在開銷可以被接納的任何時候?qū)崿F(xiàn)。白盒保護系統(tǒng)典型 地比本文描述的技術具有更大開銷,并且因此處于劣勢。
[0015] 一些實施例包括用于軟件保護的系統(tǒng)和技術,其通過向目標代碼應用雙射"基函 數(shù)"來操作。這些基函數(shù)是互逆函數(shù)對.&//,其例如用于對操作編碼,并然后在軟件應用 中的稍后點處不對操作編碼。編碼使原始函數(shù)和其生成的數(shù)據(jù)模糊。信息沒有損失,因為 不編碼操作容納編碼操作,從而在經(jīng)編碼的應用中稍后"撤銷"或"反轉(zhuǎn)"其影響??梢赃x 擇基函數(shù)對使得攻擊者不能容易找到或確定逆函數(shù)。即,給定函數(shù)/*,在沒有密鑰K的情況 下可能不容易找到逆。密鑰K可以在代碼生成時使用,但是任何一旦函數(shù)I 已經(jīng)生 成并應用于目標代碼就被丟棄。這些基函數(shù)對也是無損的,即,數(shù)學上可逆的。受保護的軟 件應用完全不需要對函數(shù)或過程進行解碼以在目標代碼中的其他位置使用它,因為編碼和 不編碼改變包括在經(jīng)編碼的應用內(nèi)。在一些實施例中,可能優(yōu)選的是,基函數(shù)是"深度非線 性的",因此使得同態(tài)攻擊更加可能。在一些實施例中,基函數(shù)對可以包括置換多項式編碼。 置換多項式是可逆的多項式(多項式雙射)。
[0016] 一些實施例可以生成或使用基函數(shù)對,以使得它們生成"實例多樣性"和"動態(tài)多 樣性"。為了實現(xiàn)"實例多樣性",每個基函數(shù)對可以創(chuàng)建安全"通信信道",諸如在軟件應用 的部分之間、在兩個軟件應用或平臺之間等等。動態(tài)多樣性可以通過將軟件的操作鏈接到 輸入數(shù)據(jù)來創(chuàng)建。每當諸如針對在兩個經(jīng)編碼的應用之間的通信執(zhí)行編碼時,可以在兩個 應用之間生成實例和動態(tài)多樣性?;瘮?shù)可以是高度"文本相關的",所以它們提供良好的 對明文和擾動攻擊的抵抗力。如果攻擊者改變?nèi)魏蝺?nèi)容,甚至是做出諸如1比特值的非常 小的改變,則該改變將導致非常大的行為改變。該特征與常規(guī)密碼代碼形成鮮明對照,所述 常規(guī)密碼代碼典型地對于代碼的每次迭代產(chǎn)生相同的模式和結(jié)構,而不管攻擊者做出的改 變。通過做出小改變并觀察影響,攻擊者能夠收集關于密碼代碼的操作的信息,但是他不能 對使用本文公開的系統(tǒng)和技術編碼的軟件進行相同操作。本文公開的實施例提供的多樣性 還提供對"類攻擊"的抵抗力。即,在所有情況下不可能提供這樣的攻擊方法,該攻擊方法 可以系統(tǒng)地并且自動地破裂本發(fā)明的每個實施例。還注意,常規(guī)白盒實現(xiàn)和代碼優(yōu)化器將 不提供足夠的多樣性來獲得任何有效保護。
[0017] 逆基函數(shù)的多樣性和不可逆性極大地增加了攻擊問題的復雜度。與常規(guī)軟件代碼 或代碼保護系統(tǒng)相對地,當嘗試擊敗本文公開的系統(tǒng)和技術時,攻擊者必須首先算出他正 在攻擊什么函數(shù)、代碼部分、應用等等,然后如何對它求逆,以及然后如何利用它。
[0018] 本文公開的實施例提供的多樣性可以提供可變、隨機選擇的結(jié)構來保護代碼。生 成基函數(shù)對和編碼的引擎可以依賴于隨機或偽隨機密鑰來選擇基本函數(shù)和/或密鑰。然 而,根據(jù)本文公開的實施例的密鑰不可以與許多常規(guī)安全系統(tǒng)的密鑰一樣大(即,64或128 比特);相反,其可以是數(shù)千或數(shù)萬比特。例如,開發(fā)的原型使用2000比特。
[0019] 本文公開的基函數(shù)可以包括用于編碼、解碼或重編碼數(shù)據(jù)的雙射。這樣的雙射可 以包括以下特性: 1)對寬數(shù)據(jù)元素編碼(典型地,四個或更多主計算機字寬)與典型標量編碼(參見附錄 中列出的[5,7])不同,但是與塊密碼類似。
[0020] 2)僅對數(shù)據(jù)編碼:與典型標量編碼不同,但是與密碼類似,它們不需要保護除在它 們自己的對數(shù)據(jù)元素的重編碼中涉及的那些以外的計算。
[0021] 3)取消數(shù)據(jù)塊或流,和/或產(chǎn)生數(shù)據(jù)塊或流的固定長度哈希以用于認證目的,類 似于塊密碼,但是與標量編碼不同。
[0022] 4)采用從軟件的操作指令系統(tǒng)特意選擇的操作的形式,所述操作將駐留在所述軟 件中并且所述操作將與所述軟件互鎖;即,它們被設計為類似在它們被嵌入的上下文中的 代碼,但是與密碼不同。
[0023] 5)與密碼和標量編碼二者不同,采用海量多編碼。標量編碼一般采用一個或者至 多幾個數(shù)學構造。密碼典型地采用稍大些的數(shù)量,但是該數(shù)量仍然很小。在本發(fā)明的一些 實施例中,各種編碼被應用于整個函數(shù),從而創(chuàng)建產(chǎn)生自許多形式的保護相互交互的錯綜 復雜交織的結(jié)構。
[0024] 6)與密碼和標量編碼二者不同,提供海量多樣的算法結(jié)構。實施例可以沒有固定 數(shù)量的輪,沒有用于各種子步驟的操作數(shù)的固定寬度,沒有各種子步驟的固定互連,以及沒 有任何種類的預定數(shù)量的迭代。
[0025] 7)與密碼和標量編碼二者不同,借助于高度數(shù)據(jù)相關算法來提供海量動態(tài)多樣 性:即,對于對基函數(shù)雙射的任何具體采用,通過其子步驟的路徑、其迭代計數(shù)等等強烈取 決于要編碼、解碼或重編碼的實際數(shù)據(jù)輸入。
[0026] 8 )與密碼和標量編碼二者不同,提供與它們的嵌入上下文海量互依性;S卩,它們的 行為可以強烈取決于它們被嵌入其中的軟件,并且可以使它們被嵌入其中的軟件強烈取決 于它們。
[0027] -些實施例可以使用大的量的實際熵(S卩,大的真隨機輸入)。然而,如果生成基函 數(shù)對的引擎自身未曝露于攻擊者,則其可以安全地采用顯著更小的密鑰,該顯著更小的密 鑰然后借助于偽隨機數(shù)生成器生成大得多的偽隨機密鑰,因為在該情況中,攻擊者必須應 付實際密鑰熵(其用于至偽隨機數(shù)生成器的種子)和從該生成器的編程不可避免地產(chǎn)生的 隨機性。
[0028] 在一些實施例中,還可以使用偏置置換。如果內(nèi)部數(shù)據(jù)用于生成基函數(shù)對或其他 編碼數(shù)據(jù)/函數(shù)而非隨機數(shù),則產(chǎn)生的編碼將包含偏置。如果引入代碼以創(chuàng)建編碼可能容 易明顯的未偏置置換,則導致系統(tǒng)中的弱點。相對地,本文公開的實施例可以生成偏置置 換,但是然后使用各種工具來使它們較少偏置。該方法已經(jīng)表明比已知技術要不明顯得多。
[0029] -些實施例可以包括用于以下的技術:綁定管道開始和管道結(jié)束,使得目標軟件 代碼在兩端被系于應用或平臺。例如,在對等數(shù)據(jù)傳送環(huán)境或數(shù)字權利管理(DRM)環(huán)境中, 這可以是有用的。本文公開的系統(tǒng)和技術還可以用于將密碼系于其他軟件應用或平臺,這 使用常規(guī)技術一般是難以完成的。
[0030] -些實施例可以使用"函數(shù)索引的交織"。該技術提供來自線性部件和非線性等式 求解的深非線性度。其可以以許多方式來使用,諸如邊界保護、動態(tài)常數(shù)生成(例如,密鑰到 代碼)、提供動態(tài)多樣性(數(shù)據(jù)相關功能性)、自組合密碼、密碼混合以及組合密碼與非密碼。 例如,其可以用于將黑盒密碼與本文公開的其他保護代碼進行混合,從而提供黑盒密碼的 長期安全性,具有白盒安全性的其他益處。如上文所提到的,本文公開的實施例的編碼可以 與運行時數(shù)據(jù)高度相關。以函數(shù)索引的交織,兩種信息被使用:密鑰K,其確定基函數(shù)和結(jié) 構,以及R,其確定哪些混淆要應用于"定義實現(xiàn)"。典型地,客戶端看不到R。密鑰K可以從 上下文擴充,但是在本文描述的一些示例中,僅R以該方式擴充??蛇x地,來自用戶或他的 設備(諸如智能電話、平板計算機、PDA、服務器或臺式計算機系統(tǒng)等等)的半一致信息或數(shù) 據(jù)(諸如IP地址)可以用于如運行時密鑰那樣編碼和解碼。
[0031] 也可以使用遞歸函數(shù)索引的交織。函數(shù)索引的交織典型地對任意函數(shù)進行交織。 如果這些函數(shù)中的一些是通過函數(shù)索引的交織獲得的它們自身的函數(shù),則這是函數(shù)索引的 交織的遞歸使用。
[0032] -些實施例可以包括隨機交叉鏈接、交叉俘獲、數(shù)據(jù)流復制、隨機交叉連接以及隨 機檢查,與代碼重定序相組合,創(chuàng)建全向交叉相關性以及變量相關編碼。
[0033] -些實施例可以使用與分式變換(動態(tài)數(shù)據(jù)識別編碼)的存儲器混洗以隱藏數(shù)據(jù) 流,這也可以被采用。在動態(tài)數(shù)據(jù)識別編碼中,可以使用存儲器單元的陣列A,其可以視為具 有虛擬索引0,1,2. ...,M-I ,其中M是陣列的大小和在有限環(huán)ZZ(Af)上的置換多項式p的模 數(shù)(即,整數(shù)模M),如在C程序陣列中那樣。然而,對于任何給定索引i,在陣列中存在其對 應于的不固定的位置,因為其被尋址為P (i),并且P采用從至程序的輸入確定的系數(shù)。位置 4貞〇);Mwni…可以被認為是外延主機器的那些的"偽寄存器" ,足糾。 通過將數(shù)據(jù)移進和移出這些寄存器、對每次移動時對移動的數(shù)據(jù)重編碼以及通過針對許多 不同值重用這些"偽寄存器"(例如,通過采用圖著色寄存器分配),攻擊者跟隨程序的數(shù)據(jù) 流的難度可以大大增加。
[0034] 一些實施例可以使用"散布和摻合"編碼。這是描述基函數(shù)加代碼交織的使用的 另一種方式,其"涂覆"基函數(shù)的邊界以使得攻擊者更加難以辨別它們。一般的數(shù)據(jù)摻合可 以具有基函數(shù)的與其他代碼混合的部分,使得更加難以標識和提升代碼。
[0035] -些實施例提供安全生命周期管理。黑盒安全性提供良好的長期保護,但是在今 天的應用中不太有用。本文公開的實施例可以比實現(xiàn)在未受保護的設備上可能被破裂更快 地刷新所述實現(xiàn)。不同的設備和應用具有不同的需要。例如,按次計費的電視廣播(諸如體 育賽事)在該賽事幾天后可能具有很小的價值,所以可能僅有必要在一天左右提供足夠安 全性來保護該廣播數(shù)據(jù)。類似地,計算機游戲市場可能在幾周之后快速變小,所以可能關鍵 僅在前幾周或幾月保護該游戲。本文公開的實施例可以允許用戶應用需要的安全級別,從 而權衡安全性與性能。字面上,可調(diào)整的"混淆刻度盤"可以放置在控制臺上。盡管實現(xiàn)的 特定定義的安全級別可能是未知的,但是混淆方法被應用的強度可以被控制。一般地,這些 設定可以在應用被創(chuàng)建時用其嵌入的基函數(shù)進行調(diào)整,作為軟件開發(fā)過程的部分。安全性 分析可以提供對給定特定混淆級別破裂應用將有多困難的估計?;谠摴烙?,可以做出如 何平衡性能需要與安全性需要的工程決定,并且"混淆刻度盤"可以被相應地設置。這種靈 活性是用其他保護系統(tǒng)無法獲得的。例如,利用ASE,使用固定的密鑰長度和固定的代碼,它 們不能被調(diào)整。
[0036] -些實施例可以提供靈活的安全性刷新速率,允許對刷新代碼的"移動目標"的復 雜度的權衡。在許多情況中,所需的是足夠快地刷新以保持領先于潛在攻擊者。
[0037] -些實施例可能沒有在黑客曝露的環(huán)境中提供長期數(shù)據(jù)安全的主要目標。對此, 方案是不將數(shù)據(jù)曝露給黑客,而是通過例如為客戶端提供用于證書保護(安全ID (TM),口 令短語等)的web呈現(xiàn)而僅曝露訪問該數(shù)據(jù)的手段,所述客戶端經(jīng)由受保護的對話來訪問數(shù) 據(jù),所述對話可以至多曝露一小部分數(shù)據(jù)。在黑客曝露環(huán)境中,可以預期將部署以相同方式 對曝露的軟件進行刷新的過程。例如,在衛(wèi)星TV條件訪問系統(tǒng)中,嵌入在機頂盒(STB)中 的軟件中的密碼密鑰被定期刷新,使得任何對密鑰的損害具有僅用于有限時間段的值。當 前,可以借助于軟件混淆和/或白盒密碼在該有限曝露時段上保護這樣的密碼密鑰。
[0038] 然而,白盒密碼已證明對于這樣的攻擊是脆弱的,所述攻擊可能由具有分析可執(zhí) 行程序的專家知識的密碼學尖端攻擊者非??焖俚貓?zhí)行,因為所采用的密碼算法在存在的 被最透徹地檢查的算法當中,并且用于分析程序的工具也已經(jīng)在近來變得非常精細。此外, 密碼具有特殊的計算屬性,因為它們經(jīng)常在未在計算中通常使用的算術域上定義:例如, AES在伽羅瓦域上定義,RSA公鑰密碼系統(tǒng)通過在極大模數(shù)上的模算術來定義,在比特運算 上的3DES,查找表以及以復制比特外延的比特置換。
[0039] 實際上,對程序的精細分析已經(jīng)創(chuàng)建了有時可以完全繞過密碼分析的需要:代碼 提升攻擊,由此攻擊者簡單地提取密碼算法并且在沒有進一步分析的情況下采用它(因為 它畢竟是操作的軟件段,盡管其可以被混淆)來破裂軟件應用的功能性。
[0040] 一些實施例可以提供強得多的對攻擊的短期抵抗。這樣的保護可以適于其中需要 抵抗的時間相對短的系統(tǒng),因為借助于刷新駐留在曝露平臺上的軟件解決了長期安全性。 這解決了特定空白的需求,其關注由以下創(chuàng)建的緊張點:高度精細的密碼分析工具和知識、 被極好研究的密碼、經(jīng)由軟件混淆可提供的有限保護、用于分析可執(zhí)行程序的高度精細工 具,以及軟件在典型商業(yè)內(nèi)容分發(fā)環(huán)境中有限的曝露次數(shù)。目標是防止這些種類的攻擊, 使用白盒密碼的經(jīng)驗已經(jīng)示出為在現(xiàn)有技術內(nèi):快速密碼攻擊和/或代碼提升攻擊如此之 快,以至于即使給出在曝露程序(諸如STB程序)的刷新之間有限的有效性生命跨度,它們也 具有值。
[0041] 在許多情況中,僅有必要抵抗在刷新周期期間的持續(xù)時間內(nèi)的分析,并且將密碼 替換如此緊密地系于其駐留在其中的應用,從而代碼提升攻擊在刷新周期的持續(xù)時間內(nèi)也 是不可行的。刷新周期率由工程和成本考慮來確定,有多少帶寬可以分配給刷新,我們可以 多平滑地將刷新與進行中的服務整合在一起而不損失服務質(zhì)量等等:這些都是在提供條件 訪問系統(tǒng)領域中非常好理解的問題。這些考慮粗略地指示對于分析和提升攻擊我們的保護 必須堅持多久。
[0042] 一些實施例可以通過以下提供可以抵抗更長時間段內(nèi)的攻擊的顯著更大的編碼: 放棄用經(jīng)編碼的操作數(shù)進行計算的觀念--如上使用較簡單的編碼所做的--并用更像 密碼的事物來替換它。密碼本身可以是并且確實用于該目的,但是它們常常不能容易地與 普通軟件互鎖,因為(1)它們的算法被密碼標準剛性地固定以及(2)它們的計算典型地與 普通軟件非常不同并因此既不容易在其內(nèi)被隱匿也不容易與其互鎖。本文描述的基函數(shù)提 供了允許隱匿和互鎖的替代:它們利用常規(guī)操作,并且它們的算法與用密碼的情況相比極 大地更加靈活。它們可以與密碼組合來將與常規(guī)密碼一樣強的黑盒安全級別與顯著優(yōu)勝于 如上的簡單編碼和已知的白盒密碼二者的白盒安全級別進行組合。
[0043] 在一些實施例中,可以通過以下來創(chuàng)建基函數(shù):選擇字大小w和矢量長度N,并生 成可逆狀態(tài)矢量函數(shù),所述可逆狀態(tài)矢量函數(shù)被配置為對w元素字的N矢量進行操作,所述 可逆狀態(tài)矢量函數(shù)包括多個可逆操作的組合。所述狀態(tài)矢量函數(shù)可以接收至少64比特的 輸入并提供至少64比特的輸出。所述狀態(tài)矢量函數(shù)中的步驟的第一部分在Z/(2W)上執(zhí)行線 性或仿射計算。使用第一和第二編索引技術對所述狀態(tài)矢量函數(shù)中的步驟的部分編索引。 然后可以修改在現(xiàn)有計算機程序中的至少一個操作以取代所選擇的操作而執(zhí)行所述狀態(tài) 矢量函數(shù)。每個編索引技術可以控制不同的編索引操作,諸如if-then-else構造、switch、 元素置換選擇、迭代計數(shù)、元素旋轉(zhuǎn)計數(shù)、函數(shù)索引的密鑰索引等等。所述狀態(tài)矢量函數(shù)中 的步驟的一些可以是非T函數(shù)操作。一般地,所述狀態(tài)矢量函數(shù)中的每個步驟可以可逆的, 使得整個狀態(tài)矢量函數(shù)是通過對每個步驟取逆而是可逆的。在一些配置中,所述狀態(tài)矢量 函數(shù)可以使用例如運行時密鑰、生成時密鑰或函數(shù)索引的密鑰來加密鑰。所述狀態(tài)矢量函 數(shù)可以通過各種操作類型來實現(xiàn),諸如線性操作、矩陣操作、隨機交換等。各種編碼方案還 可以應用于所述狀態(tài)矢量函數(shù)的輸入和/或輸出,和/或所述狀態(tài)矢量函數(shù)的操作。在一 些配置中,不同的編碼可以被應用以在與所述狀態(tài)矢量函數(shù)相關聯(lián)的各個點處產(chǎn)生分式。
[0044] 在一些實施例中,本文所公開的基函數(shù)可以通過例如以下來執(zhí)行:接收具有字大 小w的輸入,向所述輸入應用可逆狀態(tài)矢量函數(shù),所述可逆狀態(tài)矢量函數(shù)被配置為對w元素 字的N矢量進行操作,其中所述可逆狀態(tài)矢量函數(shù)包括多個可逆操作,并且所述狀態(tài)矢量 函數(shù)中的步驟的第一部分在z/a")上執(zhí)行線性或仿射計算??梢韵蛩隹赡鏍顟B(tài)矢量函數(shù) 的輸出應用額外操作,其中每一個操作是基于不同編索引技術而選擇的。一般地,所述狀態(tài) 矢量函數(shù)可以具有本文關于狀態(tài)矢量函數(shù)和基函數(shù)公開的任何屬性。
[0045] 在一些實施例中,第一操作可以通過執(zhí)行第二操作來執(zhí)行,例如通過以下來執(zhí)行: 接收用第一編碼A編碼為A(X)的輸入X,使用的值對所述輸入執(zhí)行第一多個計算機 可執(zhí)行操作,其中Fi是第二編碼機制B的逆,所述第二編碼B不同于所述第一編碼A,基于 來提供輸出。這樣的操作可以認為是"分式",并且可以允許操作被執(zhí)行而對于外部用 戶或者對于潛在攻擊者是不可訪問或不可見的。在一些配置中,所述第一操作的輸出未被 在外部提供給可執(zhí)行代碼,所述第一操作與所述可執(zhí)行代碼被集成在一起。
[0046] 在一些實施例中,對于被配置為接收輸入并提供輸出的矩陣操作,在執(zhí)行操作之 前,可以根據(jù)排序網(wǎng)絡拓撲來置換所述輸入??梢允褂弥脫Q后的輸入執(zhí)行所述矩陣操作以 生成輸出,并且根據(jù)所述排序網(wǎng)絡拓撲來置換所述輸出??梢詫⒅脫Q后的輸出提供為所述 矩陣操作的輸出。
[0047] 在一些實施例中,可以接收第一輸入,并且向所述第一輸入應用函數(shù)索引的交織 的第一函數(shù)以生成具有左部分和右部分的第一輸出??梢韵蛩龅谝惠敵鰬煤瘮?shù)索引的 交織的第二函數(shù)以生成第二輸出,其中,所述第一輸出的左部分被用作所述第二函數(shù)的右 輸入,并且所述第一輸出的右部分被用作所述第二函數(shù)的左輸入。然后可以提供所述第二 輸出作為對所述第一輸出的編碼。
[0048] 在一些實施例中,可以生成密鑰K,并且基于密鑰K和隨機化信息R來生成一對基 函數(shù)瓜五"??梢韵蛲ㄐ殴艿赖牡谝欢藨没瘮?shù)介,并且向所述通信管道的第二端應用 逆,之后可以丟棄所述密鑰K。通信管道可以跨單個平臺上或分離平臺上的應用。
[0049] 在一些實施例中,要由計算機系統(tǒng)在程序執(zhí)行期間執(zhí)行的一個或多個操作可以被 復制以創(chuàng)建一個或多個操作的第一拷貝。程序任何可以被修改為執(zhí)行第一操作拷貝而非第 一操作。每個操作和對應的拷貝可以使用不同編碼來編碼。操作對也可以用于創(chuàng)建檢查值, 諸如其中,在操作結(jié)果的執(zhí)行與拷貝的執(zhí)行之間的差異被添加到操作的結(jié)果或操作拷貝的 結(jié)果。這可以允許檢測攻擊者在程序執(zhí)行期間做出的修改。
[0050] 在一些實施例中,在包括多個操作和每個操作的拷貝的程序的執(zhí)行期間,在到達 在其處應當執(zhí)行多個操作中的操作的執(zhí)行點時,拷貝或原始操作可以被隨機選擇并由程序 執(zhí)行。隨機選擇的操作的結(jié)果可以與將在只有操作的單個拷貝被執(zhí)行時獲得的結(jié)果相等。
[0051] 在一些實施例中,可以從應用接收輸入。可以用多個M寄存器位置tv..來定義 大小為M的陣列,w 。還可以定義置換多項式p、從輸入產(chǎn)生z的基于輸入的矢量映 射矩陣A,以及一系列常數(shù)A = ◎。然后可以執(zhí)行一系列操作,每個操作提供中間結(jié)果, 所述中間結(jié)果存儲在從M寄存器隨機選擇的M寄存器中。然后可以基于一系列中間結(jié)果將 最后結(jié)果從存儲最后結(jié)果的最后M存儲器提供到應用。存儲在M寄存器中的每個中間結(jié)果 可以具有在將中間結(jié)果存儲到對應M寄存器中之前應用于中間結(jié)果的單獨編碼。應用于中 間結(jié)果的不同編碼可以從多個不同編碼當中隨機地選擇。類似地,可以或可以不對應于用 于將中間結(jié)果存儲在M寄存器中的編碼的不同編碼可以應用于存儲在M寄存器中的中間結(jié) 果。新的M寄存器可以按照需要被分配,例如僅當根據(jù)圖著色分配算法需要時被分配。
[0052] 在一些實施例中,產(chǎn)生至少第一值a作為輸出的第一操作可以被執(zhí)行,并且使 用a和第二值b將第一變量X編碼為aX+b??梢允褂胊X+b作為輸入來執(zhí)行第二操作 ,并且可以執(zhí)行使用a和b的解碼操作,之后a和b可以被丟棄。值b還可以是第三操作 Afq的輸出。使用Mvi和/或!的不同執(zhí)行實例,不同編碼可以用于編碼為aX+b的多個輸 入值。可以基于一個或多個常數(shù)被存儲在存儲器中的預期時間來從存儲在計算機可讀存儲 器中的任何值中選擇這些值。類似地,包含用于執(zhí)行操作和gCK/的指令的現(xiàn)有計算 機可讀程序代碼可以被修改為將X編碼為cX+d,并且當執(zhí)行時g(K)至少產(chǎn)生第一值c??梢?針對至少一個X執(zhí)行操作治,并且c和d后續(xù)被丟棄。
[0053] 在一些實施例中,至少一個基函數(shù)可以與用于現(xiàn)有應用的可執(zhí)行程序代碼摻合。 例如,可以通過用基函數(shù)替換現(xiàn)有程序中的至少一個操作,來將基函數(shù)與可執(zhí)行程序代碼 進行摻合。還可以通過應用本文所公開的技術中的一種、一些或全部來將基函數(shù)與現(xiàn)有應 用進行摻合,所述技術包括分式、變量相關編碼、動態(tài)數(shù)據(jù)識別編碼和/或交叉鏈接。所使 用的基函數(shù)和/或任何摻合技術可以包括或者可以排他地包括這樣的操作,所述操作與它 們與之摻合的現(xiàn)有應用程序代碼的部分中呈現(xiàn)的操作是類似或不可區(qū)分的。因此,攻擊者 可能難以或不可能在沒有基函數(shù)的情況下從將在現(xiàn)有可執(zhí)行程序代碼中呈現(xiàn)的那些中區(qū) 分基函數(shù)和或混合技術操作。
[0054] 在一些實施例中,可以提供一種計算機系統(tǒng)和/或計算機程序產(chǎn)品,包括處理器 和/或存儲指令的計算機可讀存儲介質(zhì),所述指令使得所述處理器執(zhí)行本文所公開的一種 或多種技術。
[0055] 此外,因為本文公開的與基函數(shù)一起使用的算法可以是相對靈活的和開放式的, 所以它們允許軟件多樣性的高度靈活的方案,并且改變的實例與使用白盒密碼可能的情況 相比更深地不同。因此,它們遠不易受自動攻擊的攻擊。只要可以迫使攻擊需要人參與,就 是高度有利的,因為我們可以新建受保護代碼的實例并且數(shù)據(jù)可以以計算機速度被自動生 成,而僅可以以人類速度來損害它們。
[0056] 在考查以下附圖和詳細描述后,本發(fā)明的其他系統(tǒng)、方法、特征和優(yōu)點對于本領域 技術人員將是或者將變得清楚。意圖將所有這樣的附加系統(tǒng)、方法、特征和優(yōu)點包括在本說 明書內(nèi)、在本發(fā)明的范圍內(nèi)以及受所附權利要求的保護。
【專利附圖】
【附圖說明】
[0057] 在附圖中: 圖1示出了根據(jù)本發(fā)明的用于加密函數(shù)的交換圖表; 圖2示出了根據(jù)本發(fā)明的虛擬機一般指令格式; 圖3示出了根據(jù)本發(fā)明的虛擬機進入/退出指令格式; 圖4示出了根據(jù)本發(fā)明的標記I "木人(Woodenman)"構建; 圖5和6示出了根據(jù)本發(fā)明的標記II構建的分別的第一半和第二半; 圖7示出了根據(jù)本發(fā)明的排序網(wǎng)絡的圖形表示; 圖8示出了根據(jù)本發(fā)明的執(zhí)行函數(shù)索引的交織的方法的流程圖; 圖9示出了根據(jù)本發(fā)明的執(zhí)行控制流復制的方法的流程圖; 圖10示出了根據(jù)本發(fā)明的執(zhí)行數(shù)據(jù)流復制的方法的流程圖; 圖11示出了根據(jù)本發(fā)明的創(chuàng)建/a?區(qū)段的方法的流程圖; 圖12給出了用于實現(xiàn)本發(fā)明的標記II保護系統(tǒng)的處理流程圖; 圖13示出了本發(fā)明的標記III實現(xiàn)的區(qū)段設計的不規(guī)則結(jié)構的圖形表示; 圖14示出了可以用本發(fā)明的標記III實現(xiàn)中的T函數(shù)劃分實現(xiàn)的粒度的圖形表示; 圖15示出了本發(fā)明的標記III實現(xiàn)的總體結(jié)構的圖形表示; 圖16示出了本發(fā)明的標記III實現(xiàn)的防御層的圖形表示; 圖17示出了本發(fā)明的實現(xiàn)中的海量數(shù)據(jù)編碼的圖形表示; 圖18和19示出了本發(fā)明的實現(xiàn)中的控制流編碼的圖形表示; 圖20示出了本發(fā)明的實現(xiàn)中的動態(tài)數(shù)據(jù)識別編碼(mangling)的圖形表示; 圖21示出了本發(fā)明的實現(xiàn)中的交叉鏈接和交叉俘獲的圖形表示; 圖22示出了本發(fā)明的實現(xiàn)中的上下文相關編碼的圖形表示; 圖23給出了用于實現(xiàn)本發(fā)明的標記II保護系統(tǒng)的處理流程圖; 圖24示出了在本發(fā)明的實現(xiàn)中的海量數(shù)據(jù)編碼或動態(tài)數(shù)據(jù)識別編碼的典型使用的圖 形表示; 圖25示出了闡述本發(fā)明的實施例尋求解決的主要問題的示例性框圖; 表25給出了對軟件邊界問題進行分類的表; 圖26示出了未受保護形式的、白盒保護的以及用本發(fā)明的系統(tǒng)進行保護的示例性軟 件系統(tǒng)的框圖; 圖27示出了對比由黑盒安全性、白盒安全性以及在本發(fā)明的示例性實施例下的保護 所提供的保護級別的柱狀圖; 圖28示出了對比密碼、哈希以及根據(jù)本發(fā)明的示例性基函數(shù)的處理流程圖; 圖29示出了本發(fā)明的基函數(shù)可以如何用于提供安全通信管道的示例性框圖; 圖30示出了根據(jù)本發(fā)明的用于函數(shù)索引的交織的處理流程圖; 圖31給出了用于實現(xiàn)本發(fā)明的標記I保護系統(tǒng)的處理流程圖。
【具體實施方式】
[0058] 本文公開的實施例描述了可以允許保護計算機系統(tǒng)的可能暴露于攻擊者的方面 的系統(tǒng)、技術和接收機程序產(chǎn)品。例如,已經(jīng)在供最終用戶操作的商品硬件上分發(fā)的軟件應 用可能遭受在執(zhí)行期間具有對代碼的訪問的實體的攻擊。
[0059] -般而言,本文公開的實施例提供用于創(chuàng)建基函數(shù)的集合以及以以下方式將那些 函數(shù)與現(xiàn)有程序代碼進行集成的技術:使得對于潛在攻擊者而言難以或者不可能隔離、區(qū) 分或者接近地檢查基函數(shù)和/或現(xiàn)有的程序代碼。例如,本文公開的處理可以接收現(xiàn)有程 序代碼并將基函數(shù)與現(xiàn)有代碼進行組合。也可以使用諸如分式、動態(tài)數(shù)據(jù)識別編碼、交叉鏈 接和/或如本文所公開的變量相關編碼的各種技術來組合基函數(shù)與現(xiàn)有代碼,以進一步摻 合基函數(shù)與現(xiàn)有代碼?;瘮?shù)和其他技術可以使用計算上與現(xiàn)有程序代碼使用的那些類 似、相同或不能區(qū)分的操作,這可以增加潛在攻擊者區(qū)分受保護代碼與應用的保護技術的 難度。如本文將描述的,這可以提供這樣的最終軟件產(chǎn)品,其與使用常規(guī)保護技術可能的情 況下相比對于各種攻擊是更有彈性的。
[0060] 如在圖25中所示,本文公開的實施例可以提供用于若干基本問題的解決方案,這 些基本問題在要保護軟件免受攻擊時出現(xiàn),所示基本問題諸如軟件邊界保護、高級多樣性 和可再生性問題以及保護可測量性問題。
[0061] 軟件邊界問題可以組織成五組,如表1中所示:外皮問題、數(shù)據(jù)邊界、代碼邊界、受 保護數(shù)據(jù)與受保護代碼之間的邊界以及受保護軟件與安全硬件之間的邊界。
[0062] 表 1
【權利要求】
1. 一種方法,包括: 選擇字大小W ; 選擇矢量長度N ; 生成可逆狀態(tài)矢量函數(shù),所述可逆狀態(tài)矢量函數(shù)被配置為對w元素字的N矢量進行 操作,所述可逆狀態(tài)矢量函數(shù)包括多個可逆操作的組合,其中所述狀態(tài)矢量函數(shù)接收至少 64比特的輸入并提供至少64比特的輸出,并且所述狀態(tài)矢量函數(shù)中的步驟的第一部分在 z/(r)上執(zhí)行線性或仿射計算; 使用第一編索引技術對所述狀態(tài)矢量函數(shù)中的步驟的第一部分編索引; 使用第二編索引技術對所述狀態(tài)矢量函數(shù)中的步驟的第二部分編索引; 在現(xiàn)有計算機可執(zhí)行程序中選擇至少一個操作以進行修改;以及 修改所述現(xiàn)有計算機程序以取代所選擇的至少一個操作而執(zhí)行所述狀態(tài)矢量函數(shù)。
2. 如權利要求1所述的方法,其中,所述第一編索引技術和所述第二編索引技術中的 每一個控制從由以下構成的組獨立選擇的操作類型:if-then-else構造;switch構造;元 素置換選擇;迭代計數(shù);元素旋轉(zhuǎn)計數(shù);以及函數(shù)索引的密鑰索引。
3. 如權利要求1或2中任意一項所述的方法,其中,所述狀態(tài)矢量函數(shù)中的步驟的第三 部分中的每個步驟包括非T函數(shù)操作。
4. 如權利要求3所述的方法,其中步驟的所述第三部分中的每個步驟是從由以下構成 的組中選擇的操作類型:函數(shù)索引的加密鑰的按元素旋轉(zhuǎn)以及函數(shù)索引的加密鑰的子矢量 置換。
5. 如任何之前權利要求所述的方法,其中,所述可逆狀態(tài)矢量函數(shù)包括多個可逆操作 的串接。
6. 如任何之前權利要求所述的方法,其中,w是從由以下構成的組中選擇的:16比特、 32比特以及64比特。
7. 如任何之前權利要求所述的方法,其中,w被選擇為主計算平臺的默認整數(shù)大小。
8. 如任何之前權利要求所述的方法,其中,字大小w是N矢量的內(nèi)部字大小的兩倍。
9. 如任何之前權利要求所述的方法,還包括: 生成所述可逆狀態(tài)示例函數(shù)的逆,所述可逆狀態(tài)矢量函數(shù)的逆包括所述多個可逆操作 的每個的逆的串接。
10. 如任何之前權利要求所述的方法,還包括: 從由以下構成的組中選擇用于所述可逆狀態(tài)矢量函數(shù)的密鑰類型:運行時密鑰、生成 時密鑰以及函數(shù)索引的密鑰。
11. 如權利要求10所述的方法,其中,所選擇的密鑰類型是運行時密鑰,所述方法還包 括: 修改所述狀態(tài)矢量函數(shù)以接受提供密鑰k的運行時輸入。
12. 如權利要求10所述的方法,其中,所選擇的密鑰類型是生成時密鑰,所述方法還包 括針對密鑰K部分地評估所述狀態(tài)矢量函數(shù)。
13. 如權利要求10所述的方法,其中,所選擇的密鑰類型是函數(shù)索引的密鑰,所述方法 還包括:針對所述多個可逆操作A的每一個,提供用于可逆操作的相關聯(lián)逆的密鑰J?,。
14. 如任何之前權利要求所述的方法,其中,所述狀態(tài)矢量函數(shù)是至少部分通過多個矩 陣操作來實現(xiàn)的。
15. 如任何之前權利要求所述的方法,其中,所述第一編索引技術和所述第二編索引技 術中的至少一個控制多個操作,所述多個操作包括根據(jù)排序網(wǎng)絡拓撲執(zhí)行的隨機交換。
16. 如權利要求15所述的方法,其中,所述排序網(wǎng)絡拓撲是從由以下構成的組中選擇 的:Batcher網(wǎng)絡、Banyan網(wǎng)絡、完美混洗網(wǎng)絡以及Omega網(wǎng)絡。
17. 如任何之前權利要求所述的方法,還包括: 用第一編碼機制對至所述狀態(tài)矢量函數(shù)的輸入進行編碼; 其中,所述狀態(tài)矢量函數(shù)中的每個操作被適配和配置為當至所述狀態(tài)矢量函數(shù)的所述 輸入用不同于所述第一編碼機制的第二編碼機制編碼時操作。
18. 如權利要求17所述的方法,其中,所述第一編碼機制將所述輸入編碼為aM+b,其中 a和b是常數(shù)。
19. 如權利要求18所述的方法,其中,M是可逆矩陣。
20. 如權利要求18或19中任意一項所述的方法,其中,所述第二編碼機制當應用于所 述輸入時將所述輸入編碼為cN+d,其中c和d分別是不同于a和b的常數(shù)。
21. 如權利要求20所述的方法,其中,N是可逆矩陣。
22. 如任何之前權利要求所述的方法,其中,在所述現(xiàn)有計算機可執(zhí)行程序中的所述至 少一個操作和所述狀態(tài)矢量函數(shù)使用計算上類似的運算。
23. 如任何之前權利要求所述的方法,其中,修改所述現(xiàn)有計算機程序的步驟還包括向 所述狀態(tài)矢量函數(shù)和所述現(xiàn)有計算機程序的組合應用從由以下構成的組中選擇的至少一 種技術:分式、變量相關編碼、動態(tài)數(shù)據(jù)識別編碼以及交叉鏈接。
24. 如權利要求23所述的方法,其中,所述狀態(tài)矢量函數(shù)和實現(xiàn)所述至少一種技術代 碼中的每一個使用在計算上與所述現(xiàn)有計算機程序中給出的那些類似的運算。
25. -種方法,包括: 接收具有子大小w的輸入; 向所述輸入應用可逆狀態(tài)矢量函數(shù),所述可逆狀態(tài)矢量函數(shù)被配置為對w元素字的N 矢量進行操作,所述可逆狀態(tài)矢量函數(shù)包括多個可逆操作的組合,其中所述狀態(tài)矢量函數(shù) 中的步驟的第一部分在Z/(2W)上執(zhí)行線性或仿射計算; 向所述可逆狀態(tài)矢量函數(shù)的輸出應用來自第一多個操作當中的第一操作,所述第一操 作是基于第一編索引技術而選擇的; 向所述第一操作的輸出應用來自第二多個操作當中的第二操作,所述第二操作是基于 與所述第一編索引技術不同的第二編索引技術而選擇的;以及 提供所述第二操作的輸出。
26. 如權利要求25所述的方法,其中,所述第二操作是基于從所述第一操作的執(zhí)行得 到的索引而從所述第二多個操作選擇的。
27. 如權利要求25或26中任意一項所述的方法,其中,所述第一編索引技術和所述第 二編索引技術中的每一個控制從由以下構成的組獨立選擇的操作類型:if-then-else構 造;switch構造;元素置換選擇;迭代計數(shù);元素旋轉(zhuǎn)計數(shù);以及函數(shù)索引的密鑰索引。
28. 如權利要求25-27中任意一項所述的方法,其中,所述狀態(tài)矢量函數(shù)中的步驟的第 三部分中的每個步驟包括非T函數(shù)操作。
29. 如權利要求28所述的方法,其中步驟的所述第三部分中的每個步驟是從由以下構 成的組中選擇的操作類型:函數(shù)索引的加密鑰的按元素旋轉(zhuǎn)以及函數(shù)索引的加密鑰的子矢 量置換。
30. 如權利要求25-29中任意一項所述的方法,其中,所述可逆狀態(tài)矢量函數(shù)包括多個 可逆操作的串接。
31. 如權利要求25-30中任意一項所述的方法,其中,w是從由以下構成的組中選擇的: 16比特、32比特以及64比特。
32. -種通過執(zhí)行第二操作來執(zhí)行第一操作的方法,所述方法包括: 通過以下來執(zhí)行所述第二操作: 接收用第一編碼A編碼為A (X)的輸入X ; 使用5'?的值對所述輸入執(zhí)行第一多個計算機可執(zhí)行操作,其中反;是第二編碼機制 B的逆,所述第二編碼B不同于所述第一編碼A ;以及 基于來提供輸出。
33. 如權利要求32所述的方法,其中,所述第一操作是對If ~/!印執(zhí)行的。
34. 如權利要求33所述的方法,其中,所述第一操作的輸出未被在外部提供給可執(zhí)行 代碼,所述第一操作與所述可執(zhí)行代碼被集成在一起。
35. 如權利要求32-34中任意一項所述的方法,其中,所述第一編碼機制將所述輸入編 碼為aM+b,其中a和b是常數(shù)。
36. 如權利要求35所述的方法,其中,M是可逆矩陣。
37. 如權利要求35或36中任意一項所述的方法,其中,所述第二編碼機制如果應用于 所述輸入則將所述輸入編碼為cN+d,其中c和d分別是不同于a和b的常數(shù)。
38. 如權利要求37所述的方法,其中,N是可逆矩陣。
39. 一種方法,包括: 對于被配置為接收輸入并提供輸出的矩陣操作,在執(zhí)行操作之前,根據(jù)排序網(wǎng)絡拓撲 來置換所述輸入; 使用置換后的輸入執(zhí)行所述矩陣操作以生成輸出; 根據(jù)所述排序網(wǎng)絡拓撲來置換所述輸出;以及 將置換后的輸出提供為所述矩陣操作的輸出。
40. 如權利要求39所述的方法,其中,所述排序網(wǎng)絡拓撲是從由以下構成的組中選擇 的:Batcher網(wǎng)絡、Banyan網(wǎng)絡、完美混洗網(wǎng)絡以及Omega網(wǎng)絡。
41. 如權利要求39或40中任意一項所述的方法,其中,對于多個后續(xù)操作中的每一個, 根據(jù)所述排序網(wǎng)絡拓撲來置換針對后續(xù)操作的輸入。
42. -種方法,包括: 接收第一輸入; 向所述第一輸入應用函數(shù)索引的交織的第一函數(shù)以生成具有左部分和右部分的第一 輸出; 向所述第一輸出應用函數(shù)索引的交織的第二函數(shù)以生成第二輸出,其中,所述第一輸 出的左部分被用作所述第二函數(shù)的右輸入,并且所述第一輸出的右部分被用作所述第二函 數(shù)的左輸入;以及 提供所述第二輸出作為對所述第一輸入的編碼。
43. 如權利要求42所述的方法,其中,所述第一輸入用第一編碼來編碼,還包括: 基于不同于所述第一編碼的第二編碼來應用函數(shù)索引的交織的第一函數(shù)和函數(shù)索引 的交織的第二函數(shù)。
44. 如權利要求42所述的方法,還包括: 用第一編碼對輸入編碼;以及 使用被適配和配置為當所述第一輸入用不同于第一編碼機制的第二編碼機制來編碼 時對輸入進行操作的操作,來執(zhí)行每個其他記載的步驟。
45. 如權利要求44所述的方法,其中,所述第一編碼機制將所述第一輸入編碼為aM+b, 其中a和b是常數(shù)。
46. 如權利要求45所述的方法,其中,M是可逆矩陣。
47. 如權利要求45所述的方法,其中,所述第二編碼機制如果應用于所述第一輸入則 將輸入編碼為cN+d,其中c和d分別是不同于a和b的常數(shù)。
48. 如權利要求47所述的方法,其中,N是可逆矩陣。
49. 一種方法,包括: 生成密鑰K ; 基于所生成的密鑰K和隨機化信息R來生成一對基函數(shù)瓜及"; 向通信管道的第一端應用基函數(shù)./r ; 向所述通信管道的第二端應用基函數(shù)逆;以及 丟棄所述S鑰K。
50. 如權利要求50所述的方法,其中,所述密鑰K是使用隨機或偽隨機過程生成的。
51. 如權利要求49-50中任意一項所述的方法,其中,所述通信管道的第一端通過在第 一平臺上的第一應用來訪問。
52. 如權利要求49-51中任意一項所述的方法,其中,所述通信管道的第二端通過在所 述第一平臺上的第二應用來訪問。
53. 如權利要求49-51中任意一項所述的方法,其中,所述通信管道的第二端通過在第 二平臺上的第二應用來訪問。
54. -種方法,包括: 接收至少一個基函數(shù); 接收用于現(xiàn)有計算機程序的應用代碼;以及 通過用所述至少一個基函數(shù)替換所述應用代碼中的至少一個操作,來摻合所述至少一 個基函數(shù)和用于所述現(xiàn)有計算機程序的所述應用代碼。
55. 如權利要求54所述的方法,還包括: 向所述至少一個基函數(shù)和所述應用代碼應用至少一種摻合技術,所述至少一種摻合技 術選自由以下構成的組:分式、變量相關編碼、動態(tài)數(shù)據(jù)識別編碼以及交叉鏈接。
56. -種計算機系統(tǒng),包括: 處理器;以及 存儲指令的計算機可讀存儲介質(zhì),所述指令使得所述處理器執(zhí)行任何之前權利要求中 所記載的方法。
【文檔編號】G06F21/52GK104335218SQ201380028121
【公開日】2015年2月4日 申請日期:2013年3月28日 優(yōu)先權日:2012年3月30日
【發(fā)明者】H.約翰遜, Y.X.古, M.韋納, Y.周 申請人:愛迪德加拿大公司