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