TW200905559A - System and method of interlocking to protect software-mediated program and device behaviours - Google Patents

System and method of interlocking to protect software-mediated program and device behaviours Download PDF

Info

Publication number
TW200905559A
TW200905559A TW097106229A TW97106229A TW200905559A TW 200905559 A TW200905559 A TW 200905559A TW 097106229 A TW097106229 A TW 097106229A TW 97106229 A TW97106229 A TW 97106229A TW 200905559 A TW200905559 A TW 200905559A
Authority
TW
Taiwan
Prior art keywords
code
expression
software
program
constant
Prior art date
Application number
TW097106229A
Other languages
English (en)
Inventor
Harold Joseph Johnson
Yuan Xiang Gu
Yongxin Zhou
Original Assignee
Cloakware Corp
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 Cloakware Corp filed Critical Cloakware Corp
Publication of TW200905559A publication Critical patent/TW200905559A/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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • 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/1066Hiding content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Stored Programmes (AREA)

Description

200905559 九、發明說明: 【發明所屬之技術領域】 本申請案是2007年2月23曰提出之美國專利申請案,案號 11/709, 654的分割案。 本發明係有關於-種軟體中介之程式與元件行為的保護互鎖之系統及 方法’其大致是關於編譯器(compiler)科技;尤其關於阻擋⑵控制流程 與程式碼編輯為基礎對軟體的攻擊。 【先前技術】 以下的文獻參照許多外部資料;為方便參考起見,這些資料將以下列 代號來指稱: 1. 0. Billet, H. Gilbert,C. Ech-Chatbi,白金擊 AES 建f 之齋碍分好, sac 2004--密碼學專區研討會會議記錄,2〇〇4年8月,校訂論文,Springer (LNCS 3357). 2· Stanley Τ· Chow, Harold J. Johnson,與 Yuan Gu. /¾窟政我禮,編 碼,美國專利6,594,761. 3. Stanley T. Chow,Harold J. Johnson,與 Yuan Gu.您貧遗我禮禮·叙 诺夜編碼,美國專利6,779,114. 4. Stanley T. Chow,Harold J. Johnson,與 Yuan Gu.贫貧改我禮,編 碼,美國專利分割案6,842,862. 5. Stanley T. Chow, Harold J. Johnson, Alexander Shokurov. 禮.编碼戽分好,2004.美國專利申請10/478,678,公告 U.S. 2004/0236955 A1. 6. Stanley Chow, Yuan X. Gu, Harold Johnson,與 Vladimir A. Zakharov, 200905559 ¥ 序列式電腦程式控制流程模糊化的方法,isc2Q0\-負說安全,% 4黾風 際大會會議記錄(LNCS 2200),Springer, 2001 年 10 月,pp. 144-155. 7. S. Chow, P. Eisen,H. Johnson, P.C. van Oorschot,冷含齋碎學身 ,SAC 2002密碼學專區研討會會議記錄,2002年3月(LNCS 2595), Springer, 2003. 8. S. Chow, P. Eisen, H. Johnson, P.C. van Oorschot, Z)i?M 應席之白立 des建f,DRM 2002第4屆ACM數位權利管理研討會會議記錄,2〇〇2年 11 月 18 日(LNCS 2696), Springer, 2003. 9. Christian Sven Collberg, Clark David Thomborson,與 Douglas Wai
Kok Low.灰廢我禮穿全你模與必沒翁,美國專利6,668,325. 1〇·禮龙展 J里邊灰專法’演算 2.107p. 67 A.J. Menezes,P.C. van Oorschot,S.A. Vanstone,肩房齋碼學f紙CRC出版社,2001 (訂正第5 刷),出版商同意下可下載,網站http://www.cacr.math.uwaterloaca/hae/ 11. 之#茏歐廣I德廣裏法,演算 2.221p 82,AJ Menezes,p.c. vanOorschot,S.A.Vanstone,應席费碍笋f眾,CRC出版社,2〇〇ι(訂正第 5刷),出版商同意下可下載,網站 http://www.cacr.math.uwaterloo.ca/hac/ 12. DES, § 7.4, pp. 250-259, AJ. Menezes, P.C. van Oorschot, S.A Vanstone’應席齋碼學手册,CRCPress 2〇Q1(訂正第5刷),出版商同咅下可 下載,網站 http://www.caei*.math.uvvateri(X)_ea/lme/
13. 鐵5,運算9.51 ρ· 347 A.J. Menezes,P.C. van 〇orsch〇t,s A
VanSt〇ne,應居密碼學手紙CRC出版社,2001 (訂正第5刷),出版商同咅下 200905559 . 可下載’網站http://www.cacr.math.uwaterloo.ca/hac/
運算 9.53p.348AJ. Menezes, P.C. vanOorschot,SA
Vanstone,應席齋碍學手滞,CRC出版社,2001 (訂正第5刷),出版商同意下可 下載,網站http://www.cacr.math.uwaterloo.ca/hac/ 15. 美國國家標準與技術中心(nist),遠廢费碍學襟孕(aes),fips 出版197,2001年11月26曰. http://csrc.nist.gov/publications/fips/fips 197/fips-197.pdf 16. Harold J. Johnson, Stanley T. Chow,Yuan X. Gu.廢蔚攻我邀— 乂 #|存.編碼,美國專利申請 10/257,333, being U.S. publication 2003/0163718 Al. 17. Harold J. Johnson,Stanley T. Chow, Philip A. Eisen.雪廢與邀之岸 冷盆攻擊保護肩巍戽才法,美國專利申請10/433,966,目前是美國公告 2004/0139340 A1. 18. Harold J. Johnson 與 Philip A. Eisen. g廢我禮之势冷金攻擊保 護肩.麵身才法,美國專利申請11/020,313,目前是美國公告200/0140401 A1 (美國專利申請部分延續案10/433,966). 19. Harold Joseph Johnson, Yuan Xiang Gu, Becky Laiping Chang,與 Stanley Taihai Chow.教辦硬禮,編碼技痺,美國專利6,088,452. 20. Arun Narayanan Kandanchatha, Yongxin Zhou. 元典二之#歲整教診算肩,絲與才法,美國專利申請11/039,817,目前是 U.S·公告 2005/0166191 A1. HOHmxXh,電腦程式設計之技術,卷2:半數值演算,% 版, 200905559 .ISBN 〇-2〇1-89684-2, Addison-Wesley, Reading,麻州,1997. 22. #龙歇廣里德濟鼻法,演算χ p料2,D. E.雪廢濟式 以之麵P,卷2 ..雜道廣裏第3版,ISBN〇_2〇1_89684_2,
Addison_Wesley,Reading,麻州,1997.
23. T. Sander,C.F. Tschudin,身冷疗影资碍爹,pp 215--224, 1998 IEEE 安全與隱私研討會會議記錄 24. T.Sander,C.F_Tschudin,疔彰代理之,惡東啟護,pp 44„6〇, Vigna,行動代理安全(LNCS 1419),Springer,1998. 25. Sharath K. Udupa, Saumya K. Debray, Matias Madou, ' A ^ 工裡激/6裡4碣,第12屆反向工程工作研討會,2〇〇5, ISBN 〇_7695_2474_5, pp. 45--54. 26. VHDL-Online, http://www.vhdl-online.de. 27. David R. Wallace.聲#我邀的J·麵與才法,美國專利6,192,475. 28. Henry S. Warren, » Addison-Wesley, ISBN-10: 0-201-91465-4; ISBN-13: 978-0-201-91465-8; 320 頁,2002 年7月 17 日出版 29. Glenn Wurster, Paul C. van Oorschot, Anil Somayaji. 查碍我禮贫玫:您W之尽邊攻擊,2005 IEEE安全與隱私研討會,IEEE電腦 協會出版,ISBN0-7695-2339-0,pp. 127-138. 二十世紀末期的資訊革命已經給予未受大眾認同的商品(c〇mm〇dities) 日益增加的重要性,例如資訊以及處理、儲存、運用該資訊的資訊系統。 該些種資訊系統所必備的一部分,乃是操縱該系統的軟體和軟體實物 (entities)。 200905559 作雜獅倾料始細謂路。請注意軟齡式本身並不被執 行軟體私式必須以某種方式加以處理,無論儲存為包含以某種高階程 式語言所寫的雜·文本檔,或者包含纟於碼或ELF格式可連結檔的文 本檀,才能轉換為可執行的實物;其中該ELF格式可連結麵要由鍵結程 式(iinker)加以修訂以及載人器的載人方能執行。因此,吾人藉颜一辭意 指某種可猜或可㈣(invGeable)、提供行為,而最終由職某種程式語 言程式碼獲致某種可執行形態的實物。 以我禮為中"」-辭所指’不只包含程式與元件具有經由儲存於正 常記憶體(普通軟體)或EPROM齡)之類唯讀記憶體内的程式為中介的 行為,同時也涵蓋使用諸如VHDL的棚祕語謂設計的「電子電路」 咖㈣。硬體規格語言·L的網路上資料[26]說明如下 硬體說明π δ有-大_ ’就是具有實際執行程式碼的可能性。勒^ 上脅禮就Ί „立兀裡4V#占[斜體字插入]。以執行模擬即可發現正式模 型的碼(Coding)錯誤或祕的概念錯誤。在模擬巾,模型以不同輸入值所作 模擬的反應都可以加以觀察並分析。 接著該文舉出VHDL與表a所示程式概念兩者的各種對等價 (equivalences)。 因此VHDL料制來纽—個可以執行和除錯域,或者更詳盡的 正式硬體說K最終產纟—個硬體祕,此魏之行献射恤㈣程式 行為但執行速度總是比程式快上多倍。於是’在現代世界中,軟體、物體 和硬體之建置間的界線已經變模糊了;而我們可以將電路視為以諸如 200905559 / 財行4㈣路,如由伽錄合適之硬體說明程 式語言如VHDL核理絲雌式輯產生者,絲絲銳實際上 設計。該侧電路絲源程式都有市售錢叫隨供應則行的 電路是一個教禮實物或組件。 為的 以軟體絲叙實_面_鐵—咖___ 伽㈣。讀_基礎之實物(舰)辦由提供者㈣純受者;收受者懷 有各種目的’有些目的鱗是與提供者存在差異,甚或完全鮮對提供者 的敵意。舉_說,散叙軟體或料、_驗止未經難之使用或 未付款使用峨計,但是收受者可能意欲齡射的程式雜,或阻撞軟 體中的某鮮魏記錄使服度,赠減少或翁收受麵付提供者之費 用,也可«欲継取核權之資訊,廉健之再散佈並竊得高額利 潤。 軍事硬體SBE間的戰場通訊方面也有類似的考量;或其他屬企業界 的資料管理⑽的SBE,触企業設法符麵邦齡例如雌立紐過的 聯邦準則,包括:沙氏_S〇X)所㈣下之猶料、驗漢法案(GLB) 所涉及消費者金融資訊上之必要隱私權、或者驗餘可攜性與責任法案 (HIPAA)所著重之病患醫療記錄隱私權、或者針對聯邦電齡統安全要求 之符合而麵日大的美_家鮮與技術局⑽ST)鮮的综合性的聯 邦資訊安全管理法(FISMA)。在符合此等標準上,須要_㈣網際網路 的外來攻擊’以及經由區域網路歧接進出SBE或舰代管(hQsting)電腦 200905559 的内部攻擊。 為了提供SBE該種針對内、外部攻擊的防護,將軟體加以掩蔽以及防 篡改(obscuringandtamper-proofmg),對各種的企業則是當務之急;實施的 方法為藉由軟體或者實行軟體的裝置(devicesemb〇dyings〇^ware);該軟體 置會暴1:於許乡人前’其巾可能有人為自身目的設法破壞軟體或裝置 的正常功能,或竊取其中所實施的智慧財產或其他機密。 VHDL概念與程式上的等價 VHDL概念 實物 架構(architecture) 組態 程序(process) 套件(package) 程式庫(library) 程式上的等價 介面 建置(Implementation)、行為、功能 模型鏈(model chaining)、結構、 階層(hierarchy) 並行(concurrency)、受控制事件(event controlled) 模組設計(modular design)、標準解決辦法 (standard solution)、資料類型(data types)、常 數(constants) 編譯(compilation)、目標碼(〇bject code) […摘自 http://www.vhdl-online.de ] 已有各種以掩蔽軟體或賦予防竄改而保護軟體的方法,見p,3,4, 5, 6, 7, 8, 9, 16, 17, 18, 19. 20, 27]等例。 11 200905559 軟體防竄改能有各種方式;可以藉增加其若干部分的互倚性 (interdependency)而使之在被修改時積極地變易碎:[2 3 4 6 ^ ^ θ 27]各揭露各種引料同織這㈣碎性的方法和軟體或許會配置某 些機構,使正f的除·式失效。也可魏置料完整邱她㈣)驗證機 構,定期檢查程式碼的總和檢查碼以確定目前執行中的軟體是屬提供者所 原設計之型式’並且於發生總和檢查碼不符時發出遭竄改的診斷結論,或 如ArxanEnforcelT™以原始碼取代被修改碼(碼治療)。 這些各式錄,驗鎌健、或題透财介崎細保護機 制,必須正確無规執行’使設計㈣紐贱_鱗。假如攻擊者能 成功使這些㈣機制失效,_雛胃碎性可齡被齡,雜性驗證可 能停擺,或者當程式碼被變更時無法治療。 除了掩蔽之外,還有_鱗保護被移_有財法,見於[2, 3, 4, ^ 16,17,18,19,27] ^ A.an E„f〇rcelT-[19]t 定種類的雜流娜(daMGWnetw_作賴的默,稱為辦 此交織貫穿整她式碼,賴麟增進其内靖蝴度。明顯 地,如此的方法由於不少的程式碼係僅是為保護目的而存在而無關於軟體 所執订的正常鮮,故有程柄錢崎的增加。對卵],倾則採取碼 址蝴軟體功能片段多對多對映(伽_的型式。這與α_ ΜοΜΤ™的碼治療方式相同,需要可觀的碼重複(相同或對等碼資訊在 軟體建置裡出現二次或以卜 、 • 使程式碼得到多對多對映或碼治療機制保 )不加麵地作應用,這和產生碼長度上可躺額外量(㈣細幻。 12 200905559 、在[27]中,藉多維度空間的幾何轉換將資料定址(addressing)設計成互倚,而 且長期下來會變異,_龐大又慢、可是掩蔽、又易碎得多的定址碼。 廣泛基礎(即大多數軟體碼具有的情形)、區域性應用(即應用於某整個 碼區域(coderegion)所有的合適碼)的互倚性增加,如於[2,3,4,6, 16,⑼, 和較不廣泛基礎之[27]所見者,或於[3, 6, n,18, 19 27]中所見其他形式或
ArxanEnf0rceIT™中的碼冗贅,其額外量有多有少,相差甚大,端視受保 護程式中軟體區域的比例,以及施於這些區域的防護強度。 菖然,額外量能令人忍受,有賴於使用的文本。即使執行解譯過 (interpreted)的程式碼邏輯比執行經最佳化編譯的程式碼邏輯慢上至少幾 十倍是一個事實,計算環境仍然可能廣泛使用各種腳本(scripting)語言如
Peii、Python、Ruby、MS-DOS™.BAT(批次檔)檔案、shell 腳本等等。 不過’在使用這些語言的前後文當中,能夠快速方便更新該腳本内的碼邏 輯,比所產生多出的額外量來得重要。 [2, 3, 4, 5, 6, 9, 16, 19, 20]中所述以及[27]部分涉及多種的保護,其 重要價值乃在於廣泛基礎(雖然[27]為得到完全有效,無論明示或暗示都 需求不少有迴路(l00ping)的程式)和區域性應用:其自然用途是為保護絕 大部分t介SBE行為的程式碼(c〇de mediating the behaviors)對於各種到 處存在對SBE的攻擊而言,這不失為一種很有用的保護型式,也是一種無 需仔細找出軟體各部分中何者最易受攻擊的保護型式。 可是,我們有時針對一小組特定SBE行為會需要最高保護,為考慮 到效能和其他額外量卻令我們非得共同去預防進一步產生額外量以免行為 13 200905559 跑^了這一小組,或減小對其他行為的保護等級不可,以確伴效能、大小 軟體倾有_麟成本受到_。這輯形建細最有限制之 區域性應用方式來使用本創作。 有時若大幅額外量能被接受,唯對於某些特定_行為還須要很強 強度遠超過區域性應財式產•保護。在這崎财,建議同 時使用本創作與-種或以上區域性應用方法。 通常,目標的—組特定舰行為係藉由特定'局部、軟體元件 (el_tS) ’或馳元件常式(咖丨_、諸如特殊迴路的控繼構、等等的 互動’在軟體中介SBE行為細内建置之。 ’9, 16, 19, 27]所說明現有形式的保護,都提供高度有用 的保護;但是喊频财斐,它墙紐顺録财介料和元件行 為间度女全、目標化、特定、局部性的保護問題。 [7, 8, 17, 18]所提供的保護乃針對一軟體之某特定、局部性部分(亦 即某密碼(cipher)的實施加密或解密),但是本申請書所講解的多種方法能應 用於當密碼触碼學祕(eryptogmphie hashes)實叙建紐料⑽特定形 式運算,故這些方法乃是舰基礎而泛基也就是說,它們只應 用於相當特定雜的行為ϋ有了本說明書所綱的強化,這些方法 能被賦予用途以滿足後述之需求。 [27]所提供的保護雖不盡然針對如[7, 8, 1?,18 ]者之特定前後文,仍 是限定於生存範圍的變數分割完全(liveranges 〇fvariabiesare weu partitioned)的情境’和定址有限制(constraints 〇n娜聰㈣紙贿如㈣的 200905559 • 前後文(如在迴路中,或在類似型式的重複行為中)缺乏[2 3 4 5 6 9 I9]的廣泛應用性。可是這種保護十分適於在陣列與向量上執行科學運算 或包含諸如81形計算許多計算的元素(computed elemems)的運算的程式 碼。當然’對於圖形,保護或許尚待討論:假如要顯示資訊,那麼它需要 保護與否’則不明確。不過’假如該種運算是為加數位浮水印而執行,男 麼使用[27]來保護諸如浮水印演算的智慧財產權,或者本身的性質可能屬 合適。 基於以上所述,可以看出對—組針對的特定_行為之中介軟體, 其某特定、局部性部分,需要有_提供有力倾的方法;因而能保嘆一 , ^M2,3,4,5,M5l6,19,2〇527]f^^ 遵之區域性應用方法的額外量,但保護尤強過這些方法,且可應用於沛, 8, 17, 18]之狹隘基礎方法更多不同的行為。 【發明内容】 本發明疋-種軟體中介之程式與元件行為的保護互鎖系統及方法,此 Z一種編蝴逆㈣分叙綠,其巾,杨計算式或陳述 疋否文保護,或者運算式或陳述係用來掩蔽控制流程或使之防竄改, ^該計算式麵述_來掩蔽_定址雜竄改,或者計算式或陳述係 ^^t«(largeb〇fe 侧、述幾種目的(計算保護、控制流程保護、資料紐保護、 制之細祕_齡,財的紐係級傭、修改、或編 馬該计异式或陳述, 之程式碼執行時失效。 之程式碼,則會引起其他基本區塊 15 200905559 本方法大致上包括以一混合數學與位元單元布林⑽⑻㈣之第 二表示式替換軟體程式之該種運算式或表示式裡的至少—第—個常數、數 學式、概喊、或输响姆㈣,繼編表示式是 否為源碼或二進位碼之型式,的-些步驟;該第-常數絲示式(㈣伽tor ^油㈣二表示式簡單’且第二表示式係嶋-表谢所求得之 值或變數’其中該第二表示式其混合數學與位元單元布林表示式的評量 (—Μ1⑽產生—飾存該第-常數或表示式之㈣細第-常數之原 錄或第―麵式結果之原始值,即是採取-種編碼型態 ,也就是說用作 ,值而此新值可藉使用—保存資訊(即對射间的解碼函數 (―)還原為第-常數或表使式之原值;於前者情況下,第二表示式其 p數子與位4&布林表示式乃使用若干個數料式(⑽碗s)轉換第一 兩數或表不式而由第一常數或表示式獲得;於後者情況下,第二表示式其 混口數學與位凡早几布林表示式乃運用結合依據數學等式的轉換 改第-常數或表示式,而由第—常數或表示式獲得。 干工或謂另法,於執行前述步微,域行峨得之第二表示式或第二表 不式之-子絲如ubexp聰_ 步雜換—次❹次,使得該方 ^不“-次應用於原始常數或表示式或其子表示式。原始常數或表示式之 換可型式為b 之數學等式執行之,其中&為係數,& 為位兀早你可觸單(simple)或複雜(。卿時S為原始常數或表示式。 後原始常數或表示式的轉換可依照-個或更多由對一型式為 16 200905559 =五的等式作普通代數操作(manipulation)導出的數學等式執行之,其 中《,為係數’ A是位元單元式』是原始常數或表示式。再者,原始常 數或表示式的轉換可依照—個型式為Σ、=。的數學等式執行之,其中 化是係數υ位元單元式,可為簡單或複雜。再者,原始常數或表示 式的轉換可依照—個或更多由對—型式作普通代數操作導出 的數學等式執行之,其h是絲,„纽元單元式,可賴單或複雜。 再者’原始常數或表示式_換可接續於舰數學等式—H+1所作轉換 之後,其中X是-變數;藉以上進一步使結果之程式碼更模糊 (obfbscating)、複雜。 第一表示式可為-有條件之(conditional)比較布林式;第二表示式可接續 ;依…布林等式x = 〇 lff (如㈣)—1} <〇所作轉換之後,其中X為— 變數,藉以更進—步使結果之程式碼更模糊、複雜。第二表示式可接續於 依照布林等式,=丨iff U = G所作轉換之後,其是變數; 藉以更進—步使結果之程式碼更模糊、複雜。第—式可為—布林不等式比 較式,第二表示式可接續於依照布林等式文<少iff (㈣ν(Η,))Λ(χ_· <〇所作轉換之後,其^與^是變數;藉以 更進-步使败蝴_、_。再者,第—麵_一布林不 等式比H第二表示式可接續於依照布林等< x<>;iff β (( >〇+屬<〇所作轉換之後,其中項少是變數;藉以更進 -步使結果之程式碼更翻、複雜。 再者’第-常數或式可以是位元單元布林常數或表示式,且數學等式 17 200905559 的开7式可以是= £其中α,為係數,e;•冑位^單元式,可為簡單 3、雜£:疋產生(yielding)第_常數的式,或石是具有由包括下列步驟演 澤來之數學等式的第一式: (&)综合(summarizing)第一表示式或一產生第一常數的式,係一變 數ί之式,作為一二攔之真值,左攔&,右攔户,夕為 —^種結合(conjuncti⑽)的表列〇ist),各結合是各變數的邏輯⑶^或 —以補數(complementingX即邏輯_)這些變數部分或全部而得自各 變數邏輯am/的結合,使得各種可能的該結合剛剛好出現一次,右攔 p是一 2<個布林(代表薅的〇或代表彦的1)值的表列,其中表之 任列中之配對包括當式五為真(於右欄尸内)時之一結合(於左欄 S内)及其布林值; (b)隨機選擇一 Z/(2)上的可逆y X 2,矩陣」(an invertible y χ 2, matnxd 〇verZ/(2)) m之任一棚c與真值表右(布林值)棚尸相 同時,把一隨機選擇的d之其他欄的非麵(n〇ntrivial)線性組合加到 d之C欄,使得J之(:攔與真值表右攔户不同,故』是或變成一 無任何攔等於P的隨機選擇可逆矩陣,此矩陣於是不僅在z/(2)上可 逆,於任何n> 1時亦在z/(2”)上可逆; ⑹解z/(r)上線性矩陣等式狀=/),其中π是依據本創作修改 的程式碼於目標執行平台上運算的自然模(naturalm〇dulus),V之各 元素(element) V,.係矩陣等式一長度2,之解行(s〇iuti〇nc〇hmm)向量 "的變數,其中ht/,或等價地(〇r equivalently),對於卜丨,…,2,, 200905559 疋、姐矩陣等式之解,"之各元素",係—位元的常數; 並且 + =五,其中灸=2'—1。 又,數學等式之形式可為Σ^=〇其中力是係數,是位元單元 ,可為簡單或複雜’具有由包括以下步驟之方法求得的數學等式: 子於ί個變數的集合,選擇_個那μ固變數的灸個位元單元布 h .·集合,使得當吾人建構這些灸個位元單元布林式的 真值表時,其中第z個真值表係位元單元布林式^的真值表, 且有兩欄’左攔&與右欄Λ,其左攔&是—2,個結合的表列,各 ”係那Μ固變數之各個的邏輯and(亦即邏輯的_) 或是一對那/ 個變數之部分或全部做補數而(即邏輯_從那,變數之各個的 〇 「卿遽撕’得到的結合’使得各種可能的該結合剛剛 人其右攔P,.是一 2,個布林(代表翻〇或代表算的〇 值的表列,其中表之任一列中之配對包括當式Q為真(於右欄Λ内) 、卜 (於左攔&内)及其布林值,則此A個真值表之Α:個值 ^ ,々在 Z/(2 )上是線性相依(linearly dependent over Z/(2")); 也就疋說有M轉零魏% ",q選自環(_)ζ/⑺使得向量 ΑΛ+Α户2+...+^成為全零向量;並且 (b)導出等式 =0 Jitb β 二=1,,—〇其中々,.·.,叫疋灸個非零係數,βι,…, 办疋個位布林式,作為此事實的結果。 自動化的方柯能規定等式是在—初始、設定階段中獲得以及健存, 19 200905559 2中’第:絲娜-·(或—數輪式)之储,是於後續階 &藉匹配(峨㈣戌—故询—版絲输祕階段中獲得 之等絲實施。並且無論使㈣射函數作編碼與否,以選取—隨機選擇之 匹配等式來執行代替。初始階段可未必每次應用此方法時均執行之,或許 執行:次或偶而執行;而第二階段的匹配與代替可於每一次應用此方法時 均執仃之’因此計算密集的初始階段能稀疏執行;而計算需求較低的第二 階段則頻繁執行。再者,初始階段可於建構一編譯輯似編譯器之程式翻 譯工具的建構過程當中執行一次,且於其中,第二階段可由作用於被保護 軟體上工作的編譯器或似編譯器之程式翻譯工具依前述方法來執行。編譯 器或似編譯器程式可以是一專事模糊的編譯器或是一賦予軟體防寬改功能 之編譯器或舒其所處歡程式翻化加上喊改舰的編譯器;且藉由 使用賦予模糊化及防竄改功_編譯器為賦予模糊化及賴改功能以及增 強模糊化及喊改魏之目的解師福_之—常數^切為第一常數 或式’藉而放大模糊化及防竄改功能之職予。藉依據第一階段中所得到並 儲存之等式,並應用於第二階段中在賦賴糊化及防竄改功能之編譯器的 操作當中,代替第一常數之表示式或第一式。 本方法可規定來源碼中之起碼一個第一常數、數學式、布林式是一產生 向量值結果的表示式,其常數或變數包含—個或辣向量值變數,且其中, 第二表示式其混合鮮與位元單元布林絲式替該起碼—個第—常數、 數學式、布林式絲源碼巾採取編碼形式植元單元柿麵式的值,其 中編碼形騎採狀編碼係藉树算料—常數、鮮式 '布林表示式或 20 200905559 位元單元布林絲式結果之__而得,此贿係—t . 建構方法包括以下步驟: ^ 生函數f,其 ⑷選取數(numbers) „、w和v,使得心切; ㈨選取有卿nitefle餐r啊別是有限體剛、 、GF(2v)的特定表示; (C)選取β和《4不小於P且户、《均不小於3 . ⑷隨機選取1對1輪數咖G,“l:p -中P V、A:均至少為2且女是2的乘幕,且 於2M ; ⑷藉個位元單元布林運算選取_。邮之輸出的切個 位元,來隨機選取-線性函數2 : ^ y及―得自2之函數^ 4 {〇山…,叫其中卜广或另採他法,直接選擇一亂數於函數$ {〇,1,…,A>1}上; (0由以上建構之組件(components)建立函數/,其中γ:Λρ5y 之計算係藉Ml於由只取,之輸人向量元素最左元所得之 向量户計算/所有的輸出向量元素最左w個位元,以及藉應用 於由只取/之輸入向量元素最右M個位元所得之向量0計算/所有 的輸出向量元素最右v個位元,使得由Z(P)供應的輸出位元與由 供應的輸出位元穿插(interleaved)於整個輸出中;並且 (g)藉計數/之1接l(l-by-l)投映(projections)出現的頻率來測試 /’以決定/是否高度非線性;並且若非線性,則重複前述建構,直 21 200905559 到獲得一高度非線性函數/。
,本方法可規定線性函數1 ·· π — π及G〇,Gi,...,Gw : pP 1對卜同時枝對射’使得y及其反函數都是為對射高度非線 =編碼。再者,線性函數I: π — Μ和GA,.“,C^ : F4 F可非 1對同時亦可最大轉可分隔’使得輸人冑訊平均分散於輪出 j使彳寸/,右/係對射則其反元素尸亦然,是最大距離可分 之馬度非線性函數。 【實施方式】 請看第-個最佳實施例,其中本創作得到一軟體的來源碼,並將之分割為 同的、輯基本11塊。③些基本區塊依據其内容與其在程式之邏輯和控制 流程中之位置經過修改,以增加或產生不同基本區塊之間的依賴 (P ence)基本區塊之修改,其效果是延伸㈣邊g)某些基本區塊的 輸出,同時她地,延伸其他對應之基本區塊的輸入。延伸的輸出含有原 始資訊以及程式碼修改帶來或插入的額外資訊的輸出。延伸的輸入需求原 始基本區塊的固定(叫㈣輸入以及延伸輸出的額外資訊的固定輸入。 以下就本創作之幾個最佳實施例的說明,參考以下整份說明所用觀冬 和術語的解釋會有更清楚的瞭解。 “ 我們定義顯細_吻為一系統、機構或裝置各部分間的連繫 (_W射⑽某些部㈣運算會受其他部分獨算咐 響,使得若竄改X -或多個部分的行為將會引致—或多個部分高度可能的 故障或失效。 竄改時是積極性 響特定SBE行為_轉碎性提 也就是,系統的某些淑奢部分之間的連繫,在遭到 易碎。本解的目的是要為5|發該種會影 22 200905559 、有力針對性的工具(general,powerfol,targeted facility)。 *文擊者竄改某程柄資料或程式碼時,其動機通常是以舣方式修 程2的仃為。舉例來說,若一應用程式(叩p—)檢查某項資料例如密 轉貝料心(token),而該韻料必縣加峨證後制者找使用此應用 程式,則攻擊者鱗會想製稍《式絲版本她之-碰本,唯新版 仃雜驗,故可以不受關地且不受檢查地進人此細程式的 多種工具。類似情形,若—應用程式為計費目的計量使用情形,那麼攻擊 麵_修_輯,狀執行同—是制計量表卻記錄很 =甚或不錢,因此減少或者消除制此程式的_。若—應用程式 疋式用版本,為只能正常執行—有限時間而建構,以期有人購買正常版本, =麼攻擊者鱗想要做試舰本使雜時間無限難,藉以迴避講買正 常版本的費用。 因此竄改軟體或程式資料的一個特徵,乃在於竄改是針對某目標的活 錄=在_特定行為改變。假如攻擊者只是要摧毁應雌式,那麼有好 方式可以達成,無麵的攻擊:舉例來說,侧除該應用程 仃檔,或者藉隨便改變該稽之位元隨便修改該應用程式使之高度可 =法錢執行。本發明的保護並非針對防止這類有限目標的攻擊,而是 以特疋行為改變為目標的較精密的攻擊。 由物因她繩㈣麵峨娜雜刚性,會藉 二切為改變無法達絲阻遏攻擊者的嘗試:況且程式碼改變會使 '、、仃為變得混亂、失去目的’故攻擊者不能得到所欲結果,反而達到單 23 200905559 ‘、梢破壞’因而無麵·到所欲的利益。 本發明提供多種方法與系,统,藉以於中介一 SBE行為,並有一或多 個部分z,和雜Z互鎖之一或多個部分續倾中,或多個部分 代替之,提供一或多個部分尤的原有功能,而义,是與—或多個部分广 互鎖的,提供一或多個部分r的原有功能,使jr與r的互鎖呈現基本、 一體、隱藏以及前後有關的面貌(aspects)。以下就這些必要的有效互鎖性 質,和達成這些性質的自動化方法作加以說明。 參考表A,表中列舉本說明書所用到之符號及其意義。
表A 符號 彦4 B 位元集合={0,1} N 自然數集合={1,2,3,K} Ν。 有限基數集合={0,1,2,Κ} Ζ 整數集合={Κ,-1,〇,1,Κ} X:-y X使得少 jciffy 若且唯若少 x|| y 元組(加P〗es)向量x與y的序連(concatenation) XAy x 與的邏輯或位元 xvy 1與:^的邏輯或位元包含or X㊉少 x與Y的邏輯或位元互斥w -ix or X X 的邏輯或位元《οί 24 200905559 x'1 X倒數 f{S} MF /中的集合S的投影 f(x) = y x 代入MF /得到_y且唯 /0) 4 少 x 代入MF /可能得到少 /W=丄 X 代入MF /無解 MT 矩陣Μ之轉置 \s\ S之集數 \v\ 元組或向量F的長度 M 數η之絕對值 (x,,K ,xk) 有元素的ΧρΚ,χ^Α:-元組或Α:-向量 [m,,K ,mk] MFs , Κ , % 的 Α:-聚合(aggregation) (m^K ,mk) MFs wpK,%的A:-聚集(conglomeration) {XpK,·^} x1;K ,¾的集合 {x|C} χ使得C的集合 {xeS\C} S使得C集合元素;c的集合 Δ(χ,少) X至:μ的漢明距離(=相異元素位置數) χΛ χ5*λ 集合&ΚΛ的笛卡兒積 mx οΛ omk MFs mpK,% 的合成(composition) xe S x是集合51—元素 S^T 集合*S包含於或等於集合Γ χ,,Κ ,χΑ之總合 25 200905559 GF⑻ Zt{k) ids extract[a,/>](x) extract[a,6](v) interleave^, v) 有《個7G素的Galois體(=有限體)整數模數A:的有限環 集 5 S的專式函數(identity function) 位70字串x中《至6位置位元體(bit-field) (extrac和,6](vi),K,extract[a,Z)]⑹),其中 v = (Vi,K,Vt) (Μι||ν!,…,Wk||vk),其中 “ =(Wl,K,i/t) 且 v =(ν”Κ,ν々) 表Β則列出本說明書所用到之縮語及其意義。 縮語
AES
agg API
BA BB CFG DES DG 表B 全語 局級加密標準(Advanced Encryption Standard) 聚合(aggregation) 應用程式程序介面(application procedural interface) 布林算術(Boolean-arithmetic) 基本區塊(basic block) 控制流程圖(control-flow graph) 資料加密標準(Data Encryption Standard) 有向圖(directed graph) 26 200905559 dll GF IA iff MBA MDS MF OE PE PLPB RSA RNS RPE TR SB SBE so YHDL 作者寫“:- 動態連結程式庫(dynamically linked library)
Galois field (=有限體) 中介聚合(intervening aggregation) 若且唯若(if and only if) 混合布林運算(mixed Boolean-arithmetic) 最大距離可分隔(maximum distance separable) 多元函數(multi-fimction) 輸出延伸(output extension) 部分評量(partial evaluation) 點線性分割對射(point-wise linear partitioned bijection)
Rivest—Shamir—Adleman 餘數系統(residual number system) 逆部分評量(reverse partial evaluation) 防竄改(tamper resistance) 代換盒(substitution box) 以軟體為基礎之實體(software-based entity) 共用物件(shared object) 非常高速積體電路硬體描述語言(very high speed integrated circuit hardware description language) ’’來表示「逆得」,寫“ iff ’’來表示「差i隹去」。 27 200905559 表A收入許夕本說明書中使用的記號,表b收入許多縮語。 h 由數{Sets,Tuples:,Relations, and Functions)。繁暮 集口 S作者寫|5·|來表不s的隸〔_^祕糾(即集合^之元素個數)。 另’以|«丨代表一數„之题爲£僅。 作者寫加一^呦表示元素為〜^叫之集合。^^^ Μ,Κ,%全部都是獨特,則丨十)亦寫响表示所有滿 足條件c形式竭實體的集合,其中c通常是依賴X的條件。 笛卡兒積、兀組、向量(CartesianPr〇ducts Tuples肩〜㈣。A與 疋集s則疋/與5的笛卡兒積,亦即全部(β,幻配對的集 其中d (即α是a一元素)且(即办是忍一元素)。因此吾人得到 ㈣° 一般上’對於集合认,-個㈣ΧΛ叫的元素是 (W,K⑷形式的g組,其中對於/ = 12κ,々,㈣。假如ι,κ⑷ 是,元組,我們寫⑷表示,的長度(此情形下,I㈣,亦即此元組有1 個元素位置(elementpositions))。對於每一個χ,吾人考慮I為等於⑻長 度為的7G組’其唯一的元素是X。假如一元組的全部元素均屬於同一個 集合,則稱之為該集合上的冷# (av_r_thatset) 假如《與V是二個元組,那麼小是長度丨小Μ的元組,係由設一 個包含M之依順序元素然後和v之依順序元素的元組而得到:例如 (a,6,c,c/)H (x,y,z) = (a 6,c,d x,y,^。 雜認縣餘好顧奴财縣:對於集合从c,⑽)xc的 元素看起來像(㈣,),然而娜xC)社素看起來像_,♦射— 28 200905559 b e B ’且 c ς c。ia i丄 相似地,Jx⑺x5)xC的元素看起來像(〇,汍Λ) (〇其中 —,Ά“,且ceC。 β 70 (ms) ' (Relations, Multi-functions (MFs), and 細伽^。一 H固集合的笛卡兒積νΛ吟上的iary獅(其中必須 選擇&>2)是>(壬伯人 了集〇 /?βχΛ %。我們時常會對二遠位你如咖關係有 ’、趣亦ρ對於—個集合不必不同)#關係,對於該種二 進位關係,我們宜 情以來顯不㈣d。例如,R是實數集合,則二進位 關係
<QRxR 實數的配對’疋所有實數的配對(以的集合,使得X小於,而且當我 們寫X<少時,表示氏永<。 田 5的記法表示心χ5,亦即及是一㈣上的二進位關 係。此記法與以下函數所用之記法她。其用意乃是表示該二進位關係解 釋為一個讀咖__,此乃一計算的關係減法沖e油行㈣ ab_Cti_fac卿酬〇n)不必是確定性的(此_恤邮^ -輸入’還-輸出至集合及。若是一函數,此計算必須是翁控的,而若是 - MF,料財錢確的,目_^數外在事件可齡影響某程^ 内之執行進度的軟體,這是較佳的數學模型。」是辦A的離, 万是MF Λ的廢择;。對任何集合吾人定義 W”3,ez: —㈣喝.啊是I在及下的赠㈣㈣。對一 _ Uoc 5且,我們寫_ = 6表示順卜⑼,寫及⑷‘表示 29 200905559 . k及({α}} ’寫Λ(α)=丄(讀為「/?(α)無摩表示無 beB:-(a,b)sR 〇 對一二進位關係Uoc 5,吾人定義 ^={φ,α)\(α,δ)^Κ}. 及_1是夂%反函數。 對於二進位關係Ua 5和C,吾人以 5oi? = {(a,c)|36e5:-ai?6and05c}. 來定義S 〇U a C。 S〇R瓦S與r的合成。一進位關係的合成有結合律(associative)也就是 說,對於二進位關係,〇5〇/?)〇ρ = 5〇(Λο0。因此對於二進位關係 札’吾人可任意寫尺〇Λ岣岣,不用括號,因為不論把這些放在 何處’此表示式意義都不變。請注意 一1…广川八} 於其中我們先取X在&下的映像,魄再取該映像在&下的映像,以此 類推,直到倒數第二個映像“下的映像,這歧以左邊合成中之“成 反順序投像(im_g)作業的原因,正如右邊投像式中尺的寫法。〆 la , ι,κ,(,則Am%]是二進位關係: Λ·4χΑ xAk a 5,xA xBk 且 雄l,K,\)为ι’Κ,α) iff [及,,ΚΑ]是of &,ΚΛ•的衮合。 R'.:Axy.Ky.Ama Bi ^,《,則^凡尺又丨是二進位關係: 30 200905559 及::4 χΛ χ 4» α 戽 χΛ χ ·0„ 且 及(χι,Κ,凡)iff /?.(χ„Κ ,xm) -^y, fori = l,K,η. <A,K,D 是 Ι^χ,Rk.的聚禁。 我們寫/:Zcc β表示y是一由』至5的函數,亦即,::/α 5:-對 任何aeZ且’若/(α)_^,則你)=6。對任何集合s,%是每 一個xeS時ids〇) = x的函數。 有向圖、控制流程圖、支配點(Directed Graphs, Control Flow Graphs, am/Dow/mtory。夺冷屬(dg)是有順序的配對(ordered pair) G = (iV,d) 其中集合#是藏點褰辦„〇办_⑽),二進位關係是鉑嚴痛 (arC-relati〇n)l直線關係(ed炉rdati〇n)。iGUi弧良直線。 DG G = 中的路瘦(ραί/ζ)是節點(α,κ,%)的序列(sequence) 其中《,+ ejV ’ ’· = ι,κ,^:,且(njej ,/ = ι,κ,λ:-1。A-120 是路徑的 長及。可能的最短路徑,其形式為(„,),長度為零。若且唯若路徑中無節 點出現兩次,也就是說若且唯若無索引(indices)u,使w =〜, 則路徑(ηι,Κ,〜)是#潜環的。對一集合S吾人定義V=SxAxS其中 5出現r次且X出現卜1次(故sl=s),又定義所 有可能長度的S的所有笛卡兒積的無限聯集。於是,c中的每一個路徑是 的元素。 在有向圖(DG) G = (at,a中,若有一起點為^終點為y的路徑,則一 個節點jeiV可以由一節點xeiV達到。(於是每一個節點都可以由其本 31 200905559 身達到。)在N中達到-個節‘點x,是由χ可達到之點的集合。 若且唯若以下一條件中有一者遞迴(recursively)成立,則g中有兩 A少被連接起來: • G中有一 X與y均出現的路徑,或 • G中有一節點㈣使得χ與z被連接且少與增連 接。
(若Xj則單項(singleton)(即長度一)路徑w是從x到竭路徑故G 每-個節點都連接到它自己。)若且唯若每一個G的節點配對 x,_ye7V都被連接,則一 DG G = (iV,j)是一破達邊的DG。 對每-個節點丨晰,永冲中以λ為起點以某另一節 點為終點的孤的個數疋郎點χ的於次;對每—個節點 n |{x|(x,>〇e4|,J中以某一節點為起點以少為終點的弧的個數是節點少的 入次(in-degree)。一節點neN的次是n的入次與出次的總和。 一 DG G = (iVj)中之一源(麵rce)節點是入次為零的節點,— DG G = (iV,J)中一#從如峡)節點是出次為零的節點。 一 DG G = (iV,4 ,若且唯若其有一個獨特(distinguished)源節點 n0eiV,由此源節點可達到每一個節點„eAr,則DG G = (a^)是一個# 制流程圖{control-flow graph) (CFG)。 設G = (MJ)為一有源節點n。的CFG。若且唯若每一個始自 終於少的路徑都包含X ’則節點Xe jV戈配降^節點#。(注 意:依此定義以及前述,每一個節點都支配其本身。) 32 200905559 ’若且唯若每—始自nQ終於 元素的路徑都包含/之一元素,則一非空節點集合配一非空節點 集合ra。(注意—單節點支配另—單節點的情形’這是此定義的特殊情 形,其中iii=m=i。) 2.3.2幾何結構(Algebmic Structures)。z代表所有整數的集人 ^弋 表所有大於零整數的集合(冷屬·表(wa/wra/m^^s))。27〇w)代表某此敕數 ㈣的整數模數之環W ’只要,是質數,z/㈣=GF㈣,此為整數 模數m的伽羅瓦體(Galoisfiled)’ B代表㈣的集合则,其可能等同 環 Z/(2)= GF(2)的二元素。 事4丫勤·;。#4·(例如:絲心㈣.⑽)麵她中扮演關 鍵的角色:如果對二表示式x,r,吾人知道x寸,則可以以κ之值代尤 之值,而且可以以r的計算代义的計算,及之亦然。 該基於代數等式的代替對模糊化重要無比,從一事實可明顯看出, 那就是[2, 4, 5, 7, 8, 9, 17, 18, 19, 2〇, 23, 24, 27]中每—例都或多或少使用到 此種代替。 _有時我們希望那些本身就包含等式的布林表示式寫成等式(identify)(以 符號表示關係)(eqUate)。舉例來說,在最尋常的電腦算數中, X = 0 iff (-〇 v (-太))-1) < 〇 (^«##^tbfe(signedc〇mpar^ ^ identities) 於是包含iff的表示式也是等式,明魏,是餘樣伽祕細 良布林等式。 33 200905559 ^1,1 mi,2 Λ Wlc' mi,\ m2,2 ^ W2c M MO m, mrl mr2 A mrc 來表示一〃xc 列、c行)矩陣M,其轉置標示為其中 ΜΛ 〃l,2 Μ Λ m22 Λ Μ Ο ^2,c Λ *2,1 V,2 Μ 故,例如
Ζ/(2”)戽雲羼鼻廣關係(Relationship ο/Ζ/(2") 在B”上,此即所有長度位元向量的集合,依例為2之補數定點算術(flxed point arithmetic)的電腦定義加法(+ )和乘法(·)(見[21])。於是 (B”,+,·)是2”階(order)的有限二滅農環(加力⑦〇餘& (modular逆數環z/⑺與(B”,+,·)是同構⑽脚啦),這是位元字⑼㈣ 長的電腦上的典型電腦定點算術的基礎(加、減、乘、除、餘)。 為方便(見。人可以〃來寫〜(χ乘以少),亦即可以藉並置來 表示乘法,這是代數裡習見的作法。 因此,我們使用二個環,並且可換 』立換即使我們能視(Β”,+,.)為包含介 '、 間有符號的數。吾等能忽略(BV,.)的元素佔據上 述有符號的範圍抑或從〇到 (含)幅度的範圍這個問題而蛊妨,豆理 由乃是無論將數解釋為二之輔叙+ ^ , 八 complement signed numbers) 34 200905559 或者為二進位幅度無符號數(binaiymagnitudeunsignednum㈣算術“+” 與“對中位元向量的作用(effect)是完全相同的。 是否將數以有符號來解釋,這個問題只對於不等式運算子㈣u卿 operators) <’>〇,時才出現;這意謂吾人應事先決定如何處理一些特定 (_cu㈣數:解釋前後不一致會產生不正常的結果,正如以c或c++ 譯器錯誤使用有付5虎和無符號比較指令(嶋_咖instmcti〇ns)會產生 不正常的程式碼。 ~ -Ψ-^t βι (Βη, ν,Λ, -,) (Bitwise Computer Instructions and ,)y>在B上,此係所有長度位元向量的集合,一有位元字長 k常有仇元單元and( λ )、v )和n〇f(,)。於是 ’ 疋♦林代數(B〇〇kana〖gebra)。在向量長度為一的中, 〇是離㈣’ 1是鄭_〇
表C 結合二進位結果 (Conjunction Binary Result) x Ay ας 000 1 ΧΛ 歹 Λ2 001 〇 ΧΛ^ΛΖ 010 ο XAyAZ Oil 1 ΧΛ^Λ2 100 1 X κζ 101 1 ΧΛγΛ2 110 1 35 200905559 x/^yAz 111 \ xv(_y㊉f) 的真值表 ν)定義Μ與 IX。例如, 對於任何二向量„,ve『,吾人以啦 V 吾 的位疋單元® )。為了方便,吾人通常以3f代表 人tr*T將此等式表示為ΜΦν=(ΜΛΡ)ν(^_Αν)。 由於向量乘積_tiplicati〇n)位元單元-(八)在布林幾何中是符合 結合律的,(βη,㊉,Λ)則是一個環(稱為夺#環)。 ° 為_看出一(Β’ν,Λ,,)上之表示式的值,我們 可使用-個如表C所示之士真值表顯現叫高)所有可能的布林 (Β之讀)从♦在最左攔「結合」㈣細㈣,我們以唯⑽㈣ W”)(結合)列出各種咖的狀態,其中,各變數剛好只在正常⑺形式抑 或互補⑺形式出現-次,其結果就是算(即〇。在中棚「二進位」 (Binai7) ’以二進位之數物嘱資訊,各位元由左至右代表由左至右的 變數的值。在錢「結果」,列域換絲“㈣)憎定魏值的結 心少七之值分別為011, 果。舉例來說,若^Λ2為真(即1},則 xv(y㊉歹) = 〇ν(1 ㊉Τ) = 〇ν(1 ㊉〇) = ι.。 乘法反元素航矩陣之有紙Pre_e _处贿⑶ ofMultiplicative
In數識伽㈣Matfices)。對於任何質數,雖在〇ρ⑽中,每一個元 素有-個乘法反元素(亦即對每—個叫似,…丨,存在一 ” = 1),不過_一任意值時的一般非真,即使女 是質數的乘冪(primepower)時亦非真。舉例來說,於朗中,”#且 36 200905559 r>l ,由於沒魏產生1的杨丨料數,細―偶躲 有乘法反讀。再者,二個麵》*一 U7C素具 財_零之__可鱗。舉㈣說, 由於8mod8 = 〇故2.4 = 0 〇衿舳但… 右缝7 ㈣,其結果[价)上的矩陣可能 有-非零之™,观無咐。,矩陣 在z/(2”)上非可逆,即使其行列式為 列式是奇數’則其為可逆。 1 〇 0 2 一 上的矩陣,若且唯若其行 Z/(2 ) I式之%上矩陣(赚“晴㈣另—個重要性質如下。若一 矩陣:在Z/(2 )上疋可逆,則壬何整數心假如我們以加入”―所 個〇位几在兀素的_進位表示(repres_ti〇ns)開始位置創造一新矩陣 :,藉以保存這些元素以二進位數形態之值,不過增加「字大小」從,位 '疋❹在Z/(2)上可逆(由於增加計算的字長,於計算行列 式時不會影響奇/偶性質)。 通常如上由#推導的不同的矩陣#,吾人不會明白提起該推 導,相反的’對於-如上的z/(2„)上矩陣#,細就簡單地稱π,⑺ 上,,’其中的用意是吾人所考慮的是藉增加#之元素「字大小」所得到的 矩陣# ’也叙摘們有效地忽略元素元_的長度,只以整數值考慮 素口此在提到从‘ζ/(2„)上,,時,我們有效地記註經過修改而具有 適合域(d〇main)z/(2")的字長(元組)的似。 M(Combining the Arithmetic and Bitwise 加_。我們要稱由結合代數系統(B„,+,·)⑽二的補數環)與 37 200905559 (Β’ν’Λρ)(位元單元⑽疙含w及饥^下長度〃的位元,向量的布林 )斤j 1的早系統(single system)為夺'•林鼻衡代如·c ge6ra)(BA代數)’並以BA[w]來表示此長度”位元,向量上之特別 BA代數。 BA[1]是一特殊情形,因為+與㊉在此BA代數中是完全一樣 (有時稱為無進位加法」(“add without carry”),在BA[1]中,向量 長疋一,故+不會受進位位元的影響。) 吾人知道在z/(2”;^Wn + (_v),以及_v = 7+l卜的2的補數" 其中1標示向量(0,0,K,0,1)eB«(即二進位數〇〇A〇leB")。因此二進位 +,~,·運算子與一元(unary)-運算都是以2”)的一部。 假如一 ΒΑ[η]尚的表示式包含從ζ/(2”)的運算+,_,以及從 的運算,那麼我們將稱之為滿合夺杯-鼻漱表示式(ΜβΑ表示 式)。舉例來說’ “(8234x)vy’與+(⑽Λχ)”都是ΜβΑ表示式,可以 用C,C++或Java ™分別寫成“8234*χ卜X”與“〜x + (y*z& x)(通常,整數算術表示式以程式語言寫,都在BA上寫成[32],例 如.針對多數個人電腦並有BA使用愈來愈多的趨勢_例如IntdItanium ™ 〇 ) 假如一 BA[„]上表示式五具有如下形式 k 五=Wi + c2e2 +Λ + 认 i=l 盆Φ η 麼我們將稱£為碟沒MBA表示式。 38 200905559 多韻;yp咖㈣吻。多項式是一表示式,其形式為 烟(其令,對任何pad。若"ο, 則β是多項式的4。多項式可以被加、減、乘、除,而這些運算的結果 本身也是多項式。若卜〇,則多項式是__亦亦即其僅包含純量 常數㈣ar_nt) ν若^,❹項式是#績卿猶㈣。吾人 可以有有限環與體上的多項式。 一個非常财項故補寫紅錢轉常财料縣積,那它是 不爾>▲.吻。不可約多項式扮演的角色有如質數在整數中所扮演者。 變數X無特射要性:至於特殊多赋,是一佔位符 〇WhQlder)。當龄人可以-絲代p以料多赋也就是說變h 只在吾人代以某物時才有意義。 我們可由-多項式之係數㈣向量(认㈣.來辨認該多項式。 GF.Z/p)上的多項式由於係數的㈣)向量就是一位元字串 (bit-stnng) ’且能有效地在電腦上表示之㈣職_)(例如高達7 之多項式能表示成8.位祕元組),故在密碼學裡有特殊的意義;加法與 減法完全〜樣;兩個此種以位元字φ表示的多項式,使驗元單元φ (互 斥w·)來計算。 有限體(Finite Fields)。對於任何質數/;,Z/⑻不只是餘數整數 衣也疋餘數整數禮,它疋由单單的有限環微分(differentiate(j)得到,因每 —個元素都有一個唯一的反元素。 在該種體中的計算’由於須要許多餘數運算(remainder 〇perati〇ns)來限 39 200905559 制電腦上模(modulus)的結果,且該運算很慢,故很不方便。 對於任何質數p與整數,存在一有,個元素的體,記為 GF(〆)。此體可透過多項式計算執行對一次”之不可約多項式求模數,由模 數環(modularring) z/(P)上〇至(含)次的多項式產生。該體在以電腦 的計算上,對於p = 2的情形變成更可解(tractable),故多項式能以位元字串 表示之而加法/減法此以位元早元㊉表示之。舉例來說,高級加密標準 (AES)[15]是以對GF(28)上的計算為基礎。因為GF(r)上為線性的函在 對GF(2)上也疋線性的函數此一事實’亦即這些函數可以使用位元矩陣來計 算,故GF(r)上的矩陣運算被變得更方便。現代的電腦,幾乎每一部都是 可運算南達機器字(machinew〇rd)長的位元向量(通常%或⑷的「向量 機器」,便於以該類位元向量的計算。 2·3·3.部分穿)「户母。雖然部分評量非吾人為產生 通用(’"a1)、低額外量、有效互鎖以應SBE之約束性保護之所 須’但是部分評量與本創作之方法深切_,瞭解部分評量也有助於瞭解 這些方法。 之新抑#(PE)乃是以凍結(freezing)某其他娜(或依此法』 生之MF)之某些輸入來產生一個挪。說更正式點,設以…z . 一 。對綠以的,,其柳續卿是該mf 的拍 導’使得對任何如與zeZ,咖)铺作相。為顯示此pE ^ 係’我們也可以寫·/(.,C)。我們也可以稱由/之PE得到的MF 為一 /之抑卿E)。也就是說,粉㈣—辭可議雜導過程 200905559 抑或其結果。 a在8、前後文及其在軟體内之保護,上述7和容都是程式,v 疋程式輪日入,更專用的程式g是從較一般的程式/基於假設/之最 右輸入會"^數",透過,⑽預評量計算而推導所得。V可包含释 意量的資訊。 ’ 〜為提供1確之例,我們來思考編譯的情形。若無pE,對於〆編鋒 =式續們可能有⑻u其中績所有來源瑪檔案之集合,万係目 h碼檔案之集合。於是e=p(5)可表福譯_ 〃之應驗目標满樓 案”產生目標碼觀”(我們把,當作_函數,並非只是一多元濟 數’因為我們通常要編譯器是確定性的)。 接著’假設有-很-般的編譯器厂其輸入一來源程式$,速同〆 對語意敘述:-來源語言語意敘述β和_對於所欲目標平台上可執行石馬之 語意的敘H輯驗絲源語言語驗觀譯转顧魏可執行 碼用於所欲目標平台。於是得到以其中s是來源碼檔案的 集合’ D是轉語意敘述的集合’ τ是平台可執行碼語意敘翻集合, 5是用於任何平台之目標碼__合。於是—特定編譯器就常數元組 (切βχΓ而言’是?之四p ’亦即一個由—特定(spedfic)來源語言語 意敘述與一特定目標平台語意敘述組成之對:也就是說對於某特定常數 (々)6/)><7’冲)=咖,(々))°此情形下,1(1^保持的輸入集合)是5(來 源碼檔案的集合)’ y (pe選擇其一特定元素而移除的輸入集合)是乃 (來源語意敘述集合和目標平台語意敘述集合Γ的笛卡兒積),2 (輸出 200905559 . 集合)是五(目標碼檔案的集合)。 [7, 8]裡使用了 pE :針對錄(key),部分評量細·⑶密碼网和 DES密碼叫來將錄藏起來,不暴露於攻擊者。叩,叫就其基礎方法和系 統’有更詳盡的說明。 當最佳化(Optimizing)、編譯器卩更特定計算代替一般的計算時,會執 行^,藉由決定運算元於何處會成為執行+ (nm-time)下之常數,然後以 常數或以錢人(作常財效的)運算元的更特定計絲储-般的計 算。 輸出延伸(Ou_ExtemiQn)(c>E)!i 假設有一函數 /:f/a κ。 若且唯若對每—個㈣,對某個㈣,_ =⑽,十則函數抑Π 是/的-翁麵例0Ε)。也就是說$功能等於7,此外還產生額外的 輸出資訊。 我們也可以使用射逛婀ΟΕ) 一辭來指有該種函數/後尋找該種 函數g的過程。 在函數/被以常式或其他程式片斷(fragment)形式來實施的情形 中’而S為函數/之-OE’由於尋找該種函數g的問題,其限制很鬆, 故決定一實行函數g的常式或其他程式片斷通常是很簡單的。 2.3.5·逆部分辦此/五να/wo报母。為產生通用、 低額外量、有效的互鎖用於SBE的約束性保護,吾人要來應用一基於逆部 分年#(RPE)的新穎方法。 明顯地’對幾乎任何MF或程式g::xa z,有一個極大的、包含程 42 200905559 …的集合’而對於此集合,對所有任意 式或MF /、集合y和常數 xeX,一定有§〇〇 = /(以)。 我們稱此尋找該種元組(⑽(或以此處所指過程所找到之元組) 的過程為g的逆部分好:# 。 請注意四傾向於特定且確定性的,然而赃會給無限多的替代 品(—s):對-已知§,可以有任何數目的不同元組w),其每一 個都是合格的g的RPE。 ' -比較-般的程式,尋找—個其有效率程式鱗十分難,也就 是說這侧舰做嚴。尋找—個已知—fle程式的有效率赃通常相 當容易,因域們有相當多合法騎擇,也就是說這綱題限制很鬆。 2.3.6. (ControlFl〇w Graphs) in c〇de 。在編譯器裡,如果在其包含財的執行#中,控制若不是一 定就是可能從BB f/之終點_ BB F的起點,那麼我們通常以一 控制流程圖仰⑺代表可_透過此程式的控制之流程,財-可執行碼 的私麵「直線」程式碼順序(sequenee),其有—單—起點、一 單-終點,由其起點依序執行至終點)由一圖節點表示之,並有一弧將對應 BB C/之節點連接至對應一 ΒΒ Γ之節點。這有多種進行方式: (1) •控制流程可自然地從BB C/貫徹至BB p。 舉例來說,在如了 C程式碼片斷中,控制流程自然地從BB ¢/貫徹至BB r : switch(radix) { case HEX: 43 200905559 u case OCT:
V .(2) ·控制流程可能被以-内部程序控制結構,例如whi㈣路、 if-敘述、或goto-敘述,從y引導至p 。 舉例來說,在如下C减碼片斷中,控繼織咖^敎述從义 引導至Z : switch(radix) { case HEX:
A break; case OCT:
B
Z (3) ·控制流程可能被以一呼叫(call)或回傳從^引導至F 。 舉例來說’在如下c程式碼片斷中,控制流程被以呼叫至中 的贫)從5引導^ 2 Γ & 1導至J .並且以「自呼叫至f()回傳」從d引導至匚: void f(void) {
A 44 200905559 return; } int g(int a, float x) {
B f();
C } (4) •控制流程可能被以一例外的控制流程事件從"引導至 V 。 舉例來說’在如下C++程式碼片斷中,潛在地由一個dynamic_cast 的失效來將控制從引導至r,例如一個類(ciass)A中之物件的參照的 參照 y 的dynamic_cast : #include<typeinfo> int g(int a, float x) { try {
U A& x = dynamic—cast<A&〉(y); catch(bad—cast c) {
V 45 200905559 對於-CFG w之各絲讀,『表干 #鄭晴雖節點w來表示—特定BB,該BB計算一由肋 包含之程式碼所決定請··某函數/:_,其h代表所有1 以及對函數/的輸入)之程式碼所讀及所使用可能值的集合代表戶 有《(因此以及由函數/的輸出)之程式碼所寫出可能值的集合。通常,/斤 是一函數’但是如果/使物_的輸人,例如目前—高解析度硬體時 鐘的讀取㈣福福㈣’則,是一撕而非函數。再者,某種電 腦硬體含有可能產生非決定論結果的指令,頭結果又可能使/成為一 MF而非函數。 對-整個有-CFG C,,r)與起始節,點n。的程式,吾人列心 對於程式之BB的集合的等式,也列出η。對於出現在程式起點的 ΒΒ (對C或C++程式通常是常式脱叫)此一開頭ββ)的等式,還 列出『對於控制的每個由程式之-ΒΒ至另_ΒΒ的可行轉移等 式0 有時’與其某整個程式的一個CFG,吾人可能遇到一常式的一個 CFG。在此情形,吾人視#等同於該常式的BB的集合;吾人視\等 同於出現在常式起點# ΒΒ ;視Γ等同於控制的每個由常式之—ΒΒ 至另一 ΒΒ的可行轉移。
Hi·關於 CFG 之替代解釋(Alternative Interpretations of CFGs)。在 §2.3.6中’吾人討論對控制流程圖(CFG)的標準編譯器導向觀點。然而,一 CFG所示子计算(sub_c〇mputati〇ns)間的關係,可能另有發生的方式。 46 200905559 舉例來說CFG C嘱Γ)可能代表某計算之一切綱㈣,其中切 々係計算與輸入及/或變數及/或輸出的特定子集有關的一部分。切片此觀念 應用於目標指向的程式分析,該種情形是整個程式的分析會·過多的資 源’可是若把注意力只射於-部分的計算,_部分更深人的分析就變 可行。 尤其是吾人可#-乡_multi_p_ss)甚或分赋平娜 pamlld)程式c嗔T)其中針對一切片計算會發生一 cfg c =(明, 其中該平行程式只有某些BB會包含於# (即其中#[ν),T代表當忽略 位於C巾不在子集C +的計算時#之元素間的執行細齡以 ㈣ution)。也就是說,單一過程、非平行的程式C可嵌入(embedded) 一 大型平订&式C ’使得C佔據超過—個触,不輯於^之元素内的計 异,因為c呈現的傳訊限制(messaging c〇nstraints)或其他限制,計算實質上 是循序(sequential)的。 本發明所有的方法應用於具有自然、單—過程控制方法雜式,而只 要符合本_需求,也囉地應麟較大' 包含的(eGntaining)、平行程式的 片斷。我們利用此種對CFG的替代觀點來實行§21〇 6中的諸方法。 此外’-BB㈣程式碼在一系列雲職钟實行(bodied),這些 指令指示電獄狀態。騎,—個指令會轉狀態的—小部分,而不 改變其餘的部分。-個BB也可能包含#4·。一個料本身包含一個 cro,常式之建構允許此CFG纟一個通過進入常式狀態(引數 (argUments))初始部分的呼叫來執行,呼叫後執行立即回傳。 47 200905559 - 我們可視一 $式為正常控制流程(細部視圖(detailed view))的部分,不 然,可自細部視界抽取,並視一常式呼叫為一種「超級指令」(‘super instruction’),其會令電腦執行一比通常電腦指令更複雜的狀態改變。 這兩種觀點對於本創作都是有用的吾人可選擇任一對某特定目的更方 便的特定呼叫的觀點。因此當吾人談及一程式之CFG時,吾人意指該已 經過所選形式的淬取(abstraction)後的CFG。此外,吾人可透過針對不同互 鎖使用同-常式的不同視界,應用本創作於一個程式不同面向的互鎖。 2.4.互鎖之關係性結構與計算性結構㈣c〇mp湖&㈣
StrUCture of Interlock)。_ 簡易的建構㈣加f_rd 咖誠 常有自然是完全互鎖的部分:也就是說有些部分,其運算使其互為無關。 為了保護SBE的某些特定行為,可能包含加諸舰的特定保護性行為, 。人必須確定那些實行該種特定行為的部分絕不發生這種情形。因此,必 舰。卩分臟SBE彳了為的基撕算,且其縣林侧者,使其變為相關。 本發明於MF粉顿呵.#麵#㈣、撕避 麵#_)和控制流程圖中支配節點及集合這些觀念的技術。 2-4.1. ^^UmMm(Relational Structure of an Interlock)^ ® 1 麻係-互鎖·的_性結構。圖丨中,初始程式狀態和最後程式糾 由-計算連接起來。上面-條由A狀駐B狀_路徑代表—正常、^ 編碼或未模糊化的計算;下面—條由,狀態至&狀態的路徑代表一由; 編碼或模糊化雜續態牧模_至有編碼賴糊化狀蚊(狀態 之拉_的有編碼或模糊化的計算(“’,,表示修改過之實體:一經· 48 200905559 - 輸出編碼、輸入編碼或輸出編碼的MF,或一經過編碼的資料狀態。)及,是 轉移MF :其將互鎖資訊由狀態,轉至狀態厂。 在此最小之結構中,i?原是一原始計算,將一計算狀態轉變為 狀態6無須是決定論的)疋是經過依照本創作修改的計算;其將 一計算延伸狀態轉變為延伸狀態。我們說延命,意指β,與 V分別包含a與δ中所有的資訊,加上另外的資訊。另外的資訊可用以決 定⑴V發生自所欲對之計算’抑或(2) Ζ/發生自已遭攻擊者修 改的程式碼及/或發生自攻擊者竄改時取代之修改過資料。此另外的資 訊以及其能經過檢查以作驗證此一事實,乃是一個互鎖的重要核心。 一般上,將會有更進一步依據本發明的修改,提供增加的初始計算以於 最初產生另外的資訊,以及進一步修改,提供另外最終之計算以消耗該另 外之^ §fl ’其後,視最終狀態之合法性(㈣姐⑽⑼而定,若合法則計算正常 進行,若非合法則計算非常可能失敗。 假如足U,i/V,"1全部不僅是關係,而且是函數,那麼圖1可能 是如[23, 24]所提出之议>密函教縿茗的爻澇鐵⑺麵咖加如^所 comp—gm’th cm encryptedfmctio”)。(依分類理論(categ〇rythe〇ry)該種圖 是用以指出函數的關係,使得圖中從一節點至另一節點間不同的路徑是等 同的。舉例來說,此圖可能指出y = c〇i?〇irl。) 然而,此對於吾人之目的,是不足的。第―,互鎖係在一較無保護之 私式碼的前後文裡以被保護碼的形式作運算。因此,圖只能顯示計算之一 特疋有保5蔓的部分。(圖2所示為一更典型設計(arrangement),其有相 49 200905559 0 . 同的内部結構。) 弟 產生羞名、一體、隱密、合乎文本(essential,integral,〇bscure, 的互鎖,需要更有力的方法;這些等式將定義於後。吾人不 須要iU’,W,r-i是為函數,可是要以對以,〆〆賴需求來確定前 述重要特性。因關1中的箭頭表示。例如由3/的箭頭表示 ;亦即么^401 ^。於是可能沒有獨一(unique)的/對應一特定 aeA° 圖1中疋初始程式狀態與最終程式狀態由一計算連接起來。此圖可 應用於孤立運算(operatinginisolation)的互鎖,於其中互鎖發生之前後均無 重要的資料狀態:亦即該種互鎖是藉由從如冑2所示互鎖結構省略 (omissions)而獲得,圖2關於:互鎖之(互鎖資訊)心碼厂,,此心 碼由某正常前導(prologue)狀態ρ建立(互鎖#訊)/立之狀態1,並將該狀 態移轉(transitions)至L·以及互鎖之(互髓訊)雜碼,此雜碼將(互 鎖資訊)_之狀態β移轉至某正常結尾(epil〇gue)狀態』;此二種碼都在別 處計算。舉例來說,圖丨可能顧於—網路内處理交易之程式的情形,其 中又易係已從正常、未保護賴歸赠_» (亦即名互鎖資訊赫)計 异也如雄導而來,(互鎖資訊)#多碼心α #處理該交易,唯既不 建立互鎖的ϋ雜態於制互鎖的β娜狀態赠亦不恢復正常的 計算如果在之間發生狀態γ與狀,態竄改,狀態β,,指因窥改造成的 忍,之非標準變異(variant),則亦不致計算的失敗。在此互鎖的刪節 (t__)版本中,動作是「幕後」的(‘〇ff与,),在某其他處㈣發生^ 50 200905559 ▼ 且只有互鎖的#多部分,亦即計算皮。 本圖表示起自狀態4 (依據硪,鎬碍β,導自4,即 把L,轉換至狀態片的計算^,而終於狀態足(依據料,編碍 ew〇i/_ c ’導自W都是攻擊者看得見的。狀態心即未曾加 入互鎖情況下之起始資餘態’計算Λ,即若未曾加人互鎖财能已經將3 轉換至β的計算,以及.録狀態5,#未曾加入互鎖情況下之辦資料狀 態,三者都能為攻擊者所细:這些都已經藉由在程式中插入互鎖而被根 除。 丄實際孤立的(isolated)互鎖計算是及,。計算s—和 狀態在最後實行中並不茶名;這些都只用於基於非互鎖計算々建構 互鎖計算V的階段中。 圖2顯示與圖1完全一樣的一典型互鎖情形的内部結構。其中沿 著下面路徑執行被加以互鎖,其互鎖係藉由將執行在某一先行狀態ρ中從 Α至Β的路徑改道至有編碼或模糊化的Α,至Β,路徑,然後在某無編碼或 未模糊化的結束狀態E回到正常、無編碼或未模糊化的計算,結束互鎖。 圖2中的狀況是典型的互鎖情形,但是其中尚未於程式碼中加入互鎖 月(J已有一先行鳶箏狀態尸,此你箏狀態尸被克U; (即互鎖 寊訊龙j羞)計算F轉換成克的&repr〇办(即互鎖資訊龙的) 狀態J ;該計算F又被充#多計算轉換成己龙#多(亦即互鎖資訊己龙 轉移)狀您β,該if算R又被先游耗(prec〇mumpf〖〇n)(亦即互镇資訊先 廣V€)計算G轉換成.结名狀態£。我們已選擇互鎖j和β。加入互鎖後, 51 200905559 我們從鮮狀態p出發,以“計算F,將之轉換成·細狀態」,,其 中乂以.碼關係β關連至,;以轉撕算及,將/轉換成己靜 狀態』,,其中β以_編碼撕至5,;以雜計算g,射轉換成 雜狀態』。(互鎖資訊的“將互鎖資訊帶到一個能加以使用的狀態; 互鎖資訊的雜使用該資訊,若無竄改干預則正常作用,或者若有窥改干 預運算财能正常侧。)插人互鎖之後,攻擊者只能存取购亦即攻擊 者只看得到狀態和計算w,G,。原始狀態#、計算 如^與/間_和5與,關係c ,在插入互鎖後程式的 最終版本中變不見了。 雜.·所插入互鎖的組巧牛(components)4 m,、ϋ对狀態 ^輪,、雌微態、雜G,。對應於插人互鎖前的組件,以加;; 字首「也(英文加-字首“〆)來命名,表示尚未做互鎖插入之修改:衫 生F、先產生的織A、先轉m '已先轉移綠B、先雜G。前 箏狀態p與縣狀態石於互鎖插入前後均存在。 F π是以裔麵#㈣從f推導而來。吾人設一厂之輸出延伸 F〇£ ::P ^ ’亦即修改^來以輪出延伸計算額外資訊j。然後 編碼〜’亦即推導-進行編碼的心_,其中“I”表示—修改過 或編蝎過的實物。然後修改f〇e以得到 F,::? A’其申 A,=(AxJy 且 f,=f,〇e 於是厂是原始F之一 OE F〇e的一編碼版本。 MLgatkmMltAa ΰ推導而得。在A與β 52 200905559 間發生的原始計算’亦即允Met 5,必須藉一帶我們從γ 、, 疋到5’的計算 替代之。首先,我們注意/ = MXJ),。選擇一 MF (―個 °1^-) S::J α κ , xeJ 5 (6* 1 ο5)(χ) = χ 其具有不遺失來自J的資訊的性質,亦即是J的等式函數 任意MFM ’很可能於M甚至不是函數,遑論—等式函數),:= 保雜赚rv㈣魏。不遺失資訊的函數在電腦算術和有限環及有 限體中頗具知名。舉例來說’加上一常數c,不會遺失資訊(減去 回復原始);互斥w使用c不會遺失資訊(以第二個使用。的互斥欲处
回復原始)H有㈣或有_上_奇異(n_ingular)(亦即可H 陣,不會遺失資訊(乘以逆矩陣又喊向量);—高度雜性對射函數 織於-心解決方法:使用廣輸人非線性函數—柳e制輪 USemde-InPutDeeplyNonLi_rVect〇rs)崎方法實行該函數,不會遺失 倾_如反轉_聋高赫線性函數(Ime咖gtheC〇输崎此咖 編細咖㈣所述而推導所得函數的反函數,又得到原始向量)。對 任何熟悉電術和大學代數雜質的人,_函數有好可供採用。 我們定義 j?aeg::AxJ BxK by i?agg=[R,S] 和輸入輸_碼H即互叙好 ⑽其中保存資1㈣MF以如前述建構以保存資訊;以此定義得到 R "A B 其中 A =(AxJ)’,B、(BxK), i R,uRS], G'是以逆部辦#(_)由G推導而得。我們設_ σ的舰 53 200905559
Grpe '.:ΒχΚ E 然後編碼Grpe與Sx尺,其中BxK的編碼是於設立及,時所選取者。我 們以編碼Grpe獲得 G' :: B" E 其中 β’= (βχ尺),且
RPE G=G!, 因此C是原始G的RPEGrpE —編碼版本。 兰_1_實際被互鎖的計算是V。F,i?,G,i/,iTV,r_1和狀態為β於最終實行 中並不存名,只是在建構互鎖產至計算厂當中用到;該互鎖產兰計算F, 將狀態從P — P不受互鎖之插入修改移轉至此彳狀態基於非被互鎖 计算建立互鎖依賴,此為被互鎖計算,以及互鎖結尾計算;其中 々,係把互鎖依賴從狀心_狀態㈣計算,而互鎖結尾計# σ把狀態 由5移轉回乃互鎖結尾狀態,不受互鎖之插入修改。 互鎖之計算性結構(c〇mputati〇mlStructure如1 伽滅)。 為個大程式裡若非一程式即是一常式;W有控制流程圖 :,Γ) ’其有起始節點(亦即起始ββ)…,且#是π _ 移的^ ^是從^_尾_ 一 _點任何執行的可能控制-轉 紛___簡(ν_)的元讀應示於表& 階段 關係性與計算性視圖 關係性 54 200905559 原始 GoRoF::Pa E W = (N,T) 被互鎖 G'oR'oF'wPa E W' = {N',T') 先產生 F::Pa A 其中F = 九 A BB 集合 BB xt 先轉移 R::Aa B K:Ata Bj x與r (若有)之間路 徑的BB (v„,K,〇 BB x,IBB 乃之間路徑(若非空) 先消耗 GwBa E 其中 G = Ej BB 集合Γ = {Λ,Κ,凡} ΒΒ乃 產生 F'::Pa A' 其中 Ff = y^Ku/J: fr-Pi^ A; ΒΒ集合1' = {<太乂} BB χ\ 轉移 Rf::Ara Br rf···· A; a B; V'= 與r (若有)之 間路徑的BB K,K 乂)BB X;與 BB 丨之間路徑(若非空) 消耗 G'v.B'a E 其中 π = g'f.B)a Ej BB 集合r = iy;,K,>〇 BB% 55 200905559 設BB集合走居立BB)支配BB集合“Μ尤淨為 ΒΒ)’ ΜΡ0,Z,,K 气}且 r,,K j”},其中 • F以%為起點,妒中無非循環路徑有一I之元素位於 一個以上位置’且 • W以η°為起點,W中無非循環路徑有一 F之元素位於 一個以上位置’ 使付I中之 I%嚴格替代{strict alternatives),γ今之它它i %嚴格替代。 設X,.計算-關係以α 4,卜lK w,並設兄計算一關係 6 ,,· = 1,Κ,《。(在實際插入互鎖時,時常會有U|=|r|=1,但是 有些情形下,在大的BB集合之間設立互鎖是有用的。) 在X中之尤1义BB與r中之光讀·為BB之間的路裎上,有零 個、或更多ΚΜν,,Κ,ν*}中的尤#發BB。中間發生的「中Ββ會計算 龙## mf Ucx Μ若F非空,則亦且。對任何已知 有一路徑内,K,Aer的集合,其中各條該路徑p形式如 OvwKjj,又其中 • (Λ,ν«,Ά,Κ,νω,ι)是 C 中之路徑 • (VwVpV^K’vJ 計算一 MF rei?其中允:ν4(χ β,
• τ = νωοΑ orr ονβ 〇ra 9 A 56 200905559 延路徑(v„,K,vJ逐步 • v,計算 = α Λ κ ,使得 被計算,滿足讀者自然之期待。 圖3所示者,為-可能行經這些集合力BB的路徑;圖中有一互 鎖前路徑經過BB #合。(互鎖後,路徨可能相似,可是BB集合與BB 標__ W,Μ 从从 ‘ W 0 4 而可能是W如办仏<,Μ,#乂, 从’知w。)® 3所示為—經過某些基本區塊集合的路徑,提供 一種如圖2者之計算的-钱簡,,控術經—初始狀㈣iai S卿W如圖2中狀態P至狀“之蝴,經過-編碼過或模糊化的計 算%圖2中狀態J至狀態^路徑),最後經過—計算卜回復正 常(如圖2 Μ至E之路徑)。圖3中可見控制於bb 4進入互鎖區 域,自此’控制轉移至、然後%、然後經過某序列圖中未示 的轉移,最後_ V自此,控制轉移至&,然後轉移出互鎖區域。 此處我們假設狀態資訊包含裡4观释卿㈣資訊,正如於券夢狀 態n切狀態m心的狀態(κ,<、賴商狀態 Α,κ,式、娜雜態狀』:和雜狀態£iK,a中之包含;也就是說, 目前的執行在程式中位置與狀態是關連的。然後’就圖2而言, 卜〜八〇和Λ%,F,AWm,㈣iUA^ 一”, 及心^八%。狀態資訊之包含対雜器資訊,確保對狀態資訊,解 (location-identifier)^#^^#^χΛ (register-identifier) 之對齊(line-ups)對其對應資料内容(包括/目前程式計數器;亦即目前執行 57 200905559 位置)的__合係合理醜學娜,而是不_(_big娜S)的。 為k由BB集合X至BB集合r的互鎖,吾人修改程式或常 式V ’產生-程式(或常式)W ’於其中修改1的Ββ、㈣BB和踢 BB如下。 奴會有BB F-{v,,K,n}執行的計算(稱為克雜計算,由於雜 計算將會被插入這些BB),構成BB集合r,此集合落於対之 間的路徑上。對應F,我們創造-雜BB的集合r代替_BB將 由尤BB)計算的輸出延伸厂㈣的資訊帶到由尸娜 ^算的RPE G'(細。也就是說,f中之ββ執行未經修改之程 式中的計算L於互鎖插入後,F的替身集合r中之βΒ (雜ΒΒ)執 行計算V (#多)。 ^每-個計算關係以α·Ββ 將之修改成為一計算關係 的 ΒΒ <,其中々(4〇,=/〇£/,且 /〇U,· 為xJ是乂的一個輪出延伸。 0c V K 、β 山* 让(V«,K,VJ (使 ^切疋一1之路徑),其中认〇言十算某^改 中之BB使得此路徑被一新路徑((κ 〇代替,新路徑計算某,/ 其中〜;a S ’其中舍(切)Ά,χ尺),〜一以 agg j asr+Jcc ’、’八],其中^的聯集是', 〜的聯集是s’ ' m]是具有如1 L的聯集是 合。同時如^纺 前§2A1所述^的原始及白 门時,如刖述Ά延著原來是匕最 取便疋(ν,α,Κ,ν'β 58 200905559 路徑被逐步計算。 對每1固4算關係g/:B』a β々ΒΒ ,將之修改成為一計算關 係㈣_ %,其中且 gRPEj 尺马疋&的一輸出延伸,具有如下性質:對一知,,' 輸出 之每一值Are·/,作成料一 句對一伽心.之正確輸入而設的對應的γΛ:,會使 你❿·( ♦ β)與 A (.)等價(equivalent)。 稱Z BB的替換(repIacemems)為,稱厂册的替換為广, 稱Γ BB的替換為r。於是F包含Π,和ρ,而『包含I、 厂和r。以上形式的代^ Π以广、代u r,轉換灰成 ^,就是將吾人已歡之功能性(Wi〇補⑺建造的讀安插到W功 能性’預防可能破壞^和及之間相倚資料連結的那種窥改。 以圖2而言, 行計算,BB 算R'。 BB义執行計算F’BB r執行計算…郎π執 广執行計算G,,BB F執行計算及,ΒΒ广執行計 在執狀當中,當遇到任何㈣助時,由於尤,支配r 控制已經過某付BB而達到X。當執行,;時,χ;計算乂,而与 / ’產生某額外資訊seJ ”eJ被編碼為 快 勹4。控制通過某計算及,的玫 徑(vK)到達計算 < 的乂,,,已經將 的路 噴^ # 轉換成額外資 ^ W在5;中被加以編碼是一咖,只要此資訊到、查 而未受X’或Γ中任一發生的竄改,它就正確計算〆。 ° 假如ί的内容因攻擊者竄改程式碼或資料, , ,在I’中或在之 59 200905559 即與r之-BB之間遭到修改,則^不計算細加)一個編碼的版 本相反的,它會對某值㈣計算g〇E加)_個編碼的版本。這造成 什算失效’其方式為以下綱多種方式巾之—。纟互鎖的原始建造中,我 們已經保證咖)=以)、模數編碼和赃,假如我們_聰明地建 構尤,和r,BB,那麼我們幾乎確定咖,)邮),事實上,我們已經 使A er的執行引發r因竄改結果而失效。 互鎖OE IA RPE得自相異之好處伽erl〇ck施iAs and 。除了以下說明之各種保護的所需形式外,根 據本創作修〜獻—她睛碼本身裡,抑 或=修改過之程式碼式碼裡的姑得到好處,藉勒部行為變較 不此重複,或藉使- SBE的事例(instances)變化而致不同事例須要分別攻 擊,使攻擊者的工作更加困難。 相異發生於 ⑴-互鎖中’或其緊鄰内之内部計算會於各次執行之間發生變化, 其時,在依據本創作所作修改前的原始_裡,對應的計算 不會(鳶相異)發生;或 ⑽BE之各事例間,_互鎖中,或其緊鄰内之程式碼和資料發生 變化’其時’在依據本創作所作修改前的原始舰的事例間, 對應的各部程式碼成為相等(相異)。 ▲ 鎖RPE 必須是基本的(InterhckRpEs]^tbeE_tial)。 刖面吾人注意到-修改過之^ BB計算一修改過之函數咖)。吾人須 200905559 求e红的評量上必是基初。也就是說吾人須求:由於高度可能性,任 何對值,所作改變都會使 < 計算不_結果。若非如此,則把輸出延伸 產生之額外資訊e的值修改為不同資訊/❸纽,極可能最後還是動不 了<產生的結果。 吾人必須確保避免該種對輪出延伸值之不靈敏性,使得^計算,即 发;對e是高度靈敏,又,針對計算心之正常輪出,即一計算,只要發 生任何影響g;之額外倾輸人的竄改,<就高度可能失效。 1A.5.互鎖OE必須是—體的(Imerhck 〇Es μ⑽⑽In吨⑽。i 人能輕易輸出延伸-常式,實行細/::心成一常式而藉命令尸言; 算與/相同的結果實行函數八如歸,唯姻一附加之常數W作 為常式整體不理會的-引數(argume♦這樣對互鎖是㈣當的。即使常數 々大大地被常式整體仙,其係—隸輸人的事實,會構成—項弱點:執 行中(跡㈣之常數值嫌„被攻擊者觀察,了解該财數就有了容易 攻擊之點。 由於常數是不變的,故找到它不難;又,包含於任意?程式碼中, 產生該種常數亦是很簡單的。吾人欲互鎌以移除,故該種簡單的輸出延 伸對於互鎖是不適當到有害程度。 當有一個BB X是支配一 BB y其中X計算y而j計算尽的 a夺候’如果以加入另一個不受輸入影響的常數輪出來延伸/作為尸(亦 即如果我們修改x的程式碼為除—般輸出外《常數值產生), 那麼只要X"輸出與縣者相_錄,攻擊者就可贿意把X,修改成任 61 200905559 意ΒΒ χ〃等等。 另外個類你的問題會發生,那就是如果我們以命令尸計算與 相同的結果來輸出延伸、 個MF /:·」α 5的實行到一個計算 /·」α 5χ_Ε的常式 會有某個由一时之實行咖)七產生的結 丄^,其中g使用〇中資訊之極有限部分,例如依賴 狀態α中一個攀童ί*沾7* :〇Γ7 Α 賴 、值,馨此财限地_«^,會娜—種方法, 或午會域來集中對該計算之極狹小部分做攻擊,而且攻 騙該會影響五之姓杲的铪λ从托, 錯歇 除掉。 、。輸的極小部分’能把原本應由互鎖提供的保護移 此當來自輸入的額外輸出的計算是明顯可見的時候,前財雜 出延伸的問題,也同樣是#常數輸出延伸的問題。凡明顯可見之物,都會 遭到攻擊者發現’並加以繞過:這正是吾人設法避免的。 所以,我們必須選擇如右述的輸出延伸:/由取代X的修改過的 BB y計算,額外輸出值由與,之輸出延伸广的計算互為一體的計算產 生。/’產生/的原始輸出,我們將額外值之產生嵌人,之計算中愈深,而 且由額外值之產生所修改的分計算(subc〇mputati〇ns)愈多,則額外輪出之產 生愈變得與/'的計算成-體,而且使攻擊者愈難移除與少,間的互鎖。 此種構思同樣應用於如下情形:X由一多重ΒΒ的集合I代替,少 由一多重ΒΒ的集合r代替,其中I支配r。輸出延伸必須與I中 已修改之BB的計算成為-體:此兩者與z中之計算成_體愈深、愈廣, 則愈好。 62 200905559 ΜΌΕ RPE (Interlock OEs and RPEs Must 。縱使咖是基本的(見§2.4.4),輸出延伸是—體的(見 §2A5),除非輸出延伸和咖也都是磨翻,否則互鎖仍然可能比吾人 期望者更易受攻擊。 軟體减續f彡物式碼關方面的技術加以狀紐:見[2, 3,七& 7’9’ Π’ I8’ I9’2〇, π]等例。這些技術中某些也可以用來使一輸出延伸之額 外輪出的4算與原始計算成為—體:1 [2,3,4,5, 19]等例。 將則述建立輪出延伸與赃之類技術運用於互鎖之建立,是本創 錄佳實_的—部分:尤其是_尚可用贿產生麟值的輸出延伸計 算與產生原始輸出崎算成為—體的技術。 认Ί.互鎖呢和赃必須合乎文本㈣咖冰觸 施物C崎_。吾人使用一體的(§2 4 5)、隱密的㈣·6)輸出延 和基本的(§2.4.4)、隱㈣(§24.6) 建立互鎖時,應該避免再增 一個可能的攻擊點。 假如該種輸出延伸與舰中的程式碼顯然與包圍此程式碼的原始程 式碼不同,因為兩者中所採用的計算、平常計算方式都屬不同形式,那 麼該程式碼已轉被標示岐以讓攻擊者㈣發現,有如戰鬥機的凝結尾 大大地暴露麟的所在,這當_吾人所欲者。 所以’選擇使計算-體化和隱密的方法’以及賦予好私的計算基 本性的方法,綠重要的··也就是說若孙人互鎖,該程柄之所在⑽es) 的前後文中就會發生-些計算,_我們賴這財法獨計算來貌 63 200905559 似這些計算 假設要把-«色㈣子藏在1白色_倾 方式讓紫色的鴨子貌似白色的鴨子混人鱗中:⑴把㈣子 把白鴨子職紫色,« (3)把财__麟色。 (2) 同理’我們使為建立互鎖而設的輪出延伸和Rpe變隱密、-體,戍 賦予其基本性的時候,我們能以三種方式使結果的程式碼較不顯著 選擇幾種修改,其產生極貌似關料蘭程式碼鶴;(2)藉修改其他 程式碼來貌似所插人之輸出延伸或咖程式碼(例如:如果四周的程式 碼也是使用類似技術變隱密,那麼經過隱蔽的輸出延伸和赃不合顯 眼);或(3)藉同時修改插入有輸出延伸4 程式碼的原始上下文中 的程式碼,収賴人之輸岐伸 < 咖程式碼,__的程式碼 型態。也就是說,我們能在所插入上下文中插入貌似程式碼的程式碼,不 然’我們能修改文中插入處前後_式碼,使之貌似插入處,再不缺,我 們能把前後文以及插人處同時修改成某槪非前後文亦非插人處原有之型 態0 以上三種技術任-種,或取其組合,必馳採用來隱藏互鎖輸出延伸 和RPE。雜藉使該輸出延伸肖舰合乎前後文作隱藏,乃是本發明 較佳實施例的-部分。射⑽顧辦繼财柳;亦即我們的選擇 (preference)是令一處(at a Site)之原始程式碼與針對一 〇E、聚合或卿之任 何插入程式碼,藉訂述方法使之相互類麵造成其彼此貌似。 2.4.8. (InterlockIAs Must Be Obscure 64 200905559 and Contextual) 〇 點有二方法達成。
介t之聚合R 5χ尺應不損及互鎖之安全。此 •吾人可定義J =尤和心為],使得對尺gg之程式碼等同 (identical)i?之程式碼(由於輪出延伸所產生之額外資訊始終未被修改)。如 此-來’經編碼之輸出延伸(〇E) f,產生額外資訊,此額外資訊被心之 編瑪兄忽略不f,之後被經編叙RPE G,不加以修改地使用。 化樣^疋充足的’且不會對疋造成額外負擔㈣瓜_h—)。 否貝丨,吾人可定義對非顯然MF &:j〇c尤,i?agg=[足习其 中無需J = ΑΓ。如此—办,— 一一Agg如同V經過編碼,S之額外功能性 必須被以隱密之方式加斗卿誠反向設計(_seengi觀))且是合乎 前後文(亦即貌似其周圍程式碼)。 匕對s之新增功能性與編碼加入額外負擔,但是增加攻擊者反向設 計及使互鎖無作用的困難。 代數舆]MBA 等式(BA Algebras and MBA Identities)。 產生隱在、防竄改軟體,須使用種種的代數等式,此見於全部[2, 4, 5, 7, 8, 9’ 1入 18, 19, 20, 23, 27],唯程度各不同。 貞/員求之非一般嚴格條件(requirements),即須要基本的rpe (§ )體的0E(§2.4.5)、隱密的 〇E、IA、RPE(§2.4.6 與 §2.4.8) ^合乎錢文之0E、IA及㈣(§2.4_7與§2.4.8),須求比天真地搜尋特 、γ構上之等式、收集—長_該種等式更有力的方法。所須之相當複 ’的等式將會為財少’魏過朗前揭文件帽見任域全部等式所能 65 200905559 提供者,即使該料式於該文件所翻之前後Μ是 ‘ 那麼,產生核卿—吻恤崎a°自動 (-叫且能產生-有效地無限的供應等式源。 化的 來而無須修改-包含的程式的大部,故基本、不可或缺 =能產生顧妨的程柄。結合_轉不_代數結構的細A表 不式,對於此點就很理想,原因是 ⑴術纖—— 卿_一,由於這種驗表示式不 須擴張為更繼蝴峨_件減@,纟梅所有現代廣 用型二進位電腦上硬體指令的直接支援,與 ()廣〜炎這種MBA表示式因為結合兩個深奥地不同的領域(整 數電腦算術模數機器字模,其通常是P或2«,與布林向量之位元單元 運算布林傭,其通常是H 64位元長),故歸使㈣號數學工具諸如 Mathematical、Matlab ™ 或 Maple 撕來分析。 在某種程度上,該種表示式難以分析的原因,是具有該兩種代數結構中 之一種的簡單表示式,換成另外一種結構就變成複雜的表示式。[2〇]的第 4頁中有一表顯示一表示式的形態,只因為上簡單運算的 編碼,變得複雜得多。對於就(Β,ν,Λ,”)的基本布林運算的Ζ/(2”)“ ”(表丨 運算公式的思考,讓我們看出Ζ/(2”)中最基本的東西在(Β,ν,Λ,”)中變成高 度複雜,而且改使用(Βη ,ν,Λ,-ι)也不能再進一步簡化。上述符號分析套農處 理一般單一領域的情形相當順手,不過不足以對ΒΑ[«]上的MBA表示式 66 200905559 去模糊化(亦即將使用MBA絲式等式模糊化的表示式簡化至其原始、 未模糊化的形式)。 接著要來講解得到有效地無限的供應MBA等式源的方法。暫不說該 種等式許多其他的伽,當細在所纽之SBE事例帽便變化該種等式 中的選擇時,它們還提供—靜態相異的來源(見§2.4.3)。 2.5.1. MBA (ConvertingBitwise h•卿r 。假設有—位元單元表示式,—(Β'ν,Α,,)上 的表不式£ ’使用,變數χ。,〜Κ,〜。(對練C所示的真值表” =3, _”心JL好是變數x j;,z。)於是,向量内任何位元位置的真值表是 相_式的真值表’但是以…作為長度一的向量,由於在位元 運异裡’各位几是不相關的:同一個真值表適用於各個位元位置每 各不相關,因此對於單_位元變數,吾人只須一個真值表。此真值表的 結合行有2(個不同的項,二進位行有2'個不同的項,結果行有2,個對 應的結果位元(見表C,)。吾人可赠此結錄元行賴_以矩陣 (一2,列1行的矩陣’亦即-長度2'的赫#)。 接下來提供一個相當奇異,基於電腦算術特殊的點方法 (亦即基於BA[«]的性暫,甘+
質其中《是電腦字長)用於產生一位元單元表示 式五的替代表示,作為B
[]上之變數〜{^,:^的mba表示式。 、有2項的行向量(亦即一 2(χι矩陣)户總括£,代表 £的真值表的結果行内容,同時亦以—行向量, Ϊ]Τ^ | 、15代表淨慰因其包含符號表示式外, 67 200905559
Sl’.’.’Q-l,來總括五,行向量S正好是五的真值表結 合行的内容。 (2) 取得一任意2’χ2ί矩陣Z ’項目選自B = ,此集合在體 Z/(2)上是可逆的(例如隨機產生零_一矩陣,直到獲得一可逆 者。) (3) 假如有a之任一行c ’ C = P,則加上一賴選取之j其 他行的線性組合(有至少一個非零係數)至行c,得到一新 的可逆矩陣/,其内行。吾人現在有—無等於尸之 行的可逆矩陣A。 (4) 由於乂在·上可逆,故4Z/(2n)上可逆(元素的「字長」 如前§2.3.2標題為「廣法及元資叙飾之亦無」所述,增 加了)。所以矩陣等式有一 ζ/(2„)上的唯一解,其可 使用高斯消去法(GaUssianeiiminati〇n)或類似方法找到。對「 解# = Ρ得到- 2’個常數的呢)上行向量〃,其中解 為F = f/且 舉例來說 C/= [%%...,#/ 。 2、1 /=0 (5) 然後,在BA[«]上,得到五 使得可韻右箱MBA·絲叙和鋪錢驗元單元表 示式P因此對於任何在字長4 «的機ϋ上計算S的位 it單補令序列’吾人可代替—位元單元與計算 68 200905559 V 2、1 X Wi 的算術指令的混合序列。 /=0 (6) 吾人可做許多下列增添的推導作為選項。 從上-段⑶之等式,吾人可使用平常代數方法推導許多其他的等 式’例如改變-項的符號並將之移謂邊,或任何其他_本行中知名的 方法。同時請注意 如果我們對任何和料B綱上之匕Σ叫=(),紐如果 i=0 同或不同變數集合推導-系列該種和,則由於這些和都等於零,故無論取 幾個那些個別導出之和的和也等於零。 如此更導至這樣的結論:所有的係數(其中五的係, 數是〇乘以-常數,產生另-姆和,由此尚可輕紐導㈣有效 =係 舉例來說’假設故卜2。五的真值表為p = [〇⑴]τ •亦即唯 有文吣〇時XV尸〇。定字長為"(演算大都略過此:機器字長在 此幾乎無地位)。 3可以是任意的上可逆矩陣,且無等於ρ之攔,故為保持此例精 簡,吾人選擇
A 10 0 0 〇1〇〇 〇〇1〇 0 0 0 1 69 200905559 此解剛好是ί/ = [0111]τ ;亦即在此非常簡單的例子中,^ = ^。 我們有了 = 歹元Λ少ΧΛ歹ΧΛ:μ]τ,故在BA[32]上,我們有 3 £ = = J)//, =(X/\_y) + (XA 歹) + (ΧΛ少). /=0 因此,對一計算的指令序列(通常是一單一指令),可以逕行代換一計算 下式的指令序列 〇? Λ 少)+ (X Λ 歹)+ (X Λ y) · 2.5.2. #4' (Deriving MBA Identities 吻脚⑼細加汍描㈣。在前面§25i中,對於—有,個 變數的位元單絲示式S,蘭使用了—條度2崎絲值表位元向 量户。 接下來,假設對-多個變數的已知集合W我們有一$ 列的位元單元表示式…,全部應用相_有,_數的集合尤,由 A有真值表零-向量^ 再假設似而是對某㈣一 呢)上之向量的線性相關集合,亦即有撕)上係數Μ ^並㈣ 部的係數是零與Z/(r)上冗批=[〇〇八吖。 疋我們也有BAM上£费〇。由此等式,可以用普通的代』 ==項喔敝移至料,雜恤瓣行中知梅 其他等式。嘛注意如果我們對任何該種和推導剛」 ,轉罐概不__合料—_的該種和,仏 於那些和鱗吟繼卿_目轉♦娜也等於零。 如此更導出這樣的結論:戶斤有〜乘以—常數,產生另-個零和 200905559 亦即對任何中BAM的常數e,假如Σ;^=(),同時 广〇,故’藉對所有的係數乘以一純量,我們能進一步延 伸以上的等式的推導。 現在考慮-個範例,有表示式e〜2=Mne4=_(x/^=i2 、 表不個其内每一個位元位置都是1的常數(即-個可使用C, ,Java表不成-1或〜〇財絲示式)。其對應真值表分別是 恥_呷、ρ2=[0101]τ、P3=[0⑴]t、P4 = [iii〇]t 和卜叫γ,卜5 係 表示式的數量,這些表示式中有Μ個變數,故真絲向量喊度Η。 士果選擇係數= ,我們會發現 ,故β,κ,Α是線性相關。 於是推導得释]上,由於依照有符號2的補數的解釋,Ρ相當於 5 §a^=X + ^'(XV^) + K^A^))-f=〇5 亦即 Χ”-(Χνβ + (~^Λ:μ))·Μ = 〇,。 經過簡易的代數操作,於是容易導出,例如 一 (Χν>0~χ-少-(,(ΧΛ 少))=1, 故可以逕行.個上面左縣示搞程式碼相計算代替制常數【。或 者’可以對任何整數值乘以上面左邊表示式而不會改變其值,無論X與 為何。 的補數與無符號比較性W{mn[2,s(:Qmpi_tand
Unsigned Comparative Properties) 〇 t 71 200905559 - 結構BAM上,對有符號及無符號之以B”元素表示的量的2的補數算術 與比較的性質,對產生有效互鎖是極其重要的。茲將此些性質列出。 (1) -x = x + l (it x = -x-l). (2) 1 Lff(-〇cv(-x))-l)<〇 (使用有符號比較)。此將—所有的位 元的試驗轉換成一只須2補數計算中的高階位元的試驗。 由於在BAM中,只有一個零,無論我們將其元素當作有符號或者無 符號,無論我們是否將X本身解釋為有符號,以上的公式,適用。(通常 我們能強制有符號的計算,例如在C*C++中我們能將一無符號的量X投 入有符號的形式。在機ϋ碼的層次上,運算元沒有類型,我們能藉選擇所 用指令強制有符號的計算。) -旦隔離了(isolate)計算結果r的一個位元的布林結果,我們能輕易以 其他方式操作之。舉例來說 r»(w-l), ”中 X如C或C++巾的右移運算子,若此右移有符號則將 布林結果複製成-字的全部”位元,若此右移無符號則轉換成值i代表 算或〇代表#。 由於MOiffd)是偽,故以上性質可用來轉換释]上的=與矣 比較成為對其布林結果任何所欲的表示。 t通吊’吾人若不選擇算及爲=0關(其中布林值位於低 封凡八他位tc為零)的表示,就會選擇I :和认4 (其 中布林健全雜喊表)的表示。 ” 72 200905559 • 稱前式為〜布林表示, ί3)7 後式為全位龙布林表示。 ()2〜(有符號或無 式來試驗。 其差異可使用前面(2)之等 當〇時,則 符號或無符號)叫(有符 、” / 〇,〜=讀歹(有 -2_ y(有符號或盔符號) XV 少+ 2 =,+2 = 1 (有 ‘“、付龜 一 乂…、付唬),同理,對任何走, (有符號或無符號)。 (許多其它包含^和的 種等式,很容易就藉簡單代數接伟+ 由與下列的結合推導而得 、作,或者藉 §2.1 2.3所揭露或引述之等式, §2.5.2提供之方法找到、 一 §2.5.1及 次[2, 4, 5, 20]中揭露、或見於⑴ [20]的延伸中、或述於後面§25 中棱供之 是明顯易見的。) 式’此讀熟悉該種推導技術者皆 73 1 3取自 <細財辦參你咖[28]: 號W㈣靖㊉輕會〇 (有符號)。如以上所述^ 邊計算結果 卩隔離了右 “ Λ 歹)ν ((,(χ ㊉火))Λ (X1)) 2 (稱其為r)的高階位元中的布林1 (南或0⑽結果;由此知,五 人能將之轉換為任何所欲布林表示。此外, ,吾 '(有符號)iffA:<M有符號), " 句(有符號)iffx<M有符號)是偽,且 '(有符號)iff…(有符號), 故上面公式令吾人能將全範圍的释]上有符號不等式運算轉換為其布 200905559 (2)之記註。 林結果任何所欲表示,如前面 (5)4取自<私裡初身於阐:〜(無符號) iff ((X Λ >;) V ((χ V Λ (χ - -μ))) 〇 結果 (有符號)。如以上所述’此即隔離了右邊計算 (无 Λ 少)ν ((无 ν 少)Λ (χ 一 j;)) 由此起’吾人能 (稱其為相高階位元中的布林1(爲或〇⑽結果; 將之轉換躲何所欲布林絲。此外, •^>χ (無符號)iffjccy (無符號), ' (無符號)iffx<_y (無符號)是偽,且 • (無符號)(無符號), a式7。人^將全範圍的Ba㈣上無符號不等式運算轉換為其布 林結果任觸欲表示,如前面(2)之記註。 5 公ι_ 口布林條件(CombiningBoolean Conditions)。如觉 ξ2.53 所6己’以-《個(Μ立元的序列代表爲,—Η個〇_位元後接一單_ L位 一的序歹J (麵布林表示)抑或由_ ”個i位元的序列(全㈣布林表 )代表茗,吾人能得到BAM中布林形式個別(individual)比較結果。 我們可以藉有符號算術非(signedarithmetic negation)將一位元表示轉 換為全企元表示(由於〇和-1的2補數表示分別是00Λ 00和 U)’又可以藉無符號右移該值》-1個位置,其中„是字長,將全企元 表示轉換為一企元表示。 表E -以布林表示作計算 74 200905559 邏輯運算子 ----- 一位元表示 全位元表示 -—— a (and) 位元單元Λ 位元單元Λ V (互斥w) 位元單元V 位元單元V ㊉(包含or) — 位元單元Φ ----- 位元單元Φ -π (not) ------- 位元單元0Λ01® ^----- 位元單元, ~~~ 我們能結合該布林值以產生具相同表示的新布林值如上表^所 ^。請注意,除-機雜料,-賴之释]表初是對應位元 單元運算。該唯-特殊例外’乃是在—細布林表示植,我們計算e 當作ΟΟΛΟΙφχ ’其只會反向低階位元。 2-5.5. ^z/(2") ^G¥(2n) (FindingMultiplicative /麵加„ Z/⑺—GF㈣。依照[n,18,2〇]和其他,吾人經常須要求 一2/(2)或GF (2”)巾之元素的乘法反元素’以建立矩陣、線性等式、編 碼以及模糊化。 這個對- z/(r)中之數’可以使用一小型、有效率的演算經過 哪〇g«)2)個步驟有效率地達成:就是擴叙輕德縣法 Euclidean algorithm) [10, 22] ° 由此演算法計算的函數以E表示,對於、…吾人現有 E㈣=(从《〇其中^是“和办的最大公因數,在普通整數算術中(而非 在某有限環或其他有限代數結構上)。 因此,為求ζ/(2”)中某奇數6的乘法反元素,我們計算e 對^ p是所欲中之&的乘法反元素,我們忽略 75 200905559 之 當然’既有了 r1 ’我們知道對…的p,因為。 同理,對GF (2 )之-7L素,我們能使用麻歇射德对法的多 項式版本[11],有效率地求得GF (2”)之一元素的乘法反元素,該版本的 演算法的計算係在GF(2)上而非GF(2f))上的多項式有限環中執行, GF(2")以咖)個步驟求一個反元素。以E,表示此演算法所計算的函 數’對♦ GF(2”)的元素,其有β之難㈣大於卜我們現在有 Ε,_ = (⑽)其中d是和6和GF (2”)上似命d的最大公因 數,其中β,Μ,:Μ是GF(2")中的多項式。 接著令I為GF(2)上不可約多項式,用於所選擇的_)的表 示,若6是多項式1,則其反元素是本身。否則,纟是-或以上度的多 項式,為求其反元素,我們計算w⑽Λυ。«,十是所欲 的乘法反元素。 當然,既有了 rl,我們知道對叫的p,因⑽m中 取幂係在GF(2”)中執行。 2.5.6.細之猶繼崎_猶处任何使用整數加法、減 法、乘法、轉,繼值變數建立的表示式,都能轉換成舰表示式。 這一點直接得^解實,任何魏能絲為-加法之雜(a_ve ―);亦即任何值v能表示為某種選擇的A'各值的和。的確, vl5K々此一列中,如果固定(flx) v除 ,除外之所有的酬吾人仍魏藉由適當 選擇v〗,K,v*之未固定v ,其中 T’而產生所欲之和v。 76 200905559 . 因此吾人可逕行以MBA表示式代替上述固定值ν,,Κ,ν,+ ν,+ΚΑ 之任何一者或全部將變數轉換為其加法等值Vl,K,\的MBA表示式。 接著,對一個有個變數0,Κ,ν,Κ,ζ,並使用加法、減法、乘法、 取冪由此些變數建構的一個任意表示式,透過以此些變數的加法方區 (additivepartitions)代替表示式中原來的變數,得到一與原表示式同值的 MBA表示式。 除上法外,吾人當然可採取巧方法,即使用依據§2.5.1和§2.5.2中 教過的方法產生的,無限制的MBA等式之供應源來代替子表示式 ㈣哪㈣叫。這些方法搭配使肖,提供吾人-有力的方法,聽將數 個變數的㈣代數絲辆換為隱^表示式。 厶0· ’ ·動態常數值(Hiding Static and Dynamic Constant ν’。A常數值或許是軸常數(即具有—值,此值於使用其之軟體在 、扁譯時為固疋的常數)或者_ (亦即撕的或辦的)常數(即當使用 軟體在編譯時不錢用,但是在最初於所被設計支援的計算值範圍内 經計算後維持不變的赍 f數’因此其為「相對性常數」、「-時常數」或「維 選取^ _暫時常數」)°動態/相對/暫時常數之例可見於隨機 ke ) 有限期間—特定組通訊的加密期間鑰(cryptographic session 似公鑰’最常使_綱鑰,__統,諸如 較,係评地^^/橢圓曲線公输密碼系統’與⑽之類對等鍮密碼相 权係W又地加费和解密。 被用來處理於該_發 U來建立-期_,此期間鑰然後 生的-貝訊轉移(t麵fer)的剩餘部分。 77 200905559 首先來考慮隱藏最一般形式的靜態與動態常數的方法,然後將該種形 式關連至本說明書參考包含之模糊化及防篡改方法,和該方法揭露於本說 明書中之延伸’以及本說明書揭露之模糊化及防篡改方法。最後,我們要 考慮一種方法,唯於此法中,用於隱藏常數的常數,本身是動態常數,故 同一個程式的不同執行或者某程式同一部分使用執行暫時性(transit〇ry)隱 藏常數做相繼執行,都會每次動態地變化。 通用方法(The General Methods)。 假設有一等式的系統(未必是線 性),其形式為 =/(χ,,χ2,Κ ,xm) ^ f2(xi,x2,K ,xm) Μ yη ,·^2,Κ ,Xm), 或者’等值地,具有 有产/(X),其中/ 者BA[64]上)。假設 x-(x丨,K,xJ,y = (>;i,K,凡)以及 / =〈乂,κ,人〉,則吾人 為一 ΒΑ[«]上的„xw向量函數(通常是ΒΑ[32]上或 /在普通的數位電腦上能有效率地計算。 如果有—特定索弓丨ζ‘,Β心’與一函數g,對此函數 办)gU’K’h)’其巾g在普通的數位電腦上亦能有效率地計算, P麼我們成使帛y作為一項隱藏靜態或動態常數的工具。 a我們的方法是要選擇一些常數,可能是鑛/為摩/辦’其中q 的常數右可仃,我們執行,之計算上的常數替換(臓㈣,此 马—種形態的 pF r k (見§2.3.3)其使獨特(distinguished)常數e = x與模糊 化常类t尤κ 4’1+1’匕’\被代以計算與新常數的組合。當我們需要〔的 78 200905559 時候,我們不提取㈠咖計算•蚁满,之提取。 當然’在隱藏靖數時,鮮少常_發生,瞻多子表示式將 二值’而磁值在常數被__候是未知的,故向量X、動態常 數//函數聚集’、與函數$間的關係直到執行t (runtime)之前是部 刀賴(喊岣的,此意謂執行巾程柄插人(丨__公式包含實際 動態值的使用,此實際動態值係對以變數計算而非以常數計算提供者。 保護被隱藏周_輯碼(Pm_ng⑽in加 琴⑽咖⑽祕物〇為完成此過程(P騰♦接 著吾人以⑽,9, Π,18, 19,20]的方法、或本說明書所提出(見§2 7和 些方法的延伸’或藉使用以§251或§2 5.2的方法所發現的等 …§2.5.3中揭露或引用、或§254中揭露的等式,或藉應用陶方 法經過似7中所述新非線性形式編碼者,或藉以上方法之任何—祕配, 對使用此键_式碼以及該时颂接近關相料碼編碼。 藉§2.5.1之介紹部分末尾所講解,在已選取等式之間的舰間事例 (a_g-_nstan㈣隨機變化,我們可在該種保護加入靜態相異 (diversity)。 八 範圍内之任何ζ·求解一公式,藉以由少求得 辟的解。如果w且㈣)由一仿射(娜难陣上的 來定義,其中Μ為—辦狀似”矩陣”為一欄 ’、攔向量’"為一常數企·㈣一)行向量,又如果Μ (亦即有—输列式),_擇,我們能對 因此,由去 79 200905559 除任何無須的計算,可以導出—函壑_ ’ / 狀 凡)其只包含求所 須之计异,藉由從心所定義反函數之較大計算推“,該 y厂心本身係-仿射矩陣上· ____ _ 不同矩陣、Μ-1、及不同常數企移行 ,、 丁门里'"你J ,來略過任何專事尋找 計算。 許多其他種類的_向量函數/和常數萃取㈣―)函數, 能藉由右列方法找到:使用[2,4,5,圳_、_·3中揭露或引用、或 Μ4懷你’㈣2.5‘1或似·2嫩細料,或應响 中之峨卿pings)、或其延伸透過§2.7 7中增加的非線性映射所找到之等 式所提t、的反7L素,細±方法之任何—雜配,只要賴悉代數操作的 人是顯而易見者。須要考慮者,唯有㈣的,是學龍數扣⑹浙)整數環 之大-學生能輕鬆執行,並且是可自動化之操作以令電腦程式能直接執行 的推導’此提供-相當多的選擇,對產生適合之模糊化以十分充足。毛· ,〈·《,心之數學域與^^之數學域’都與^要萃取之常數^在設 十上所針對之數學域無關。有如下一例:上述矩陣方法可應用一該種整數 之無限環上轉’然而卻傳回—轉為位元字串之值,代表—gf(2)上之 多項式’其常數之位元代表係數多項式之。 — 任何長度之常數值可藉產生若干片斷之常數以容納之,其中 各片斷為了受保護軟體之目標平台的方便,各有其大小,。舉例來說,一 矩陣常數能使用上述方法分別產生 ,每矩陣元素各一次。 ^^^(Greater Sophistication and Higher Security) ° 200905559 在前面辟_子—節中,函數’/與g均是_上絲。我們注意 所-的等式的系統之一_ g ’幾乎能輕易由广ι求得消由忽略 輸出)’這如果對«大學代_人而言是_易見的。 因此吾人可使用_依據後面雜..资膽碰入高縣雜函教一節 揭露之雜親喊絲雜錄/鍵構/贼- 編逆抑 彦雜絲—節揭露之方法導出的厂。既有广貝藉由 忽略某些厂1的輪出求得。 採用此途徑時,我們或許想應用一 /,於是還有广^及- g連同 df的輸入和輸出兀素。若是如此職議這些使用後面制金之豢 ’七占一節提出的方法來編碼。 加上動態隨機性(AddingRand〇mness)。通用方法的魏 (〜κ,χ„)可以疋麟常數;意謂為已知少々,〖,凡)下,重新取得 (_evmg) ^的解之函數发會使用符號的、獅物所祕^_々 解’此種解在-種频、特讀形下會藉由以AW'之具體 (concrete)值代齡轉些麟隸_麵減帛。故,錄之容納會導 致較低的最佳化。不過,此方法仍屬有效。 為得到動態常數Α,κ,Χίΐ,χ+ι,κ,Χη,吾人使用§21〇·7中所揭露之 方法,藉以增添動態相異(見纟2.4.3)。 27本說明書中參考引進及延伸的方法舆线。我們在本巾請書中 參考引進右列之方法麵統[全部轉朗-受讓人作為標的申請, a〇-⑽公司,加拿A渥太華,屬牟㈣美國專利6风76ί 200905559 . [2】、美國專利6,779,114 [习、美國專利6,842,862 [4]、美國專利公告號 2004/0236955Α1 (申請案號 10/478,678) [5]、美國專利公告號 2003/0163718 A1 (申凊案號10/257,333) [16]、美國專利公告號2004/0139340 A1 (申請案 號 ιο/433,966)[ιη 及2〇〇6/〇i4〇4〇1A1 (申請案號 11/〇2〇313)⑽、美國 專利公告號2005/0166191 A1 (申請案號π/039,817)[20],各案均全文引用。 對於用於互鎖,由於這些方法聚焦於、針對互鎖的用途須求最大的保護 力量’我們建議強化以上的方法與系統。於是,細揭露以下方法用於加 強前面涵蓋的方法與系統。 尤其,我纖社形式的賴,及講解於後這些倾的延伸,應用於 建立所須、如§2.9.2中所講解互鎖組件的隱匿及合乎前後文—崎細 contejctuality)性質。 [2, 3, 4, 5, 16, 17, 18, 2G]的方法與系統全部都有賴所提供的網 有效地隨機資訊輸入,其播下一連串偽隨機值的種,對應用這些 方法與系統所作的編碼與保護決策就是以之為根據)。因此這些方法與系統 全都提供高度的娜_ :馳綠⑽摘:墙的賴,财都會產生 獨特的結果,藉贿攻擊者紅歧_,因鱗—雜未受保護的_ 經過使用上述方法«統修改成受保護的_的事例做攻擊,必定每次都 不同,端視每次產生的事例。 此外,凡於後面章節所講解的延伸使用到利用§2·5中所講解的方法 可發現的MBA等式的場合,我們都能如前面§2 5之簡介末尾說明過,藉 應用在舰事例間的等式差異,在這些保護上增添靜態相異。 82 200905559 2.7丄增添教辆至$柳,⑹典,船。美國專利6,594,76i 说[2]思衫種的資料編碼’包含整數環上餅點數上近似料項式的一 維度(one-dimensional)(-次—個純量變數)與多維度(_次多於一個變數) 線I1 生和編碼依據中國剩餘定理(⑶加% 也⑽㈣的整數模分解 上的殘餘編碼、位元展擊,_)編•讀絲(咖娘 在這二編碼巾’-魏的編碼依賴另—魏的朗,或者若干變數經過編 碼,故各項的表示與其他_表示獨,以及許多該種編碼組成有關的聯 立等式以《調(_dinate)許乡不同·義碼,如錢職改攻擊時 引發積極性易碎;類專利分難6,842,862[4]與翻專利申請號 腦卿[5]亦加入這些叫—般而言,這些專利與中請案的搭配提供 一個系統,藉此系統吾人能在-個程式中做許多計算,而韻丨而言,我 們限制全部為函數,以經過編碼的計算代替—程式之一區 明白(plain)的計算,使得 或被產生作為輸出,都 •各項資料無論儲存、當作輸入被消耗 經過編碼,以及 •各種計算亦經過編竭’從已編狀輸人計算為已編碼之輸出而 始、、不會產生明(plam)值’唯有該區之邊界作㈣如猶外進入邊界的資 枓以明白形態被消耗,產生明白的結果。也就是說對於—區,除其周圍外, 其内各處的計算都糊2的底線(b_mHne),其中只有已編碼的資料和 ,為攻擊者所能見,再者’由於[4]所揭露之編,協調過系統,各種計 异k篡改時都會互無_及積極易碎,故任何針對特定目標,驅使攻擊者 83 200905559 . 篡改如此保護下的軟體,很不可能成功。 [2]和[4]的殘餘、位元展開、位元内展(bit_impi〇ded)、習慣上 (custom-base)、位元製表(bit-tabulated)編碼,會有顯著的額外量。藉加入以 有限環Z/(r)為基礎的編碼,其中„是目標電腦字長,單位是位元,吾 人能減少其額外量,並藉採用[2〇]的線性環編碼,及其多項式延伸成有二 次、三次、四次多項式反元素的二次、三次、四次多項式,如本說明書§ 2 7.7 所揭露者,加強其安全。 此外,吾人尚能藉由依據本說明書§2·5.3中揭露或引用,或§254 揭露,或使用§2.5.1與§2.5.2提供的方法發現的等式採用多種代替,對 編碼做先修改及/或後修改,來加強專利[2]與[4]現有的編碼,藉以使這 些編碼因為在計算中同時使用多重、深奥不同的數學域,而使之不能以 Mathematica ™、Matlab ™ 或 Maple ™ 等工具來分析 〇 1Π2·在 1Q/257,333 增添新細胞與位址碼(ceu anaAddress Codings)。 美國專利申請案1〇/257,333以6]的方法說明一種保護乂f資存(陣列、l/〇 緩衝器及訊息緩衝器、可定大小(sizable)資料結構等等)的方法與系統,其 須求使用分成多個細胞(cells)的記憶體,其中細胞乃以經轉換細胞編號 (transformed cell numbers)而非索引或偏置(offsets)來定址(addressed),非索引 或偏置依據[16],可能在編碼之前已經用來存取資料,另亦須求資料以一 種轉換過的形態提取自、儲存於各細胞。 其結果是’充分利用變換(transformations)。[16]中提議多種變換, 其中有一種是該文中說明的,點的㈣.续尨分參/寿教^^浙0„以 84 200905559 . 时⑷(pLPB)。我們注意到[20]的編碼是一能高速、精小建置的pLpB 的特殊情形。_揭露的大幅增添的發明㈣,例如應職種編碼而不使 用針對[16]中的PLPB思索的附表(auxiliary tables)的方法。) 為提升[16]的方法所提供的保護到最大,我們建議藉由使用_的編 碼以增大之,如本說明書之§2.7.7所延伸,用於作為[16]所思索的細胞和 位址之部分或全部的編碼。我們更建議[16]思索的資料的自細胞提取、存 入細胞以及重寫碼(re-codings),其部分或全部藉由應帛§2·5 3揭露或引用 的等式、§2.5.4揭露、或以§2.5.卜§2.5_2、§2.5 4揭露之卫具所發現的等 式’來做進-步的賴,以使其無法被自動化的代數分析工具有效地渗透 該種編碼。 1.Ί3.保護6,719,114中的調度(Dispatch)常數與表。美國專利 6,779,114 ^3] , 構成-種雜,於削彡態巾,控儀局部娜(1⑽u_㈣係藉多向分 支(multi-waybmnches)索引控制(indexedc〇咖1)(如圖4(b)之交換敘述 (switch statement))得到實現。如[3]欄32第15行起揭露,索引控制係由 資料值執行;儲存全部必要資料值所須的資訊則儲存於一主表,或分成數 個表。 此表,或此些表,如果其内容勒容定址財引都經過編碼,則將會 大大地更加安全。蘭建議為此目的制[16]社量雜方法並且各細 胞是-表之元素’並加上前面§2.7.2巾揭露之[16]提出的延伸以使該種 編碼很深奥地難以使用代數分析工具來分析。或另採他途,各表可採用[9] 85 200905559 - 之陣列(抓州保護並加上本說明書§2.8.1揭露的改良,或如果受保護之程 式含有很多迴路(looping) ’明示或暗示則加上間的陣列保護。 此外,受到依照[3]之方法與系統保護的軟體碼,使用了大量的調度中 常數,該種常數,由於接在編碼後面出現,故能以本說明書§2 ό揭露之方 法加以隱藏,更進-步賴軟體不受攻擊者去麵化或有效的慕改。 最後’透過調度表做分支作職㈣)所狀調度常數的求取,因為原 始程式中條件分支(conditi〇nalbranches)的關係,會經常是條件性的。這些 條件應使用已經執行過§2·5.3揭露或引用,或§2.5·4揭露的各種代替或 以§2.5.1或§2.5.2揭露之方法所發現者,或[2,4,5,2〇]揭露者、或見於 §2.7.7提供_之延伸中者’以此等之部分或全·搭配紐,的程式碼來 十鼻或採另法,可使用[9]之不透明述詞(叩叫此precjicate)方法,加上本 說明書§2.8.1揭露之對該方法之改良,將各條件變成不透明。 以上技術在應用細專利6,779,114號[3]連同前揭的改良之前,尚 °再先藉由在保„蔓为支(branches)上執行依賴條件卜如伽咖知㈣她)的 互鎖(如§2.10.4揭露者)來加強。 對於[25]中所述之形態的攻擊,對抗被依據美國專利6,779,丨14號 [3]保濩’加上吾人剛才揭露於上的改良及額外保護的軟體,由於此攻擊所 根據的關鍵織’侧如祕制健就孩立,故攻钱乎是不可能成 功的。 UA.減少6,779,114中的額外量。在§2.7.3 —節中我們揭露了 種方法用以提高美國專利6,779,114號[3]的方法與系統所提供的控制流 86 200905559 . 程保護的安全。 [3]或依據§2.7.3延伸後的[3],由於一個〜哪(見[3]之欄16第5 項)—般包含至少兩個麵_)(見[3]之搁16第4項),每魏常包含 於-個比上的/卿’以便達成功能性對程式碼中位置的μ對”映射 (w>i且„>1),故其額外量可能十分可觀。也就是說,欲加保護之程式碼 中的每個4算,通常會在已顧[3]之保護的被保護程式碼中出現二次或 更多。 有不知以提供控制流程保護的工具,諸如§2·1〇中、§2·1〇 5 中2.11.1中揭露者,吾人可應用這些,而無須那些[3]中或§2·7.3中[3] 之延伸的’須要程式_複藝護。如此之效益,乃是各個_只包含 一個Ρ- ’免除將常式組成「非敎常式」(VLRs)或者提供由具有多重 進入點(entry points)或多重出口點(exitp〇ints)之S產生的程式碼以執 ^f^M^#H(virtUalregister)(VR) ^^(switching)^^^. 0
Piece都是仿真(嶋latively)執行(亦即執行有用的計算),相較之下受依據 [3]之保護的程式碼,其普通的行為中,一個’内的_之發生 (__Ce)的某些執行是仿真的,有些雌是連繫的(c_細⑽即為隨 機化的目的帶著熵走,卻不執行原程式的計算)。 當細_ dispateh表,科,這絲由於^每麵初一位址 碼,而非每吨她_,其中細票示調度表中之—特以卿,故這些 表比較上甚小,且是1維度而非2維度。 以上的額外量降低,能應用在欲保護之程式碼的—小部分、泰半、大 87 200905559 . 部或全部。 m增添高度非線性至10/433,966與11/020J13。矣屬專利今 請號1’3,966[17]和·2〇,3Π[18]揭露有創造防鑰萃取 (key-extraction)密碼學基材财法;該種密碼學基材即使佈署在拉子攻 擊前後文中(亦即,即使於其中攻擊者能自由進入應用軟體的執行)也能防 論萃取。 代換盒(SubstitutionBoxes)之替代品(Alternative)。 [17]利用代 換盒(SBs),亦即查表(1〇〇kuptables)於任意的編碼。我們注意到該種表可以 很大,而且對該種編碼,有一很有價值的替代品,其係要採用_的編碼 的任意選擇,加上揭露於§2.7·7中對該替代品的加強;採用亦即!到4(含) 階的置換(P_tation)多項式,代替純粹隨機函數。對於該種函數,須要 的只是係數,而非整個表,如此可省下可觀的空間,而且依據以上各方法 的多項式及其反函數的組成很容易。 顧,這些方法很有價值,但是單獨存在的話,會受繼種已公佈形 式和其同類(ames)的攻擊。舉例來說,附所述使用間之方法實施的 AES指建置已職制⑴巾的攻擊滲透。_攻擊是成功了,不過它相 當複雜,要施於任簡定倾建置鱗縣可觀哺神,故即使未經修改, [Π]的方法也很有用。若有-攻擊施加於依據[1η並有[取加強的建置, 那麼,欲使剛之攻擊成功應付,是極其困難的。然而,涉及互鎖,吾人 即尋求極強的保護,因此必須設法更進一步加強[1?,叫之方法的防護,以 使諸如[1]中之攻擊的攻擊完全不可行。 88 200905559 - 依據[17, 18]寬廣(Wide-)輸入線性變換([17]中之§4〇)的建置,和第 9]〇頁§4.1所述矩陣圍堵(blocking)方法([Π]中之第[0195]—_9]段),採 用甚多。[17]之方法的確產生該種線性變換矩陣的非線性經編碼之建置。 然而該種建置是鄭/祕^)非線性。也就是說該種矩陣被轉換成一個代換 盒(查表)的網路,因空間限制該代換盒之元素必定有限。對用以索引該盒之 值以及對由該盒讀取之元素值所作非線性編碼(任意丨對丨函數,其本身 可代表代換盒;卿作為查表),也因空間限制而受制於有限的範圍。 目此任何以該種被圍堵矩陣表示的輸入輸出經編碼建置所計算的資 料變換’而其係建置為—代換盒之網路或—祕代絲本上任意隨機函數 的類似裝i ’都疋依I/O編观性作_r t〇 ί/〇伽幻,·也就良 說,任何該種變難藉由侧重編碼每個輸人向量元素及個別重編碼每個 輸出向里元素,被轉換成一線性函數。 [1]中的攻擊方法是-類基於顯婦之攻擊的特殊事例。此攻擊 利用線性函數的已知性質,此例中是在GF(28)上,因為那是姻計算的代 數基礎。尤其,GF(2”)之加法係使用位元單元φ (互斥〇r)執行,又, 此函數定義-已知形態的拉丁方陣(Latinsquare)。因此從一編碼過之㊉的 查表版本到-未編碼版本尋找一同構是可能的而且在任何函數 /4。叫1,其+ e係位元單元,的情形下,合理地有效率求—特殊仿 射j之解έκ亦即在實數ρ之仿射映射(affmem卿㈣j範 圍内的-近似(approximatio咐),也是可能的。這些事實都在⑴之攻擊中 被糊’另外有其他攻擊亦可能幾乎同樣地利用叩肩之圍堵矩陣函數建 89 200905559 置係依線性I/O編碼此一事實。該種攻擊雖然產生 V貝δίΐ,但是可能 縮小了正顧_,並合乎《鮮麵棘他可紐此要點。舉例 來說,使用[17, 18]所提供基材的加密或解密的白盒建置,面對例如^者 的鑰萃取攻擊,絲於_硬射侧之攻擊,鱗是脆弱的。 解答:使用寬廣輸入高度非線性函數。_輸乃先认飞狐純 函數取代該種矩陣函數⑴寬廣輸人,亦即構成—個輪人的妓之個數很 多,故可能輸入值的集合極大;(2)高度非線性,亦即根本無法以%編 竭轉換為雜函_函數(即是滅_魏碼侧輸人和_輸出)。 把輸入變寬廣,使蠻力方式的對所有輸入列表顯示各函數非消耗大到 不可施社量記憶體不可;高度雜性則驗諸如⑴者的同構映射 攻擊。 舉個例子’我們可以以輸入也輸出64位元(8位元組)值的高度非線 性MDS轉換,代換AES中的施c〇/_與加施⑽卿轉換,此種 轉換輸人也輸ά 32^(4位元組)值,使這些巾任—者的蠻力版本都變得 可月匕把這些變體㈣ant補為施c〇/纖〜和施他^油麵科。(由 ;訊心的加歧在發出方實行,解密是在接收方實行,這些通常不會出現 在同一個網路節點上,故攻擊者通常只能進人其中-方。) 又〇又舉個例子’吾人欲分別建構該種高度非線性GF(r)上向量對向 量函數(其中”是多項式亦即位元字串建置之大小),或者z/(r)上向量對向 量函數(其中„是所欲缝寬度)。設,其中“和V是非零正整 〇人選擇之GF (2")的表示(另一者是Z/(2”)的表示),Gu=吾 200905559 人選擇之gf_表示(另-者是呢)的表示),^,吾人選擇之gf ⑺的表示(另一者是z/(r)的表示)。 假設吾人須要建置高度非線性函數/GPa , ^且分22,亦 即吾人選擇之GF (2”)的㈣表示上向量對向量映射。 如果要-個雜函數,那我們可使用一 G上心矩陣建構— 個;如果要-個非線性,條i/0編碼線性的函數,那我們可使用_ 依據[17,18]的矩陣的®堵、編碼過的建置。獨,這些方料足以獲得高 度非線性。 我們注意到G,G„,GV的元素全都是位元字串(其長度分別為 W)。舉例來說,若„ = 8且„〒4,則G的元素是8位元位元組, 與Gv的元素是4位元半位元組(nybbles)。 我們引進運算eXtract[r,5|(·)和interleave(.,·),此二者可隨時建置於幾 乎任何現代的電腦上,這對熟悉編譯器程式碼產生的人,是顯而易見的。 對一位元字串 S = (bQ,bvK,b,), 吾人定義 extract[r,5](S) = (br,br+i,K ,bs); 亦即extract[r,;y]傳回位元r至(含)。對一位元字串的向量 F = (5l5lS2,K„S2), 吾人定義 extract[r,5](F) = (extract[r,extract[r,^](52),K ,extract[r, j](s )) 91 200905559 亦即extraetM]傳回—包含舊向量元素之位元广至$ (含)的新向量,對 於兩個同樣長度位元字串的向量,例如卜(m)和,吾 人定義 ’_ interleave%,⑸| Γ〗,钊丨π』』 亦即⑽erW)之各航素〇㈣應元素連❹的對應元素的 序連(concatenation) 〇 為付到以上吾人之高度非線性函數/:GP〇t ,吾等進行如下。 (1) 5選取-線性函數⑽α q,或等值選取_ &上『尸 矩陣。(由於Singular方子矩陣(submatrices)能產生對於同構映射的脆弱 性,故理想上1的矩陣代表的大多數方子矩陣都是非__。如果Z是 MDS,則z的方子矩陣無一者是如糾沉,故此理想當然得到滿足。) (2) 選取線性函數尺:(^α ,卜〇,〖,々_〗,或等值選 取Gv上矩陣㈣。(由於如糾批方子矩陣能產生對於同構映射的脆弱 I·生’故理想上,的矩陣代表的大多數方子矩陣都是非singular。如果 ο’Κ’Α-ι疋MDS,則任何式的方子矩陣無一者是singuiar,故此理想當然 得到滿足。) (3) 選取—函數{〇,ΐ,κ,Α-1},對此函數 紙Ρ} = {〇,1,Κ,免-1} (亦 I7選擇涵蓋j (‘ont〇’)或「全射」(‘surjective’^ s )。 與其須求·5為涵I ’吾人可隨機選擇5 。但是,即使簡單的 建構也足_來獲得”物來說,對於$,吾人做最狀賴如下。 92 200905559 k <u > lx/?矩陣)與一函數 則選擇-紐聽Si:G> Gu (或等值 選取G,,上 s2-Gua {0,\,K,k-\}. 類似方式’若,則選擇—線性函數與一函 數七:G„2 cc {〇,ι,Κ 乂七,笼 }等4。然後設叫。在最佳實施例中,々是2, 4, 8,或某個其他二的次方。 ,你又5又卜2。於是、可傳回G«一元素之位元字串表示的低階 位心若^,則'可傳回低階2位元,又一般上,若“…可傳 聰元字串模數(_Ul。)丨之值,此值對吾人之最佳選擇,例如W, 、J疋由萃取》輪出的w低階位元獲得。 以上最佳方法令吾人能使用一圍堵的矩陣建置於&上,故 [,]的方去適用。再者,當/為可逆時,吾人使用此最佳建構’能以揭 露於下之方法簡易地得 土方+ 〇 /的建置’此;ΪΓ法產生-有與y相似構造 的广1函數。 (4)對任何j/eGP,設 K =extract[0,M-l](F), K = extract[w,« - 1](F), and /(F) = interleave( L(VU), Rj(Vv)) j = s{Vu). (5)上面步驟(4)中定義的函數/或許是’亦或許不是高产 十生 〇 Θ 、 、疋,下一步是確認非線性。我們使用以下試驗來求這一點。 若’是高度非線性,則如果我們凍結其所有對常數值之的輸 93 200905559 =,唯-個輸入除外,並忽略其所有輪出十個輸出除外,那麼會得到 —w撕如«’。如果我們對;東結的輸入選擇不同的值,那麼或 柯得到不同的/'函數。對一個線性函數、或一依i/〇編瑪線性的函數, 可藉選擇不_雜輪人之值而剌的和/,函數之數目,可 計算出。舉例來說,如果以且/是W (亦即如果Q κ /Γ ! 物麼剛好有⑹個該種函數。若❻則7在此物只會是^ 传 我們單單計該,,函數的個數,作為g上叫向量(例如·藉 轉_表嶋當Μ個賴輸入常數對所有可能性而變化 時各向置的發生次數)。如果藉由以一心矩陣代換/無法 函數的個數’那麼/是高度非線性。 V f 行前面的不在,上,崎在/之任-投、上執 忽略所有輸出,唯/係藉/東Γ所有對常數值之輸入,唯三個除外,以及 J 個除外而得到,我們能加速此試驗。這檨诗| 從降1到时的—已知未綱人與—已知未 靖=了對於 例的個數’如此或物成不小㈣。再者,如果f =數的函數事 得到的投映很快發現這點:在第—次發現一無法從—矩陣 線性。计數’我們就知道尽是高度非線性,而且7是高度非 的。而二:'運_,採用具有—隨機選取三個輸入及1輸出 /的间度非線性,那麼7 Μ是依1/0編瑪線性。 94 200905559 (請注意投映事例計數可由矩陣獲得,值是/仍然是高度非線 性,這是可能的。可是,這不大可繼發生,可忽略之。無論任何, 如果以上試驗/是高度雜性,那麼它钱是高度非線性。也就是說, 在為求高度非線性的試驗中,以上試驗可產生—偽的負㈣,可 是永遠不會產生一偽的正(falsep〇sitive)。) ⑹如果步驟(5)中的試鮮顯示/是高度非線性(或者,對 於緊接著本嫌後賴體,Μ外咖⑽㈣度麵性),職回到步驟 (1)重新嘗試。 否則,既已得到所欲的高度非線性函數7,我們結束此建構。 將以上做㈣體,吾人可嘗飾,卜高度魏性錄/,非但如此, 且其投映亦係高度非線性’如此—來,在前面第(5)步驟中,可以增加具 有隨機選取三輸入及-輸出不同組合的g函數的個數,唯對於此種函數 吾人必須見到/,事例之計數係無法以矩陣求得。吾人試驗愈多這些,愈能 確定/不但高度祕性,就域之各部高度麵性。在制一被保證 愈來愈對其域高度雜性的高度雜性聽這個重紐,與上述該種試驗 的成本之間,吾人須加以平衡之。 細驗,一 產生的MDS矩陣Z和Μ (叫其中/:(?3α g3, & GF的、 Gu=Gv= GF(2V對建構高度非線性函數/的方法的最佳實施讎了
1,000次偽隨機試驗。此些MDS 矩陣係使肖VandermGnde矩陣方法, !,〇〇〇個函數中,804個是 連同偽隨機選取的不同係數所產生。結果所得 95 200905559 高度非線性;亦即在8G4次建構雜的執行中,步驟⑺顯示此方法在第 一次嘗試就產生了一高度非線性函數。 另執行了-個類似的實驗,不過不使用依照最佳實施例選取的函數 ,而是建置函U作為一 16個i位元元素的表,各元素係偽 隨機選取自集合R1}。丨,_健種函數中,辦個是高度非線性;亦即 在84 Α建構中,步驟(5)顯示此建構方法在第一次嘗試就產生了 —高 度非線性函數. 最後,執行-相似實驗,其中建立s作為一做映射到㈣之 偽隨機選取元素的表。如此,在_次偽隨機嘗試中產生了州個高度 非線性函數。因此此方法產生最高關的高度雜性函數。絲,這—小 小的實驗需要一頗大的表(對此小實驗,是512位元組,對—相似函數 /.G a G其具有矩陣相同的ι/〇維度,則是 2,〇48位元組)來儲存j。 於是,可見如上產生有限體及環上高度非線性函數,特別是其最佳實 施例,键構松乃十分纽率。甚且,建立誠生之高度麵性函數的 反函數,是簡易的,此點將示於後。 廣屢構匆羥#。如上述建構的一高度非線性函數卬具有 下列性質: ⑴若i:與及,ΚΛ是1對卜則/是; (2)若與ha是映射㈣ective)(亦即,若兩者均是丄對【 且/函蓋(onto)故β = ,則/是映射(bijective);及 96 200905559 (3)若Z與尾,Κ,Α都是可最大距離分隔(maximumdistanee separable) ( MDS ;見以下),貝1J / 是 MDS。 兩個向量’舉例來說,《 = (Μ,,Κ,〜)和v = (Vi,K v々),之間的資 努避職是μ與y互異之元素位置的個數:亦即3 △(«,vH{/eN|,·幺 andw?iv;}|. 一 T廣乂避漤分腐(MDS)函數,y其中s為—有限集合, 丨印2為一函數’對此函數,任何x,_yey,若Δ〇^) = ί^〇,則 △(/W,/⑺)^4+1。假如;,則該種MDS函數恆映射㈣ec細)。由 凍結對常數值輸入之w</7’並忽略唯^除外之所有輸出,且(故 /U)而得到之-MDS函數/πα π,其任何投映也是刪 函數。假如S是-有限體或有限環,,是—以—矩陣⑺一则 矩陣’因其計算的向量變換是_,就稱^好了,所計算的函數,那 麼任何由刪除除2之外Μ所有的列’然後再刪除除2之外所有的行 (其中圳而得到的ζχζ矩陣Μ,,是非_咖;亦即#的每一個方 子矩陣是非singular。 該種MDS錄柿辨上錄重要的:㈣執彳卜種「龍的混合」 C mixing)。舉例來說,廳密碼出]採用—咖函數作為二狀態 兀素混合_之—者,於其除最後—懈之各個_中(iWits rounds except the last). 逆轉已建構之高度非線性函數(Invening㈣___ —ti〇n)。當我們採用對某有限體或有限環g之】對i高 度非線性錄抑,,日爾要—個/的反函數,㈣—相對反 97 200905559 函數。(就阳8]而言,對應的狀況,是會有一 lf:M線性函數 /.心^此函數在1/〇編碼後會麵線性,其反函數或相對反函數即 ==5^7"是我缝藉改個細絲性_朗_反錢來大大 接下來提供—種紐,藉此方法對—倾據吾人方法產生^ 度非線性函數/,得到該種反函數(若η或相對反函數(若^ ^ 對任何映射(bijec㈣函數灯” α s",存在一唯一函數P q。 π⑽^〜V、。若力„且_則/不可能是 映射_加)。然、而’ /可以仍舊心⑴,此情形下會有—唯 函數7她❿-广。也就是說,如果忽略不能由呼叫^ ^心中之向量,那麼广】的作用如同一處由呼叫/產生之向量的反函 現在揭露,法,_構該種每次z狀%全為⑻(此 情形下❺)時我們建構的高度非線性函數/的相對反函數。若 ::’則Ζ與之全部是映射,且該·之极级函數亦是/ 通)(ordinary)反函數。 當函數4見建構之步驟(3))由—線性函數&建構,且一最終函數 2』來將。f ,,的輸出映射至{G K /Ui},其中&經過計算作 以々的餘數,此方法能加以採用。(如果七是二的次方,那麼我們可以藉 心結低雜絲計算&,這是—項讀,不過並 對吾人目前目的所須者。) 、^ 98 200905559 定義線性函數£-1與及-1 K y八 . 函數。_這些函數係由—矩陣來:算:::::,、的相對反 :了_•等式’ _,效率地獲得,:= 有限ί衣上線性代如—門技術帽貞盛名的方法。) ” 從/的建構得到有厂一^。定義,卜„其中尤的 對反函數。(因此由麵麵體財限環上線性代數這:技術^ 名的方法輕鬆發現的-Q上㈣矩陣來計算以義~十於是得 到一涵蓋(〇咖)函數ββα {〇,K,yt-l}。 我們所欲的為救函數或如果^則是普通反函數定義於後的函數 f-、.Gq a Gp 〇 對任何Fe G",設 wu =extract[0,M-l](^) wv = extract[w,« - 1](妒)§ /"' {W) = interleave( Γ1 (Wu), Rj1 (Wv)) 其中:y = 當時,這正好是/的普通反函數。當時,此函數之行為如— 只有中向量之反函數。 假如對S ,有一不受限制的形式,亦即假如其非如前面之最佳實施 例所建構者’那麼吾人仍能逆轉(invert)或相對逆轉一映射的(bijective)或i 對1的/。舉例來說,如果s只是一 G:之元素上的表,那麼如果定義 一新表/二⑽广,那麼上面广1的公式,只不過其使用這一個不同的y, 仍是正確的。此新表/可由貫穿(traversing) G„p的全部元素e,此決定 Z(e),並且以s的元素e的内容填入/的元素i:⑷而獲得。 99 200905559 , 使用高度非線性函數來加強10/m,966。當吾人在[17,18]的方法 與系統中加从上揭露的方法時’由於這些函數的構件制線性,故吾人 須將函數加以偽裝。也就是說,由於[17,18]中揭露的編碼方法很容易應用 車圍者的及依據前述產生高度非線性函數的方法所建構的 〜建置’故吾人須應用那些漏的編碼方法。請注意,對於前述產生高度 非線性函數的方法,幾個效應中的一個是對選擇函數$的輸出做編碼,使 得用以選取合適的經編碼及,之建置的索引,姑且稱f•,同樣也是經編碼 的。 關於[17, 18]的圍堵的矩陣建置,有三大用法。 其中兩麵似密碼學上的「白化」(‘whitening,),不過其目標是如同 -般的密碼學,針對白盒攻擊者而非灰盒(grayb〇x)(側管道)攻擊者、或黑 盒恤呔㈣化知明文⑼血㈣及/或密碼文咖如啡調適性^㈣ 已知明文及/或密碼文)攻擊者,增加不明確性(ambiguity)。這兩種用法貌似 那些種應用於灰盒前後文為智慧卡(smartcard)密碼建置防制差分能量 (differentialP〇wer)分析、電磁輻射(EMradiati〇ns)分析之類的保護但是由 於兩種在設計上是要防攻擊者在白盒前後文巾操作,故包含更深奥的變換。 其他-種用法純粹是建置一密碼的線性步驟此些線性步驟报常見於 許多種類的圍堵及串流密碼(block and stream ciphers;)。 總括之,該種圍堵的矩陣建置都為下列目的而應用於[17, 18]中。 (1)用以「先或後白化」;亦即用於混 合輸入與輸出,以將編碼的邊界往外移,藉以使針對一個依據[17, 的 100 200905559
A 乂 飞 建置内部的攻擊,對攻擊顯得更加不明確(ambiguous)。 (2)用以「中白化」(‘mid-whitening,),使一内部計算變更複雜,並 且於計算當中經常更平均地分佈資訊。舉個例子,此種「中白化」在[17, 18] 的第[0249]-[0267]段§5.2.2提出的DES建置中被加以使用。 (3)用以建置欲模糊化、變成防篡改之函數的線性部分,(思考方式 就是,篡改會產生混亂的結果,此混亂的結果極不可能滿足攻擊者或許設 想的任何目標),這些部分有,例如AES中之MxCo/wmra和S/u/伙om步 驟、或DES之任何「位元置換」(‘bit-permuations,)。尤其MxCo/wmra, 此係使用一 4><4 MDS矩陣於GF(28)上4-向量(亦即4-位元組向量)上來 計算。劭明灭,如DES的「位元置換」則不加修改向量内的資訊,只做 重新排列。 我們可以改採依據前揭[17, 18]之延伸所產生的高度非線性函數,方 式如下。 ⑴由於先與後白化純粹是一密碼學的建置之輸入及輸出的編 碼,故吾人能直接應用依據前述[17, 18]延伸的寬廣輸入高度非線性函數的 建構,應用時其矩陣被圍堵,而這些建置所有各部都經過依據[17, 18]的編 碼。該種先與後白化無疑地使利用已知明文或密碼文對白盒建置之攻擊對 —密碼建置起始與最後部分(例如一密碼之起始與最後rounds)的攻擊大大 地更加艱辛。 (2)使用如上揭露產生之高度非線性函數’可改善安全。但是, 由於這樣使用一高度非線性函數也包含其反函數,故此函數及其反函數的 101 200905559 ▼合成—p—)即使藉與另-個線性函數的合成偽裝起來,還是料致 -細編猶性的函數,她刚構映射(hGm()nK)rphiemapping)攻擊 開啟一扇門。所以,建議凡可能時改採用以下的(3)。 ⑶若可% π等應以—相似但⑥度非線性步驟代替線性步驟。舉 例來說,可以使用-高度非線性MDS函數代替細的施⑽屬圃 矩陣。建議當這種代替完成時,密瑪(notAESbutanA£s咖㈣經建置 使得力⑧、和解②、之建置不會相互鄰近,因為相互鄰近可能讓同構映射攻擊 進來。假如-個地點(site)尸、能有加密或只能有解密,那麼此方法提供強力 保護,預防同構映射攻擊。 ⑷此外,若可行’吾人應使用十分寬廣輸入。舉例來說,細的 施⑽卿矩陣將32位元向量映射到錄元向量。一個〜四十億個輸 入的空間上函數_力型人侵,須要排序大約四十億個元素。這不算小, 但是在應用目前設触現今尖端科技下,並非全然不可行。但是假如變兩 L寬廣那麼使用目&方法與設備做該種排序由於會須要排序—表列的超 過1千6百萬兆(丨·〜…9)個項,故可能會不可行。 Ί·Ίβ.加強10/478识8同時保留其尺度之價值〆^氧冬於气嘵案 78’678號[习的系統與方法與美國專利6,594,761 [2]和6,842,862 [4] 者有關,但是’ [5]加了 一些很高度安全的資料編碼,此外又提供了 一系列 以異於[9]之者之方法的量測(measured)下,不同的資料編碼,連同那些編 碼的保護力。 [9]建議藉一些尺度來量測安全,那些尺度雖然很明確地隨建置的安 102 200905559 全性而異,卻不提供-㈣測翁私編^保剌安全的安全尺 度。相反地,[5]提供-個工作相關尺度:此尺度顧碼前不同原始計算 的個數’該種編碼會映射至完全挪的編碼過的計算。(此可能性會產生, 因為-編碼過的計算,其意義依賴於其發生處的前後文。糊來說,依據 [2〇]假如一編碼後的值可依據來編碼,那麼也可以依據^叫 來編碼’其中β’ = 3α、χ’ = 3-1χ及3_,是對應受保護程式碼的目標機器字 長的特殊有限壤中之3的有限環反函數(inverse)。)因此[5]的尺度直接 里測攻擊者企®使鎌據[取編碼所㈣崎絲去馳化(緑^㈣ 受保護資料的計算運算時面對的搜尋空間(search_space)的大小。 我們注意到依據§2·5·3與§2.5·4中列舉、或依據§2.SJ、§2.5.2或 [2,4, 5,2〇]、或§2·7.7舉出[2〇]之延伸中揭露之方法所發現的等式或以上 之任何搭配執行代換(substitutions),在依據[5]保護資料之後,這些代換之執 行不献[5]巾提供的尺度公錢效。至乡,結騎是所提供的保護程度, 從攻擊者企圖去模糊化該種編碼時面對的工作負荷的角度來看,將會老週 [5]之公式給出的數據。 因此建議該種代換作為一種增進[5]之方法所提供之安全的工具。[5] 已經提供雜編綠,例如餘絲賴乡項丨(muitinGmialsinresidual representation) ’該種多項式依上述之尺度來說,極為安全。被期待的是, 透過延伸剛剛說明於前的[5]之方法,可以建構差不多加密強度的資料及計 算上編碼。 2JJ.增添多項式編碼與mA等式至w〇39,817。屯认Ί今敦 103 200905559 們參考加入美國專利申請案咖9,817號的 更尚degree的多項式。 作幻、1甲主 多項式與線性映射—樣可以乘、加、減; 絚了古 果有反函數,我們尚可在 解了 ^爬後述的問題後,如綱般地進行,只不過是以2或以上 d柳的乡《反函躲代祕反錄,射祕 亦即若㈣的反函數是= 所說明求〇。隨著de㈣升高,安全與計算上的額外量也升高§。.中 可逆多項式映射p稱為鄭射,因為它將响的元素映射到 z/(m—_PWffp竭元素;亦即它定義撕)元素的—種置換。 “奶e問題是這樣的:一低加㈣置換多項式的合成 (亦即接近其所包含元她數’對於p或ρ大小的環,那樣的個數 的確是權^吟錄,制[取糊二切6㈣2)或更高類 似物㈣〇㈣)多項歧錄,_敍錄所須之龐大轉喊價高到 滯礙難行。 但是’有若干特殊开M的低(即2,3,或4)置換多項式,其中 的反函數的degree不會大於多項式本身的。為形成p〇]之線性 (gr e 1)編碼的一_人(degree2)、三次㈣或四次(如㈣句類似 物,吾人因此可使下列特殊形式的置換多項式。 縱使該種多項式形式受到諸種限制,根據機器字大小(通常是z/們 104 200905559 或z/(264))選擇典型模數整數環上該種多項式的選擇種類數仍然非常大,大 過足以使該種編碼安全。再者,藉使用[20]之系統的高階類似物,我們消除 知取分析_例如以高斯消去法解聯立線性等式之攻擊的可能性,該高 斯’肖去法可瓶_崎性絲破壞(subvert)或赚剛所提供的編碼。 下面,所有的計算係在合適的整數模數環上執行,通常在以 Z/(264)上。 ()上或 二次多項4舜及竭袭。P是可逆,又 若P(x) = ax2+i>x + c 其中 且办 是奇數,則 ^ l(^) = άχ1 -\-ex-l·/? 其中常數係數定羲為 d a z__ b” ^ ac 1 :2 H— b3 b c ac2 U, 三次彡磺4、戽及竭袭。 數,則户可逆,又 其中常數係數定義為 若户(文)=瓜3+&2+£^ + ^/其中〇(2=:62=;;〇 且C是奇 P~l(x) ^ex3, + fic1 +gx + h. 105 7,200905559 a 3 ad b 4 3~ > c c h =-ed3 、ad b ) ,2 c4 c 1 rad2 Λ, uh\ 二人夕項式與反函數。若户⑻:似4+加3+cx2+由+ e其中α2=62=(2=〇且 β是奇數,則ρ可逆,又 Ρ-1(χ) =β4 +gxi +hx2 +ix + j t 其中常數係數定義為 a 8 h 4ae b c
H _6££l+3^ d5 d3 4ae3 .be2 .. —~1— d5 d4 .+ ec 1 及 4 ae' be3 ce2 e 更一層模糊化多項式與反函數。前揭多項式編碼尚可藉後修改 (post-modifying)變得更隱密(obscure),就是應用依據本說明書§2.5.3與 §2.5.4中揭露、或以§2.5.1與§2.5.2中列舉之方法發現的等式的代替 (substitutions),該種代替提供了進入一個實質無限制也因此大到無法搜尋的 等式的集合,或以上^者或更多者的某種搭配的管道,藉以使這些編碼因 為同時使用計算t多重、不_深奥的數學域,而無法應用Mathema細 106 200905559 . ™、Matlab 7M或Maple取之類工具來分析。 2.8.本說明書延伸之其他系統與方法。§2·7中參考包含了軟體 模糊化及防篡改方法’而另有那些方法的替代品(altemative)提供在美國專 利6风325 [9]、美國專利6,_,452 [19]和美國專利μ%,4?5間之中。 我們現在要揭露-些方法’藉這些方法可針對使上列保護成騎高層建構 互鎖之有用低層基材的目的,而加強上列保護。 [9,19]的方法與系統依賴被提供的熵(有效地隨機資訊輸入,其植 根-偽隨機值串流(stream),是爾用這些方法與系統的編碼與保護決策即 依據此制定)。因此這些提供高度_射續獅—鄉;:每次使用這些 方法與系統通常會產生不同的結果,藉以因為對原本未保護的咖經使用 上述方法熟祕改為祕_ SBE的事嫩攻擊,必每次產生的事 例而異,而使攻擊者的工作更困難。 2.8丄灰潘6,_,325的截。美國專利6,668,325號⑼列舉相 备多不同的模糊化技術,涵蓋了軟體的各種層面,即控制流程、資料流程、 細結構和目縣。此外’此賴械議從—庫的難難化__些模 糊化,直到達成一在各種尺度下所欲程度的保護。實際上,在軟體工程中, 程式的輕蛛/_)是一項目標;[9]採用了尺度,可是兼具與清晰性相 反的效果,亦即具有轉雜(―的,故[9]提供了-種用於積極避免及 /或倒轉軟社程所要求的可賴和騎&erspieuj⑺,神保存功能性的機 械化方法。[9】把一晦澀化變換(obscuring transformation)的忑貪分成三個 方面:處力纪”印),此為一有保護的軟體以典型軟體工程尺度如迴圈 107 200905559 , (cyclomatic)複雜度,來評估其明晰的「壞的程度」(‘badness,),款度,此為 利用Mocha之類去模糊化程式來去模糊化該種轉變的困難度,以及政本, 此為因採用該轉變而增加的額外量的量(就執行變慢及/或程式碼膨脹而 言)。 如同§2.7.6’我們現在為[9]提供的強化方法,在該發明之尺度方面 不會衫響其最佳實施例,反而使受保護碼更難以分析,甚至使用諸如 Mathematica ™、Matlab w、版_ ™的分析工具,並且更積極易碎, 於是因同時使用異而深奥的帶數域及/或揭露於後之其他保護而可抵檔目 標性篡改’藉以提供更大的晦澀性和防篡改力。 [9]提出不透明的(opaque)計算上價值,尤其不道努 pmfc咖X見[9] §61第ls攔、§8第26攔)用於藉使條件分支⑻晦 溫來保護控做程。該專糧出—種產生不翻述_方法,並自己指出 其過於弱之後,又提出兩馳強的方法,—種級[9] §8 ι第26棚中(使 用別名’因別名分析成本甚大),一種見於§82第26糊中(使用多緒計算 (multlplethreadS) ’ ®平行减錄成本甚大)。骑鶴大料碼與更慢 的執行而言,都會引起沉重成本。 -種方法使驗據本姻書§2.5.3巾揭露或引用,或揭露於似4、 或使用本書與§2.5.2舉出之方法發現鱗式做代換 (substituti⑽),變換述詞’會是遠為較好的方法;藉該些種等式提供幾乎無 限制也因此大到無法搜尋的可_式_合,或更理想,以上兩者或更多 者的某種搭配,使這些編碼因同時使用計算中多重、不同到深奥的數學域, 108 200905559 '而不能使用Mathematica ™、施軸咖或Maple撕之類工具來分析, 同時只造成實質上很小的程式碼體積額外量,允許遠為較快的執行。 [9] § 7·1·1帛21觀議在程式巾線性編碼變數,第22搁第一段 寫道:「顯然,溢位...問題須要提出。吾人可決定因為變數的範圍…有 問題,不會發生溢位’抑或可改成-較大類型。」因此明顯地,乃考慮採 對整數的線性編碼(或對浮點數,不過這會引發準度問題,準度問題嚴重限 制了該種天真祕浮職碼的可應祕)。蘭建議剌遠紐異的_ 的整數編碼,加上田·7中的延伸。如此則避免[9]所提醒的溢位問題(那 些問題變成那維持模而非待解決難題的建置合法㈣ti_)的一部分卜溢 位問題保持了變數大小,且有了如§2.77中提到腦±之代換的使用,它 們成為高度抗代數分析及反向工程。 [9] §7.1.3第23欄提出將-變數x分割為複數個變數,例如 从,故能使用某函數f/(V2)來讀取χ之值。我們注意到那樣讀取 X會使程式碼_ χ _碍,此乃不希望有的。讓計算在編碼形態中 進行的編碼比較好,例如[5]之基於中國餘數定理的餘數系統咖)編 碼’加上§2.7.6中對其之延伸。這個同樣也分割魏,但是_般不會需求解 碼以應使用。 [9] § 7.2,1第24欄提出將純量變數合併(merging)為—個較寬的變數 (例如將兩個位元變數包在—32位元變數的低階—半與高階—半裡)。這樣 由於任何-個存取(accessing)程式碼都會暴露此技巧故並非十分安全。 -較好的辦法是使用如咖和§2.7.6中所延伸[2,4,5]的向量編碼其 109 200905559 . 提供多對多而非一對一映射(mapping),而且具有很高的晦澀,兼支援編碼 資料上之計算’不需求解碼以應使用。 [9] § 7.2.2苐24攔建議我們以重構(restructurjng)陣列來模糊化陣 列.要我們將多個陣列合併成一個、將單一陣列分割成複數個陣列、增加 維度數、或減少維度數。我們注意到只有有限的模糊化能維度之數藉由改 變達成 be achieved by altering the number 〇f dimensions,由於通常一陣列是 由一連續帶的記憶體細胞(contiguous strip 〇fmem〇ry cd叫來代表亦即在目 標程式碼層次,經過編譯之程式碼中的陣列,不論其在對應之高層源碼中 可能有幾個維度’現在已經是單維度(unidimenskmal)了。 如表铉合尤#位1編碼知_祕>吻,合併陣列能提供有效的模糊 化。因此我們建議藉合併陣列並使用置換衝為多韻.势之定址,提供比[9] §7.2.2之方法提供者更強的模糊化澇多項式係一可逆多項式,例如 中用於編碼的一次(仿射)多項式,或§2·77中加於該多項式上之二次、 三次和四次多項式。該種置換多項式將元素以偽隨機、似雜凑表的方式映 射至各位置;且應用依據本說明書§2·5.3中揭露或引用,或§2·5.4中揭露, 或以本β兒明書§251與§25·2中提供之方法發現之等式的代換,施加索 引程式碼的先及/或後修改,其提供财進人實㈣關也因此大到無法搜 尋的等式的集合,或以上兩者或更多者的某種搭配,將會使該種索引計算 因同時使用計算中多重、不同到深奥的數學域,而無法使用Mathematica Mat丨ab取或Maple撕之類工具加以分析,而且因此將會提供雖不用 本說明書揭露之加強,卻麵9] §7.2.2之講解所提供者更強的模糊化。 110 200905559 或捨上法採他法,吾人可將陣列合併成有依據[16]之保護、依據§2 72 之加強的記憶體陣列,藉以達成以上全部的好處之外,並有編碼資料增加 之模糊化優點。再者,該種形態的保護不僅可應用至陣列,也應用至任意 資料記錄’甚至由指標(p〇inters)連繫的鏈結(linked)資料結構。 減少6,088,452額外量同時增加安全。美國專利6,088,452 號[19]藉由引進涵蓋全部欲保護區域的敎達來將軟體(或能以 VHDL之類語言編撰程式方式表達的硬體)模糊化。依據[19]之焱磋是一 資料流程圖,其中每一個輸出依賴每一個輸入。程式之各BB有該種級連。 級連中的計算基本上是任意的;其目的在於傳輸熵而不達成有用工作。 原始程式中的計算於是與級連以及彼此加如,產生極濃密, 具有極高程度互倚性的資料錄圖,藉赠立辦•崎 ―)的條件:受保護程式的任何小改變,其重複原始程式之行為,唯 變成有大得多又很不同的程式碼’會造成受㈣程式之行為很大又混亂的 變化。 [19]中之例係使用整數上之瘦廣掛臟如-加⑽^ (矩陣)運算 intertwine運算[19]主要關於保護資料項目是整數的程式^(事實上這是指許 多低層程式的情雜個運為統可建構起來無餅肺式碼。) 然而’整數計算的問題,包含依據[19]之級連與交纏(intertwining) 中所應用者’ 75是整數計算能超過其在被射之目標平台上所應用的資料 類型的範圍限制。其結果乃是實際應用依據[19]而保護的程式則須要比原 始程式情仙者,錢雜[19]之俩前,更大數表示。 111 200905559 因此我們比較喜歡見到所有該種計算,無論在撼钱級連中,都 在bam上執行,其巾„是目標平台的最佳字長,以位元為單位,故 算術Z/(2 )上在執行’見§2.3.2。選上#交纏矩陣應該是哪)上可逆矩 陣(有奇數蝴式的祕)。因此齡^再是問題,無駄的資料表示,增 加私式碼來處理多重精度也避免了,而且程式碼比起依循[I%之講解、未 採用本說明書揭露之加強的情形,更小、更快。(然、而,原始程式中計算的 完全範圍較到支援’如錄[圳簡之程式的雜計算的支援。) [19]&供之保護程度能藉後修改交纏計算與級連更進一步改善之;採 用依據本·f §2.5.3情露或,或§254 +揭露,或林說明書 §2.5.1與§2.5.2中舉出之方法發現之等式的代替,此提供了進入一個實質 無限制也·大到無法搜尋_式_合,_上兩者或〇者的某種搭 配的管道,藉以使交麟算與級連_在計算中同時個多重、不同到深 奥的數學域,而無法應用Mat— ™、Matlab w、或触_版之 類工具加以分析。 l.%3.以增大索引複雜度增加6192,475的安全。表風 M92,475號[2η的緣與方法以改變及增大-基於軟體的實物的變數與 陣列的紐,使得⑷其索引娜比原騎収複雜(材能因為原本無 索引),以及⑻變數與元素在被保護程式中不再有固定的位置,來保護該 變數鱗列。[27]之最有效運算依賴欲保護之軟體的性質:對於執行許多 迴路内陣列運算的程式’無論該迴路是明示的僅是暗示的,其運作成效最 佳0 112 200905559 ^ 间思讀引僅是整數的_運算,對大錢程式語言憎财引的 自然理解。其保護可㈣種卿改魏更強。 •使用值1之Z/(2«這式的模數環上之索引,該值*之性質揭露於於 後。 、置換多項式X換索⑽範斷anges)做編碼 索引’使㈣列索引邓“.·.‘]變成陣列索引⑽),…德)]其中 户丨,·.·,A«是置換多項式,其性質揭露於後。 (伸本身無用。其與第二個結合,而使陣列索引變成徹底編碼 (scrambling) J 〇 對一陣列之各维度,吾人選擇纟為質數’最好是該維度或以上之最 小質數’不然就是-個2"形態的數,最好選擇最小的”,對於〃,2” 與、隹度樣大。别-種情形中z/w= GFw,故吾人可使用該體(脇) 上基本上普通的矩陣計算:—矩陣如果其行列式非零,則其為可逆。後一 種清形中,Z/(2 )是-模數環,其有一模(m〇dulus)通常位元數从平台之 最佳。十算上之子之位元數,故(不同於其他前後文,在那些前後文中本揭露 私用雜⑹模運算必須由—位元單元λ㈣運算嚇執行,該運算 训办計算結果’帶著-遮罩包含所有的零,唯”低階工位元除外。該情 形下由於若一矩陣之行列式為〇也,則矩陣只能是可逆,故線性代數必 須加以調整。 以上置換多項式由於在此置換多項式之使用中無須逆轉(inverting)多 項式’故其應屬低次(舉例來說,U3,或4次)但有高次之反函數。如此 J13 200905559 使多項式的計算不昂責’ 反献之計算昂貴,這正是吾人所欲者:給 我們低成本的實_馳。求該換多項植容^大錄低次的置換 多項式有高次的反函數。 這些延伸,連同其變體,當中無—者會使數學或之方法(作Μ #雜^的基本面貌無效。但是,其搭配在迴路當令(明示或暗示)會徹底 掉擾(scrambles)變數、元素的記憶體位置,以及這些的繼承(難⑽㈣位 置,使系統的分析不僅在最猶況下超難⑽如吨,如间之未延伸版本中 的情形,而且幾乎在每一禮情況下都極端地難以分析。 ^•些延伸大大加強[27]的安全,代價是被如此模糊化,並變成遭篡改 時易碎的程式,其可執行形態部分佔更大空間及時間額外量。 2.9.建立所須的性質。本節中我們要講解如何建立本方法與系統對 插入互鎖於SBE巾_求:也就是說要講解如何產生—體的、晦溫的及 合乎文本# OE、晦湿的及合乎文本的IA、與基本的、晦溫的及合乎文本的 RPE 〇 2-9.1. M^-m〇E^S^RPE^mA (Generating Integral OEs, ,藝?τν娜如前面§2A5中提到,加到先^ BB 集合I中所計算的龙產立F的計算的輸出延伸(〇Es),當把它們轉換 為由以BB集合r所計算的以計算F,時,必須是一翻,·也就是 說,此延伸必須在插入互鎖之前儘可能綁入正常的計算。 如§2.4.4中提到,加到尤说矣BB集合r中所計算的光说起G的 計算的RPE,當把它們轉換為由充讀·為BB集合Γ所計算之羌廣為計算 114 200905559 G’時,必須是羞名的;也就是說,RPE必須如此與插入互鎖前即存在的 正常計算結合’故正常功能性必須發生,若rpe依據產至F,而期待的輸 入以及轉多(iram/er) i?’均未遭篡改,則阻斷某些極不可能的同時發生 (improbable coincidence)。 如果考慮由龙產ϋΒΒ集合X計算的龙j兰mf 或許經過以進_ 步修改被先轉移BB集合F計算的先轉移之後,可能會有一些由計算 Z中之F產生的值,這些值被由先消耗BB集合r所計算的先消耗 MF G消耗。這些值的計算與z所進行的計算F是一撕,通常,或 許’里過由F進行/?輯算來做進—步修改,$些值的計算是ρ進行g 之計算的產姜。 第種情況· χ — γ資料依賴性(Dependenc^缺乏或弱。氣如姑 或不夠多該觀ϋ BB集合/中計算,然後又被在先雜BB集合对 應用的值’或許經過在賴多BB集奸中進—步修改後,我們必須加入 ^增加該種依賴性的數量。在把這件工作做到—個足夠的程度後,我們已 i建立了_ f料依雛,我們能依照以下f 2雜況: χ3γ資料依賴性〆. 為增加^資料依賴性,我們可以
茶的方式應用[20J 、、·、、或§Ζλ7中講解職編碼系統的延伸。 在_的編碼系統中,對BAW中之一整數值η 執行環境的正常字長μ 、中《疋目軚 卞贡戮们編碼X作為y = jx+6,其 b ^mbias)〇b & 、讀私# 疋任意,但是s應是奇數,以便保存χ中資訊所有 135 200905559 的位元。⑽稱如何可卿樣編碼的值作計㈣獅細細,盆中 不同值有不同純量和偏差,以便包含所有c或c++的正常内建(祕攝 術、·與位元單元運算。§2.7·7揭露幾種方法,延伸_中的編碼至 非線性degree的多項式。 為增加W資料依賴性,我們利用綱集合中計算的值作為 ⑽之原始版本中或其延伸至如§2.7·7中揭露之二次、三次或四次多項式 的-值⑽錢數項式㈣,即/的絲),因為這樣免除 了動態計算反函數的必要。接著使用得自I的偏差編碼y中的計算, 藉以使用足夠多的Z中計算的值,或如前述由這些值導出之值,作為r中 使用之值及執狀a十算的依據[20]之編竭的偏差,我們能產生任意強尤W 資料依賴性,而且因此能献對於以下農2禮料歸 沒方法之使㈣先絲件(p職nditiGn);接著此該方賴續進行。 捨[20]的編碼,我們應用[2,4,5,17,18]巾之一者或多者的編碼, 而除此之外也可採用’或乾脆改採另—翻似方法:使用射至bb集合 尤中的值,或單純由㈣值導出的絲提供編碼的錬。藉如此對足夠多 做’或更對單純/中計算之值導出的值做,並且應用這些 值作為係數來編碼r巾各值及計算,仙能產生任意強資料依 賴性’又因此能滿足下述標題為f 2禮叙:遂f機纖之方 法的使用的先決條件,接著⑽方法繼續進行。 以上諸方法之任一者或全部’都可以應用我們在§2 5·3中揭露或引 用、或在§2.5.4中揭露的等式,或藉使用本說明書泣5」或§2.5.2中講 116 200905559 . 解之方法產生的等式,或§2.7.7中提到[2〇]的延伸中求得的等式,進一步 修改那些[2, 4,5, 17, 18, 2G]中列舉之編碼所得到的編碼,進_步加以增 大。藉該種手法施於足夠多的I與Γ中的計算,我們能產生任意強 資料依賴性,又因此能滿足下述標題為裘2禮摩況:潑資 機顧之雜的賴的縣決條件,料㈣紐繼續進行。 最後,我們可以做X巾的計算,藉利用我們於§2·5 3中揭露或引 用、或於§2.5·4中揭露的等式,或使用本說明書與§2.5 2中講解 之方法產生的等式,或[2, 4, 5, 20]中揭露、或§2.7.7中舉出[2〇]的延伸 中求得的等式,產生那些使用不同表示摘相同計算的新增版本。該新增 版本與原始版m:檢查程辆麟無法分斯始版本與 新增版本。此時,這些計算產生了相等(丨—㈣的結果,但是我們應將它 們放在新、分開的值内。 於疋我們症藉由使用原始和替代物(altemates)這樣得值的配對,一者 原產生於X巾’-者由利用前揭MBA等式如上述般加入,輕鬆地增大 F中的表示式,以利用這些值並使無淨改變(netchange)發生。經過進一步 說明於後的模糊化步驟,這些用法會被很好地隱藏起來。再者,由於沒有 淨效用(neteffect)的增大係採用χ巾之原始值以及增雜,故吾人有了額 外的優點’就是藉引發原始值與加上等式之值之間的差異ϋ改計算會 引起r +之計算失敗,藉以使κ巾表示式增大具有一淨效用,藉以隨意 (haphazardly)修改r中原始計算來計算不同的、隨意的(haphazard)結 果0 117 200905559 . 藉由產生足夠該種增大,我們能產生任何所欲程度的資料依 賴性,藉以滿足下述P禮敎之方法的使用的條件,接著以該方法繼續 進行。 顯然,吾人亦可採取以上方法之任何搭配,以達到一強义^資料 依賴性的狀態,然後依據後面篇2禮_繼續進行。 第2種情況.強X — γ資料依雛。心,絲⑽過v (炎 一步修改,有足夠該種X中計紅顧於r之值,那麼我們可以定義7 為這些值的副本㈣㈣的狀態空間(狀態印㈣,定義&為這些副本經過 及如同修改其原始版本般的修改後的狀態空間,定知以利用這些副本, 如說明於後。 於疋’ (十㈣其中υ係由再次執行已選取 之值的計算而麟,缝產生K之副本躲(eQpied_岭靜,此時, 輸出延伸並不安全,因為產生,+的計算係複製自既有由f的子計 算(SUbc〇mputations)。本說明書後面還要分若干步驟討論這侧題。(請注 〜由於χ+疋程式之狀態空間某部分的副本,故或許包含許多變數之值。) 重複(located)值是最佳實施例,但是存在著其他資訊保存的替代 辦法’例如x+m x+4 + Miu+=x⑽,其忪是一常數,,與 ㊉代表位元單元運算,+在目標硬_自然二之補數概環巾執行。許 多該種資訊保存的替代辦法對熟悉此技術的人是顯見的,事實上多到在 互鎖插入當中依據隨機輸入以算數方法選擇它們都很容易。 以上已經提到以複製計_製值。對任何複製值c,明顯地,與其複 118 200905559 製C,我們能複製-些值,例* 這些是藉以計算c的#入,即 使這些輪人射錢以巾#_式侧計#_本。如此讓我們可做許 多不同副本騎擇,藉以增加插人時所選擇之輸岐伸^的晦溫。 瘦袭(c〇_)值至少在初始時是與原始值(否則至少與實郷存替 代物值)鄉(咖㈣的;聊㈣^ _目岐蝴轉__ (matches)的解。此方法的#代瓶可能是選擇娜㈣⑽)值:與其產生 值V之琳c,’吾人可設一值r ’與v之值娜例如,可以確定… 或〜或或獲料。這些都是合法、可行的選擇,不過根據 下列理推論’在最佳實施例中我們選取完全一雜(或至少至少,選取等同 ㈣訊)。若考慮-值v,,其麵種較讀v糊則藉墓改 意外達成此侧性的可驗,倾約目·變得更有關喊少。隨機選 擇的_2]的元素平均在〜.29xlG9:欠隨機嘗試裡只有—次會配中” 然而,-隨機選_BA[32]的元素,遠較經常會大於、或小於v:亦即 這些關係並非最佳,因為它們不是十分限制性的。A隨機選擇的BA网的 元素或許時常使vmodr = 5 :即|r|次陆擒皆, 丨丨I人丨通機嘗s式中的一次,此通常遠比γ 次隨機嘗財的域繁得乡。為麟因,本最佳魏例制雜㈣㈣ 值(或資娜存替餘)’故篡改辭確定會造额義之複驗或職之 替代值匹配不成功。 有狀態X,如被由对BB計算之β的計算修改(襲地祕y computation of , bytheBBsin F)者,稱其為狀態”接著繼續吾人之延 伸資料狀態’由於响v,故心㈣卜(v,v+),其中v+是處理&中複製 119 200905559 =數的結果,如同其原始本被λ處理—般,我們又—次只複製那些計 崎 之顧於^本而非原始本。(假如永遠不會影響它們,那麼每_ 種情形下w故x=J。) 此時’我們必須以BB集合y將先雜計算g轉換成一 &雜計 \ 仏£。我們设法這樣做,並使X與'之間關係或读^之間 關係的混《啦祕_)將會導致計算、失敗。 我們這虹侧最佳方法,是细—個事實:狀態被擷取在v+内的 變數的内與被擷取在v内對應之魏驗態(此時)拉—泰,其中v 變數v變數之一子集。 田…、如别面讨論F〇E輸出延伸之產生時所言,吾人原可採用除等式 外之或多個_ ;在這種情形下,唯娜些替代性_成立,而非唯若 等式關係成立,吾人即會調整鹏之產生以正常運算。不然,假如條和 心’兩者可互換’而以—替代形式保存資訊,則如果有〜等式W⑷, P麼我們吳可以y㈨代替x。舉例來說,若V以,,則我們不受 拘束地以計算0+-々)代替值;C。 _,如前§2.5.3中第⑶項說過,對於二魏m η, 那麼也會有V2=V,—0,V1十州本二(有 以及許多其他可由簡單代數操作,或由與§253中揭露或引用, 或§2,5.4偷峨,触似1轨2巾揭露之梅現的等式, 或P,4,5,摩揭露,或§2.7·7中提响之延伸所求得的等式搭 導出的等式。 120 200905559 假設V,是V的部分’ Vz是'的部分。於是我們能產生許多絲% 奠V2 ·綠押剛轉則完全相同的表示式。藉使用對h與^之隨機 選擇,或V,與v2在G中雙雙的發生的一種混合,此原來只用例如v並 對數個不同v,,v2配對進行此項’故影響許多G中使用的變數,自由地在 該種表示式中代換,我生-G之變體GRPE,唯若對吝Μ配對, W2則此變體GrpE S現正常,否則它幾乎必然失敗。請注意,篡改知 抑或凡gg能產生-對H,ν,π。我們因此產生所需的縣侧,^Ε。 —:前面談了使用原始值及其複製(duplicates)。(更一般來講,這 可由原始值及其糊值’或對原始值和複製之計算的輸人,或與該輸入相 關之值代替之。)我們也可以應用藉由這些值計算的值和複製,而不用原始 值及其複製;亦岐帛這錄做為輸人,即使這些錢在y巾執行程式碼 之遂計算的。也就是說’我們可使用來自I,的複製來產巾更多的複製, 然後在計算巾制㈣複製(或者也許其他鶴的細值)以便引致發 生篡改時高度可能的失敗。如此讓吾人對顧何翻本於產生程式碼遭篡
改時會失’丈有更多不同選擇,藉以增加我們在插入互鎖時選擇的处E
Grpe的晦溫。 產生1A 我們已很快提到在將由BB集合r執行的克舜多計算 Λ·乂α S轉換為计算l:」xJa如尺,我們可做以下任何事。 ⑹假如及已經修?文I中計算之值,且在r中應用修改,那麼,如果那些 值被複製來由F產生一體〇£ —,那麼我們可複製々中之相關計 算以獲4、,而且那些由&的複製可應用於^,同時隨機選取 121 200905559 使用原始及複製值,以便使RPE GrpE成為對保留G的功能性是基本 的。無論計算之複雜度和貫穿先轉移BB集合F之控制的流程為何, 這個方法都適用。 (7)假如i?無修改j中計算之值,該值是我們希望複製來由F產生一 體OEFoe的,那麼我們可以就不去修改BB集合r中計算*之計 算。此意味尺=/且i?agg=[/?為],其中j包含複製之值。此替代作法 (什麼都不做)無論計算之複雜度和貫穿先轉移BB集合r之控制的流 程為何’這個方法都適用。 ⑻假如i?無修改X中計算之值,該值是我們希望複製來由卩產生一體 〇ef〇e的,那麼我們可以把計算加到P,使得對任何已知配對μ 其忾是計算^之-原始結果,V2是一被加入的複製,且我們可以 T-對計算加到〃使得Vi被使麟若預算,不過這些計算最終還 疋產生Vl ’又A被使用於不同組的計算,這些計算,同樣地最終還 是產生V2。也就是說,我們在Vi⑹上執行不同計算,而無淨效 用(neteffeet)。_’ ^和I佩]物變,㈣包含複 製值,但输猶,紙_,謝後,㈣ =整體功能性依嶋了勢如果仍是真的,這已完全不是晦 此替代方法要雜概夠分析蝴V1,V2崎上Μ計 如果貫穿⑽資料流程和控制流程夠複雜, ,j 難。因此,此方法只適用…At ”析或許會十分困 用於虽它能被限制於修改bb集合^之部分 122 200905559 對於控概程«料雜允賴種«料可靠地添加淨效用, 這是夠簡單了。(因此可允許的複雜程度將視可資利用之編譯器資料流 程分析和控繼程分析設施的難而定。)此方料像社⑹和⑺ 替代方法每次都適用。 假如無修改z中计算之值,該值是我們希望複製來由π產生— 體〇EFoe&,那麼我們可以把計算加到F,使得對任何已知配對 v,,v2其中Vl是計算F之一原始結果,V2是一被加入的複製,且我 們可以把-騎算加❼使得V1被使聽轩計算,這些計算最終 產生π ’其中通常W1q,又A被使用於一不同組的計算,這些計 算最終產生〜其中通常%”2’又其中V1很容易地從冰計算、报 '、易也從W”十算。也就是說,我們在K與&上執行不同的計算, 其爭放用,但疋仍以偽裝型態π與%保留h與h之值,其A 與V2可經過計算。 我們於是在產生(7舰時修改程式碼,故程式碼分別以使用依據叫之
Vl的表示式和使用依據%之&的表示式取代 ' 之使用與〜之 複製使用。 然後我們报可能就有尺",及及哪=㈣,其中獲W,,W2執行上述 V,,V2的計算。當然,這不是對一個V,,v2配對及其對應W|,W2配對是 真而疋對所有我們求得的VPV2配對’以及所有其對應W,,W2配對為真。 經過說明於後的模糊化步驟後,這些計算或許不再從各種配對的% and %值產生相同V1與V2之值,縱使整體功能性仍然保存,或者, 123 200905559 . 即使會那樣,那種事實也不會明顯 至於以上的替代方法(8),此替 ,方法需求我們能夠分析加到 配對上之嘴算的淨效用,此情形下是要產生Μ配對。如果貫穿 F的資料絲和控做程夠娜,«該分析鱗會十分。因此, 此方法只適用於當它能被限制於修改bb集奸中之部分BB,對评 制流程與資料流程允許該種計算且會有特定淨效用,依據已知、歸 值的公式的叫,w2配對的計算, τ异了罪地加入。(因此可允許的複雜程度 將視可資利用之編譯器資料流程分析和控制流程分析設施的精密而 定。)此方法不像以上⑹和⑺替代方法每次都適用。 以上方法⑶和(4)遭到限制,它們只能應用於這種情形:先轉_ 集合对資料流輕和控制流程複雜性低得a使增加的計算可預測,並且 無F0E所產生之輸出延伸複製配對上的淨效用,或者有一明白的、保存採偽 裳型態Μ的輸出延伸複製配對之值V|,V2的淨效用。 此限制能使用§2.1G.2中朗的方法克服之。 2.92.使⑽、IA、赃變晦潔、合乎文本。_#又德齋⑽ 、鎖的基本、,、。構之後’我們現在必須使互鎖程式碼晦溫,使之難以分析, 並使其功能性晦溫,進一步增加其防篡改力,而且我們必須使互鎖程式碼 合乎文本,使其貌似周圍的程式碼。 考#互鐵.轉。吾人達成此點的最佳方法,是應用相同的方法, 或術方篡改注人為產生互鎖而增加的程式碼,以及注人雜式碼附近之其 他程式碼的方法,紐續近之其絲式碼具有不同的防篡改之強度,由 124 200905559 • 互鎖程式碼本身及其最近鄰程式竭的高程度變化至漸雜互鎖程式碼之程 式碼而漸低的低程度,直到最後我們達到SBE之程式碼更大的體積,不過 SBE之程式碼可保持不變,因為其距離互雜式碼已夠遠,故無須特別保 護來保護插入之互鎖。 對於[2, 4, 5, 9, 19, 20]全部,或§2 7與§2 8中之其延伸,的防慕改 方法’保護之強度可藉轉換—更大或較小數麟算。—更大錄小數的值, 以及藉選擇具有更高或更低額外量及對應之更高或更低安全的轉換,而高 低不同。該種選擇之分析,提供於附。該些方法可應用於所有的互鎖 的組件。 另外可應用於所有互鎖組件的防篡改方法能以下列方式獲得:祁,《 ^,以列之任何—者或全部讀面似與似中提到其延伸結合增 加之資料和藉添任何數目之§2.5·3中揭露或個、或Μ4中揭露,或由 咖或§2.5.2中之方法產生的等式至為產生[2,4,5,9,19,2()]之資料盘 計算編麵湖_式、或似7情狀_祕伸崎供鱗式而獲 得的計算模糊化。 1 另採他法的話,下列方式可以獲得更大或更小強度的模糊化:執行較 賴梳《辦的絲摘储,射賊妓她據A5.3 中揭咸_、或郎中揭露或以咖或如中之方法產生, §Z7 料與計算編 等式,的等價(equiva〗ent)表示式來取代表示式。由該等工具 現的該等等树目嶋蝴A,M_,㈣㈣^ 125 200905559 • 乎是無限的。同樣的’該種模糊化可應用於所有的互鎖組件。 不過,防篡改最好儘是模糊化,因為防篡改意味不僅遭受注入錯誤 (fault-injection)的攻擊和其他修改程式碼的攻擊時的晦澀性,還有混亂行為。 該多種型態的模糊化是熟悉編譯器程式碼轉換與代數操作及推導的技 術者能輕鬆地操作以及延伸的。 多Z4。假如攻擊者了解—雜ia的控制流程,就有利於對 其攻擊。於是,我們偏好使用依據§2·7·3延伸的[3]的方法與系統,或許若 f源關需轉侧外量時再經過依據§2/7.4的降低;或採糊之控制流 程保護,最好經過§2.8」中揭露的改進,來使構成一卿iAUB之間 的’或其周圍的BB中的該種控制流程同時悔溫以及防慕改。 2.10.互销方法之變化。以上講解的互鎖之基本系統與方法有多種 變化’猎由增多能以互鎖雜建構的安全性f的數量,大大地增加了基本 系統與方法之可應用性的效用與寬度。以下提供若干該種變化。 2.10.1•合烊的互銻。假設我們遂趫分户尤難移bB集合r至尤漭 為BB集合u鎖了克“ BB集合尤,藉以轉換z為μ bb集合 轉換Ρ為轉發ΒΒ集合ρ,並轉換r為,雜ΒΒ集合r。 〜主心'我們絕對不會被阻止選擇一新的BB集合义,以广 2為新的龙雜BB集合γ=Γ,選擇一適當的新讀多集 ^ X與Y之間’然後將X互鎖至Y ’藉以將X轉換成產虔 。X’V轉換成雜BB集合v,,紐八4,轉換成雜BB集合 〇 126 200905559 • x :再互鎖延伸至r兩次,再互鎖至r重複任何次,故我們能將 'A r ’然後弋至r,然後{至r,,等等。 該種重複互鎖至程朗—部分的接續互鎖,我們稱之為綠謂。 鏈、、。的(Lmked)互鎖與互鎖鍵(Chaining)。&良稱的輯 ^在任何狀況下都有用,它會藉互鎖把一連串bb集合綁起來,該情況 壬何點的表改都會引起整條鏈從頭到尾接續的失效,藉以挫折任何骇客 可能懷有破壞原始程式碼之目的的意圖。 卜互鎖鏈可用以在產生u上規避方法⑶與⑷的限制;其只 能應用在這種情形:先轉移BB集合F t資料流程和控制流程複雜低得 足以使增加的計算可預測,並且無^所產生之輸出延伸複製配對上的淨效 用’或者有-明白的、保存採偽裝型態㈣的輸出延伸複製配對之值 v,,v2的淨效用。 當互鎖由現在講解的紐_來時,我們偏賴侧_方法與系 統’經依據§2.7.3延伸,或許若資_财降低額外量時再經過依據 _的降低’或採刚之控制流程保護,最好經過PM中揭露的改 進,來使被鏈的互鎖(不只_ IA之BB)所有的組件,及其緊鄰中之肋 的控制流程同時晦溫以及防篡改,來保護其被鍵的控制流程。 為將互鎖鏈起來,我取意到,被互鎖此關係可被做成轉 •㈣,故假如I互鎖至r,r互鎖至2,都以後賴觸方式, 那麼尤實質上互鎖至Z。 並將一計算 為將一計算F的Z的互鎖至計算g的[, 127 200905559 g的r的互鎖鐽•结至計算孖的2,我們注意到叉基本上被有關初始時 於F之OE中計算然後用於一由z計算之G的RPE的值之配對的等 式互鎖至r,而如此互鎖以致引起這些配對之元素相異的篡改會導致 無法保存G的功能性;亦即會造成Grpe的計算失效。為確定互鎖的可遞 性’我們於是必須從GrpE複製值的配對,產生一 Grpe:〇e使得g_e中 計算的新的複f目&驗賴若上雜對減則在Grpe巾會失效輯算,亦即 新的複製配對的計算,係使用該計算收到的一個配對裡的兩個元素,計算 之方式下,在新的GWE:0E計算中,若進來的配對相異則新的出去的配對 極可能會相異。當如此完成後,一旦G,和互鎖,G,之失效就會觸發^ 之失效Z至7及r至Z的互鎖已安插。 因此,欲啟動(effect)— z與2間之互鎖,吾人可捨前法而編造一 I 與r間之互鎖,然後以一鏈,结的互鎖將結果經修改的F至z加以互鎖, 該避.结的互鎖係至已先建立之z至r互鎖。此可應用於任何互鎖之鍵 (chain) ··若於一序列的BB集合^,κ ^中,如果能產生—趣结的互鎖 {至&,卜1,W ’那麼我們能將岑互鎖至A。我們對於安插 互鎖說明的多種方法,無一可阻止我們以此方式將趑结的互鎖鍵起來。 舉例來說,假如z與r之間的BB集合r複雜得不能分析,那麼 我們可改採透過以避.结的互鎖把從BB集合/至BB集合r之路栌中 各中介階段(intermediatestages)加以互鎖,來分解(breakd〇Wn)穿過厂的 複雜路徑,藉以使先轉移BB集合之資料及控制流程的複雜程度降到前面 方法(3)和(4)變可應用的程度。 128 200905559 2.10.3.多f翁績互術於通常,在經由前面§2.9建構一如§2 4 所說明之基本互鎖中’有-先消耗BB集合r會被修改來產生消耗bb集 合r ’其中會被修改來產生產生bb集合γ的先產生βΒ集合I,對包含 這些的程式中的BB集合y是-個支配的集合。因此有一個先轉移BB集 奸包含对BB與r中BB之間的路徑上零或更多的BB,此集奸於 插入互鎖過程中或許需要或不需要被修改成轉移BB集合厂,。 然而,吾人不受限制只能有一窗該先消耗BB集合r。吾人能有任 何數目λ的該種BB集合&K,};,同時有任何數目的(或許會重疊 (overlapping),或許會是空)對應的先轉移ΒΒ集合f,k,k,只要泣42 起頭部分提到的條件被滿足且BB集合}不重疊。 在以講解於後的方法產生互鎖樹(trees)時,我們偏好藉下列來保護其 被鏈的控制流程··使用依據§2.7.3延伸的[3]的方法與系統,或許若資源限 制需求降低額外量時再經過依據§2.7.4的降低,或採用[9]之方法與系統提 供的控制流程保護,最好經過§2.8.1中揭露的改進,來使互鎖樹中之互鎖 的所有組件(不只#移IA之BB) ’及其緊鄰中之BB的控制流程同時晦溫 以及防篡改。 為在X與吝窗g,K之間插入互鎖,我們以一般方式產生p之 OEFoe,即X的計算。rpEsGrpe丨,...’Grp以之各個也是以一般方式根 據F0E中所產生之複製值而產生。 會有一種難題,就是由JT至y的路徑可能與由z至乃的路徑重 疊,其中by。該種情形下,可能是重疊之BB集合與γ and與匕中的 129 200905559 程式碼有很簡單的㈣及資料流程,使得前面(4)對於修改過的卩中之 及蛾,計算的產生,和修改過的匕中之^計算的產生所提出的方法是很 fl易的^•非如此,則可如§21〇.2之說明採用施鏈㈣⑽啤)來降低複雜 性’或採用我們未經修改h與匕建構互鎖所用的方法⑶。當使用此方 法時’辅移計算的複雜度由於不影響插入互鎖的困難度,故被允許任 藉由結合此變體與§2.10.2中講解的互鎖施鏈,我們能產生互鎖BB 集合之樹,使我塊把彡姉錢行難綁起來纽鎖型態。 過程中控制的流程。 舉例來說,使 依賴條件的(Condition_Dependent)互鎖。典型的程式語言 中有多種的建構(__8),於針—祕件之(條件*健細旨引計算 使用圖4(a)巾的C-或C++之類程式碼時
以利用該有條件的控制流程和相 τ <頰程式碼時,若c為真 流至F。圖4(b)中,若,· = ν 我們能修改§2.1 G.3中的互鎖變體, 關條件如下。
計算中唯若該條件是真財鱗的複製配對, 使用[2,4,5,9, r · 中揭露者、或可使用 等式,或這些的任何搭 OE ’计算’其對—條件計算,計 130 200905559 且唯右該條件是彻彳其他配對鱗(齡,耻若。是剌⑼且若c 疋偽則且假設當c是真時控制流至BB集合X 當C是偽時控制流至K。 σ 1 做k項工作最好不要從條件本身開始,反而要檢查計算用於計算該 條件之值時所用的資料(或計算用於計算該等條件之值時所用的值等等,我 們:入愈多間接性的層’則愈安全,但是額外量愈高)。舉例來說,如果條 疋 y 其中現有先前指定(prior assignments)% = 4*a + (b & !),,和 Χ b + 9-(a|0xFF)”’那麼我們可改使用條件 (4*a + (b&l))<(b + 9-(a|0xFF))。 (此種把運算元往先辑算移酬時轉等㈣雜,油稱之為及射在 (等考㈣),㈣_正把—條狀縣元之顧r #」至—較早的計算, 通常出現在程式碼麵頁較高處。) 接著,在先消耗ΒΒ集紂與&中,我們產生一 y之赃,此依 賴Μ等當C為真時匹配正確的配對;我們又產生[之赃,此依賴 配對π #當。是偽時匹配正確的配對。結果,任何欲藉破壞條件C之 正常效用介人由X i 之流程的嘗試,高度可能失敗。 相似地’使用[2,4,5,9,19,20]的等式或§2.5.3中揭露或引用、或 §2.5.4中揭露者,或可使用§2 51或§2&之方法計算者,或§2 7 7中舉 _之延伸提出的等式’或這些的任何搭配,我們能輕鬆產生—先產生 ΒΒ的°十算厂的〇Ε,其對一如圖4a中之ί的索引條件計算,計算方式 使得有複製配對唯於索引值為—特定慨時、或唯於索引值非狀常數之 131 200905559 . 任何一者時相等;並且使用這些來將(見圖4(b))互鎖至γ故假如γ 被執行則其使用對i=1,Kj時有卜ν,依賴的配對,以及將r互鎖至ζ故其 使用對/ = 1,Κ,Α:時有依賴的配對。結果’任何欲藉破壞索引條件γ之 正常效用介入由r至或妒之流程的嘗試將會失敗。 2.10.5.依賴條件的合併(條件-Dependent Merging)。在前面§ 2 10 4 中我們揭露-方法用於保護分支對抗諸如分支干擾㈣ming)或其他以篡 改破壞正常控制雜方法的攻擊。在該揭露之方法中,分支繼續存在,但 是如果控制流程遭受篡改那麼執行將高度可能會失敗。 我們現在要揭露此方法之—麵,於其巾分支被移除,而在可能分支 目的地的程式碼被合併。 在以上§2.1〇·4的方法中,我們產生位在各種目的地的程式碼,其唯 於原始條件產生的值匹配㈣ue_matches)未受篡改而改變地到達分支目 的地的程式碼時才會正常運作。(匹配亦即等式,為最佳,但是其他關係也 可加以使用。) 4 #一有條件的二進位分支發生時,如在圖4⑷中的if敘述,條件 c ’其通*疋使用¢/中提供之值來計算,會控制厂或"執行何者。如 此於是影響細於Z巾及魏域。因此if魏敝崎終是妓—種如 從z及其後續(sequel)的角度看,對程式之變數狀態的影響。如果我們能 產生該相同條件性效用,而碰H純粹互為替代物,那麼我們2 生if敘述的效賴時條件性的分支受^控制。 b *條件性有索引多途(multi_way)分支發生,如圖物中時,條件索 132 200905559 通她时敝值來計算,㈣㈣。一⑽中執 此於是影響使用於Z中及其後之值。因此switeh敘述的效用最 響疋種倾z «_eque_度看,_之魏狀態的影 。如果我概產生該_條雜賴,而錢m續粹互為替代 ,那麼我們能產生switch敘述的效用同時條件性有索引的分支受 控制。 、二辦卿雜·。魏,_朗財秘兩鋪代物的情形中, 」4C++中之1f敘述中,於其中兩個替代物如圖4(a),都包含計 算。 在§2.5.3中我們揭露了某些方法,也引用了其他的方法,用於將條 〜、為值1代表顧值〇代表偽,抑或轉換為值ι2(全1之位元,有 付號或無符號卜-1 (有符號)代表顧值0代表偽。 旦達成此點’我舰能輕祕計算結合,故實際上若—條件成立則 寺執仃的轉’纽件是满會絲幻而賴__,或當條件是錄 =練卩G叫(變零(_哪,減雜件是猶會被 、1 (王1之位7C) Λ而麟’而當條件是斜會被以〇2以全〇之位元) Sf异結束時’我們藉由取此二帽_之結果,選取保持的結果; 用上述方法時’其中有—者有岐正常值,有—者已經以上述方法以 使用+,V,或㊉來結合這些而被變零,故我們最後得到一單—結果,對於 、擇應產生哪-個結果集合的條件狀態此單—結果是正碟的。 卿雜。我們現在說明此方法多於兩個替代物的 133 200905559 。情形,其每一個選擇都包含程式碼,如在c或c++中之一 switch钦述 中,在該SW触敘述中每一個選擇都包含計算,如圖4(b)所示。 在§2.5·3中我們揭露了某些方法,也引用了其他的方法 ’用於將條件 轉換(converting)為值1代表顏值〇代表偽,抑或轉換為值啦i 之位元’有符號或無符號卜_1(有符號)代表顏值0代表偽。 ,在以上提出之方財,我們若不轉觸於㈣條件e之真的計 算、射細於e之偽的計算,就是_镜於控制錄之真的計算、 縣對應於e之偽者。顯然,這等同於有兩個條件仏,其中現有 A rff cn從和 & iff c 從。 …、後右c,疋算則我們获#「之計算,若^ 疋剩射〇之計算,並且,若^是顧我們縣『之計算,若。是 鍚則命#/ fT之計算。最後, 2 V,㊉,或+,將對應值與Ζ中以及其後 ,、見获之計鼻的結果結合。 改變如t處理三個或更多個替代物,我們依據上一段中的方法進行,不過 文變如下.我們有處理多途選 这 運算讀,可能由分支H 此錢在我們合併 有,町 4執订了。也就是說,現有一、十心, 糾,)-Λ and(叫)。任何該等條件的一位 照§2.5.3和§2.5.4令 麵尤表⑽依 真,其他全部切。我們因此处时意到心1中剛剛好有-個是 個,精^ rmrt—者科算結果令的一 卜,J内其餘的所有計算結果。接 -特定值的對應結果(且稱為 我們1要取各組對 …卜,々+1),並使用V,㊉或士避 亦即藉計算〜〜心ΘΛΦ 而^ |戍1+Λ+。,而且由於,,中只有一個, 134 200905559 且稱為〇,此係被鏔#的,故結果是產生該單一保#的計算集合的結果, 同時從那些Η固树的計算集合消去任何的結果。 在C或C++中’替代物條件可採取比圖4(b)所示更複雜的型態。 八可以有多重情形標籤(case-hbels),一健一個’故對-特定(,選擇匕 '亍的條件疋例如(z = Όv(’ = ν")νΛ v(z.= '」。該種條件處理很簡 易’方法是應用揭露或引驗§2 5 3中或揭露於§2 5 4中的方法,以對更複 雜條件的計算代替對條件^的計算。一旦此完成後,藉此條件所做之溪 顯射就—如對前爾論職鮮的條件—樣加以處理。 •二個替代物:—卿· Ahematives 〇neEmpty)。咖娜— if敘述,例如圖5(a)中者,i命 中者〃與圖4⑷中相似,唯—不同處是else的替 圖5A中有圖說明—無‘碼的條件if敘述的偽程式碼,(亦 P-非執行then程式碼即不執行程式碼的if敛述)。 至於前面討論的二被佔據替代物,我們利 條件轉換為们代表她。蝴,抑或轉換為二引用將 有符號氟無符號)=,(株余… 轉換為值1 (王1之位元, 、)(有相)代表趣值0代表偽的方法。 我們以上對二被佔據替代物討論許多, 代物,當,我們 值,當e是_,我們抑來自R值 錄自F之 —被佔據替代物,當,是雜 R值’可是對於只有 丁软們该中計笪 我 輪進來之舊值(不論在"本身中計算或執^之新值H 們相^中計算之新值,麵由績進來之舊值W,當C是料, 135 200905559 龜此狀況,如圖5⑼之說明,與圖4⑼中說明 者相似,唯—不同處是並非所有的替代物被佔。圖5B顯示一類似圖从 中者的敘摘偽程式碼,唯—點除外1雜式碼的替代物與無程式竭的 替代物之中所做選擇’係根據有索引選取(亦即藉使用有多個替代物的 —敛述)而非根據—布林(真或偽)選擇以及圖5A中if敘述的情 形0 我們處理k項的方式,又—次’是將辦機代物的控制條件轉換 成布林形式’以及尋找條件之值的—㈣或結林林表示。對於_給定 的多途、條件的執行’這雜件中至多—鑛是算。錢獨於全部替代 物被占據的狀況,自某鱗代㈣射撕,意謂在雜替代物可能被選 取的情形下,我們可能會有值在^執行中或前被計算,而非見到一個 值被#4#替代物程式碼選擇中之一計算。 為處理此狀況,我們再產生一條件,切賴續替代物的條件是 錄時’其必定是真。當此條件是算時,我們雜自"輸進來之計算的結果 (非在t/中計算即在¢/之前計算)。 由於’包含此新產生條件,冑述條件巾正好有-個是|,其他全是 海’故我們縣對應於原始程式中替代物之選取的結果,射娜些在原始 式中永遠不曰被》平量者。、结果是,在執行了經如本說明書中說明之合併 的多途選擇之後,t Ζ被達到時,無論選取是對應多途選擇之一破雜或 —4抛##代物’由Z所見值驗態完全宛如已經執行原始計算。 2.10.6. ^^^mDistributed and Segmented Interlocking) 〇 136 200905559 某些情形下,一尤#游 ^ °十异可執行一耗費相當多計算時間或計算空間的計 味 <許希望把卫作分散在網路巾各電腦上。在那樣情況下,可以在 =部伺縣上執行先轉移計算,各項工作顺客戶端料以計算包裹起 來’傳輸至伺服n,而相#計算的__—舞戶或另一執行絲 森計算的客戶接收、拆包。 在那樣放下,我們可產生_互鎖,將先產生計算轉換成私計算, 其將-件卫作包袠起來提供·_雜計算,結果則由相同或不同客戶 上的-個顧計算接收、拆包以及解釋。互鎖以大致上正常方式建構, 仁疋有個包含許多值的緩衝器(buffer)由μ客戶傳輸到細司服器,又 有包含許乡值的緩衝料#_服雜輸到雜客戶。也就是說原來可 能被具有—互鎖之正常、單-地點形式的—處理的狀態之-部分來傳輪的 東西’反而當作-個占據—緩衝器魏態之相關部分的歸來應用, 其然後又被-雜值,錬雜麟緩_做為開始顧狀態 的一部分的影像’錄行其雜計算,再將最後雜賴的—相關部分 的-個影像放入一緩衝器’此緩衝器又被傳輸到雜客戶,客戶解释緩 衝器中的影像為初始薄矣的一部分。 該種由ϋ客户至-雜飼服器至一雜客戶的互鎖可能是網 路中做為產莖客戶之同一部電腦上是一分教互鎖。 互鎖之獅部分是-健有如圖丨所示關聯式結構(㈣福 stmcture)之互鎖分鄭egm_。同理,該種分散互鎖的μ與雜部分也 是互鎖分瘦。 137 200905559 . 尚有其他分散或許有㈣狀況。舉例來說,或許沒有縣多計算, 王口p活動都在計算之和方雜部分中。可舉一例:一網路中之電腦 上有-建置-發訊機構之發、收部分的程式碼,對於任何訊息,一部電滕 做發的動作,㈣—部敝的動作。為保護此發訊機構,吾人以—空(等式 函數不改變任何資料)絲移計算,將發訊者(龙_計算與收訊者(光 雜)互鎖起來。這樣藉對訊息編碼保護了訊息,也確保篡改發訊或收訊機 構,因為篡改的方式會令攻擊者對篡改結果懷有之任何隱匿企圖都遭到挫 斤故4乎必然會失敗。該互鎖係安插於通訊的兩端,有一隱匿又能防篡 改的内建驗也機構,攻擊者很難以訊息偽造峨sp〇〇fing)、或以合適訊 息内容replay或其他基於通訊的攻擊來破壞;互鎖同時藉以編碼型態來傳 輸訊息’因為變換之應用是安插該種互鎖的過程本來就具有的,故保護了 訊息内容。 ^ Μ£ ^(Making Image Messages Among Segments
Tampe-Resi輕)。嘻m分敬—分散互鎖的部分時,祕氣分段 的網路節點間的通訊通常對網路暴露(例如,在一乙太網路上或區域無線網 路上)。因此必須針對分瘦間傳送的影像資料提供有效保護。 我們-般會對#分散計算施與保護;除此之外或者替代之,我們偏好 保護該分·(im㈣資料影像訊息,藉對這些編碼,作為依據阳] 之記憶體陣列,再經過§2.7.2中所講解的改良,故記憶體陣列之影像被從發 訊者傳輸至《I者’魏者以大量資料編碼雜製作轉,㈣者以大量 資料編碼娜應用資料。如果記舰影像是_,那麼我們可以另採他法 138 200905559 應用[9]之陣列保護,加上本說明書中§281揭 , 的文良,或者假如存取 :用[27]之陣列保 以車列的程式碼含有很多迴路(明示或暗示),那麼我們了採
護。 J 除上揭大量資料編碼通訊之外,或替代之,傳輪之資料的影像(大量 資料編碼或否)可由發訊者加密之,收訊者則使用依據[口,叫之白盒加密方 法解密之’同時加上§2.7.5中講解崎,其為分散之棚資^影像的 傳輪提供加密程度的保護。 以上大量資料編碼與加密保護,由於任何對大量資料編碼的資料、或 存取該資料之程式碼、或經加㈣料、或妓加密或解密程式碼所做之修 改’都極可能會產生混亂而非符合目的的結果,因此使任何可能以該篡改 為目標的攻擊者遭受挫折,㈣種方法都雜有晦灘,且有合意的防篡 改性質。 確保動恶隨機性(EnsuringDynamic Randomness)。在$2.9.\ 中’才示題為雜況:K資雜雜觀叔之段落說明了 一種方 法,藉該法’於-互鎖巾,r之對z巾產生的結果的資料依賴性,能藉由使 用I中產生之值作為係數對1資料值編碼㈣加之。 假《又我們要引起y之行為顯然隨機地、不可重複地變化,以致攻擊者 反覆觀察r所中介之行為的能力,被y之計算顯然混⑽變化降低。 我們選擇-X BB集合’其為一烟的來源,因其能存取程式之輸 入’我們能由其計算—域許是加密學上的強祕故輸人之每一個小的 變化都a巨大修改此雜湊,或因其讀取—個或更多實質隨機的來源,例如 139 200905559 ’ "速硬體即時時鐘的低階位元麵機性產生裝置,此裝置㈣不穩定電 子私序產生雜音」(nolse)’並將之轉換成(真正)隨機位元串⑽血eam)。 接者我們將z互鎖至r ^文r,也就是結果性之修改過之y,依賴 |中產生之值,包含那些依賴其網源者並使时7猶況·· m €4’尉騎產錢賴依雛财之方法 ,設一從JT到Γ 資料依賴性,故r之執行隨I,中得到的滴隨機變化。 由於§2·10·1中揭露之方法,若吾人所欲,則吾人能做到這一點,而 無關乎程式巾任何其他的互鎖;脚吾人我雛把隨機性加人程式任何部 刀之執行於被欲求之處’而無關程式中存在的任何其他互鎖。 2Λ0.%.確保變數依賴^EmuringVariableDependen峰我奶歡使 用§2.10.7中提出之方法,加上尤BB集合不需是網源此一修改,故由它 們出來之值均無須帶著熵,來確保變數依賴性(雜bb之計算集合中 的資料對產立BB中變數之值的依賴性)。 2.10.9. ^(Interlocks ^ith Hardware Components 〇) 刖面題為我禮作為庚潑的欢邀賣=教和叙序从及雪路之一節中,我們提示到 —電路可為一資禮實物,因為其可表示為一以電路說明程式語言 (circuit-description programming language)如 VHDL 等等編寫的程弋。 結果,我們可在一立BB集合,其包括—或更多具有 之高階說明或某類似程式語言的硬體電路,與一龙薄為BB集合,其亦勹 括一或更多具有VHDL或一似VHDL語言之高階說明的硬體電路之間插 入互鎖。 140 200905559 • 插入互鎖,會藉修改其VHDL或似VHDL說明,正如其在普通程式 浯5情形巾會被修改-樣,藉峰改由VH〇L或似VH〇L說明產生的對 應電路,而將光1至集合變成ϋ集合。 同理’插人球會雜改其VHDL或似VHDL綱,正如其在普通 程式浯吕情形中會被修改一樣,藉以修改由VH〇L或似VH〇L說明產生 的對應電路,而將名濟為集合變成藏堯集合。 在相同的思考下’我們可將一電路或多個電路,其作為一衫至 ΒΒ集合,互鎖至軟體或_程式碼,其作為一克雜ββ集合,或將軟 體或動體程式碼,其作為一尤“ ΒΒ集合,互鎖至一電路或多個電路, 其作為-克雜ΒΒ集合。此外,名雜軟體可以是,或可以包含一或 多個可用VHDL或似VHDL語言說明的電路。 在每種清形下’互鎖的過程會道過修改硬體電路之聰^或似 VHDL語言龍·軟體雜改糧祕,而辟硬體電路。精確來說, -個或多個包括-尤心BB集合的電路,被轉換成其原始功能性一編 碼過之的輸出延伸-個或多個包括一尤顧bb集合的電路,被轉 換成其原始功能性-編碼過的介中聚合(IA),其並有某對射性㈣ 將延伸之資訊由其輸入轉移至其輸出;一個或多個包括一尤雜BB集合 的電路,被轉換成其原始功能性編碼過之逆部分評量(卿)。 2.11.互鎖符合特定f求 恤咖k^toMeetSp細cNe,。我舰在轉向注意各種方式,將以 上講解使祕能娜舰畴定彳fm符合狀衫絲之狀互鎖之應 141 200905559 用0 A.歷史依賴性QHistory Dependence、。 假設一程式中之BB 乃’KH#過從BBs χ〗,κ,〜的分支抵達。攻擊者可能修改程式,使其他 ΒΒ例如,其不同於Χ|,κ弋,能分支至π,凡之某個或全 ,不妨稱該種攻擊者加入的分支為外來(/分支。 假如我們要雜到力,Κ,Λ的外來分支不能成功,那麼我們選擇 I,,\Η乍為我們的龙ϋ ΒΒ集合,卜{少”〖,凡}作為我們的尤漭 矣ΒΒ集合,0 (空集合)作為我們的克#多ΒΒ集合,並依據本創作 之通用方法插入一由尤至r互鎖。 這樣的結果’是外來分支會包含魏的行為或失敗。 於是插入該種互鎖使執行成為依麵尤:受感染的軟體,除非在其 行止史中x之—讀的執行在r之—元素喊行最近先前,否則它 會拒絕正常執行。 2.11.2. M(integrity Veriflcati〇n hy 彳―種普通的預防軟體墓改的技術’就是程式碼總檢查 碼的某種變體:我們對待程式碼如資料,對待程式碼之各部分如整數字 (g 邮或位凡組)之陣列’我們以一單-總檢查碼抑或-結合總檢 _,或麵絲合麵,龍多鱗_驗錢。錄在初始時 元成’以確定載入之影像符合(matches)_〇ad)檔案中之物,或後來每隔一 段時間進行,以確定程式碼未被篡改。 最安全的種類的該總檢查碼,是使用__•絲難順咖句 142 200905559 加以汁算.雜凑函數有此性質,即對於—總檢查碼的給定值,报難找出一 整數的_,或___改,齡導魏檢查碼產生雜。計算 該種總檢查碼的算術例見於MD5 [13]和SHA-1 [14]。 可惜,這種對軟體修改的防護有二級大弱點。 (1)攻擊者能修改程式碼而不會觸發失效,因為如果攻擊者能修改程 式碼,故總檢查碼不符合,就不會觸發失效。也就是說,與其嘗 试解決如何修改程式碼同時保存總檢查碼這潛在困難的問題,攻 擊者不如藉執行-小改變破壞不符合的結果,例如「干擾」該分 支被取再失效的條件上(亦即以無條件分支取代該條件的分支)故 那失效分支不管總檢查碼是否符合,永遠不發生。 攻擊者在找ίϋ該確定驗查碼邮式碼上有了相助,因此在程式 馬地”’i上因為事實疋無論總檢查碼算數是簡單、低安全的算數 或是腦[13]與訊_1[14]之類高安全的算數,都很容易知道也 因此可辨認,故分支「干擾」會防止失效回應。 (2)當在現代系統上執行現代的軟體時,一旦一程式載入後,又修 改疋不尋常的事:程式通常以一個單一、靜態的、駐在記憶 體中程式碼的體執行其全部工作,該記憶體之存取控制位元則被 作業系統設在唯讀狀態。 有此程式碼穩定性,[29]中說明的攻擊型態便可能了。在此攻擊 中,軟體影像就是被雜。許纽代的處理H會分辨程式碼存取 與資料存取。(-方面,想做了之後,較址能力提高而無增長 143 200905559 指令中的位址欄(address fields),由於它允許同_個位址指至不同 位置,視其是否被當作資料提取/儲存而定,穿赫原,或被當作 指令來提取觀f雜。)複製中之―,是汾切程式碼,攻擊者可 使用/纽雜摘綠改,其他的程式碼是縣程搞,展雜 式碼被以檢麵檢麵為目的陳贿取。目此,軟體作者的原 意,即軟體對軟體的總檢查碼自我檢查應該預防慕改,由於原始 程式碼此i魏行,未絲改料會保護修改的程式碼此祖 行,攻擊者可能隨意篡改之此一事實而完全被打敗。 此攻擊的額外量出奇地低,且作業系統專家报容易就會執行攻擊。 上面說到的第-個弱點能以§2.10·4中提出的方法來詳述。 助集合(通常只有-個ΒΒ)計算並檢查總檢查碼;總檢查碼之檢查控制 -有條件的、通往,齡姜礙,於或,碰羞碍关庚目的地的分支;位於有 條件分支的目的地的ΒΒ集合(通常各只有一個ΒΒ)是龙雜ΒΒ , 條件疋總檢查碼符合或不符合。插入該種依賴條件的互鎖,如果攻擊者修 改總檢查碼檢查料碼⑽如軒齡支),麻鎖會使執行失敗。 上述第二個弱點比較棘手。近來的商業作業系、絶版本愈使在程式中修改程 式碼難堪。在此趨勢下,攻擊者執行間巾綱的麵的程式碼影像攻擊, 身又上可旎元全控制電腦,其作業系統也都在攻擊者控制下跑 。舉例來說, 道§然疋可以使用Linux、Hurd或Open-BSD之類開放源作業系統而行的。 144 200905559 , 有—個方法就是把欲保護的程式加以分區。在目前區的程式碼(程式 計數器所指向之區)必須是可執行,但是在其他區的程式碼則不必。我們能 利用此-事實來在-區移至另-區的轉移之前先做程式影像的修改。就在 控制從龍_至心讀,Λ^之_释㉛该)會將㈣程式 碼修改成-财織行驗態(離_本綠外)並將㈣料碼修改成 一個可執行驗態。如此之修改不獻:若是很錢略地配置這邊放幾 個位元組,那邊放幾個位元組,就蚊夠了(例如,假如這些碼形成一互鎖 的—BB集合中的程式碼一部分,使得任何小小變更都會造成失效)。 程式碼每-區至少有一狀態,在一區中,該區是可執行的,其他區則否, 攸每-個狀態至少-觸檢查碼,秘是每—區至少_個總檢查碼。在 -個給定的區裡執行的總檢查碼程式碼就錢適合於舰的總檢查碼。 曰由於程式碼中所執行的改變必須在程式碼影像上執行,程式碼影像才 是真正被執行的:如果程式碼影像不被執行,那麼到一個新區的轉移,會 進入處於不可執行狀態的程式碼’而執行會失敗,因此阻擋了攻擊者任何 進一步行動;這就阻斷前面提到的攻擊活動。 採用多重不可執行狀態,並做其中的隨機選擇(例如,使用-即時時 里或程序辨識器加0_ identifier)等等的低階位元來從這些狀態中選取 偽隨機選擇(例如,從程式的輸入採用熵,產生-讎湊,然後採用該雜凑 ' 元來從中選取),是一個更細腻的方法。如此增加了攻擊者試圖猝 决如何擊敗該種保護的困難度。 ‘二執行區轉移當中程式碼狀態變更的程式碼,由於它會使用特殊指八 145 200905559 或系統呼叫來達成該變更’因此可能是明顯的。為預防保護被移除,最後 ,步疋把執仃狀峻更的計算與執行下—個總檢查碼檢查的計算加以互 鎖。並執仃該程式碼_變更與檢查之間的互鎖施鏈。修改程式碼狀態變 I狀態;’將會高度可能引起混亂行為,於是使攻擊者針對程 式馬行為變更懷有任何狀目標受到挫折。 ^11.3·顧資說於雜舰#射。假設我們要藏一機密資料 (伤貝λ)不讓攻擊者看到。先回顧先前討論過針對隱藏該資料的方法, 再揭露種替代性、有力的方法,此方法處理靜態、動態常數(動態常 數係在執財(run_time)輯,但是計__,獨雜常數大或 小,是否非常數資料,不論大或小。 猶緣之實顧廣料。如果資料相對地小,而且是靜離 態常數,那麼我們可使用似中講解的方法,或⑽物露 於本_書中田與§2.8之延伸的方法,否則我們可以依據§2·5·3中揭 路或引用,姐5.4中揭露,或§2.5」或⑽中揭露之方法所發現的等式, 代換使用此資料的表示式和那些用法周圍的表示式。 如果資料很大,且是靜態或動態常數,那麼我們可以使用似中的 方法,她巾雜嫩峨峨麵,料段祕 常數。
如果資料不-定是常數,但是彳Μ、,那麼我㈣崎細[MW 19,20]或其列舉於§2.7和§2.8中之延伸的 ’, 把匕臧起來;否則我們可 以依據§2.5.3中揭露或引用,或§2.5.4中揭露 我§2.5.1或§2.5.2中揭露 146 200905559 的表示式 之方法所發現的等式’代換使用這些值的表㈣,和那些使用的周邊中 如果資料不-定是常數,而且很大,職我們可以採㈣段中相同 的方法,不顧胁小值當健健的「分段」 个乃種万法,我們可 以採刪或其揭露於似2中之梅方法;㈣假如:細型離是陣 列,那麼採用[9]之陣列保護,加上本說明書咖中揭露之改良,絲 假如資料是_,且絲射4驗式碼含魏麵路啦輕心那可 以使用[27]的方法來保護。 叹 赫· ·#伽。有-財力的嶋_靜態杨能常數 資料藏起來,不論資料大或小,且是否動態變化資料(一變_ 收集(collection)),不論大或小。 的特殊 思考一複雜資料結構,其由一系列資料分段組成,其中各資料奸包 含某種純量變數、純量變數的陣列、對其他該種資料分段的指標、和對其 他資料分段之指標的陣列的搭配,其中麟分段被鏈結在—起,使得· 各當作節爾财當佩的,赌料—個細,大^點都 有大於-的㈣咖,大多數節點都有大於一的匕如找;對於大 二節點㈣一節點有多於一條的路徑。我們選擇眾節點(資 ' 又 之卽點為顯著(distinguished)名糸節點。 該種資料結概以c或c++程式語言或其隨來建置 Γ車結構(ΓΓ個是—個c或c++的結構)包含純量變數、純量變數 p列、綠魏、触標變數的_,其巾各指標在程級動時,或其 147 200905559 . 後到其使用於如上述隱藏某種大小的資料之前某時間被初始化。或另採一 法,此結構能使用malloc()函數或C中一種其同類中,或使用C++中之 new運算子,加以動態地分派(allocated)。最後,我們可應用一 struct變數 的陣列’無論是否宣告為陣列或分派使用C之malloc()或calloc()或C++之 new[]運算子;並且將指標變數代以陣列索引(其會限制全部資料分段成相 同内部配置),否則我們可結合陣列方法與上述多鏈結、指標基礎的型態。 上述多鏈結(無論藉由指標或藉由索引或藉由此兩者)資料結構, 無論靜態地分派,絲-常式之體巾宣告,或使用C之1^11〇或c++之 new及/或new[]動態地分派,我們都視為一餘存咖其中儲存庫 中之各純量變數儲存一純量值。 接著我們制兩種方法’兩種均基於似㈣料隱藏方法,將資訊 藏於儲存射。第〜财法蚊我們如何對—歡件:雜心(祕叫,此 資料是我們要藏的資料,或其—元素。第二種方法蚊如何儲存特定件資 料(亦即如何編碼它)。 -條尉的顧包括依序列的值,其中這些值賦予—系列純量 或指標存取意義。舉例來說,我們或許可指缝ik來代表—咖t(或 -陣列中之元素)中第-到64*個純量資料概脇s),65,K,⑶代表第^ 到⑽個指標搁(或一陣列中之元素),1辦,脱代表第-到…個純 量陣列欄’ m’K,255代表第_到63fd赫陣列攔,〇代表路後 所有這些值都能儲存於-個(無符號)八位元的位元組。因此—條來 料結構的路徑能以-串結尾為零位元組之位元組,正如c 貝 知表不的字串。 148 200905559 舉例來說,假設特定純量值,我舰根stmet開始,循著第三 指標攔中的指標,到達另—個struet,選取第二個指標陣列,索引到陣列中 第九個指標,循著該減職另—個stmet,然後再第八個純量資料 欄。於是其路瘦以位元組向量(以丨與乃表^表示。 許多其他型態的顯編碼都可能。這由以上,對任何熟悉c或c++ 之類編譯語《各機__與資齡取建跋彳_人,也將是顯 而易見的。再者,解釋該種編碼過之顧以便存取顧之目標值的程式 竭’其賴同樣對任何熟悉編譯器建構技術者,是簡易的。 該種顧«於依據§2.6的常數隱藏方法的隱匿(c〇職—。再 者,§2.6也揭露了一種方法用於確保常數路徑是猶常數(見以上題為添 场細知⑼价獅她㈣鱗姻躺㈣_) ^在翁縣起始處’是非可預測的,究竟哪一條爾適用辦尉儲存 在H定純量:若广撕是暫態的’其將會隨每次程式跑而變化,也 人程式k之巾的各個舉例細加触Gns)間變化。 •版上’此路徑在· ㈣ '純置或純量陣列處結束。本複雜資料結構方法 /藏赫助益不甚大,_指標必須以未編·絲伽。麵使用[2 二9方2〇]或其揭露於本說日轉§27與§28之延伸的轉編碼方法,藉使用’ :法對各值及程式碼編碼,我們能應用編碼過的麵無須解竭之,故 複雜貝料結構方法時分適於純量資料的保護。 如果我們依樹戦其在似2中所雜延伸財法麟統,儲存 資料結構在一編碼過的軟體記憶體陣列内,那麼我們能保護纖護 149 200905559 左。依據i — $ /、延伸的指標,乃是編碼過的整數值,其提取和儲存都 不心立即解碼’故,因而被以特殊值對待的指標,受到完全的保護。此外, 由於編碼過的軟體記憶體陣列本身提供很大的保護,剛或其似2中講 、乙伸的保4 ’使我們能降低儲存於軟體記憶體陣列中的隱藏儲存結 的複雜性。 -或改&另法’假如存取倾結構雜式碼财許多迴路明示或暗 麼我們可以將指標表示為含糊和時間變量的指數 解,藉以隱藏之。 4 —當純量資料被儲存、或提取或提取並立即使用於計算時,為了保護 它’我們她!纖_存㈣,並制前述諸及計算編敬法來隱藏 儲存、提取输並蝴繼如p,彳,5,9, &别巾彳_核明書如 與§2.8中揭露這些的延伸的計算之值。 這些上述方法應用(靜態或動態)常數_來分辨一群編碼中各不同 的元T舉例來說,使用_的編碼,任何特定編碼都由其二係數求得: 其趑#其應為f袭,以及其偏差,其不受限制。 同樣地,對儲存庫中所有的純量位置,我們能以其係數來表示其編蜗 我們也可更進-步制更多修值來辨識特定係數所屬的編碼群。如果不 採取此進-步,那麼各筆儲存庫⑽,由_特定編碼來辨識, 只需其係數就可使其明朗化。 我們使用§2.6的方法來我們隱藏係數的固定向量,戈系= 符和係數。魏倾歧韻,献制 150 200905559 又詳述於mG.7中的方法變成_;這些的表林使_划 =法變成依賴來自其他部分的資料或程式。動態隨機或依賴變數 :產生—但是提供更多安全,資源考量允許下, 使用U.10.7或S2.
1U.O 的方法中的任-個_時_、會將此資料藏 方法轉換組鎖,若可行的話、為安全理由,我們推薦採用。 WA.連結應用軟體至共享程式庫⑻咖⑽t。 一。當一細軟體從不同目標程式騎案鏈結起來,它經常會 匯入程式騎式的程式碼,触常錢置許細軟體共享的功能。 程式庫碼简互鎖中,所有的組件都是在程式庫程式碼本身裡面,這 樣的互鎖是《恤㈣絲魏嶋騎咖倾。可是, 當某些互鎖組件在程式庫裡,而其他的在應用軟體裡面的時候,互鎖會有 變化。 有可能藉由繼至减庫碼喊得的舰,會需求初互鎖的行為性 保護…為確保帅㈣程式料式,與其讓呼餐、略了或轉 到其他常式,或是為確保,當離開程式庫常式的時候,控制在對原希望呼 叫地點做呼叫魏被傳_式碼,而不_其他處。 困難點在於:財庫程式碼是—侧定的、經常是同—時間可共享 的程式碼,可讓多個在—既定、_存取*共享物件(m雜淨… Unix™或Linux平台的檔案;a du…動態鍵結程式庫…
Windows㈨平台的標案)之類的平台上的程序使用,如此的程式庫石馬為 151 200905559 了插入互鎖,不能被修改。[*舉例來說,在wind〇wsW平台上,—既定 群的私絲常式可於料間映射(mapped)到—個細倾的位址空間, 方式疋由一個對LoadLibrary(..·),的呼叫,此些常式中,使用
GetPn^K.),可轉取,應職體制完這群f式後,辨可以藉呼 叫FreeLibrary(…)從位址空間移除。] _裡相矽謂。使用程式庫碼從程式庫碼中一 BB的集合X互鎖到應用軟體中BB的變數集合y很簡單:我們以平常 方式將名“程式碼轉換成計算一個―體㈤的“程式碼,設ia為 等式IA -不需修改或轉移程式碼―又,以平常方式將自程式庫接 收資訊的箱擁柄做成的雜賊。以竹料應料碼形成 K。唯-不同處是關射,的〇E的資訊,以及尤,編碼必須錯 异,所以才能用於嫩之的程式碼和r對各個使用程式庫碼的 呼叫應用軟體編碼。 由啤叫程式碼至程式庫碼的互 〜〜二項叼圯彬式,由於程 庫碼是事先產生,沒有呼叫顧軟_詳細知識,所以這是從使用程式 碼的應用軟體中-名心BB的集合尤,到被呼叫程式庫碼中狗 BBS的集合y ,該被呼叫程式庫碼提出問題。 當產生-喊料式的料辦,我爐法知道做財叫的文本^ 的詳情。可是,我們财知道的是傳至程式庫常式的奶的引數詳^ 並非引數之值,喊_、胁細任何__辦庫射 式才算合法引數的關。因此我們有了某·_—财辦叫文 152 200905559 訊:即精確有關上述引數傳遞的各方面。 於疋我們適合來以符號產生一麟的知脈z.c)呼叫程式的程式碼… 同屬的先先產生者(prepf^producer) m集合,i稱之爲χ,內的程式鳴 …在建立至程式庫被呼叫程式内r尤讀·為ΒΒ集合的互鎖之前。 我們接著將顯的呼叫程SBB #合\互鎖至實際程式庫被呼叫程 式BB集ar’產生X的〇E與^的^pE,將⑽這些編碼成X,和 Γ並建立-從尽屬的呼叫程式到實際程式庫被呼叫程式的互鎖。如上, 在由程式庫程式碼互鎖至呼叫程式碼之時,我們設ia鱗式认… 不需修改或轉移程式碼。 然後為從一執行一呼叫的紫摩呼叫程式的χ BB集合互鎖至程式 庫r BB集合(其中程式庫實際上包含編碼過的後互鎖bb集合的γ程 式碼我們做BB集合尤的〇E以的㈤對雜㈣)…由於 ’、已3所有呼叫&式共旱賴屬的程式碼,所以這個恆可能又將I 及其OE、編碼成^完全如同X,編碼同樣的,此怪可能,因為 牽涉者僅是所有呼叫程式共享關屬的程式碼。 有可能以上方法的結果’是少㈣單傭造成_叫料至被啤叫之 程式庫碼轉林充足_邱麵/細㈣押如勿。_軌下,解決 方法是在建絲上_的互鎖之前,先加人更多5丨數及/或㈣數變更複、 雜’藉以產生-種情況:不管此情況下互鎖程式碼的同屬性質,由呼叫程 式至程式庫被呼叫程式驗雛會足m安全的互鎖。 那樣把功能分成多個共享程式庫,對互鎖不是障礙,即使互鎖必鑛 153 200905559 態抑或靜態地越過程式庫邊κ, '或者,無_疋從程式庫被呼叫程式到呼叫 程式或從呼叫彳i式到程式庫被,叫程式。 本創作之實施例可以使用任何傳統電腦程式語言建置。舉例來說,最 佳_用—程序程式語言(例如“c,)或—物件 。(例如C++ )建置。替代的本創作的實施例可以建置作為預編程 (卿挪gr_ed)硬體元素、其他相關组件或做為硬體與軟體組件的搭配。 實施例能建置作為電腦程式產品用於配合電腦系統。該建置可包含一系 歹,⑼腦指令,裝置於實體齡,.電腦可翁介(例如磁碟片、 CD-ROM、R〇M或固定碟)上,抑或可透過數據機或其他介面裝置,如連 接至-媒介上網路的通訊轉接器(c〇_unicati〇nsadapter),傳輸至電腦系 統。媒介可以是實體媒介(例如,光學或電子通訊線)或以無線技術建置之 媒"(例如,微波、紅外線或其他傳輸技術)。系列的電腦指令實施了本說 明請揭功能的全部或-部。熟悉本項技術者應能理解該種電腦指令能以 多種與許多電腦雜或作㈣統制細的程式語言來編寫。還有,該種 指令可儲存於任何記憶裝置,例如半導體、磁性、光學或其他記憶裝置, 也可以使用任何通訊科技,例如光學、紅外線、微波或其他傳輸科技來傳 輪。預期該種電腦程式產品可作為附有印刷或電子文件的可移除媒介(例 如,膠膜包裝(shrink wrapped)軟體)、電腦系統預載入(例如,系 統上ROM或固定碟)來散佈’或由一網路上伺服器(網際網路或www)散 佈。當然,某些本創作之實施例可以建置作為軟體(例如電腦程式產品)與 硬體雙方的搭配。尚有其他本創作之實施例可以建置作為全部硬體或全部 154 200905559 . 軟體(例如,電腦程式產品)。 了解本創作的人或許已經構思前揭的替代性結構和實施 $圍f凡此等等皆已絰過設想列人如後中請專利範圍所定義本創作之 【圖式簡單說明】 第1圖,係本發明顯示初始及最後程式狀態,由—計算連接 之不意圖。 第2圖’係本發明顯示與第1圖完全相同之互鎖狀態示意圖。 第3圖’係本發明顯示一通過某些基本區塊集合的路捏之示 意圖。 Μ 第4Α圖’係本發明顯示一有ELSE_碼的條件敘述(亦即 非執行THEN_碼即執行ELSE-碼的IF敘述)的虛擬石馬。 第4B圖,顯示一與第4A圖類似的敘述的虛擬碼,不過其中 碼替代物之選擇是依索引選取行之。 第5A圖,係本發明顯示一無此见碼的條件正敘述的虛擬 碼示意圖。 $犯立圖’係本發明顯示一與第5A醜似的敘述的虛擬碼選 取不思圖。 【主要元件符號說明】 無 155

Claims (1)

  1. 200905559 十、申請專利範圍: 互鎖之方法,此方法為一防堵篡 1. 一種軟體中介之程式與元件行為的保護 改軟體之方法’其包括以下步驟: a)接收該軟體的來源程式碼; b) 將該來源程式碼分成邏輯的基本區塊,當該軟體執行時,至少有一 第一基本區塊不依賴得自至少一第二基本區塊的結果; c) 決定何基本區塊需依據該麵程式碼之邏輯流 cD修改至少-第-基本區塊以產生至少—修改過之第二基本區塊; e) 修改至少-第二基本區塊以產生至少—修改過之第二基本區塊; f) 至少-修改過之第-基本區塊係依賴得自該至少—修改過之第二基 本區塊的結果。 2. 如申請專概_ i顧述之倾巾介絲錢元件行為_護互鎖之 方法,其中該至少-第二基本區塊係藉由延伸其輪出而被修改,使得被 該至少一修改過之第一基本區塊需求適當作用。 3. 如申請專職圍第1獅述之軟射介之料與元件行制保護互鎖之 方法’其中該至少-第-基本區塊係藉由延伸其輸出而被修改,使得自 該至少一修改過之第二基本區塊的結果被該至少一修改過之第一美本區 塊為適當作用而需求。 4·如申請專利細第1項所述之軟體中介之料與元件行為的保護互鎖之 方法,其中該至少一修改過之第二基本區塊之執行必須先於該至少一修 改過之第一基本區塊,使該軟體能適當作用。 5. 如申請專利範圍第1項所述之軟體中介之程式與元件行為的保護互鎖之 方法,其中該方法重施於來源程式碼使得至少一修改過之第一基本區塊 依賴至少二修改過之第二基本區塊中之大於一者的結果。 6. 如申請專利範圍第1項所述之軟體中介之程式與元件行為的保護互鎖之 156 200905559 細H侧爾,使該軟 =,圍第6項所述之軟體中介之程式與元件行為 之 過之第^==似本_當物㈣—修改 8.:=圍第2項所述之軟體中介之程式與元件行為的保護互鎖之 少1 卜錢細塊物包含得自該至 弟一基本區塊及額外資訊。 1(^;^刪娜細m 方法斯述之瓣介之程输件行她護互鎖之 用導出訊係由該至少―修改過之第二基本區塊之一固定作 請專利麵i項所述之軟體中介之程式鳩行為的保護互鎖之 嗲至^中加諸3亥至少一第一基本區塊及該至少一第二基本區塊以得到 ^ 修改過之第―基柄塊及該至少— 該至少-第-基本區塊及該至少一 請專利範圍第!項所述之軟體中介之程式與元件行為的保護互鎖之 谈二巾該來顧式碼巾至少—計算被經編碼之計算取代,該等經編 ’、'之叶算使肖經編碼之輸人並產生經編碼之輪出。 =、申請專利範圍第i項所述之軟财介之程式與元件行為的保護互鎖之 八中該軟體存取至少某記憶體做為儲存格,該來雜式碼被修改 以使用經轉換儲存格號媽參照儲存格參照號碼。 M·如申請專利範圍第1項所述之軟體中介之程式與元件行為的保護互鎖之 157 200905559 方法’其中該來源程式碼之控制流程被修改以使用一使用至少一總表之 有索引控制流程圖,該總表包含用於該有索引控制流程圖所需之資料 值’各段被一對應至少一計算取代。 15_如申請專利範圍第1項所述之軟體中介之程式與元件行為的保護互鎖之 方法,其中該來源程式碼中至少一值被一寬輸入高度線性函數取代。 16.如申請專利範圍第丨項所述之軟體中介之程式與元件行為的保護互鎖之 方法,其中該來源程式碼中至少—值被一寬輸入高度線性函數取代,其 包含以下步驟: 將多個陣列合併為一單一陣列; 將單一陣列分割為成多個陣列; 改變一陣列之若干個維度; 其中,陣列元素位址被在重新結構之陣列中編碼。 17.如申請專利範圍第w所述之軟體中介之程式與元件行為的保護互鎖之 方法,其中該來源程式碼中至少一陣列被修改使得鱗列之索引被使用 置換多項式編碼,該索引被選取於模數環上 18程介之程式與讀行為咖Μ互鎖之方法,此方法為隱藏_ 程式碼中之_與靜態值之方法,其包括以下步驟: 數; 以複數個計算取代-欲隱藏之值,該複數個計算包含其他值及常 9 孩欲隱藏之值被該複數個計算之執行存取。 19.==Γ18項Γ之軟針介之程式與元件行為的保護互鎖 20如^其他值及巾數之至少—者被其他計算取代。 21.如申料觸龄18撕狀軟針介之料航贿為_護互鎖 158 200905559 表示在該複料妓_絲攸,該祕常奴值被變數 2====r保護互鎖之方法,此為使軟體程式防 或陳述,4❹法輯储、修改錢觸算表示式 陳述被用以使㈣述本身係要受保護,或該計算表示式或 定址或防暮改或該計算表示式或敘述被用以使資料 篡改,❹钟翼矣^ 式或陳述被用以使對大資料體之存取或防 控制流程前述目的的某種組合(計算保護、 括: 、 切料體之存取的倾),該方法包 位短該計算麵式或敘述雜將軟體程式之來絲式碼或二進 示式’將該種計算表示式或陳述中至少-第-常數、數學表 2林=^示式、、或位元單71布林表示式代以—混合數學及位元單 ,轉—常數或絲絲_第二麵式簡單, 該弟-表不式係根據該第一表示式中求得之值或變數; 保存====_議恤故評量產生一 形中4=第數之原始值或該第—表示式結果之原始值,此情 轉ΐ第H 錄料林林絲絲藉由數學等式 轉換。亥第-讀或表示式而由該第一常數或表示式獲得; 具有-經編碼之型態,亦即做為—新值,其能藉應用—資簡 妒子值、1Γ)解碼函數,被轉換回原始之該第—常數或表示式之原 二=㈣_及位元單元布林表示式係藉由一種依 m 及依據―資訊保存(亦即對射)編碼函數之變換的 、,且口 4該第-常數表示式,而由該第_倾或絲式獲得。 159 200905559 23.如料專利範圍第22項所述之軟體中介之程式與元件行為的保護互鎖 γ射由該實行產生之第二表科,或其子絲式,係被轉換一 二或八,財法被觸-讀驗獅財數或麵式或其 式。 2^^專:範圍第22項所述之軟體中介之程式與元件行為的保護互鎖 之數-等=該原t常數或表示式的轉換係依據一形式為 之數子等式實行,其中a/是係數 單也可以是·,,是料數絲科騎,可以是簡 範圍第22項所述之軟體中介之程式與元件行為的保護 ^方法’齡_始常數絲料轉顯雜—❹健 1,’=料式係由一形式為β式的普通代數操3 26如申練' 讀7"早7"表示式V是該原始常數或表示式。 .=專=圍第22項所述之軟體中介之程式與元件行為 <歎予4式實行,立中5/是择盍ί·,Λ β , 27“ 胃τ,、Ta⑽數&是位元單元表示式。 22項所述之軟體中介之程式與元件行為的保 =方法,其中該原始f數或表示式的轉換餘據 2 出其中α,·是係數,e;是位元單元夹 ^ 28,tlTT^22 1方法’其中該原始常數或表示式的轉換係後於依據數學等= X +1的轉換,立中是一戀叙计 ' 到的程式碼。…、 ,藉以進一步模糊化及複雜化所得 29.=:_ 22項所述之軟體中介之程式與元件行為 / ’八中該第-表减是-有條相比财林表耐無第二表示 160 200905559 式係後於依據布林等式,=〇iff (如(咖)<〇的轉換,其中 疋-變數’藉以進-步模糊化及複雜化所得到的程式碼。' 表項Γ之軟體中介之程式與元件行為的贿^ 〇的轉換嚐; 1—/:=於鋪布林等式m卞 程式碼。 ”魏,料進—步模糊化及録化所得到的 :後:依據布林等式…iff ((—)卿·-= 換由其中…是變數,藉以進一步模糊化及複 ::轉 之方法其介之程式與元件行為的保護互鎖 第表不式一布林不等式比較表示式,該 ==等式〜iff ((_)ν((_)Λ(ι)<〇—的ς係 33如申請專藉以進—步模糊化及複雜化所得到的程式碼。 之方法& 4項所述之軟體中介之程式與元件行為的保護互鎖 _',、該第一常數或表示式是一位元單元布林常數或表矛弋1 ^學,的形式為^㈣,其中亥 疋》亥第表不式,該數學等式係包括下列之一方法導出: 有二)變第:表:式,或一產生該第-常數的表示式,其係-1左: 為—有准編,左^和右攔户, 藉聯Γ全=此2的表列,各結合係各該變數之邏輯咖或 輯派^ 亦即邏輯的赠)而從各該變數的邏 又于,,口 σ,使得各可能之該結合正好發生一次,又 搁户是-有2,個布卿代表細代表削表列,其中該2 161 200905559 何-指定肋找對#該表示式^是真(在右攔Θ時包括—結合 (在左攔5)及其布林值; (b)隨機選擇一 Z/(2)上可逆2fx 2,矩陣1且,若j之任何 欄(該真值表右(布林值)攔γ相同,則加入一隨機選擇3之其他搁 至該i之攔f的非簡單線性組合,使得該k (棚與該真值表右 攔户不同,故J是或變成一無一攔等於产之隨機選擇可逆矩陣,該 矩陣因此不僅Z/⑵上可逆,而且對任何n〉丨也是2/(2,)上可逆. ㈤解線性矩陣等式多Z/(2〇上户,其中2Λ是在目標執行平 台上對依據本創作修改之程式碼的計算之自然模數各ν之元素η 係一變數of該長度為2广之解攔向量_矩陣等式的,射卜^ 或相等地,對7 =丨,...,H是線性矩陣等式的解,^之 各元素μ係一 2β個位元的常數;及 ⑷導出數學等式_ +⑽+…+ _ = #,其中^ — 34.如申請專利範圍第26項所述之軟體中介之程式與元件行為的保護 之,其中該數學等式型態其中a.是係數,已是位 兀早兀表示式’可以是簡單也可以是複雜,該數學等式包括以下之方法 導出. ⑷對-⑽變數的集合,選擇個位元單林林表示式 二的集合&係那"個變數之成員,使得當我們 建構該#做元單元布林表示式的1個真值表時,其中第7.個真值 表是位元單元布林麵式β的難表,並包含二攔,左攔&, Θ ’其左欄&是一 2,個結合的表列,各結合係各該(個變數 ^赋亦即邏輯的㈣或藉對某些或全轉⑽變數做補數(亦_ 輯的⑽,而從各該Η暖數的邏輯如(亦即邏輯的_獲得之— 162 200905559 結合,使得各可能之該結合正好發生一次,又其右搁户是一有2,個 布林值(0代表顯1代表算)的表列,其中該表任何-指定列内之配 對當該表示式e/是真(在右欄乃)時包括一結合(在左攔幻及其 布林值;於是A個真值表的左個值欄凡…,A是z/(n上線性 依賴;亦即有i個非零係數51,...,&從環z/(2")選出使得向量 31户1 +岔户2 + ... + 是全零向量;及 (b)根據此一事實的結果導出等式其中功,…,& 是射個非零係數,^ ...,a是該左個位元單元布林表示式。 35·如申請專職圍第24項所述之軟體中介之程式與元件行為的保護互鎖 之方法,其中該等式在一初始設定階段中被求得並儲存,且該第一常數 或表示式被該第二表示式取代,此取代是在—第二、後續的階段中藉匹 配該第-絲式或第—錄的表示式與軸始·巾獲得之等式來實 施,以及藉選取-隨機選擇的匹配等式,加上或不加上亦可,以一對射 函數做編碼,執行該取代來實行。 机如申請專利顧第35項所述之軟射介之程式與元件行為的保護互鎖 之方法’其巾該初始階段不是每次顧本方法時滅行,而只執行一次 或报不頻繁執行,然而每次應用該方法時,該匹配與取代的第二階段都 執行’故該計算上密集的減階段稀疏執行,而該計算上較無需求的第 二階段頻繁執行。 … 37_如申請專利範圍第36項所述之軟體中介之程式與元件行為的保護互鎖 之方法’其中該初始階段在-編譯器或似編譯器程式翻譯工具的建構過 程中執行-次,且該第二階段可由侧於被健陳體上功的該編譯 器或似編譯器之程式翻譯工具執行。 38.如申請專利範圍第37項所述之軟體中介之程式航件行為的保護互鎖 之方法,其中该編譯器或似編譯器程式是一模糊化編譯器,或一編譯器 163 200905559 $軟體施倾篡改魏,續其所處理之程式辭模與防篡改力 、—種搭配,又其該麵糊化與防篡改的辨藉由町來加強:取一該 獅模糊化或防篡改功能的編譯器為施予翻化或防篡改功能的㈣ 所安插的常數或表示式,作為該第一常數或表示式;以及藉以一表示式 依據已儲存之等式的第―常數或該第—表示絲加_模糊化 势方篡改功能,該已儲存之等式係在該第一階段中獲得並儲存且在該 第—職巾該辭難化防篡改魏之編雜運算當巾被岸用。 39.如申請專利範圍第22項所述之軟體中介之程式與元件行為的保護互鎖 =法,其中來源程式碼中該至少—第—常數、數學表示式,布林表示 工疋-產生-向量·果的表示式,其f數賴數包含―❹ =數,又其中該第二混合數學及位元單元布林表示式之值以編碼型態 保,了^源程式碼中該至少一第一常數、數學表示式、布林表示式或位 木表示式之值,該編碼型態所採用的編碼係由計算該第一常 1 2、布林表不式、雜元單元布林表示式之結果的—函數而獲 仔’該函數係-高度非線性函數/,其建構方法包括以下步驟: (a)選取數A ",及p使得Λ = " + w ⑹選取有限體W和Γ,其分別是有限體GF GF(2〇的特定表示; 人WU),和 (〇選取需不小於广心細都不小於3. ⑷隨機選取⑻線性函和am ―严’其中Ag及左中每一個最小都是2且左是一 不大於2U; =-雜^ : “ —妨單元布林 逑鼻選取z之輪出的低階历個位元’复中 β ώ ,田z侍到一函數 .—,1,··· ’㈣·’或改採另U接選擇—隨機涵蓋函 164 200905559 數 5· : y -> {0, 1,…,左_化· ⑴ &以上建構之组件建立函數,,其广^ _^之計算, 係藉顧z至向量户來計算,财崎㈣量元素的最左邊"個 位元j向里户係”取/之輸入向量元素最左邊"個位元而得·以 及藉應用一至向量Μ計算"斤有的輪出向量元素的最右邊「 個位元,該向量㈣只取,之輸入向量元素最右邊V個位元而得, 應的輸纽元與“⑽供應的細減在整個輸出過程 > (g)藉列舉/之1接!投映發生的頻率測試之,決定是否尸曰 仙線性’如否,則重複以上建構直到獲得—高度非線性函數 39項所述之軟體中介之程式與元件行為的保護互鎖 ,方法,其中線性函數Z…"心,。 對1,而且是對射,使得/及其反函 專利範圍第39項所述之軟體中介二^ =方法,其中該線性函數ζ: 和“ ...、^為的保護 是最纽料分隔,使職訊;分:不 非線性函數。 疋對射則都疋最大距離可分隔高度 165
TW097106229A 2007-02-23 2008-02-22 System and method of interlocking to protect software-mediated program and device behaviours TW200905559A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/709,654 US8752032B2 (en) 2007-02-23 2007-02-23 System and method of interlocking to protect software-mediated program and device behaviours
US11/980,392 US8161463B2 (en) 2007-02-23 2007-10-31 System and method of interlocking to protect software—mediated program and device behaviors

Publications (1)

Publication Number Publication Date
TW200905559A true TW200905559A (en) 2009-02-01

Family

ID=39709589

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097106229A TW200905559A (en) 2007-02-23 2008-02-22 System and method of interlocking to protect software-mediated program and device behaviours

Country Status (8)

Country Link
US (5) US8752032B2 (zh)
EP (2) EP2126775B1 (zh)
CN (2) CN101627394B (zh)
AR (1) AR065443A1 (zh)
CA (2) CA2678953C (zh)
IN (1) IN2009DN05762A (zh)
TW (1) TW200905559A (zh)
WO (1) WO2008101341A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI452533B (zh) * 2010-10-08 2014-09-11 Microsoft Corp 維護隱私的計量
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
TWI689946B (zh) * 2017-08-24 2020-04-01 美商谷歌有限責任公司 用於元組圖形程式之類型推論之系統及跨越網路執行元組圖形程式之方法
US10887235B2 (en) 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
TWI725616B (zh) * 2019-02-25 2021-04-21 華邦電子股份有限公司 保護半導體積體電路以防範逆向工程的方法及半導體裝置
TWI786879B (zh) * 2020-10-21 2022-12-11 美商夏瑞特科技實驗室股份有限公司 藉由算數及/或逐位元單元執行條件敘述的方法及系統

Families Citing this family (138)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7581103B2 (en) * 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
GB2405958A (en) * 2003-08-20 2005-03-16 Macrovision Europ Ltd Code obfuscation and controlling a processor by emulation
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
CA2681402C (en) 2007-03-23 2016-02-16 Thomson Licensing Modifying a coded bitstream
CN101681499B (zh) * 2007-06-14 2013-04-24 汤姆逊许可证公司 修改经编码的比特流
CN101911153B (zh) * 2008-01-21 2014-08-20 日本电信电话株式会社 秘密计算系统、秘密计算方法、秘密计算装置
US7890480B2 (en) * 2008-02-11 2011-02-15 International Business Machines Corporation Processing of deterministic user-defined functions using multiple corresponding hash tables
US9081962B2 (en) * 2008-04-30 2015-07-14 Graeme Harkness Anti-tamper techniques
US8800048B2 (en) * 2008-05-20 2014-08-05 Microsoft Corporation Software protection through interdependent parameter cloud constrained software execution
US8429637B2 (en) * 2008-09-02 2013-04-23 Apple Inc. System and method for conditional expansion obfuscation
US8020125B1 (en) * 2008-09-10 2011-09-13 Cadence Design Systems, Inc. System, methods and apparatus for generation of simulation stimulus
US20100218037A1 (en) * 2008-09-16 2010-08-26 File System Labs Llc Matrix-based Error Correction and Erasure Code Methods and Apparatus and Applications Thereof
US8484630B2 (en) * 2008-12-23 2013-07-09 International Business Machines Corporation Code motion based on live ranges in an optimizing compiler
FR2942559B1 (fr) * 2009-02-24 2016-05-20 European Aeronautic Defence And Space Company - Eads France Procede de protection du code source d'un programme d'ordinateur.
WO2010112739A1 (fr) * 2009-03-31 2010-10-07 France Telecom Procede pour effectuer une tache cryptographique dans un composant electronique
EP2430584B1 (en) * 2009-05-06 2019-11-13 Irdeto B.V. Interlocked binary protection using whitebox cryptography
US20100329448A1 (en) * 2009-06-30 2010-12-30 Rane Shantanu D Method for Secure Evaluation of a Function Applied to Encrypted Signals
US8433925B2 (en) * 2009-09-04 2013-04-30 Gradiant Cryptographic system for performing secure computations and signal processing directly on encrypted data in untrusted environments
US8972742B2 (en) 2009-09-04 2015-03-03 Gradiant System for secure image recognition
US8843762B2 (en) * 2009-09-04 2014-09-23 Gradiant, Centro Tecnolóxico de Telecomunicacións de Galicia Cryptographic system for performing secure iterative computations and signal processing directly on encrypted data in untrusted environments
US8752029B2 (en) * 2009-09-29 2014-06-10 Microsoft Corporation Computing a symbolic bound for a procedure
US9134977B2 (en) * 2010-02-26 2015-09-15 Red Hat, Inc. Compiler operation for handling conditional statements
WO2011116448A1 (en) * 2010-03-25 2011-09-29 Irdeto Canada Corporation System and method for dynamic, variably-timed operation paths as a resistance to side channel and repeated invocation attacks
EP2477110A1 (en) * 2011-01-14 2012-07-18 Wibu-Systems AG Method for protecting an application program against reverse engineering and related computer program product
US8707053B2 (en) * 2011-02-09 2014-04-22 Apple Inc. Performing boolean logic operations using arithmetic operations by code obfuscation
WO2012161763A1 (en) * 2011-02-15 2012-11-29 Lewis James M Method and system for identifying counterfeit programmable devices
US8837715B2 (en) 2011-02-17 2014-09-16 Gradiant, Centro Tecnolóxico de Telecomunicacións de Galica Method and apparatus for secure iterative processing and adaptive filtering
JP2012173870A (ja) * 2011-02-18 2012-09-10 Toshiba Corp 半導体装置及びメモリ保護方法
US8752027B2 (en) * 2011-09-14 2014-06-10 Microsoft Corporation Injecting faults into program for testing software
WO2013059367A1 (en) * 2011-10-18 2013-04-25 Paul Marion Hriljac Systems and methods of source software code modification
US8988213B2 (en) * 2011-10-28 2015-03-24 Cedes Ag Safety device, closing device and evaluation unit
US9906360B2 (en) 2012-03-30 2018-02-27 Irdeto B.V. Securing accessible systems using variable dependent coding
US8976960B2 (en) 2012-04-02 2015-03-10 Apple Inc. Methods and apparatus for correlation protected processing of cryptographic operations
US9146750B2 (en) 2012-08-10 2015-09-29 The Mathworks, Inc. Mechanism for replacing an array creation routine within code
US9015681B1 (en) 2012-08-10 2015-04-21 The Mathworks, Inc. Creating and using array creation routines or a family of routines separate from algorithmic code
US9244667B2 (en) 2012-08-10 2016-01-26 The Mathworks, Inc. Mechanism for transforming between type-independent and type-specific code
US8938796B2 (en) 2012-09-20 2015-01-20 Paul Case, SR. Case secure computer architecture
WO2014051459A1 (en) 2012-09-28 2014-04-03 Intel Corporation Loop vectorization methods and apparatus
US9336370B2 (en) 2012-12-06 2016-05-10 Apple Inc. Method and apparatus for dynamic obfuscation of static data
US9262639B2 (en) 2013-01-09 2016-02-16 Cisco Technology Inc. Plaintext injection attack protection
US10523422B2 (en) * 2013-01-17 2019-12-31 Nippon Telegraph And Telephone Corporation Tampering detection device, tampering detection method and program
WO2014112548A1 (ja) * 2013-01-17 2014-07-24 日本電信電話株式会社 秘匿計算システム、演算装置、秘匿計算方法、およびプログラム
IL224743A0 (en) 2013-02-14 2013-06-27 Harel Cain A system for automatic obfuscation of computer programs
US11044076B2 (en) * 2013-02-25 2021-06-22 Hecusys, LLC Encrypted data processing
US9721120B2 (en) * 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
CN104182661A (zh) * 2013-05-24 2014-12-03 富泰华工业(深圳)有限公司 软件保护系统
US8881293B1 (en) * 2013-07-01 2014-11-04 Sap Se Static application security testing
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
US9361379B1 (en) 2013-09-27 2016-06-07 Amazon Technologies, Inc. Systems and methods providing recommendation data
US9218437B1 (en) * 2013-09-27 2015-12-22 Amazon Technologies, Inc. Systems and methods providing event data
US9021606B1 (en) * 2013-09-27 2015-04-28 Amazon Technologies, Inc. Systems and methods providing format data
CN105765896B (zh) * 2013-12-05 2020-02-07 皇家飞利浦有限公司 用于表格网络的迭代应用的计算设备
GB201400992D0 (en) 2014-01-21 2014-03-05 Metaforic Ltd Method of protecting dynamic cryptographic keys
CN103793248B (zh) * 2014-01-23 2017-02-01 北京奇虎科技有限公司 一种应用程序升级的方法及装置
EP2913772A1 (de) * 2014-02-28 2015-09-02 Wibu-Systems AG Verfahren und Computersystem zum Schutz eines Computerprogramms gegen Beeinflussung
US9425952B2 (en) * 2014-03-27 2016-08-23 Samsung Israel Research Corporation Algebraic manipulation detection codes from algebraic curves
US10546155B2 (en) * 2014-03-31 2020-01-28 Irdeto B.V. Protecting an item of software
GB201405754D0 (en) 2014-03-31 2014-05-14 Irdeto Bv Protecting an item of software comprising conditional code
US9858440B1 (en) * 2014-05-23 2018-01-02 Shape Security, Inc. Encoding of sensitive data
FR3024007B1 (fr) * 2014-07-16 2016-08-26 Viaccess Sa Procede d'acces a un contenu multimedia protege par un terminal
EP2983156B1 (fr) * 2014-08-06 2019-07-24 Secure-IC SAS Système et procédé de protection de circuit
US10599852B2 (en) 2014-08-15 2020-03-24 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9824214B2 (en) * 2014-08-15 2017-11-21 Securisea, Inc. High performance software vulnerabilities detection system and methods
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
SG10201405852QA (en) 2014-09-18 2016-04-28 Huawei Internat Pte Ltd Encryption function and decryption function generating method, encryption and decryption method and related apparatuses
WO2016050884A1 (en) 2014-09-30 2016-04-07 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
BR112017012092A2 (pt) 2014-12-12 2018-01-16 Koninklijke Philips Nv dispositivo e método de geração eletrônicos, e programa de computador
EP3238366B1 (en) * 2014-12-22 2019-03-13 Koninklijke Philips N.V. Electronic calculating device
MX2017009586A (es) * 2015-01-27 2018-04-24 Arris Entpr Llc Ofuscacion para proteccion de medios de transmision y otros flujos de datos.
US10068070B2 (en) * 2015-05-05 2018-09-04 Nxp B.V. White-box elliptic curve point multiplication
US20160328539A1 (en) * 2015-05-05 2016-11-10 Nxp B.V. Obscuring Software Code With Split Variables
US10198252B2 (en) 2015-07-02 2019-02-05 Microsoft Technology Licensing, Llc Transformation chain application splitting
US9733993B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Application sharing using endpoint interface entities
US10261985B2 (en) 2015-07-02 2019-04-16 Microsoft Technology Licensing, Llc Output rendering in dynamic redefining application
US9733915B2 (en) 2015-07-02 2017-08-15 Microsoft Technology Licensing, Llc Building of compound application chain applications
US9860145B2 (en) 2015-07-02 2018-01-02 Microsoft Technology Licensing, Llc Recording of inter-application data flow
US9785484B2 (en) 2015-07-02 2017-10-10 Microsoft Technology Licensing, Llc Distributed application interfacing across different hardware
US9658836B2 (en) * 2015-07-02 2017-05-23 Microsoft Technology Licensing, Llc Automated generation of transformation chain compatible class
US9712472B2 (en) 2015-07-02 2017-07-18 Microsoft Technology Licensing, Llc Application spawning responsive to communication
US9626181B2 (en) * 2015-07-06 2017-04-18 Dell Products L.P. Systems and methods to securely inject binary images and code into firmware
US10031724B2 (en) 2015-07-08 2018-07-24 Microsoft Technology Licensing, Llc Application operation responsive to object spatial status
US10198405B2 (en) 2015-07-08 2019-02-05 Microsoft Technology Licensing, Llc Rule-based layout of changing information
US10277582B2 (en) 2015-08-27 2019-04-30 Microsoft Technology Licensing, Llc Application service architecture
US9946853B1 (en) * 2015-09-17 2018-04-17 Symantec Corporation Techniques for application code obfuscation
FR3047373B1 (fr) * 2016-01-28 2018-01-05 Morpho Procede de calcul securise multipartite protege contre une partie malveillante
EP3220306B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis
US10235218B2 (en) * 2016-05-03 2019-03-19 International Business Machines Corporation Automatic correction of cryptographic application program interfaces
US10243937B2 (en) * 2016-07-08 2019-03-26 Nxp B.V. Equality check implemented with secret sharing
US9760349B1 (en) * 2016-11-09 2017-09-12 Red Hat, Inc. Managing different software dependencies associated with source code
CN110268410A (zh) * 2016-12-15 2019-09-20 爱迪德技术有限公司 软件完整性验证
CN108513658B (zh) 2016-12-30 2022-02-25 华为技术有限公司 一种事务处理方法及装置
US11934945B2 (en) 2017-02-23 2024-03-19 Cerebras Systems Inc. Accelerated deep learning
CN106934260B (zh) * 2017-03-14 2020-03-17 北京深思数盾科技股份有限公司 代码保护方法、装置、服务器及存储介质
EP3385735B1 (en) 2017-04-04 2019-12-04 Secure-IC SAS Device and method for detecting points of failures
US11449574B2 (en) 2017-04-14 2022-09-20 Cerebras Systems Inc. Floating-point unit stochastic rounding for accelerated deep learning
EP3607503B1 (en) 2017-04-17 2022-03-09 Cerebras Systems Inc. Task activating for accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
CA3060368C (en) 2017-04-17 2020-07-28 Cerebras Systems Inc. Dataflow triggered tasks for accelerated deep learning
CN108809619B (zh) * 2017-04-27 2022-11-29 郑珂威 用于完全同态加密的精度控制及累计误差消除方法
CN107194212B (zh) * 2017-06-21 2020-04-17 株洲中车时代电气股份有限公司 一种显示器源代码中协议内容的保护方法
US10489585B2 (en) 2017-08-29 2019-11-26 Red Hat, Inc. Generation of a random value for a child process
CN109697451B (zh) * 2017-10-23 2022-01-07 北京京东尚科信息技术有限公司 相似图像聚类方法及装置、存储介质、电子设备
EP3534253A1 (en) * 2018-02-28 2019-09-04 Koninklijke Philips N.V. Compiling device and method
US10810077B1 (en) * 2018-06-11 2020-10-20 Ambarella International Lp Rapid soft-error detection
EP3591550A1 (en) 2018-07-06 2020-01-08 Koninklijke Philips N.V. A compiler device with masking function
US10762179B2 (en) 2018-08-08 2020-09-01 Irdeto B.V. System and method for watermarking software
US10521613B1 (en) 2018-08-08 2019-12-31 Carlos Manuel Gonzalez Adaptive standalone secure software
US11321087B2 (en) * 2018-08-29 2022-05-03 Cerebras Systems Inc. ISA enhancements for accelerated deep learning
CN112955864A (zh) * 2018-10-29 2021-06-11 密码研究公司 恒定时间的安全的算术到布尔掩码转换
US11764940B2 (en) 2019-01-10 2023-09-19 Duality Technologies, Inc. Secure search of secret data in a semi-trusted environment using homomorphic encryption
US11269762B2 (en) 2019-03-25 2022-03-08 Aurora Labs Ltd. Using line-of-code behavior and relation models to anticipate impact of hardware changes
US11263316B2 (en) * 2019-08-20 2022-03-01 Irdeto B.V. Securing software routines
US11599671B1 (en) 2019-12-13 2023-03-07 TripleBlind, Inc. Systems and methods for finding a value in a combined list of private values
US11531782B1 (en) * 2022-05-13 2022-12-20 TripleBlind, Inc. Systems and methods for finding a value in a combined list of private values
CN111176610B (zh) * 2019-12-27 2022-03-25 北京百度网讯科技有限公司 量子随机数生成方法、装置、电子设备及存储介质
US11188316B2 (en) * 2020-03-09 2021-11-30 International Business Machines Corporation Performance optimization of class instance comparisons
US11204985B2 (en) * 2020-03-31 2021-12-21 Irdeto Canada Corporation Systems, methods, and storage media for creating secured computer code having entangled transformations
US11669613B2 (en) * 2020-05-29 2023-06-06 EnSoft Corp. Method for analyzing and verifying software for safety and security
KR20210154017A (ko) * 2020-06-11 2021-12-20 라인플러스 주식회사 클래스 분산 및 순차적 메모리 적재를 이용한 파일 보호 방법 및 시스템
US11573775B2 (en) 2020-06-17 2023-02-07 Bank Of America Corporation Software code converter for resolving redundancy during code development
US11347500B2 (en) 2020-06-17 2022-05-31 Bank Of America Corporation Software code converter for resolving conflicts during code development
US11782685B2 (en) 2020-06-17 2023-10-10 Bank Of America Corporation Software code vectorization converter
CN111881462A (zh) * 2020-07-17 2020-11-03 张睿 一种商用密码应用加密有效性的在线分析技术
US11621837B2 (en) 2020-09-03 2023-04-04 Theon Technology Llc Secure encryption of data using partial-key cryptography
US11310042B2 (en) 2020-09-11 2022-04-19 Crown Sterling Limited, LLC Methods of storing and distributing large keys
US11528136B2 (en) 2020-11-24 2022-12-13 Crown Sterling Limited, LLC Decryption of encrypted data missing a private key
US11687440B2 (en) * 2021-02-02 2023-06-27 Thales Dis Cpl Usa, Inc. Method and device of protecting a first software application to generate a protected software application
US11438314B2 (en) * 2021-02-10 2022-09-06 Yahoo Assets Llc Automatic privacy-aware machine learning method and apparatus
CN113158184B (zh) * 2021-03-03 2023-05-19 中国人民解放军战略支援部队信息工程大学 基于有限状态自动机的攻击脚本生成方法及相关装置
CN113014439B (zh) * 2021-04-19 2021-10-26 广州大一互联网络科技有限公司 一种数据中心带宽的虚拟弹性管理方法
CN113268455B (zh) * 2021-04-26 2022-07-26 卡斯柯信号(成都)有限公司 基于布尔逻辑的联锁数据自动配置方法及系统
CN117981268A (zh) * 2021-07-16 2024-05-03 美国莱迪思半导体公司 通信系统和方法
US11755772B2 (en) 2021-09-20 2023-09-12 Crown Sterling Limited, LLC Securing data in a blockchain with a one-time pad
WO2023081222A1 (en) * 2021-11-03 2023-05-11 Arris Enterprises Llc White-box processing for encoding with large integer values
US11791988B2 (en) 2021-11-22 2023-10-17 Theon Technology Llc Use of random entropy in cryptography
US11943336B2 (en) 2021-11-22 2024-03-26 Theon Technology Llc Use of gradient decent function in cryptography
US11902420B2 (en) 2021-11-23 2024-02-13 Theon Technology Llc Partial cryptographic key transport using one-time pad encryption
US11762762B1 (en) * 2022-03-24 2023-09-19 Xilinx, Inc. Static and automatic inference of inter-basic block burst transfers for high-level synthesis

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE1003932A6 (fr) 1989-04-28 1992-07-22 Musyck Emile Systeme cryptographique par bloc de donnees binaires.
US6088452A (en) 1996-03-07 2000-07-11 Northern Telecom Limited Encoding technique for software and hardware
US5892899A (en) * 1996-06-13 1999-04-06 Intel Corporation Tamper resistant methods and apparatus
CN1155700A (zh) * 1996-09-08 1997-07-30 周跃平 计算机软件保护方法
US6192475B1 (en) * 1997-03-31 2001-02-20 David R. Wallace System and method for cloaking software
AU7957998A (en) 1997-06-09 1999-01-25 Intertrust, Incorporated Obfuscation techniques for enhancing software security
US6594761B1 (en) * 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
US7430670B1 (en) 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
US6779114B1 (en) 1999-08-19 2004-08-17 Cloakware Corporation Tamper resistant software-control flow encoding
US7287166B1 (en) * 1999-09-03 2007-10-23 Purdue Research Foundation Guards for application in software tamperproofing
US7757097B2 (en) 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
CA2298990A1 (en) * 2000-02-18 2001-08-18 Cloakware Corporation Method and system for resistance to power analysis
CA2305078A1 (en) 2000-04-12 2001-10-12 Cloakware Corporation Tamper resistant software - mass data encoding
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
FR2820914A1 (fr) * 2001-02-15 2002-08-16 Bull Cp8 Procede de securisation d'un ensemble electronique mettant en oeuvre en algorithme cryptographique utilisant des operations booleennes et des operations arithmetiques, et systeme embarque correspondant
CA2348355A1 (en) * 2001-05-24 2002-11-24 Cloakware Corporation General scheme of using encodings in computations
US7243340B2 (en) * 2001-11-15 2007-07-10 Pace Anti-Piracy Method and system for obfuscation of computer program execution flow to increase computer program security
CA2363795A1 (en) 2001-11-26 2003-05-26 Cloakware Corporation Computer system protection by communication diversity
CA2369304A1 (en) * 2002-01-30 2003-07-30 Cloakware Corporation A protocol to hide cryptographic private keys
US20050193198A1 (en) 2004-01-27 2005-09-01 Jean-Michel Livowsky System, method and apparatus for electronic authentication
US7966499B2 (en) 2004-01-28 2011-06-21 Irdeto Canada Corporation System and method for obscuring bit-wise and two's complement integer computations in software
US7827223B2 (en) 2004-04-22 2010-11-02 Fortress Gb Ltd. Accelerated throughput synchronized word stream cipher, message authenticator and zero-knowledge output random number generator
JP4622807B2 (ja) 2005-03-25 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8036274B2 (en) 2005-08-12 2011-10-11 Microsoft Corporation SIMD lapped transform-based digital media encoding/decoding
EP1947584B1 (en) * 2006-12-21 2009-05-27 Telefonaktiebolaget LM Ericsson (publ) Obfuscating computer program code
US8752032B2 (en) 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US8185749B2 (en) * 2008-09-02 2012-05-22 Apple Inc. System and method for revising boolean and arithmetic operations
KR20140058419A (ko) * 2011-03-24 2014-05-14 이르데토 비.브이. 공격 저항을 위하여 어플리케이션 전체에 걸쳐 종속성 네트워크들을 제공하는 방법 및 시스템

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI452533B (zh) * 2010-10-08 2014-09-11 Microsoft Corp 維護隱私的計量
US10599482B2 (en) 2017-08-24 2020-03-24 Google Llc Method for intra-subgraph optimization in tuple graph programs
TWI689946B (zh) * 2017-08-24 2020-04-01 美商谷歌有限責任公司 用於元組圖形程式之類型推論之系統及跨越網路執行元組圖形程式之方法
US10642582B2 (en) 2017-08-24 2020-05-05 Google Llc System of type inference for tuple graph programs method of executing a tuple graph program across a network
US10887235B2 (en) 2017-08-24 2021-01-05 Google Llc Method of executing a tuple graph program across a network
US11429355B2 (en) 2017-08-24 2022-08-30 Google Llc System of type inference for tuple graph programs
TWI725616B (zh) * 2019-02-25 2021-04-21 華邦電子股份有限公司 保護半導體積體電路以防範逆向工程的方法及半導體裝置
TWI786879B (zh) * 2020-10-21 2022-12-11 美商夏瑞特科技實驗室股份有限公司 藉由算數及/或逐位元單元執行條件敘述的方法及系統
TWI812524B (zh) * 2020-10-21 2023-08-11 美商夏瑞特科技實驗室股份有限公司 藉由算數及/或逐位元單元執行條件敘述的方法及系統

Also Published As

Publication number Publication date
US9910971B2 (en) 2018-03-06
CN101627394B (zh) 2013-07-17
US20150213239A1 (en) 2015-07-30
CA2678953A1 (en) 2008-08-28
US10402547B2 (en) 2019-09-03
EP2126776B1 (en) 2017-11-15
US20150074803A1 (en) 2015-03-12
EP2126775A1 (en) 2009-12-02
US20160239647A1 (en) 2016-08-18
CA2678953C (en) 2017-10-03
EP2126775B1 (en) 2017-11-01
CA2678951C (en) 2020-03-24
IN2009DN05762A (zh) 2015-07-24
CN101622627A (zh) 2010-01-06
US20080216051A1 (en) 2008-09-04
US8161463B2 (en) 2012-04-17
CA2678951A1 (en) 2008-08-28
EP2126776A4 (en) 2011-02-09
US20080208560A1 (en) 2008-08-28
US8752032B2 (en) 2014-06-10
EP2126776A1 (en) 2009-12-02
WO2008101341A1 (en) 2008-08-28
CN101627394A (zh) 2010-01-13
AR065443A1 (es) 2009-06-10
EP2126775A4 (en) 2011-02-09
CN101622627B (zh) 2012-05-09

Similar Documents

Publication Publication Date Title
TW200905559A (en) System and method of interlocking to protect software-mediated program and device behaviours
Lande et al. SoK: unraveling Bitcoin smart contracts
Ishai et al. Private circuits II: Keeping secrets in tamperable circuits
CN105024803B (zh) 白箱实现中的行为指纹
CN104919750B (zh) 计算关于函数‑输入值的数据函数的计算设备和方法
CN105007256B (zh) 用于在非信任平台上执行安全功能的安全模块
CN105184115B (zh) 用于将隐式完整性或可信性检查包括到白箱实现中的方法
CN106888081A (zh) 白盒实施方案内中间值的宽编码
CN105721135A (zh) 在加密实施中的替换盒
Bond Understanding Security APIs
CN105022937B (zh) 用于将白箱实现紧附到周围程序的接口兼容方法
CN107273724A (zh) 为白盒实施方案的输入和输出加水印
CN109426731A (zh) 保护数据的方法
CN110210211A (zh) 一种数据保护的方法和计算设备
WO2000077596A1 (en) Tamper resistant software encoding
WO2008101340A1 (en) System and method for interlocking to protect software-mediated program and device behaviours
TWI378389B (zh)
Gupta et al. An enhanced python based approach of secret sharing scheme with encryption
TW200928851A (en) Method for securing a conditional jump, information carrier, program, secured system and security processor for this method
Prasad et al. An Improved Secured Client Authentication to Protect Software against Piracy
Huang et al. Constructing a Pure-Software-Based Sanctuary for Mobile Agents
Gilmore et al. 1 (Jan 96) pp 6–15; also as DEC SRC Research Report no 125 (June
Lavallee Using Circuitry and Computer Analysis for Modern Cryptology
Hong Memory Data Protection for Single-Processor Based Embedded Systems
Curtin In Retrospect