本申請(qǐng)涉及集成電路、處理器、信息安全等領(lǐng)域,特別是涉及一種解密方法及系統(tǒng),及新型處理器架構(gòu)。
背景技術(shù):
在目前處理器體系結(jié)構(gòu)下,信息安全體系主要采用許可證、密碼、軟件加密等措施,上述加密方法主要集中在通信安全、數(shù)據(jù)安全、知識(shí)產(chǎn)權(quán)保護(hù)等方面。如果是對(duì)軟件程序進(jìn)行加密,則稱未加密的程序?yàn)槊魑某绦?、加密后的程序?yàn)槊芪某绦?。由于在現(xiàn)有的計(jì)算機(jī)系統(tǒng)上只能運(yùn)行明文程序,因此密文程序在運(yùn)行前必須解密成明文程序,軟件程序的安全性止于軟件程序運(yùn)行前。由于處理器上所能運(yùn)行的程序都是明文程序,因此黑客們能夠把木馬程序、病毒程序等非法程序植入到明文軟件程序中,或者就以明文程序駐留于計(jì)算機(jī)系統(tǒng)中。由于處理器本身不能區(qū)分合法程序和非法程序,只要非法程序存在就容易被處理器所運(yùn)行,達(dá)到入侵系統(tǒng)的目的,即現(xiàn)有的信息安全體系并不能夠從根本上保證系統(tǒng)的安全性。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)的目的是提供一種解密方法及系統(tǒng),發(fā)明一種新的處理器架構(gòu),在保持現(xiàn)有的編程語言(如C語言、C++語言等)、開發(fā)環(huán)境不變的條件下,實(shí)現(xiàn)在處理器上直接運(yùn)行密文程序。程序開發(fā)者首先應(yīng)用現(xiàn)有的程序設(shè)計(jì)語言和開發(fā)工具完成程序開發(fā)后得到明文程序,再選擇一種加密算法對(duì)明文程序的明文機(jī)器碼以字節(jié)、字或多字為單位逐一加密,明文機(jī)器碼加密后稱為密文機(jī)器碼,由密文機(jī)器碼組成的密文程序。在密文程序不解密成明文程序下,本申請(qǐng)的處理器能夠直接讀入密文機(jī)器碼到處理器內(nèi)部解密算法重構(gòu)平臺(tái),在該平臺(tái)上實(shí)現(xiàn)把密文機(jī)器碼解密成明文機(jī)器碼,然后處理器再對(duì)明文機(jī)器碼經(jīng)過譯碼、執(zhí)行等完成指令功能,解密算法重構(gòu)平臺(tái)可以由用戶實(shí)現(xiàn)多種解密算法的靜態(tài)重構(gòu)和動(dòng)態(tài)重構(gòu),不同的用戶或程序可以獨(dú)立重構(gòu)各自的硬件解密算法,實(shí)現(xiàn)了從根本上對(duì)信息安全性的保障。
為實(shí)現(xiàn)上述目的,本申請(qǐng)?zhí)峁┝巳缦路桨福?/p>
一種解密方法,包括:
讀取密文機(jī)器碼,所述密文機(jī)器碼為對(duì)處理器中定義的機(jī)器碼進(jìn)行加密后得到的機(jī)器碼;
重構(gòu)硬件解密算法,所述硬件解密算法是由用戶通過重構(gòu)端口向所述處理器的解密算法重構(gòu)平臺(tái)的FPGA(Field Programmable Gate Array)下載解密算法重構(gòu)程序、進(jìn)行動(dòng)態(tài)重構(gòu)得到解密算法的硬件實(shí)現(xiàn)電路;或者是在程序運(yùn)行過程中,向所述處理器的解密算法重構(gòu)平臺(tái)的FPGA下載解密算法重構(gòu)程序、進(jìn)行動(dòng)態(tài)重構(gòu)得到解密算法的硬件實(shí)現(xiàn)電路;該所得到的解密算法的硬件實(shí)現(xiàn)電路,也稱為硬件解密器;
獲取解密密碼,從解密密碼存儲(chǔ)單元(也稱為密碼寄存器)讀取解密密碼,所述解密密碼用于對(duì)所述密文機(jī)器碼進(jìn)行解密;
解密密文機(jī)器碼,在所述處理器的解密算法重構(gòu)平臺(tái)上,利用所述硬件解密算法和所述解密密碼對(duì)所述密文機(jī)器碼進(jìn)行解密,得到明文機(jī)器碼,所述明文機(jī)器碼為所述處理器中定義的機(jī)器碼,能夠?yàn)樘幚砥魉鶊?zhí)行的機(jī)器碼;
執(zhí)行所述明文機(jī)器碼,對(duì)所述明文機(jī)器碼進(jìn)行譯碼,得到的指令功能的控制信號(hào),由指令執(zhí)行模塊執(zhí)行指令。
可選的,所述讀取密文機(jī)器碼,還包括:
獲取機(jī)器碼,所述獲取機(jī)器碼是由指令讀取(預(yù)取)模塊來讀取明文機(jī)器碼或者密文機(jī)器碼;
獲取工作模式控制信號(hào),所述工作模式包括執(zhí)行明文機(jī)器碼模式或執(zhí)行密文機(jī)器碼模式,實(shí)現(xiàn)與現(xiàn)有處理器的完全兼容;所述執(zhí)行明文機(jī)器碼模式不需要對(duì)機(jī)器碼進(jìn)行解密,直接對(duì)所述機(jī)器碼進(jìn)行譯碼和執(zhí)行;所述執(zhí)行密文機(jī)器碼模式能夠?qū)λ雒芪臋C(jī)器碼進(jìn)行解密得到明文機(jī)器碼,然后對(duì)明文機(jī)器碼進(jìn)行譯碼執(zhí)行;
判斷所述工作模式控制信號(hào)是或否來確定是否需要對(duì)所述機(jī)器碼進(jìn)行解密;
如果否,則所述機(jī)器碼為明文機(jī)器碼,對(duì)所述明文機(jī)器碼直接進(jìn)行譯碼,所述譯碼為將所述機(jī)器碼轉(zhuǎn)化為所述處理器能夠直接執(zhí)行的指令功能的控制信號(hào)。
如果是,則所述機(jī)器碼為密文機(jī)器碼,讀取密文機(jī)器碼,輸入到所述解密算法重構(gòu)平臺(tái)上解密,所述解密算法重構(gòu)平臺(tái)將密文機(jī)器碼解密為明文機(jī)器碼;
可選的,所述重構(gòu)硬件解密算法,具體包括:
采用算術(shù)運(yùn)算類算法在解密算法重構(gòu)平臺(tái)上重構(gòu)硬件解密算法;
或者,采用邏輯運(yùn)算類算法在解密算法重構(gòu)平臺(tái)上重構(gòu)硬件解密算法;
或者,采用所述算術(shù)運(yùn)算類算法與所述邏輯運(yùn)算類算法相結(jié)合的方式在所述解密算法重構(gòu)平臺(tái)上重構(gòu)硬件解密算法;
或者,采用用戶所使用的其它解密算法來重構(gòu)硬件解密算法。
可選的,所述利用所述硬件解密算法和所述解密密碼對(duì)所述密文機(jī)器碼進(jìn)行解密,具體包括:
將所述解密密碼和所述密文機(jī)器碼輸入到所述解密算法重構(gòu)平臺(tái)上使用所述硬件解密算法進(jìn)行解密計(jì)算。
本申請(qǐng)還提供了一種解密系統(tǒng),所述系統(tǒng)包括:
密文機(jī)器碼讀取單元,用于讀取密文機(jī)器碼,所述密文機(jī)器碼為對(duì)處理器中定義的機(jī)器碼進(jìn)行加密后得到的加了密的機(jī)器碼;
解密算法重構(gòu)單元,用于重構(gòu)硬件解密算法,所述硬件解密算法是由用戶通過重構(gòu)端口向所述處理器的解密算法重構(gòu)平臺(tái)的FPGA下載解密算法重構(gòu)程序、進(jìn)行動(dòng)態(tài)重構(gòu)得到解密算法的硬件實(shí)現(xiàn)電路;或者是在程序運(yùn)行過程中,向所述處理器的解密算法重構(gòu)平臺(tái)的FPGA下載解密算法重構(gòu)程序、進(jìn)行動(dòng)態(tài)重構(gòu)得到解密算法的硬件實(shí)現(xiàn)電路,進(jìn)一步實(shí)現(xiàn)在程序運(yùn)行過程中對(duì)解密算法的動(dòng)態(tài)重構(gòu),達(dá)到程序執(zhí)行級(jí)安全性的動(dòng)態(tài)的、實(shí)時(shí)的保護(hù)與保障;該所得到的解密算法的硬件實(shí)現(xiàn)電路,也稱為硬件解密器;
解密密碼獲取單元,用于獲取解密密碼,從解密密碼存儲(chǔ)單元(也稱為密碼寄存器)讀取解密密碼,所述解密密碼用于對(duì)所述密文機(jī)器碼進(jìn)行解密;
解密單元,用于解密密文機(jī)器碼,在所述處理器的解密算法重構(gòu)平臺(tái)上,利用所述硬件解密算法和所述解密密碼對(duì)所述密文機(jī)器碼進(jìn)行解密,得到明文機(jī)器碼,所述明文機(jī)器碼為所述處理器中定義的機(jī)器碼;
譯碼單元,用于執(zhí)行所述明文機(jī)器碼,對(duì)所述明文機(jī)器碼進(jìn)行譯碼,得到的指令功能的控制信號(hào),由指令執(zhí)行模塊執(zhí)行指令。
可選的,所述系統(tǒng)還包括:
機(jī)器碼獲取單元,用于讀取機(jī)器碼,所述獲取機(jī)器碼是由指令讀取(預(yù)取)模塊讀取明文機(jī)器碼或者密文機(jī)器碼;
工作模式獲取單元,用于獲取工作模式控制信號(hào),所述工作模式包括執(zhí)行明文機(jī)器碼模式或執(zhí)行密文機(jī)器碼模式,實(shí)現(xiàn)與現(xiàn)有處理器的完全兼容;所述執(zhí)行明文機(jī)器碼模式不需要對(duì)機(jī)器碼進(jìn)行解密,直接對(duì)所述明文機(jī)器碼進(jìn)行譯碼和執(zhí)行;所述執(zhí)行密文機(jī)器碼模式能夠?qū)λ雒芪臋C(jī)器碼進(jìn)行解密生成明文機(jī)器碼,然后再對(duì)明文機(jī)器碼進(jìn)行譯碼和執(zhí)行;
判斷單元,用于判斷所述工作模式控制信號(hào)是或否來確定是否需要對(duì)所述機(jī)器碼進(jìn)行解密。
所述密文讀取單元還用于當(dāng)所述控制信號(hào)為是表示需要對(duì)所述機(jī)器碼進(jìn)行解密時(shí),在所述機(jī)器碼為密文機(jī)器碼時(shí),讀取密文機(jī)器碼,由解密算法重構(gòu)平臺(tái)將密文機(jī)器碼解密為明文機(jī)器碼;
所述譯碼單元還用于當(dāng)所述控制信號(hào)為否表示不需要對(duì)所述機(jī)器碼進(jìn)行解密時(shí),對(duì)所述明文機(jī)器碼直接進(jìn)行譯碼,所述譯碼為將所述機(jī)器碼轉(zhuǎn)化為所述處理器能夠直接執(zhí)行的指令功能的控制信號(hào)。
可選的,所述解密算法重構(gòu)單元,具體包括:
第一構(gòu)建子單元,用于采用算術(shù)運(yùn)算類算法重構(gòu)硬件解密算法;
第二構(gòu)建子單元,用于采用邏輯運(yùn)算類算法重構(gòu)硬件解密算法;
第三構(gòu)建子單元,用于采用所述算術(shù)運(yùn)算類算法與所述邏輯運(yùn)算類算法相結(jié)合的方式重構(gòu)硬件解密算法;
第四類構(gòu)建子單元,用于采用用戶所使用的其它解密算法來重構(gòu)硬件解密算法。
可選的,所述解密單元具體包括:
解密子單元,用于將所述解密密碼和所述密文機(jī)器碼輸入到所述解密算法重構(gòu)平臺(tái)上使用所述硬件解密算法進(jìn)行解密計(jì)算。
根據(jù)本申請(qǐng)?zhí)峁┑木唧w實(shí)施例,本申請(qǐng)公開了以下技術(shù)效果:明文機(jī)器碼是處理器中定義的機(jī)器碼,本申請(qǐng)?zhí)峁┑膭?dòng)態(tài)可重構(gòu)解密平臺(tái)是對(duì)經(jīng)過用戶加過密的明文機(jī)器碼(即密文機(jī)器碼)進(jìn)行解密。其中,解密算法可以采用邏輯運(yùn)算或是算術(shù)運(yùn)算或是算術(shù)邏輯混合運(yùn)算或者是用戶所使用的其它運(yùn)算;明文機(jī)器碼加密后得到的密文機(jī)器碼在處理器中并沒有相關(guān)的定義或者失去了明文機(jī)器碼原有的意義或功能;因而,密文機(jī)器碼在處理器中并不能夠被執(zhí)行或者不能夠被正確運(yùn)行或者是一種混亂運(yùn)行;在動(dòng)態(tài)可重構(gòu)解密平臺(tái)中所重構(gòu)的硬件解密算法是與對(duì)明文機(jī)器碼加密時(shí)所采用的加密算法相對(duì)應(yīng)的解密算法,硬件解密器對(duì)密文機(jī)器碼進(jìn)行解密,將其轉(zhuǎn)化為處理器中有定義的明文機(jī)器碼,進(jìn)而再由處理器進(jìn)行常規(guī)的譯碼與執(zhí)行;本申請(qǐng)?zhí)峁┑慕饷芩惴◤母旧媳U狭诵畔⒌陌踩?。此外,本申?qǐng)的解密算法重構(gòu)平臺(tái)中包含F(xiàn)PGA,通過向FPGA下載解密算法重構(gòu)程序、由FPGA來動(dòng)態(tài)重構(gòu)密文機(jī)器碼的硬件解密電路(也稱為硬件解密器),具有硬件安全性、實(shí)時(shí)安全性、速度快、效率高的完全安全保護(hù)優(yōu)勢。
附圖說明
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請(qǐng)實(shí)施例解密方法的流程示意圖;
圖2為現(xiàn)有的處理器三級(jí)流水線結(jié)構(gòu)示意圖;
圖3為基于本申請(qǐng)?zhí)峁┑姆椒ǖ奶幚砥鞯乃募?jí)流水線模型;
圖4為本申請(qǐng)采用的處理器的結(jié)構(gòu)示意圖;
圖5為本申請(qǐng)的可重構(gòu)解密平臺(tái)的解密流程圖;
圖6為本申請(qǐng)實(shí)施例解密系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
本申請(qǐng)的目的是提供一種解密方法及系統(tǒng),該方法和系統(tǒng)從根本上保障了系統(tǒng)和信息的安全性、程序執(zhí)行的安全性。
為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。
圖1為本申請(qǐng)實(shí)施例解密方法的流程示意圖,如圖1所示,本申請(qǐng)?zhí)峁┑慕饷芊椒ň唧w包括以下步驟:
步驟101:讀取密文機(jī)器碼,所述密文機(jī)器碼為對(duì)處理器中定義的機(jī)器碼進(jìn)行加密后得到的機(jī)器碼,由指令讀取(預(yù)取)模塊讀取到處理器中;
步驟102:構(gòu)建解密算法,所述解密算法由用戶或程序在所述處理器的解密平臺(tái)FPGA上重構(gòu)得到;或者,所述解密算法通過重構(gòu)端口被下載到所述處理器的解密平臺(tái)FPGA中;重構(gòu)所得到的解密算法為硬件實(shí)現(xiàn)電路,也稱為硬件解密器。
對(duì)于具體的解密算法,用戶還可以設(shè)置安全度不同的多級(jí)加解密算法,例如,安全級(jí)設(shè)置三級(jí),每級(jí)對(duì)應(yīng)設(shè)置一定數(shù)量的加解密算法,比如,每級(jí)設(shè)置三套加解密算法,安全級(jí)別越高,其中設(shè)置的加解密算法越復(fù)雜。機(jī)器碼在加密時(shí),處理器根據(jù)機(jī)器碼的重要程度選擇加密算法的安全級(jí)別,并在選定的安全級(jí)別中隨機(jī)選擇加密算法,并記錄被加密的機(jī)器碼所采用的加密算法的安全級(jí)別和算法代號(hào),解密處理器在讀取到此密文機(jī)器碼后,會(huì)根據(jù)記錄的安全級(jí)別以及算法代號(hào)調(diào)取相應(yīng)的解密算法,對(duì)所述密文機(jī)器碼進(jìn)行解密,進(jìn)一步實(shí)現(xiàn)在當(dāng)前程序運(yùn)行中動(dòng)態(tài)重構(gòu)隨后運(yùn)行程序需要使用的硬件解密算法;
步驟103:所述解密密碼用于對(duì)所述密文機(jī)器碼進(jìn)行解密;
步驟104:利用所述解密算法和所述解密密碼對(duì)所述密文機(jī)器碼進(jìn)行解密,得到明文機(jī)器碼,所述明文機(jī)器碼為所述處理器中定義的機(jī)器碼;比如,明文機(jī)器碼的十六進(jìn)制為FAH,加密密碼的十六進(jìn)制為A0H,加密算法為“異或”,即用明文機(jī)器碼“異或”密碼,得到密文機(jī)器碼,根據(jù)上述加密算法計(jì)算得到的密文機(jī)器碼的十六進(jìn)制為5AH。那么,處理器在接收到上述密文機(jī)器碼后,一方面,根據(jù)上述加密算法確定對(duì)應(yīng)的解密算法,對(duì)于本實(shí)施例而言,解密算法也為“異或”,另一方面,獲取解密密碼A0H,對(duì)“異或”而言解密密碼與加密密碼相同。然后,將密文機(jī)器碼5AH以及解密密碼A0H傳送到動(dòng)態(tài)可重構(gòu)解密平臺(tái)上的硬件解密器中,在硬件解密器中實(shí)現(xiàn)密文機(jī)器碼“異或”解密密碼的異或運(yùn)算過程,得到解密后的明文機(jī)器碼FAH。當(dāng)然,在上述實(shí)施例中的解密算法也可以采用其他邏輯運(yùn)算類算法,或者采用算術(shù)運(yùn)算類算法,或者采用算術(shù)運(yùn)算類算法與邏輯運(yùn)算類算法相結(jié)合的方式等其它可使用的算法。具體采用何種算法以及算法的而復(fù)雜度由用戶自己選擇。
步驟105:由指令譯碼模塊對(duì)所述明文機(jī)器碼進(jìn)行譯碼,由指令執(zhí)行模塊執(zhí)行并實(shí)現(xiàn)指令功能。
為了對(duì)上述步驟進(jìn)行解釋說明,下面提供一簡單的實(shí)施例。在Intel公司x86指令系統(tǒng)中,清零進(jìn)位標(biāo)志位的匯編指令為CLC,對(duì)應(yīng)的機(jī)器碼十六進(jìn)制為F8H(二進(jìn)制碼為11111000),那么預(yù)先對(duì)二進(jìn)制碼11111000“取反”加密得到密文機(jī)器碼00000111(十六進(jìn)制為07H);指令預(yù)取模塊讀取到密文機(jī)器碼07H后,利用本申請(qǐng)?zhí)峁┑慕饷芩惴?取反)解密得到明文機(jī)器碼F8H。
在步驟101之前,還包括:
獲取機(jī)器碼;
獲取工作模式控制信號(hào),控制信號(hào)來源于重構(gòu)端口,重構(gòu)端口為一外設(shè)端口,本申請(qǐng)的工作模式包括兩種:一種是直接執(zhí)行密文機(jī)器碼模式;另一種是執(zhí)行明文機(jī)器碼模式,實(shí)現(xiàn)與現(xiàn)有處理器的完全兼容;
判斷所述控制信號(hào)是或否來確定是否需要對(duì)所述機(jī)器碼進(jìn)行解密;
如果否,則所述機(jī)器碼為明文機(jī)器碼、直接進(jìn)行譯碼,所述譯碼為將所述機(jī)器碼轉(zhuǎn)化為所述處理器能夠直接執(zhí)行的指令信號(hào);
如果是,則所述機(jī)器碼為密文機(jī)器碼,需要對(duì)所述機(jī)器碼進(jìn)行解密為明文機(jī)器碼,然后才能譯碼和執(zhí)行。
處理器的存儲(chǔ)結(jié)構(gòu)包括馮諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu),指令系統(tǒng)包括復(fù)雜指令集(CISC)與精簡指令集(RISC),每一類處理器都有自己的指令系統(tǒng),指令運(yùn)行是通過流水線結(jié)構(gòu)實(shí)現(xiàn)的。在流水線(包括三級(jí)流水線及更多級(jí)流水線)中,都會(huì)包括讀取指令模塊與指令譯碼模塊。在現(xiàn)有的處理器架構(gòu)中,處理器從內(nèi)存/緩存中直接讀得機(jī)器碼來執(zhí)行,一段程序可以在相同架構(gòu)處理器上運(yùn)行(例如微軟WORD軟件能在不同PC兼容機(jī)上運(yùn)行)。
圖2為現(xiàn)有的處理器的典型的三級(jí)流水線結(jié)構(gòu)示意圖,如圖2所示,每個(gè)模塊執(zhí)行需要一個(gè)時(shí)鐘,正常流水時(shí),每一個(gè)時(shí)鐘三個(gè)流水操作都同時(shí)執(zhí)行、完成一條指令的執(zhí)行。處理器執(zhí)行指令的過程:處理器首先從內(nèi)存/緩存中讀取指令機(jī)器碼,然后對(duì)機(jī)器碼譯碼,最后執(zhí)行指令完成指令功能。處理器所執(zhí)行的程序都是以處理器的機(jī)器碼“明碼”呈現(xiàn)的(明碼是指現(xiàn)有處理器能夠執(zhí)行的機(jī)器碼)。就PC機(jī)而言,程序執(zhí)行時(shí),首先將程序加載到內(nèi)存中,然后由處理器從內(nèi)存中逐條讀取指令機(jī)器碼、譯碼、執(zhí)行,完成一條指令的執(zhí)行。非流水線工作中,讀取指令、譯碼、執(zhí)行各需要一個(gè)時(shí)鐘,正常流水線工作中,讀取指令、譯碼、執(zhí)行一個(gè)時(shí)鐘完成。
而本申請(qǐng)?zhí)峁┑奶幚砥鹘Y(jié)構(gòu),在流水線中添加了一級(jí)解密流水操作,例如在指令讀取模塊和指令譯碼模塊之間添加一個(gè)解密算法重構(gòu)平臺(tái),圖3為基于本申請(qǐng)?zhí)峁┑奶幚砥鹘Y(jié)構(gòu)的典型的四級(jí)流水線模型,如圖3所示,在解密算法重構(gòu)平臺(tái)FPGA上可以由用戶獨(dú)立實(shí)現(xiàn)硬件解密算法的加載與重構(gòu)。讀取指令機(jī)器碼后,由解密算法重構(gòu)平臺(tái)上所構(gòu)建的硬件解密算法對(duì)已加密指令解密生成可執(zhí)行的明文機(jī)器碼,然后再進(jìn)行譯碼,最后再執(zhí)行指令,實(shí)現(xiàn)指令功能,實(shí)現(xiàn)了處理器在指令執(zhí)行級(jí)上的安全性。如果處理器從內(nèi)存/緩存中讀得的是未定義機(jī)器碼,那么處理器就無法執(zhí)行該機(jī)器碼并產(chǎn)生異常報(bào)錯(cuò)(如同除數(shù)為零的除法運(yùn)算)。也就是說,如果處理器把密文機(jī)器碼當(dāng)明文機(jī)器碼執(zhí)行(明文機(jī)器碼加密后可能成了未定義的機(jī)器碼或失去原意義的機(jī)器碼),處理器就不能執(zhí)行或者產(chǎn)生異常,可實(shí)現(xiàn)對(duì)程序知識(shí)產(chǎn)權(quán)、系統(tǒng)安全性的保護(hù)等;同樣,在解密執(zhí)行模式下,明文機(jī)器碼被當(dāng)做密文機(jī)器碼解密后就是未定義的機(jī)器碼或失去原意義的機(jī)器碼,處理器也不能執(zhí)行或者產(chǎn)生異常,可實(shí)現(xiàn)防黑客攻擊、防病毒等。另外,解密算法重構(gòu)平臺(tái)也可以添加在指令讀取模塊之前。
圖4為本申請(qǐng)采用的處理器的內(nèi)部結(jié)構(gòu)示意圖,如圖4所示,重構(gòu)引腳包括重構(gòu)端口所需要的重構(gòu)信號(hào)和模式控制信號(hào)(處理器的其它通用引腳為默認(rèn)引腳,沒有標(biāo)出);重構(gòu)端口與解密算法重構(gòu)平臺(tái)通過重構(gòu)總線連接,重構(gòu)端口主要實(shí)現(xiàn)在解密算法重構(gòu)平臺(tái)上構(gòu)建硬件解密算法,即通過重構(gòu)端口將解密算法重構(gòu)文件(是用硬件描述語言HDL實(shí)現(xiàn)的硬件編程文件)下載到解密算法重構(gòu)平臺(tái)上,在FPGA中構(gòu)成一個(gè)硬件實(shí)現(xiàn)的解密算法;模式控制信號(hào)主要用于控制解密算法重構(gòu)平臺(tái)的左端總線和右端總線是否直接連通:如果模式控制信號(hào)為否,則左右總線直接連通,實(shí)現(xiàn)對(duì)指令解密平臺(tái)旁路,解密算法重構(gòu)平臺(tái)為非解密工作模式,該模式暨可以實(shí)現(xiàn)處理器內(nèi)部的原始配置等功能、也是一個(gè)默認(rèn)執(zhí)行狀態(tài)(非加密工作狀態(tài))、也是一個(gè)和現(xiàn)有通用處理器兼容的狀態(tài)(即處于非解密工作狀態(tài)就是一款現(xiàn)有的通用處理器);模式控制信號(hào)為是,則左右總線不連通,解密算法重構(gòu)平臺(tái)為解密工作模式,指令預(yù)取模塊獲取密文機(jī)器碼輸出至指令解密平臺(tái),經(jīng)由可重構(gòu)指令解密平臺(tái)進(jìn)行解密之后,得到明文機(jī)器碼輸出至指令譯碼模塊,明文機(jī)器碼經(jīng)由指令譯碼模塊進(jìn)行譯碼后,得到可執(zhí)行的指令信號(hào)輸入到指令執(zhí)行模塊,最后由指令執(zhí)行模塊執(zhí)行,實(shí)現(xiàn)各種指令功能。電源用于為處理器提供電能,處理器的其它通用默認(rèn)模塊沒有重復(fù)給出。
圖5為本申請(qǐng)的解密算法重構(gòu)平臺(tái)的解密流程圖,如圖5所示,解密算法重構(gòu)平臺(tái)通過重構(gòu)端口下載解密算法的重構(gòu)文件并重構(gòu)解密算法,根據(jù)解密密碼和解密算法對(duì)密文機(jī)器碼進(jìn)行解密,得到明文機(jī)器碼。
本申請(qǐng)主要是在不改變現(xiàn)有處理器的指令系統(tǒng)的基礎(chǔ)上,在體系結(jié)構(gòu)的流水線中添加了一級(jí)解密流水操作,通過重構(gòu)解密算法,處理器實(shí)現(xiàn)了“直接執(zhí)行已加密指令”功能,達(dá)到了處理器指令執(zhí)行級(jí)的安全性。
在基于本申請(qǐng)的架構(gòu)的處理器設(shè)計(jì)中,在不改變現(xiàn)有處理器的指令系統(tǒng)的基礎(chǔ)上,在其流水線的指令讀取模塊之前或者在指令讀取模塊與指令譯碼模塊之間添加一個(gè)解密算法重構(gòu)平臺(tái),達(dá)到與現(xiàn)有處理器的性能和工藝上做到最大兼容。用戶可以在解密算法重構(gòu)平臺(tái)中獨(dú)立構(gòu)建各自的硬件解密算法,實(shí)現(xiàn)處理器直接執(zhí)行密文機(jī)器碼。黑客等不知道加解密算法和密碼,因此他們無法將黑客程序、病毒程序等轉(zhuǎn)換成密文機(jī)器碼。在解密執(zhí)行模式下,明文機(jī)器碼被當(dāng)做密文機(jī)器碼解密后就是未定義或錯(cuò)誤碼,處理器不能執(zhí)行。這樣,極大地提高了系統(tǒng)的保密性和抗攻擊性。
解密算法重構(gòu)平臺(tái)可以通過重構(gòu)端口實(shí)現(xiàn)多種解密算法的靜態(tài)重構(gòu),也可以實(shí)現(xiàn)動(dòng)態(tài)重構(gòu),由用戶在程序運(yùn)行過程中動(dòng)態(tài)構(gòu)建硬件解密算法。重構(gòu)可以實(shí)現(xiàn)不同的用戶選擇不同的加解密算法和密碼,甚至是不同的程序選擇不同的加解密算法和密碼,提供了更大的靈活性和更高的安全性。常用的加解密算法如算術(shù)運(yùn)算類算法、邏輯運(yùn)算類算法等等。
基于本申請(qǐng)的處理器或系統(tǒng)是在原有(現(xiàn)有)的通用處理器的基礎(chǔ)上,在其指令讀取模塊與指令譯碼模塊之間或者在其指令讀取模塊之前添加一個(gè)解密算法重構(gòu)平臺(tái)實(shí)現(xiàn),也可以把指令預(yù)取模塊與解密算法重構(gòu)平臺(tái)合并為一個(gè)模塊或者把解密算法重構(gòu)平臺(tái)與指令譯碼模塊合并為一個(gè)模塊,達(dá)到與目前現(xiàn)有處理器的性能和工藝上做到最大兼容。
本申請(qǐng)?jiān)O(shè)計(jì)的處理器實(shí)現(xiàn)了從處理器執(zhí)行級(jí)的程序安全。可以實(shí)現(xiàn)程序安全、數(shù)據(jù)安全、通訊安全、執(zhí)行安全,防黑客攻擊、防病毒安全、保護(hù)知識(shí)產(chǎn)權(quán)等。
為達(dá)到上述目的,本申請(qǐng)還提供了一種解密系統(tǒng),圖6為本申請(qǐng)實(shí)施例解密系統(tǒng)的結(jié)構(gòu)示意圖,如圖6所示,所述系統(tǒng)包括:
密文機(jī)器碼讀取單元601,用于讀取密文機(jī)器碼,所述密文機(jī)器碼為對(duì)處理器中定義的機(jī)器碼進(jìn)行加密后得到的機(jī)器碼;
解密算法重構(gòu)單元602,用于重構(gòu)硬件解密算法,所述硬件解密算法由用戶在所述解密算法重構(gòu)平臺(tái)中的FPGA上構(gòu)建得到;
解密密碼獲取單元603,用于獲取解密密碼,所述解密密碼用于對(duì)所述密文機(jī)器碼進(jìn)行解密;
解密單元604,用于利用所述硬件解密算法和所述解密密碼對(duì)所述密文機(jī)器碼進(jìn)行解密,得到明文機(jī)器碼,所述明文機(jī)器碼為所述處理器中定義的機(jī)器碼;
譯碼單元605,用于對(duì)所述明文機(jī)器碼進(jìn)行譯碼,輸出給處理器指令執(zhí)行模塊執(zhí)行指令、實(shí)現(xiàn)指令功能。
所述系統(tǒng)還包括:
機(jī)器碼獲取單元,用于獲取機(jī)器碼;
工作模式獲取單元,用于獲取工作模式控制信號(hào);
判斷單元,用于判斷所述控制信號(hào)是或否來確定是否需要對(duì)所述機(jī)器碼進(jìn)行解密;
所述密文機(jī)器碼讀取單元還用于當(dāng)所述模式控制信號(hào)表示需要對(duì)所述機(jī)器碼進(jìn)行解密時(shí),讀取密文機(jī)器碼;
所述譯碼單元還用于當(dāng)所述模式控制信號(hào)表示不需要對(duì)所述機(jī)器碼進(jìn)行解密時(shí),對(duì)所述機(jī)器碼進(jìn)行譯碼,輸出給處理器指令執(zhí)行模塊執(zhí)行指令、實(shí)現(xiàn)指令功能。
解密算法重構(gòu)單元602,具體包括:
第一構(gòu)建子單元,用于采用算術(shù)運(yùn)算類算法構(gòu)建解密算法;
第二構(gòu)建子單元,用于采用邏輯運(yùn)算類算法構(gòu)建解密算法;
第三構(gòu)建子單元,用于采用所述算術(shù)運(yùn)算類算法與所述邏輯運(yùn)算類算法相結(jié)合的方式構(gòu)建解密算法;
第四類構(gòu)建子單元,用于采用用戶所使用的其它解密算法來重構(gòu)硬件解密算法。
解密單元604,具體包括:
解密子單元,用于將所述解密密碼和所述機(jī)器碼代入所述解密算法中進(jìn)行計(jì)算。
本申請(qǐng)?zhí)峁┑慕饷芟到y(tǒng)中的密文機(jī)器碼是經(jīng)過加密的明文機(jī)器碼,解密時(shí),采用解密算法將密文機(jī)器碼轉(zhuǎn)化為處理器中定義的明文機(jī)器碼,進(jìn)而,由處理器譯碼、執(zhí)行該明文機(jī)器碼,如果不能對(duì)密文機(jī)器碼進(jìn)行解密,那么處理器將不能執(zhí)行指令或是產(chǎn)生異常,本申請(qǐng)?zhí)峁┑南到y(tǒng)從處理器執(zhí)行的指令機(jī)器碼上入手,從根本上保障了信息的安全性。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的系統(tǒng)而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。