[發(fā)明專利]一種面向安全防護的分支指令執(zhí)行方法和電子裝置在審
| 申請?zhí)枺?/td> | 202110443662.6 | 申請日: | 2021-04-23 |
| 公開(公告)號: | CN113076136A | 公開(公告)日: | 2021-07-06 |
| 發(fā)明(設計)人: | 黃立波;童敢;郭輝;鄭重;鄧全;倪曉強;郭維;雷國慶;王俊輝;隋兵才;孫彩霞;王永文 | 申請(專利權(quán))人: | 中國人民解放軍國防科技大學 |
| 主分類號: | G06F9/30 | 分類號: | G06F9/30;G06F9/32;G06F9/38 |
| 代理公司: | 湖南兆弘專利事務所(普通合伙) 43008 | 代理人: | 譚武藝 |
| 地址: | 410073 湖南*** | 國省代碼: | 湖南;43 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 面向 安全 防護 分支 指令 執(zhí)行 方法 電子 裝置 | ||
本發(fā)明公開了一種面向安全防護的分支指令執(zhí)行方法和電子裝置,本發(fā)明面向安全防護的分支指令執(zhí)行方法包括在取指階段對取得的指令進行預譯碼確定指令的類型,若指令為非條件分支指令,則在取指階段提前取出非條件分支指令的操作數(shù)并計算出非條件分支指令目標地址,并將非條件分支指令目標地址作為新的程序計數(shù)器值;且在下一個周期的取指階段直接使用所述新的程序計數(shù)器值取值。本發(fā)明針對確定會跳轉(zhuǎn)的非條件分支指令,采用了提前計算分支目標的方法,避免了跳轉(zhuǎn)指令和調(diào)用返回指令被利用進行瞬態(tài)執(zhí)行攻擊,避免針對非條件分支指令與條件分支指令一樣采用分支預測攻擊防御技術(shù)帶來的性能損失。
技術(shù)領域
本發(fā)明屬于處理器體系結(jié)構(gòu)安全領域,具體涉及一種面向安全防護的分支指令執(zhí)行方法和電子裝置。
背景技術(shù)
分支預測技術(shù)是現(xiàn)代處理器用于提高程序執(zhí)行效率的關(guān)鍵性技術(shù),大大降低了由分支指令帶來的流水線延遲,高準確度的分支預測可以給處理器帶來極大的性能提升。但是近年來曝光出了幽靈(Spectre)系列的漏洞族,顯示出典型現(xiàn)代處理器體系結(jié)構(gòu)的設計存在嚴重的安全問題,對處理器用戶產(chǎn)生了極大的安全威脅。幽靈漏洞族利用了對分支預測技術(shù)的誤導訓練,使得處理器推測執(zhí)行攻擊者精心構(gòu)造的代碼序列,非授權(quán)訪問由各種處理器和操作系統(tǒng)安全機制保護的數(shù)據(jù),進而利用高速緩存等側(cè)信道泄露數(shù)據(jù)。
防御這類攻擊最根本的是從源頭進行防護,也就是防止被惡意觸發(fā)推測執(zhí)行,攻擊者就無法成功瞬態(tài)執(zhí)行非授權(quán)訪問的代碼。現(xiàn)有在源頭層面對幽靈漏洞進行防御的措施為防止對所有分支指令進行分支預測,在硬件層面主要方法是禁用分支預測,在軟件層面主要方法是編譯時在分支指令后插入fence指令。這類防御措施等效于在處理器執(zhí)行到分支指令后暫停流水線,等到確定分支指令分支結(jié)果后再執(zhí)行,這樣處理器相當于未采用分支預測技術(shù),導致程序執(zhí)行效率下降,犧牲了由分支預測技術(shù)帶來的巨大性能提升,代價較大。然而,分支指令包括條件分支指令和非條件分支指令,非條件分支指令包括跳轉(zhuǎn)(jump)指令和調(diào)用(call)返回(return)指令,其中非條件分支指令是確定會跳轉(zhuǎn)的,不加區(qū)分對所有的分支指令應用防護措施也帶來了一些無意義的性能損失。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題:針對現(xiàn)有技術(shù)的上述問題,提供一種面向安全防護的分支指令執(zhí)行方法和電子裝置,本發(fā)明針對確定會跳轉(zhuǎn)的非條件分支指令,采用了提前計算分支目標的方法,避免了跳轉(zhuǎn)指令和調(diào)用返回指令被利用進行瞬態(tài)執(zhí)行攻擊,避免針對非條件分支指令與條件分支指令一樣采用分支預測攻擊防御技術(shù)帶來的性能高損失。
為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:
一種面向安全防護的分支指令執(zhí)行方法,包括:
1)在取指階段對取得的指令進行預譯碼確定指令的類型,若指令為非條件分支指令,則跳轉(zhuǎn)執(zhí)行下一步;
2)在取指階段提前取出非條件分支指令的操作數(shù)并計算出非條件分支指令目標地址,并將非條件分支指令目標地址作為新的程序計數(shù)器值;
3)在下一個周期的取指階段直接使用所述新的程序計數(shù)器值取值。
可選地,步驟1)中在取指階段對取得的指令進行預譯碼確定指令的類型包括:
1.1)在取指階段根據(jù)程序計數(shù)器值從指令緩存中取指令;
1.2)對取得的指令進行預譯碼;
1.3)判斷取得的指令是否為分支指令,若取得的指令為分支指令則跳轉(zhuǎn)執(zhí)行下一步;
1.4)判斷取得的指令是否為分支指令中的非條件分支指令,若取得的指令為非條件分支指令則跳轉(zhuǎn)執(zhí)行步驟2)。
可選地,步驟1.3)中還包括若取得的指令不是分支指令時,直接將新的程序計數(shù)器值賦值為下一條指令的地址,并跳轉(zhuǎn)執(zhí)行步驟3)的步驟。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國人民解放軍國防科技大學,未經(jīng)中國人民解放軍國防科技大學許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110443662.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





