用于軟件操作中的程序流的方法和裝置制造方法
【專利摘要】本公開提供了用于在運行時間期間保護軟件程序免受攻擊的計算機實現(xiàn)的方法和系統(tǒng)的描述。所述系統(tǒng)包括用于在軟件程序的執(zhí)行期間提供期望函數(shù)的多個軟件塊和具有用于將預(yù)定的源令牌映射到目的地令牌的表的置信地址服務(wù)器。置信地址服務(wù)器耦合多個軟件塊中的每個,以便從多個軟件塊中的任何一個接收預(yù)定的源令牌,同時根據(jù)用于將預(yù)定的源令牌映射到目的地令牌的表將映射的目的地令牌從預(yù)定的目的地令牌返回到所述多個軟件塊中的所述任何一個。
【專利說明】用于軟件操作中的程序流的方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及用于軟件操作中的程序流的方法和裝置,并且特別涉及保護軟件程序 在操作期間免受攻擊。
【背景技術(shù)】
[0002] 軟件程序由多個代碼片段(例如"模塊"、"編譯單元"、"類"、"函數(shù)"或"基本塊") 組成,所述多個代碼片段均將一定的子集實現(xiàn)為總體功能的邏輯單元。在軟件程序的執(zhí)行 期間,取決于對軟件應(yīng)用的外部輸入,選擇代碼片段W便按特定的序列執(zhí)行。輸入可W由多 個源(例如,用戶、硬件、磁盤上文件、操作系統(tǒng)控制、或其他(遠(yuǎn)程)應(yīng)用)產(chǎn)生。在傳統(tǒng) 的軟件系統(tǒng)中,在軟件應(yīng)用中的代碼片段之間的控制流關(guān)系是靜態(tài)的。在運行時間確定從 一個片段到下一片段的實際程序流;然而,所有可能過渡的集合是確定的并且是在構(gòu)建時 間確定的。該意味著程序在其構(gòu)造時被約束為一組有限的控制路徑。另外,其意味著對于 代碼片段來說,一組相同的輸入始終產(chǎn)生相同的激活序列。
[0003] 函數(shù)調(diào)用中的實現(xiàn)方式
[0004] 在標(biāo)準(zhǔn)的程序化編程語言(例如C、C++、化va、Fortran等)中,函數(shù)封裝程序功 能的模塊。模塊化編程實踐包括將函數(shù)的行為綁定到具有明確定義的函數(shù)API (即,應(yīng)用編 程接口)的邏輯功能片。在函數(shù)之間的控制流出現(xiàn)在標(biāo)準(zhǔn)的調(diào)用返回堆找中。
[0005]
【權(quán)利要求】
1. 一種用于在運行時間期間保護軟件程序免受攻擊的計算機實現(xiàn)的系統(tǒng),包括: 多個軟件塊,用于在軟件程序的執(zhí)行期間提供期望的函數(shù);和 置信地址服務(wù)器,其具有用于將預(yù)定的源令牌映射到目的地令牌的表并且被耦合到多 個軟件塊中的每一個以便從所述多個軟件塊中的任何一個接收預(yù)定的源令牌,并且根據(jù)用 于將預(yù)定的源令牌映射到目的地令牌的表來將映射的目的地令牌從預(yù)定的目的地令牌返 回到所述多個軟件塊中的所述任何一個。
2. 如權(quán)利要求1所述的系統(tǒng),其中所述源令牌是包括以下至少一個的任意標(biāo)識符:數(shù) 字、存儲器地址、當(dāng)前程序計數(shù)器值、寄存器的值、存儲器地址的內(nèi)容和任意存儲介質(zhì)位置 的內(nèi)容。
3. 如權(quán)利要求1所述的系統(tǒng),其中所述目標(biāo)令牌是任意標(biāo)識符或動作中的至少一個, 所述任意標(biāo)識符或動作至少包括數(shù)字、存儲器地址、對函數(shù)的調(diào)用、從塊的返回和在通信介 質(zhì)上發(fā)送的消息。
4. 如權(quán)利要求1所述的系統(tǒng),其中所述源令牌是存儲器地址。
5. 如權(quán)利要求1所述的系統(tǒng),其中所述目標(biāo)令牌是存儲器地址。
6. 如權(quán)利要求1所述的系統(tǒng),其中所述表是表查找。
7. 如權(quán)利要求1所述的系統(tǒng),其中置信地址服務(wù)器位于以下至少一個內(nèi):請求映射的 軟件程序的地址空間、相同軟件程序內(nèi)的單獨線程、在相同計算機或設(shè)備上的單獨程序、在 安全位置中相同計算機上的單獨程序、以及在經(jīng)由通信協(xié)議耦合的遠(yuǎn)程設(shè)備上的單獨程 序。
8. 如權(quán)利要求1所述的系統(tǒng),其中所述置信地址服務(wù)器包括多個多樣源到目標(biāo)映射實 例。
9. 如權(quán)利要求8所述的系統(tǒng),其中所述置信地址服務(wù)器通過不同的和多樣實例供應(yīng)源 令牌到目標(biāo)令牌映射。
10. 如權(quán)利要求9所述的系統(tǒng),其中對系統(tǒng)的升級包括對用于映射的表的更新,用于在 不改變在多個程序塊中原始程序塊中的代碼的情況下使所述多個程序塊中原始程序塊被 繞過并且其功能被經(jīng)更新的程序塊所代替。
11. 如權(quán)利要求1所述的系統(tǒng),其中所述多個程序塊被組織到多個域中并且每個所述 域構(gòu)成軟件程序的多樣實例,并且可以在不改變軟件程序中的任何代碼的情況下使用所述 置信地址服務(wù)器來使所述多個域之一活動。
12. -種用于在運行時間期間保護軟件程序免受攻擊的計算機實現(xiàn)的方法,包括: 將軟件程序劃分成多個軟件塊,用于在執(zhí)行期間提供期望的函數(shù);以及 在置信地址服務(wù)器中: 從所述多個軟件塊中的任何一個接收預(yù)定的源令牌; 將預(yù)定的源令牌映射到目的地令牌;以及 根據(jù)用于將預(yù)定的源令牌映射到目的地令牌的表來將映射的目的地令牌從預(yù)定的目 的地令牌返回到所述多個軟件塊中的所述任何一個。
13. 如權(quán)利要求12所述的方法,其中所述源令牌是包括以下至少一個的任意標(biāo)識符: 數(shù)字、存儲器地址、當(dāng)前程序計數(shù)器值、寄存器的值、存儲器地址的內(nèi)容和任意存儲介質(zhì)位 置的內(nèi)容。
14. 如權(quán)利要求12所述的方法,其中所述目標(biāo)令牌是任意標(biāo)識符或動作中的至少一 個,所述任意標(biāo)識符或動作至少包括數(shù)字、存儲器地址、對函數(shù)的調(diào)用、從塊的返回和在通 信介質(zhì)上發(fā)送的消息。
15. 如權(quán)利要求12所述的方法,其中所述源令牌是存儲器地址。
16. 如權(quán)利要求12所述的方法,其中所述目標(biāo)令牌是存儲器地址。
17. 如權(quán)利要求12所述的方法,其中所述表是表查找。
18. 如權(quán)利要求12所述的方法,其中置信地址服務(wù)器位于以下至少一個內(nèi):請求映射 的軟件程序的地址空間、在相同計算機上的單獨程序、在安全位置中相同計算機上的單獨 程序、以及在經(jīng)由通信協(xié)議耦合的遠(yuǎn)程設(shè)備上的單獨程序。
19. 如權(quán)利要求12所述的方法,其中所述置信地址服務(wù)器包括多個實例。
20. 如權(quán)利要求19所述的方法,其中一個置信地址服務(wù)器實例向置信地址服務(wù)器的另 一實例供應(yīng)源令牌到目標(biāo)令牌映射。
21. 如權(quán)利要求20所述的方法,其中對系統(tǒng)的升級包括對用于映射的表的更新,用于 在不改變在多個程序塊中原始程序塊中的代碼的情況下使所述多個程序塊中原始程序塊 被繞過并且其功能被經(jīng)更新的程序塊所代替。
22. 如權(quán)利要求12所述的方法,其中所述多個程序塊被組織到多個域中并且每個所述 域構(gòu)成軟件程序的多樣實例,并且可以在不改變所述軟件程序中的任何代碼的情況下使用 所述置信地址服務(wù)器來使所述多個域之一活動。
【文檔編號】G06F21/57GK104350504SQ201280069448
【公開日】2015年2月11日 申請日期:2012年2月10日 優(yōu)先權(quán)日:2012年2月10日
【發(fā)明者】R·克爾滕, J·埃梅特, C·利姆 申請人:愛迪德加拿大公司