白皮書 理解白盒密碼技術
傳統意義(yi)上,加密(mi)(mi)技術提供(gong)了(le)除(chu)信息接(jie)收者之外別人難以 理(li)解(jie)的(de)(de)(de)(de)傳輸敏感(gan)(秘密(mi)(mi)、機密(mi)(mi)或私(si)有(you))信息的(de)(de)(de)(de)一(yi)種(zhong)手段(duan)。 密(mi)(mi)碼(ma)技術,在(zai)古(gu)圣經時代就(jiu)被使(shi)用,提供(gong)了(le)其中文(wen)(wen)本(ben)被手工替換(huan)為隱(yin)藏(zang)其原始(shi)內容的(de)(de)(de)(de)一(yi)種(zhong)技術。多年以后的(de)(de)(de)(de)二戰期間,密(mi)(mi)碼(ma)技術被廣泛(fan)應(ying)用于機電設備(bei)(如臭名昭著的(de)(de)(de)(de)恩尼格瑪密(mi)(mi)碼(ma)機)。如今,密(mi)(mi)碼(ma)技術越來(lai)越無處不在(zai)地主要依賴于有(you)堅實的(de)(de)(de)(de)數學基礎支持(chi)的(de)(de)(de)(de)計(ji)算機上。 加密(mi)(mi)技術,顧名思義(yi),試圖使(shi)用各種(zhong)方法來(lai)隱(yin)藏(zang)文(wen)(wen)本(ben)部分不被惡意的(de)(de)(de)(de)眼(yan)睛所查看。理(li)論上來(lai)講(jiang),概(gai)念聽起來(lai)很完(wan)美, 但現實世界的(de)(de)(de)(de)經驗(yan)證明,多種(zhong)因(yin)素和環境(jing)問題(ti)發生(sheng)作用對密(mi)(mi)鑰強(qiang)度(du)產(chan)生(sheng)負面(mian)的(de)(de)(de)(de)影響。常(chang)規手段(duan)無法提供(gong)一(yi)個刀(dao)槍(qiang)不入的(de)(de)(de)(de)解(jie)決方案(an),以全(quan)面(mian)解(jie)決多種(zhong)不同的(de)(de)(de)(de)利用密(mi)(mi)碼(ma)學固有(you)弱點的(de)(de)(de)(de)攻擊(ji)場景(jing)。
Peter G. Neumann 教授,計(ji)算(suan)機系統和網(wang)絡可(ke)信度和可(ke)靠性,被引述說“如果(guo)您認為解(jie)密技術解(jie)決(jue)了您的問(wen)題,那您還不清楚問(wen)題所在(zai)。”
本文在討論傳統技術(shu)(shu)的同(tong)時,專(zhuan)注于白盒(he)加密技術(shu)(shu)的實現。
近觀加密(mi)技術
典型的(de)(de)DRM(數(shu)字(zi)版權管理)中(zhong)實(shi)現的(de)(de)加(jia)密(mi)算法(fa)采用(yong)公知的(de)(de)、依(yi)靠密(mi)鑰保(bao)密(mi)性的(de)(de)強大算法(fa)作為安全解決方案的(de)(de)一部分。多數(shu)情(qing)況下,這是非常不妥(tuo)的(de)(de),這是因為很多這些應(ying)用(yong)程(cheng)序執(zhi)行在(zai)具有潛在(zai)敵意(yi)的(de)(de)最終用(yong)戶(hu)所控制(zhi)的(de)(de)平臺上。
用(yong)于加密(mi)技術(shu)的(de)(de)傳統前提是(shi)一(yi)個(ge)黑盒裝置,其假定(ding)攻擊者無(wu)法訪(fang)問(wen)所述密(mi)鑰,只能(neng)控制加密(mi)輸入(明(ming)文),并能(neng)夠(gou) 訪(fang)問(wen)結(jie)果(guo)輸出(密(mi)文)。長期以來(lai)這已被(bei)假定(ding)為(wei)真(zhen)實的(de)(de), 如同智能(neng)卡之類(lei)的(de)(de)硬件設備,但(dan)惡意攻擊利用(yong)從黑盒 “泄(xie) 漏(lou)”信息的(de)(de)技術(shu)已經開發出來(lai)了(如差分功耗分析攻擊,也被(bei)稱為(wei) DPA),這能(neng)讓(rang)黑客推導出黑盒內部使用(yong)的(de)(de)密(mi)鑰。黑客已有(you)效地使用(yong)該方法對黑盒進(jin)行攻擊,并將(jiang)其實現成“灰色(se)陰(yin)影”而非黑色(se)。
白盒加密(mi)技術的必(bi)要(yao)性
流行的(de)(de)(de)(de)行業標準加密算(suan)(suan)法(fa)如 AES 并(bing)沒(mei)有(you)設(she)計(ji)在(zai)(zai)可以查看(kan)到(dao)它(ta)們執(zhi)(zhi)行的(de)(de)(de)(de)環境中(zhong)(zhong)運(yun)行。事實(shi)上(shang),標準的(de)(de)(de)(de)加密算(suan)(suan)法(fa)模型假(jia)設(she)如終端(duan)、電(dian)腦和硬件(jian)保護令(ling)牌等都是(shi)可被信任的(de)(de)(de)(de)。如果這(zhe)些終端(duan)存在(zai)(zai)于(yu)具(ju)有(you)潛在(zai)(zai)敵(di)意的(de)(de)(de)(de)環境中(zhong)(zhong),當應用程(cheng)序試圖從內存中(zhong)(zhong)提(ti)取嵌入(ru)的(de)(de)(de)(de)或(huo)生成的(de)(de)(de)(de)密鑰(yao)時(shi),攻擊者(zhe)正在(zai)(zai)監控應用程(cheng)序的(de)(de)(de)(de)執(zhi)(zhi)行,則密鑰(yao)對(dui)于(yu)攻擊者(zhe)來說直(zhi)接可見(jian)。對(dui)于(yu)運(yun) 行在(zai)(zai) PC、IPTV 機頂盒及其他要實(shi)施 DRM 的(de)(de)(de)(de)數字設(she)備上(shang)的(de)(de)(de)(de) 基于(yu)軟件(jian)的(de)(de)(de)(de)應用程(cheng)序,這(zhe)是(shi)個普遍的(de)(de)(de)(de)問題。通(tong)過主動監控標準的(de)(de)(de)(de)加密算(suan)(suan)法(fa) API 或(huo)內存轉儲,黑客就能夠在(zai)(zai)使(shi)用時(shi)提(ti)取密鑰(yao)。
一個成功的基于內存的密鑰提取攻擊的實例就是使用工具 BackupHDDVD 來復制被保護的 DVD 的內容,并從 Windows 受保護的媒體內容中刪除DRM。
白盒的挑戰
在完全透(tou)明的(de)環境(jing)中工作(zuo)時,讓有價(jia)值的(de)信息(xi)如(ru)授(shou)權和其(qi)他商(shang)業機密保(bao)持(chi)隱藏,該(gai)理(li)念帶(dai)來了各種挑戰:
> 如何(he)加密或解密內容而無需(xu)直接暴露(lu)密鑰(yao)和/或數據的任何(he)部分(fen)?
> 如何執行強大的加密機制,以在執行時知曉黑客在查看和或變更代碼?
各種(zhong)加密模(mo)式(shi)
黑(hei)盒(傳統(tong))加密(mi)技術(shu)
作為一個傳統(tong)模式(shi),黑盒加密假定攻擊(ji)者(zhe)無法物理訪問密鑰(執(zhi)行加密或解密算法)或任何內部運(yun)作,而只能觀察外部信(xin)(xin)息(xi)和行為。該信(xin)(xin)息(xi)包括系統(tong)的明文(輸入)或密文(輸出),同時假設(she)零可見代碼的執(zhi)行和動態加密操作。
灰盒加密技術
灰盒的(de)場景是(shi)假(jia)設攻(gong)擊者可以(yi)部(bu)分(fen)物(wu)理訪問密(mi)鑰或者說是(shi) “泄漏(lou)”所謂的(de)邊信(xin)道信(xin)息。邊信(xin)道分(fen)析攻(gong)擊(SCA)利(li)用 從物(wu)理實現(xian)的(de)加密(mi)系統中(zhong)泄漏(lou)的(de)信(xin)息。通過時(shi)序信(xin)息、功耗、電(dian)磁輻射等(deng)被動式地觀察該(gai)(gai)泄漏(lou)。防(fang)護邊信(xin)道攻(gong)擊非常(chang)重(zhong)要,這是(shi)由于該(gai)(gai)種攻(gong)擊能(neng)夠快(kuai)速且低成本(ben)地實現(xian)。公(gong)開可用的(de)邊信(xin)道信(xin)息能(neng)夠讓黑客發現(xian)部(bu)分(fen)密(mi)鑰,從而大(da)大(da)降(jiang)低其(qi)功效并降(jiang)低整體保護能(neng)力。
灰(hui)盒(he)加(jia)(jia)密技(ji)術實(shi)(shi)際(ji)上(shang)是傳統(tong)黑盒(he)實(shi)(shi)現的(de)副產物。實(shi)(shi)踐已(yi)經證明,即使是智(zhi)能卡,被認為(wei)(wei)能夠提供強(qiang)大(da)的(de)安全性(xing),其內部執行的(de)加(jia)(jia)密事(shi)實(shi)(shi)上(shang)也會向外界泄漏信息。很顯然假定為(wei)(wei)黑盒(he)的(de)場景在現實(shi)(shi)中(zhong)僅為(wei)(wei)灰(hui)色(se)陰影。
白盒加密技術的概念
白(bai)盒(he)(he)加密(mi)技術與上述(shu)傳(chuan)統的(de)(de)(de)(de)安全模型針(zhen)鋒相對。相對于以前的(de)(de)(de)(de)實現下,攻擊(ji)者只給出(chu)一(yi)個黑(hei)盒(he)(he)子,即(ji)獲(huo)取輸(shu)入和輸(shu) 出(chu),并(bing)受(shou)到攻擊(ji)的(de)(de)(de)(de)加密(mi)算(suan)法,并(bing)假設零(ling)可(ke)(ke)視性內(nei)部(bu)運作(zuo)(zuo), 白(bai)盒(he)(he)提(ti)(ti)供了充分的(de)(de)(de)(de)可(ke)(ke)見(jian)性來(lai)代替(ti)。與之(zhi)前給黑(hei)客提(ti)(ti)供一(yi)個黑(hei)盒(he)(he)的(de)(de)(de)(de)實現(如訪問輸(shu)入、輸(shu)出(chu)、攻擊(ji)下的(de)(de)(de)(de)加密(mi)算(suan)法以及 假設零(ling)可(ke)(ke)見(jian)內(nei)部(bu)工作(zuo)(zuo))有(you)所不(bu)同,白(bai)盒(he)(he)提(ti)(ti)供充分的(de)(de)(de)(de)可(ke)(ke)見(jian)性。
白盒加(jia)密(mi)(mi)技術旨在(zai)保(bao)護軟件(jian)實施加(jia)密(mi)(mi)算法以對抗密(mi)(mi)鑰的還原,即使攻擊者完(wan)全控制機器執行加(jia)密(mi)(mi) – 這在(zai) DRM 領(ling)域特別有效。
白盒加密技術
白(bai)盒(he)的(de)(de)(de)場(chang)景與(yu)前面所述的(de)(de)(de)情況恰恰相反,處(chu)理更為嚴(yan)重(zhong)的(de)(de)(de)威脅,同時假設黑(hei)客能(neng)夠(gou)完全(quan)可(ke)(ke)視和控(kong)制整(zheng)個操作。黑(hei)客可(ke)(ke)以自由地觀察動態代(dai)碼的(de)(de)(de)執(zhi)行(使用實例化的(de)(de)(de)密(mi)鑰),并(bing)且完全(quan)可(ke)(ke)見(jian)和改變內(nei)部算法(fa)的(de)(de)(de)細(xi)節。盡管有這(zhe)種(zhong)完全(quan)透明的(de)(de)(de)方(fang)法(fa)論,白(bai)盒(he)加密(mi)技術整(zheng)合密(mi)文的(de)(de)(de)方(fang)式(shi)不(bu)會暴(bao)露密(mi)鑰。
因此很(hen)顯然,對(dui)于黑盒(he)和灰(hui)盒(he)模式的(de)內(nei)置(zhi)算法在面臨不(bu)可(ke)信主機上操作時是(shi)不(bu)切實際的(de)。不(bu)難理(li)解的(de)是(shi),黑客不(bu)會只用(yong)黑盒(he)和灰(hui)盒(he)的(de)場(chang)景下可(ke)用(yong)的(de)手段來破解密(mi)文,而是(shi)觀察到使用(yong)未受(shou)保護的(de)密(mi)鑰時 - 直接竊取它。
暴(bao)露(lu)在白(bai)盒(he)場景(jing)下(xia)的傳統(tong)加(jia)密(mi)算法(fa),假設該(gai)密(mi)鑰(yao)作(zuo)為(wei)實施(shi) 的一部分而存在。
白盒場景下,白盒加密算法受到保護,這是由于密鑰不在內存中,無法被提取 - 即使動態地。因此選擇最合適、最安全的加密模式是抵御惡意威脅的唯 一出路 – 這恰恰是白盒加密技術要實現的。
實(shi)現白盒(he)加密技術幕(mu)后的方法論
在假設可以全面監控并更改每條指令的前提下,如何能夠在可執行代碼中安全地“隱藏”密鑰?抽象地說,這是通過使用一個數學運算來實現的,結合
安(an)全密鑰的功效和一些實(shi)施的特定數據,以(yi)確保(bao)該運算(suan)事實(shi)上(shang)不可反轉。
舉(ju)個(ge)例子,通過(guo)一個(ge)簡單的乘法運算到大數字使得(de) RSA 算法的固有強度成立,但這是將結(jie)果分解為其素因數的數學難題。
另(ling)外,同樣重要(yao)的是,白盒加密算法的實(shi)現完全(quan)能夠加密或解密。
如前所述的實現方式是基于數學運算的,非常難以反轉(zhuan)。
這事實上(shang)能夠構建(jian)一(yi)個(ge)類似完(wan)整公鑰(yao)/私(si)鑰(yao)方案的(de)系統,但在性能水(shui)平方面,卻(que)更接近一(yi)個(ge)標準的(de)對(dui)稱式加(jia)密(mi)(mi)算法,解密(mi)(mi)功能可在分布式應(ying)用程序內實現(xian),但密(mi)(mi)鑰(yao)無法被提取(qu)并(bing)且解密(mi)(mi)如(ru)同加(jia)密(mi)(mi)操作一(yi)樣無法反(fan)向。攻擊(ji)者沒有任何手(shou)段來創建(jian)正確(que)的(de)加(jia)密(mi)(mi)過的(de)數(shu)據,將(jiang)其解密(mi)(mi)回(hui)所需的(de)值(zhi)。
這種特定的方法尤為適用于保障硬件設備保護的通信通道, 例如硬件保護令牌。攻擊者無法提取用于安全通信通道的密鑰,因此無法解密通過該通道的數據,也無法將數據注入到該通道,同時他也沒有正確加密它的手段。
解決(jue)該(gai)挑戰
盡管白盒場景被認為不適于安全相關的任務,但白盒加密技術打亂所有牌,并提供了運行在完全透明環境中執行加密的一個高度安全的方法。盡管完全透明,加密和解密操作能夠不泄露密鑰或數據本身的任何部分,以保護敏感數據。此外,明知有惡意的雙眼在執行過程中有可能觀察代碼的執行,白盒加密技術可使強大的加密機制執行(與其他技術相結合)。
金雅(ya)拓安全(quan)措施的一個組成部分
金雅(ya)拓(tuo)(tuo)的(de)(de) Sentinel 產品所提供(gong)的(de)(de)安全通(tong)信通(tong)道確保(bao)被保(bao)護(hu)的(de)(de)應(ying)(ying)用(yong)(yong)程序和(he)硬(ying)件令牌之間的(de)(de)通(tong)信被加密(mi)(mi)且(qie)無(wu)法重放。與(yu)以往旨(zhi)在隱藏加密(mi)(mi)密(mi)(mi)鑰的(de)(de)措(cuo)施(shi)(shi)不(bu)(bu)同,新(xin)的(de)(de)措(cuo)施(shi)(shi)圍繞著白盒加密(mi)(mi)技(ji)術,其(qi)假定攻擊者可(ke)以跟蹤(zong)被保(bao)護(hu)的(de)(de)應(ying)(ying)用(yong)(yong)程序及其(qi)運行(xing)環(huan)境來尋找加密(mi)(mi)密(mi)(mi)鑰。隨著該前(qian)提作為(wei)設計的(de)(de)一(yi)部分, 算(suan)法和(he)加密(mi)(mi)密(mi)(mi)鑰被替(ti)換為(wei)執(zhi)行(xing)相同加密(mi)(mi)的(de)(de)特(te)(te)定的(de)(de)供(gong)應(ying)(ying)商(shang)專用(yong)(yong) API 庫,將加密(mi)(mi)密(mi)(mi)鑰嵌入為(wei)算(suan)法的(de)(de)一(yi)部分,這樣(yang)就確保(bao)其(qi)不(bu)(bu)會出現(xian)在內存中(zhong),因此無(wu)法被提取。供(gong)應(ying)(ying)商(shang)專用(yong)(yong)庫的(de)(de)生成是在金雅(ya)拓(tuo)(tuo)的(de)(de)服務器上利用(yong)(yong)一(yi)些商(shang)業機密(mi)(mi)來執(zhi)行(xing)的(de)(de)。 此外,為(wei)每個特(te)(te)定軟件供(gong)應(ying)(ying)商(shang)單獨(du)生成與(yu)混淆每個應(ying)(ying)用(yong)(yong)程序庫 – 通(tong)用(yong)(yong)的(de)(de)破解幾(ji)乎不(bu)(bu)可(ke)能。
真正的突破性解決方案(an)
金雅拓是提供白盒(he)加密技術作為其 Sentinel 產品系列軟件 授權解(jie)決方案的(de)(de)首個也是唯一的(de)(de)供應商。該(gai)新(xin)技術能夠時(shi) 時(shi)保護加密密鑰,而不(bu)會在(zai)某個時(shi)間段分解(jie)并暴露(lu)它。從 安全角(jiao)度來看,這確保了密鑰的(de)(de)保護免遭黑(hei)客(ke)攻擊,因此(ci) 在(zai)潛(qian)在(zai)的(de)(de)攻擊過程(cheng)中不(bu)易重建。
白(bai)盒加(jia)密(mi)技術(shu)是一個(ge)重要(yao)組成(cheng)部分(fen),使得(de)開發人員能夠保護(hu)他們(men)的應用程序以應對逆向工程、篡改(gai)和自(zi)動(dong)攻擊。金雅拓的白(bai)盒加(jia)密(mi)方(fang)法集成(cheng)到軟件設計過(guo)程中(zhong),能夠將多一層的保護(hu)直接嵌入到源代(dai)碼級,從而提供(gong)一個(ge)高效的軟件 保護(hu)方(fang)法。
結論
被保(bao)護(hu)的(de)(de)應用(yong)(yong)程(cheng)序(xu)的(de)(de)整體安全(quan)(quan)性高(gao)度(du)依賴于實施本身,即如果沒有在(zai)其設計的(de)(de)環境中使用(yong)(yong),僅僅采取強大的(de)(de)加(jia)(jia)(jia)密(mi)算(suan) 法并不(bu)提供(gong)任何(he)安全(quan)(quan) - 不(bu)在(zai)白盒(he)設置中使用(yong)(yong)白盒(he)加(jia)(jia)(jia)密(mi)技(ji)術(shu)大 大地(di)幫助(zhu)黑客反向工程(cheng)所保(bao)護(hu)的(de)(de)軟(ruan)件(jian)。最常見的(de)(de)攻(gong)擊(ji)都試圖利(li)用(yong)(yong)軟(ruan)件(jian)的(de)(de)安全(quan)(quan)漏洞,而非加(jia)(jia)(jia)密(mi)算(suan)法的(de)(de)弱點 - 但(dan)最近(jin)攻(gong)擊(ji) 者已經(jing)意識到開(kai)放的(de)(de) PC 環境中經(jing)典加(jia)(jia)(jia)密(mi)算(suan)法的(de)(de)弱點。
除了繼續(xu)增強產品生命周(zhou)期(qi)和(he)新版(ban)本的(de)發布外,在設(she)計(ji)和(he) 實施階段也(ye)要特別注意軟件(jian)的(de)保護。除了白盒加密(mi)技術(shu)外, 應當使(shi)用更多互補的(de)安全措施,以(yi)進(jin)一(yi)步加強整體保護方 案。
安全帶(dai)來一定(ding)的(de)成(cheng)本,直接的(de)結果(guo),無法密不透風(feng)。因此,關鍵是要(yao)正確地評(ping)估(gu)應用程(cheng)序(xu)本身所需要(yao)的(de)安全級別,即需要(yao)保護(hu)的(de)價值結合忽略潛在風(feng)險所遭受的(de)損失。