TSX的機(jī)制,使得非運(yùn)算核的進(jìn)程的運(yùn)行速度不被影響。
[0074]進(jìn)一步,由于運(yùn)算核在進(jìn)行運(yùn)算過程中會(huì)使用SSE寄存器和通用寄存器,因此,清空運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器中的私鑰明文以及運(yùn)算過程中使用的中間數(shù)據(jù)變量時(shí),還包括清除SSE寄存器和通用寄存器中數(shù)據(jù)的步驟。在本實(shí)施例中,可通過memset函數(shù)清空運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器中的數(shù)據(jù),通過XOR指令清除SSE寄存器和通用寄存器。
[0075]進(jìn)一步,為了避免非運(yùn)算核的進(jìn)程頻繁地訪問事務(wù)區(qū)所訪問的內(nèi)存,導(dǎo)致上述事務(wù)區(qū)代碼頻繁地發(fā)生abort1n,因此,在本實(shí)施例中優(yōu)選地,執(zhí)行步驟B之前,即在進(jìn)入事務(wù)區(qū)之前,該方法還包括為多核處理器中的每個(gè)核預(yù)留步驟B和步驟C所訪問內(nèi)存區(qū)域的步驟,通過該設(shè)定使得多核處理器的每個(gè)核均在固定的內(nèi)存區(qū)域內(nèi)進(jìn)行訪問,從而防止其他核的內(nèi)存訪問與運(yùn)算核事務(wù)區(qū)所訪問的內(nèi)存發(fā)成沖突,使私鑰明文獲取運(yùn)算和私鑰計(jì)算操作運(yùn)算得以順利執(zhí)行。
[0076]綜上所述,采用本發(fā)明提供的密鑰保護(hù)方法,通過設(shè)置多核處理器的每個(gè)核的寄存器一個(gè)對(duì)稱主密鑰,動(dòng)態(tài)解密出明文的非對(duì)稱私鑰,并通過Intel的TSX擴(kuò)展指令,硬件上保證私鑰以及計(jì)算過程中使用的中間變量只存在于該核獨(dú)占的高速緩沖存儲(chǔ)器中,可以防止攻擊者直接從物理內(nèi)存中竊取私鑰信息或者通過惡意軟件讀取私鑰信息,從而保障公鑰密碼算法在計(jì)算機(jī)系統(tǒng)環(huán)境下實(shí)現(xiàn)的安全性,并且利用Intel TSX的機(jī)制,使得多核處理器的其他核也可以進(jìn)行密碼運(yùn)算,提高了運(yùn)算效率。
[0077]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種抵抗物理攻擊和系統(tǒng)攻擊的密鑰保護(hù)方法,其特征在于,包括: 步驟A:設(shè)置多核處理器的每個(gè)核使其包含對(duì)稱主密鑰; 步驟B:利用其中任意一個(gè)核作為運(yùn)算核執(zhí)行公鑰密碼運(yùn)算,且私鑰明文以及運(yùn)算過程中使用的中間數(shù)據(jù)變量存儲(chǔ)于運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器中; 步驟C:清空所述運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器中的私鑰明文以及運(yùn)算過程中使用的中間數(shù)據(jù)變量; 其中,當(dāng)執(zhí)行步驟B和步驟C時(shí),多核處理器動(dòng)態(tài)記錄所述步驟B和步驟C執(zhí)行過程中的所有內(nèi)存訪問; 當(dāng)所述多核處理器其他核線程試圖和運(yùn)算核同時(shí)訪問同一內(nèi)存地址,且至少有一個(gè)寫操作時(shí),或者當(dāng)運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器空間不夠,發(fā)生高速緩沖存儲(chǔ)器替換時(shí),運(yùn)算核放棄已執(zhí)行的步驟B和步驟C的所有操作,重新執(zhí)行步驟B和步驟C。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過事務(wù)內(nèi)存機(jī)制將步驟B和步驟C對(duì)應(yīng)的代碼指定為事務(wù)區(qū)從而實(shí)現(xiàn)多核處理器動(dòng)態(tài)記錄所述步驟B和步驟C執(zhí)行過程中的所有內(nèi)存訪問,以及當(dāng)所述多核處理器其他核線程試圖和運(yùn)算核同時(shí)訪問同一內(nèi)存地址,且至少有一個(gè)寫操作時(shí),或者運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器空間不夠,發(fā)生高速緩沖存儲(chǔ)器替換時(shí),運(yùn)算核放棄已執(zhí)行的步驟B和步驟C的所有操作,重新執(zhí)行步驟B和步驟C。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,通過IntelTSX將步驟B和步驟C對(duì)應(yīng)的代碼指定為事務(wù)區(qū)從而實(shí)現(xiàn)多核處理器動(dòng)態(tài)記錄所述步驟B和步驟C執(zhí)行過程中的所有內(nèi)存訪問,以及當(dāng)所述多核處理器其他核線程試圖和運(yùn)算核同時(shí)訪問同一內(nèi)存地址,且至少有一個(gè)寫操作時(shí),或者運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器空間不夠,發(fā)生高速緩沖存儲(chǔ)器替換時(shí),運(yùn)算核放棄已執(zhí)行的步驟B和步驟C的所有操作,重新執(zhí)行步驟B和步驟C。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,通過IntelTSX的RTM機(jī)制實(shí)現(xiàn)當(dāng)所述多核處理器其他核線程試圖和運(yùn)算核同時(shí)訪問同一內(nèi)存地址,且至少有一個(gè)寫操作時(shí),或者運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器空間不夠,發(fā)生高速緩沖存儲(chǔ)器替換時(shí),運(yùn)算核放棄已執(zhí)行的步驟B和步驟C的所有操作,重新執(zhí)行步驟B和步驟C。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,通過RTM機(jī)制中的xbegin指令進(jìn)入所述事務(wù)區(qū),并指定步驟B的開始為發(fā)生所述多核處理器其他核線程試圖和運(yùn)算核同時(shí)訪問同一內(nèi)存地址,且至少有一個(gè)寫操作時(shí),或者運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器空間不夠,發(fā)生高速緩沖存儲(chǔ)器替換時(shí)的回退入口 ;當(dāng)執(zhí)行完步驟C后,通過xend指令退出所述事務(wù)區(qū)。6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟A中設(shè)置多核處理器的每個(gè)核使其包含對(duì)稱主密鑰的步驟包括: 操作系統(tǒng)啟動(dòng)時(shí)彈出提示界面,用戶輸入口令; 操作系統(tǒng)通過密鑰生成算法把口令轉(zhuǎn)化為對(duì)稱主密鑰; 對(duì)稱主密鑰被復(fù)制到多核處理器中指定的寄存器中存儲(chǔ)。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述多核處理器的用于存儲(chǔ)對(duì)稱主密鑰的指定的寄存器包括debug寄存器或性能監(jiān)控計(jì)數(shù)器。8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述公鑰密碼運(yùn)算包括私鑰明文獲取運(yùn)算和私鑰計(jì)算操作運(yùn)算; 所述私鑰明文獲取運(yùn)算包括運(yùn)算核從硬盤中讀取以對(duì)稱主密鑰加密的私鑰,并復(fù)制到內(nèi)存;運(yùn)算核利用多核處理器中指定的寄存器中的對(duì)稱主密鑰解密以對(duì)稱主密鑰加密的私鑰獲得私鑰明文,并將私鑰明文存儲(chǔ)于運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器; 所述私鑰計(jì)算操作運(yùn)算包括數(shù)字簽名和/或解密步驟,其中,利用私鑰明文進(jìn)行數(shù)字簽名和/或解密運(yùn)算,并將計(jì)算過程中產(chǎn)生的中間數(shù)據(jù)變量和計(jì)算結(jié)果存儲(chǔ)于運(yùn)行核獨(dú)占的高速緩沖存儲(chǔ)器。9.根據(jù)權(quán)利要求1所述的方法,其特征在于,在執(zhí)行步驟B之前,還包括禁止操作系統(tǒng)進(jìn)程調(diào)度,并屏蔽本地中斷的步驟;在執(zhí)行步驟C中清空所述運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器中的數(shù)據(jù)后,還包括恢復(fù)操作系統(tǒng)進(jìn)程調(diào)度和本地中斷的步驟。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,通過清除多核處理器的EFLAGS寄存器的IF位實(shí)現(xiàn)禁止操作系統(tǒng)進(jìn)程調(diào)度,并屏蔽本地中斷;通過設(shè)置多核處理器的EFLAGS寄存器的IF位實(shí)現(xiàn)恢復(fù)操作系統(tǒng)進(jìn)程調(diào)度和本地中斷。11.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述私鑰明文獲取運(yùn)算通過調(diào)用AES-NI指令,使用SSE寄存器解密以對(duì)稱主密鑰加密的私鑰,并把私鑰明文復(fù)制到高速緩沖存儲(chǔ)器中。12.根據(jù)權(quán)利要求11所述的方法,其特征在于,清空所述運(yùn)算核獨(dú)占的高速緩沖存儲(chǔ)器中的私鑰明文以及運(yùn)算過程中使用的中間數(shù)據(jù)變量時(shí),還包括清除SSE寄存器和通用寄存器中數(shù)據(jù)的步驟。13.根據(jù)權(quán)利要求1至12任一項(xiàng)所述的方法,其特征在于,在執(zhí)行步驟B之前,還包括為所述多核處理器中的每個(gè)核預(yù)留步驟B和步驟C所訪問內(nèi)存區(qū)域的步驟。
【專利摘要】本發(fā)明提供了一種抵抗物理攻擊和系統(tǒng)攻擊的密鑰保護(hù)方法,通過設(shè)置多核處理器的每個(gè)核一個(gè)對(duì)稱主密鑰,動(dòng)態(tài)地解密出非對(duì)稱算法的私鑰明文,并通過Intel的TSX(Transactional Synchronization Extensions)擴(kuò)展指令,從硬件層面上保證私鑰以及計(jì)算過程中使用的中間變量只存在于該核獨(dú)占的高速緩沖存儲(chǔ)器中,可以防止攻擊者直接從物理內(nèi)存中竊取私鑰信息,從而保障公鑰密碼算法在計(jì)算機(jī)系統(tǒng)環(huán)境下實(shí)現(xiàn)的安全性;并且,即使操作系統(tǒng)被攻破,攻擊者可以直接讀取密鑰的內(nèi)存空間,由于Intel的TSX機(jī)制保證了內(nèi)存操作的原子性,攻擊者不能獲取明文私鑰;進(jìn)一步,在這種解決方案中,多核處理器的其他核也可以同時(shí)進(jìn)行密碼運(yùn)算,提高了運(yùn)算效率。
【IPC分類】H04L9/32, H04L9/08
【公開號(hào)】CN104883256
【申請(qǐng)?zhí)枴緾N201410068010
【發(fā)明人】林璟鏘, 管樂, 王瓊霄, 汪婧, 荊繼武
【申請(qǐng)人】中國科學(xué)院數(shù)據(jù)與通信保護(hù)研究教育中心
【公開日】2015年9月2日
【申請(qǐng)日】2014年2月27日
【公告號(hào)】WO2015127772A1