白皮書 理解白盒密碼技術
傳統意義上,加密技術提供了除信息接收者之外別人難以 理解的傳輸敏感(秘密、機密或私有)信息的一種手段。 密碼技術,在古圣經時代就被使用,提供了其中文本被手工替換為隱藏其原始內容的一種技術。多年以后的二戰期間,密碼技術被廣泛應用于機電設備(如臭名昭著的恩尼格瑪密碼機)。如今,密碼技術越來越無處不在地主要依賴于有堅實的數學基礎支持的計算機上。 加密技術,顧名思義,試圖使用各種方法來隱藏文本部分不被惡意的眼睛所查看。理論上來講,概念聽起來很完美, 但現實世界的經驗證明,多種因素和環境問題發生作用對密鑰強度產生負面的影響。常規手段無法提供一個刀槍不入的解決方案,以全面解決多種不同的利用密碼學固有弱點的攻擊場景。
Peter G. Neumann 教授,計算機系統和網絡可信度和可靠性,被引述說“如果您認為解密技術解決了您的問題,那您還不清楚問題所在。”
本文在討論傳統技術的同時,專注于白盒加密技術的實現。
近觀加密技術
典型的DRM(數字版權管理)中實現的加密算法采用公知的、依靠密鑰保密性的強大算法作為安全解決方案的一部分。多數情況下,這是非常不妥的,這是因為很多這些應用程序執行在具有潛在敵意的最終用戶所控制的平臺上。
用于加密技術的傳統前提是一個黑盒裝置,其假定攻擊者無法訪問所述密鑰,只能控制加密輸入(明文),并能夠 訪問結果輸出(密文)。長期以來這已被假定為真實的, 如同智能卡之類的硬件設備,但惡意攻擊利用從黑盒 “泄 漏”信息的技術已經開發出來了(如差分功耗分析攻擊,也被稱為 DPA),這能讓黑客推導出黑盒內部使用的密鑰。黑客已有效地使用該方法對黑盒進行攻擊,并將其實現成“灰色陰影”而非黑色。
白盒加密技術的必要性
流行的行業標準加密算法如 AES 并沒有設計在可以查看到它們執行的環境中運行。事實上,標準的加密算法模型假設如終端、電腦和硬件保護令牌等都是可被信任的。如果這些終端存在于具有潛在敵意的環境中,當應用程序試圖從內存中提取嵌入的或生成的密鑰時,攻擊者正在監控應用程序的執行,則密鑰對于攻擊者來說直接可見。對于運 行在 PC、IPTV 機頂盒及其他要實施 DRM 的數字設備上的 基于軟件的應用程序,這是個普遍的問題。通過主動監控標準的加密算法 API 或內存轉儲,黑客就能夠在使用時提取密鑰。
一個成功的基于內存的密鑰提取攻擊的實例就是使用工具 BackupHDDVD 來復制被保護的 DVD 的內容,并從 Windows 受保護的媒體內容中刪除DRM。
白盒的挑戰
在完全透明的環境中工作時,讓有價值的信息如授權和其他商業機密保持隱藏,該理念帶來了各種挑戰:
> 如何加密或解密內容而無需直接暴露密鑰和/或數據的任何部分?
> 如何執行強大的加密機制,以在執行時知曉黑客在查看和或變更代碼?
各種加密模式
黑盒(傳統)加密技術
作為一個傳統模式,黑盒加密假定攻擊者無法物理訪問密鑰(執行加密或解密算法)或任何內部運作,而只能觀察外部信息和行為。該信息包括系統的明文(輸入)或密文(輸出),同時假設零可見代碼的執行和動態加密操作。
灰盒加密技術
灰盒的場景是假設攻擊者可以部分物理訪問密鑰或者說是 “泄漏”所謂的邊信道信息。邊信道分析攻擊(SCA)利用 從物理實現的加密系統中泄漏的信息。通過時序信息、功耗、電磁輻射等被動式地觀察該泄漏。防護邊信道攻擊非常重要,這是由于該種攻擊能夠快速且低成本地實現。公開可用的邊信道信息能夠讓黑客發現部分密鑰,從而大大降低其功效并降低整體保護能力。
灰盒加密技術實際上是傳統黑盒實現的副產物。實踐已經證明,即使是智能卡,被認為能夠提供強大的安全性,其內部執行的加密事實上也會向外界泄漏信息。很顯然假定為黑盒的場景在現實中僅為灰色陰影。
白盒加密技術的概念
白盒加密技術與上述傳統的安全模型針鋒相對。相對于以前的實現下,攻擊者只給出一個黑盒子,即獲取輸入和輸 出,并受到攻擊的加密算法,并假設零可視性內部運作, 白盒提供了充分的可見性來代替。與之前給黑客提供一個黑盒的實現(如訪問輸入、輸出、攻擊下的加密算法以及 假設零可見內部工作)有所不同,白盒提供充分的可見性。
白盒加密技術旨在保護軟件實施加密算法以對抗密鑰的還原,即使攻擊者完全控制機器執行加密 – 這在 DRM 領域特別有效。
白盒加密技術
白盒的場景與前面所述的情況恰恰相反,處理更為嚴重的威脅,同時假設黑客能夠完全可視和控制整個操作。黑客可以自由地觀察動態代碼的執行(使用實例化的密鑰),并且完全可見和改變內部算法的細節。盡管有這種完全透明的方法論,白盒加密技術整合密文的方式不會暴露密鑰。
因此很顯然,對于黑盒和灰盒模式的內置算法在面臨不可信主機上操作時是不切實際的。不難理解的是,黑客不會只用黑盒和灰盒的場景下可用的手段來破解密文,而是觀察到使用未受保護的密鑰時 - 直接竊取它。
暴露在白盒場景下的傳統加密算法,假設該密鑰作為實施 的一部分而存在。
白盒場景下,白盒加密算法受到保護,這是由于密鑰不在內存中,無法被提取 - 即使動態地。因此選擇最合適、最安全的加密模式是抵御惡意威脅的唯 一出路 – 這恰恰是白盒加密技術要實現的。
實現白盒加密技術幕后的方法論
在假設可以全面監控并更改每條指令的前提下,如何能夠在可執行代碼中安全地“隱藏”密鑰?抽象地說,這是通過使用一個數學運算來實現的,結合
安全密鑰的功效和一些實施的特定數據,以確保該運算事實上不可反轉。
舉個例子,通過一個簡單的乘法運算到大數字使得 RSA 算法的固有強度成立,但這是將結果分解為其素因數的數學難題。
另外,同樣重要的是,白盒加密算法的實現完全能夠加密或解密。
如前所述的實現方式是基于數學運算的,非常難以反轉。
這事實上能夠構建一個類似完整公鑰/私鑰方案的系統,但在性能水平方面,卻更接近一個標準的對稱式加密算法,解密功能可在分布式應用程序內實現,但密鑰無法被提取并且解密如同加密操作一樣無法反向。攻擊者沒有任何手段來創建正確的加密過的數據,將其解密回所需的值。
這種特定的方法尤為適用于保障硬件設備保護的通信通道, 例如硬件保護令牌。攻擊者無法提取用于安全通信通道的密鑰,因此無法解密通過該通道的數據,也無法將數據注入到該通道,同時他也沒有正確加密它的手段。
解決該挑戰
盡管白盒場景被認為不適于安全相關的任務,但白盒加密技術打亂所有牌,并提供了運行在完全透明環境中執行加密的一個高度安全的方法。盡管完全透明,加密和解密操作能夠不泄露密鑰或數據本身的任何部分,以保護敏感數據。此外,明知有惡意的雙眼在執行過程中有可能觀察代碼的執行,白盒加密技術可使強大的加密機制執行(與其他技術相結合)。
金雅拓安全措施的一個組成部分
金雅拓的 Sentinel 產品所提供的安全通信通道確保被保護的應用程序和硬件令牌之間的通信被加密且無法重放。與以往旨在隱藏加密密鑰的措施不同,新的措施圍繞著白盒加密技術,其假定攻擊者可以跟蹤被保護的應用程序及其運行環境來尋找加密密鑰。隨著該前提作為設計的一部分, 算法和加密密鑰被替換為執行相同加密的特定的供應商專用 API 庫,將加密密鑰嵌入為算法的一部分,這樣就確保其不會出現在內存中,因此無法被提取。供應商專用庫的生成是在金雅拓的服務器上利用一些商業機密來執行的。 此外,為每個特定軟件供應商單獨生成與混淆每個應用程序庫 – 通用的破解幾乎不可能。
真正的突破性解決方案
金雅拓是提供白盒加密技術作為其 Sentinel 產品系列軟件 授權解決方案的首個也是唯一的供應商。該新技術能夠時 時保護加密密鑰,而不會在某個時間段分解并暴露它。從 安全角度來看,這確保了密鑰的保護免遭黑客攻擊,因此 在潛在的攻擊過程中不易重建。
白盒加密技術是一個重要組成部分,使得開發人員能夠保護他們的應用程序以應對逆向工程、篡改和自動攻擊。金雅拓的白盒加密方法集成到軟件設計過程中,能夠將多一層的保護直接嵌入到源代碼級,從而提供一個高效的軟件 保護方法。
結論
被保護的應用程序的整體安全性高度依賴于實施本身,即如果沒有在其設計的環境中使用,僅僅采取強大的加密算 法并不提供任何安全 - 不在白盒設置中使用白盒加密技術大 大地幫助黑客反向工程所保護的軟件。最常見的攻擊都試圖利用軟件的安全漏洞,而非加密算法的弱點 - 但最近攻擊 者已經意識到開放的 PC 環境中經典加密算法的弱點。
除了繼續增強產品生命周期和新版本的發布外,在設計和 實施階段也要特別注意軟件的保護。除了白盒加密技術外, 應當使用更多互補的安全措施,以進一步加強整體保護方 案。
安全帶來一定的成本,直接的結果,無法密不透風。因此,關鍵是要正確地評估應用程序本身所需要的安全級別,即需要保護的價值結合忽略潛在風險所遭受的損失。