用于圖形處理單元的安全環(huán)境的制作方法
【專利說明】用于圖形處理單元的安全環(huán)境
[0001]背景
[0002]本文一般涉及有時(shí)叫做“圖形處理器”或圖形處理單元的處理圖形。
[0003]處理圖形越來越多遭受要求某些安全度的工作負(fù)荷。處理圖形上的安全敏感的工作負(fù)荷依賴于操作系統(tǒng)來提供必要的安全性。然而,越來越多的惡意軟件攻擊暗示這些解決方案不滿足若干個(gè)工作負(fù)荷的安全性要求。
[0004]可能需要圖形處理單元上的信任計(jì)算框架的工作負(fù)荷的示例包括其中瀏覽器將事務(wù)的一部分分?jǐn)偟綀D形引擎的銀行事務(wù)(bank transact1n),其中模式匹配的一部分被分?jǐn)偟綀D形引擎的防病毒引擎,以及醫(yī)學(xué)成像。另外,許多非安全性工作負(fù)荷還需要附加的安全性,諸如計(jì)算機(jī)輔助設(shè)計(jì),以及在存在惡意軟件的情況下需要無阻礙的執(zhí)行的圖形及其他工作負(fù)荷。另外,由于由圖形處理器實(shí)現(xiàn)的功率、效率以及性能改善,安全敏感的工作負(fù)荷正在被分?jǐn)偨o處理圖形。示例可包括加密功能、模式匹配基元、以及臉檢測(cè)算法以及用于挖掘、煉油廠、財(cái)務(wù)計(jì)算及涉及貨幣的其他計(jì)算的某些工作負(fù)荷。
[0005]安全敏感的工作負(fù)荷可能需要處理圖形上的信任框架,該信任框架不僅實(shí)施工作負(fù)荷的執(zhí)行的正確性,而且還將圖形資產(chǎn)的訪問嚴(yán)格控制到只有經(jīng)過授權(quán)的實(shí)體。
[0006]附圖簡(jiǎn)述
[0007]參考下面的圖形來描述一些實(shí)施例:
[0008]圖1是本發(fā)明的一個(gè)實(shí)施例的示意圖;
[0009]圖2是根據(jù)一個(gè)實(shí)施例的受保護(hù)的圖形模塊的生命周期的圖示;
[0010]圖3是本發(fā)明的一個(gè)實(shí)施例的流程圖;
[0011]圖4是一個(gè)實(shí)施例的系統(tǒng)描繪;以及
[0012]圖5是一個(gè)實(shí)施例的正面前視圖。
[0013]詳細(xì)描述
[0014]根據(jù)一些實(shí)施例,可以為處理圖形定義受保護(hù)的執(zhí)行環(huán)境。此框架不僅防止工作負(fù)荷受在圖形處理單元上運(yùn)行的惡意軟件的破壞,而且還防止工作負(fù)荷受在中央處理單元上運(yùn)行的惡意軟件的破壞。另外,信任框架還可以通過測(cè)量用于執(zhí)行工作負(fù)荷的代碼和數(shù)據(jù)結(jié)構(gòu),來促進(jìn)安全執(zhí)行的證明。如果此框架或受保護(hù)的執(zhí)行環(huán)境的可信計(jì)算基礎(chǔ)的一部分被損害,則可以遠(yuǎn)程修補(bǔ)該部分,在某些實(shí)施例中,修補(bǔ)可以在證據(jù)(attestat1n)中被遠(yuǎn)程地證明。
[0015]參考圖1,常駐在處理圖形上的受保護(hù)的圖形模塊,包含工作負(fù)荷在處理圖形中的正確的執(zhí)行所需的代碼、數(shù)據(jù),以及狀態(tài)。類似于非安全圖形工作負(fù)荷,由在中央處理單元(CPU)上運(yùn)行的軟件通過特殊CPU指令來創(chuàng)建受保護(hù)的圖形模塊。然而,在某些實(shí)施例中,受保護(hù)的圖形模塊只能在圖形處理單元上執(zhí)行。它可能具有向遠(yuǎn)程方斷言執(zhí)行的正確性的能力。在一個(gè)實(shí)施例中,模塊依賴于安全飛地(enclave)基礎(chǔ)設(shè)施來提供此斷言。參見在2010年5月20日公開的專利合作條約公開申請(qǐng)?zhí)朩0/2010/057065。
[0016]在安全飛地中,在應(yīng)用程序內(nèi)構(gòu)建了受保護(hù)的執(zhí)行環(huán)境。操作系統(tǒng)使用一組特許指令來構(gòu)建飛地。一旦構(gòu)建了飛地,應(yīng)用程序就可以使用一組無特權(quán)的指令來進(jìn)入和退出飛地。飛地在存儲(chǔ)器中被叫做飛地頁面緩存的物理受保護(hù)的區(qū)域中執(zhí)行。硬件確保屬于飛地頁面緩存的存儲(chǔ)器頁面只能被擁有那些頁面的飛地訪問,還確保惡意的有特權(quán)的軟件不能以意外的方式重新定向來源于飛地的存儲(chǔ)器訪問。在飛地內(nèi)執(zhí)行的軟件可以證明,由操作系統(tǒng)通過基于硬件的證據(jù)正確地構(gòu)建飛地。
[0017]存儲(chǔ)器14中的圖形頁面緩存18保留由受保護(hù)的圖形模塊(PGM) 12使用的代碼和數(shù)據(jù)。在一個(gè)實(shí)施例中,存儲(chǔ)器的此部分在系統(tǒng)動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)中實(shí)現(xiàn),并由存儲(chǔ)器加密引擎用密碼保護(hù)。在再一個(gè)實(shí)施例中,存儲(chǔ)器的此部分在處理器包內(nèi)作為靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)或嵌入式DRAM(eDRAM)來實(shí)現(xiàn)。存儲(chǔ)器的此部分可以由操作系統(tǒng)圖形驅(qū)動(dòng)器使用一組有特權(quán)的CPU指令來管理。為了讀取或?qū)懭牖驁?zhí)行,它可能不能被它們中的任何一項(xiàng)訪問。模塊12駐留在圖形頁面緩存18內(nèi)。在一個(gè)實(shí)施例中,圖形頁面緩存可以與飛地頁面緩存16相結(jié)合。
[0018]飛地10負(fù)責(zé)創(chuàng)建并初始化模塊12。一旦由飛地10創(chuàng)建并初始化模塊,處理圖形上的各種硬件引擎可以使用特定入口點(diǎn)(entry point)進(jìn)入模塊12。另外,在模塊啟動(dòng)之后,飛地本身可以執(zhí)行安全計(jì)算的某些部分,并可以通過圖形頁面緩存18與模塊進(jìn)行通信。在這方面,飛地10是模塊12的中央處理單元(CPU) 24對(duì)應(yīng)物,它可以與模塊12具有一對(duì)多關(guān)系O
[0019]從開發(fā)人員的角度來看,飛地10和模塊12兩者都是可選實(shí)施例。在某些實(shí)施例中,應(yīng)用程序開發(fā)人員可以判斷應(yīng)用程序是否需要由飛地和受保護(hù)的圖形模塊12的組合所提供的安全級(jí)別。
[0020]如此,在存儲(chǔ)器內(nèi),可以有飛地頁面緩存16、包括模塊12的圖形頁面緩存18,飛地10,以及用于保持需要的數(shù)據(jù)和/或指令的一個(gè)或多個(gè)經(jīng)加密的表面20。
[0021]處理圖形26,如圖2所示,包括受保護(hù)的圖形模塊12,而應(yīng)用程序28駐留在CPU24內(nèi)。CPU 24可包括準(zhǔn)時(shí)制(準(zhǔn)時(shí)制)執(zhí)行引擎(抖動(dòng)器(jitter)) 30以及飛地32。它也可以支持內(nèi)核驅(qū)動(dòng)器34??梢栽谥醒胩幚韱卧?4和處理圖形26之間共享共享虛擬存儲(chǔ)器36。共享系統(tǒng)存儲(chǔ)器38可以存儲(chǔ)飛地頁面緩存16和圖形頁面緩存18。
[0022]最初,應(yīng)用程序28在CPU 24上啟動(dòng)。此應(yīng)用程序通常是在其自己的進(jìn)程中啟動(dòng)的回響(ring)3應(yīng)用程序。應(yīng)用程序創(chuàng)建飛地32和飛地頁面緩存16。飛地可以包含用于創(chuàng)建受保護(hù)的圖形模塊12的元數(shù)據(jù)和元代碼。飛地還包含用于將模塊元代碼從高級(jí)語言轉(zhuǎn)換為可以被處理器和圖形硬件識(shí)別的二進(jìn)制格式的抖動(dòng)器30。飛地還包含用于創(chuàng)建模塊12的元數(shù)據(jù)和元代碼。
[0023]為創(chuàng)建模塊12,飛地從圖形工作負(fù)荷加載元代碼和元數(shù)據(jù),并使用合適的密碼操作來測(cè)量或驗(yàn)證工作負(fù)荷。這由圖2中的箭頭I和2來表示。然后,飛地設(shè)置圖形頁面緩存18中的模塊12的執(zhí)行所需的處理器圖形狀態(tài)和數(shù)據(jù)結(jié)構(gòu)。
[0024]模塊的調(diào)用按如下方式進(jìn)行。飛地通過應(yīng)用程序請(qǐng)求內(nèi)核模式圖形驅(qū)動(dòng)器34通過將模塊提供到相關(guān)元數(shù)據(jù)來執(zhí)行模塊。這由圖2中的箭頭3來表示。內(nèi)核模式圖形驅(qū)動(dòng)器34(回響O)獲取元數(shù)據(jù),并根據(jù)元數(shù)據(jù)來設(shè)置圖形引擎狀態(tài)(箭頭4)。然后,內(nèi)核圖形驅(qū)動(dòng)器將處理圖形通過如由箭頭5所指示的環(huán)形緩沖器37指向模塊12的入口點(diǎn)。內(nèi)核模式圖形驅(qū)動(dòng)器通過適當(dāng)?shù)匦薷墓蚕淼奶摂M存儲(chǔ)器36表,來將圖形頁面緩存映射到圖形地址空間。
[0025]處理圖形26執(zhí)行模塊12,如由箭頭6所指示的。處理圖形26內(nèi)的圖形調(diào)度器41,通知驅(qū)動(dòng)器34,然后,該驅(qū)動(dòng)器34關(guān)閉對(duì)為模塊12的執(zhí)行提供的圖形頁面緩存的訪問。當(dāng)模塊12被再次調(diào)度供執(zhí)行時(shí),圖形驅(qū)動(dòng)器給圖形頁面緩存提供對(duì)模塊的訪問,并執(zhí)行模塊。在模塊完成其執(zhí)行之后,它將執(zhí)行的其結(jié)果39寫入到圖形頁面緩存內(nèi)的輸出地址,如由箭頭6所指示的。在模塊12的創(chuàng)建過程中,如在元數(shù)據(jù)中所指定的,前面的飛地隨后讀取輸出,并將它提供到在飛地內(nèi)執(zhí)行的中央處理單元代碼。
[0026]根據(jù)一個(gè)實(shí)施例,模塊12可以具有定義明確的格式的存儲(chǔ)器以及用于測(cè)量模塊的唯一組件并將它們綁定到結(jié)果的格式。微代碼在由飛地執(zhí)行時(shí)測(cè)量模塊,將用密碼簽名的測(cè)量值提供到飛地。飛地包括模塊的測(cè)量值和飛地的測(cè)量值,組合的數(shù)據(jù)用于使用飛地證據(jù)