張玉國(guó)
摘 要:密碼模塊是保護(hù)數(shù)據(jù)信息的核心部件,密碼模塊保護(hù)數(shù)據(jù)信息的同時(shí),其自身的安全性如何保證。密碼模塊有哪些實(shí)現(xiàn)方式,能達(dá)到多高的安全級(jí)別,不同的實(shí)現(xiàn)方式有哪些優(yōu)劣,本文從兩種實(shí)現(xiàn)方式對(duì)密碼模塊的安全性做了簡(jiǎn)單的介紹。
關(guān)鍵詞:密碼模塊;軟件密碼模塊;硬件安全模塊;PCIE密碼卡
中圖分類號(hào):TP309 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-2064(2019)19-0045-03
0 引言
當(dāng)今社會(huì)是一個(gè)信息化的社會(huì),在保護(hù)計(jì)算機(jī)及電信安全系統(tǒng)的需求下,密碼應(yīng)用的需求日益增強(qiáng),數(shù)據(jù)需要密碼的保護(hù)來防止非授權(quán)的訪問。密碼技術(shù)能夠?qū)崿F(xiàn)實(shí)體鑒別和不可抵賴等安全服務(wù),但密碼的安全性和可靠性直接取決于實(shí)現(xiàn)它們的安全密碼模塊。
在密碼應(yīng)用系統(tǒng)中,如何保護(hù)及使用敏感的密鑰信息對(duì)整個(gè)密碼應(yīng)用系統(tǒng)的安全強(qiáng)度有著至關(guān)重要的影響。一般由兩種方式來使用敏感的密鑰信息:軟件密碼模塊在主機(jī)內(nèi)存中使用密鑰;硬件密碼模塊,密鑰存儲(chǔ)及使用均在擴(kuò)展板卡或其他嵌入式密碼設(shè)備中進(jìn)行,該嵌入式設(shè)備要嵌入到服務(wù)器中使用,該類產(chǎn)品典型的形態(tài)有密碼卡、安全UKEY。除了軟件密碼模塊和硬件密碼模塊,還有其他類型的模塊,如固件密碼模塊,混合軟件密碼模塊,混合固件密碼模塊,但對(duì)密鑰的使用根本的區(qū)別在于:是否在內(nèi)存中使用敏感的密鑰信息。
1 軟件密碼模塊的安全性分析
軟件密碼模塊的邊界為執(zhí)行在可修改的運(yùn)行環(huán)境中的純軟件部件,軟件密碼模塊運(yùn)行的環(huán)境多為計(jì)算平臺(tái)及操作系統(tǒng)。
軟件密碼模塊中的敏感的密鑰信息對(duì)計(jì)算平臺(tái)和操作系統(tǒng)是可見的,攻擊者利用對(duì)計(jì)算平臺(tái)及操作系統(tǒng)的熟悉程度,基于現(xiàn)有計(jì)算平臺(tái)及操作系統(tǒng)的漏洞便可以實(shí)現(xiàn)達(dá)到獲取敏感的密鑰信息的目的,因此軟件密碼模塊的高安全性對(duì)計(jì)算平臺(tái)以及操作系統(tǒng)的安全性設(shè)計(jì)有著高度的依賴。
下面從兩個(gè)攻擊案例,來說明軟件密碼模塊所面臨的威脅。
1.1 攻擊案例1:系統(tǒng)漏洞-內(nèi)存窺視密鑰信息
攻擊基于OpenSSL軟件密碼模塊實(shí)現(xiàn)的文件加密程序,獲得文件加密程序所使用的密鑰信息。
本案例是一個(gè)內(nèi)存攻擊的簡(jiǎn)單展示,展示的內(nèi)容為獲取目標(biāo)進(jìn)程的密鑰信息。
目標(biāo)程序“enc.exe”功能介紹:從口令衍生密鑰,使用RC4加密需要保護(hù)的文件。
使用了OpenSSL軟件安全中間件;
遵循PKCS#5文件加密標(biāo)準(zhǔn);
被加密文件:abc.txt;
口令:123456;
衍生密鑰:???????。
圖1所示,攻擊者編寫了一段程序mematt_1.exe,使用ReadProcessMemory的方法,對(duì)enc.exe目標(biāo)進(jìn)程進(jìn)行了內(nèi)存窺視,比較容易地獲取了目標(biāo)進(jìn)程中使用的密鑰。
1.2 攻擊案例2:CPU芯片漏洞-Meltdown
內(nèi)存隔離是計(jì)算機(jī)系統(tǒng)安全的基礎(chǔ),例如:內(nèi)核空間的地址段往往是標(biāo)記為受保護(hù)的,用戶態(tài)程序讀寫內(nèi)核地址則會(huì)觸發(fā)異常,從而阻止其訪問。在本文中,我們只簡(jiǎn)單描述這個(gè)叫Meltdown的硬件漏洞。Meltdown是利用了現(xiàn)代處理器上亂序執(zhí)行的副作用,使得用戶態(tài)程序也可以讀出內(nèi)核空間的數(shù)據(jù),包括個(gè)人私有數(shù)據(jù)和密碼(或密鑰)。由于可以提高性能,現(xiàn)代處理器廣泛采用了亂序執(zhí)行特性。利用Meltdown進(jìn)行攻擊的方法和操作系統(tǒng)無關(guān),也不依賴于軟件的漏洞。地址空間隔離帶來的安全保證被Meltdown無情的打碎了(半虛擬化環(huán)境也是如此),因此,所有基于地址空間隔離的安全機(jī)制都不再安全了。在受影響的系統(tǒng)中,Meltdown可以讓一個(gè)攻擊者讀取其他進(jìn)程的數(shù)據(jù),或者讀取云服務(wù)器中其他虛擬機(jī)的數(shù)據(jù),而不需要相應(yīng)的權(quán)限。
Meltdown漏洞并非針對(duì)某個(gè)系統(tǒng)或者某個(gè)軟件,而是針對(duì)計(jì)算機(jī)體系結(jié)構(gòu),該漏洞危害能夠遍及大多數(shù)近代的CPU。手機(jī),個(gè)人PC,服務(wù)器,到云服務(wù)器以及虛擬機(jī),都受到了這次漏洞的影響。
圖2展示的是讀取內(nèi)核內(nèi)存的實(shí)例,計(jì)算機(jī)基于內(nèi)存隔離實(shí)現(xiàn)的內(nèi)核空間數(shù)據(jù)的保護(hù)被完全破壞。如果密鑰出現(xiàn)在受保護(hù)的內(nèi)核空間內(nèi),攻擊者利用CPU漏洞竊取密鑰信息是可實(shí)現(xiàn)的。
更詳細(xì)的分析及影響可參考下面兩處文章。
https://www.linuxidc.com/Linux/2018-01/150307.htm
https://blog.csdn.net/zhipingxi/article/details/79307648
1.3 軟件密碼模塊安全性總結(jié)
2.1以及2.2章節(jié)只用兩個(gè)例子來說明,攻擊者能夠利用計(jì)算平臺(tái)以及操作系統(tǒng)自身的一些漏洞,對(duì)軟件密碼模塊實(shí)施攻擊。此類利用硬件或系統(tǒng)自身漏洞進(jìn)行獲取用戶敏感信息的例子還有很多,這些案例也足以說明軟件密碼模塊是無法從根本上保證敏感信息的安全性,因?yàn)檐浖艽a模塊最終都要在主機(jī)內(nèi)存中運(yùn)行。
如果被保護(hù)的密鑰信息達(dá)到一定的安全級(jí)別,我們需要利用具有更高安全級(jí)別的硬件密碼模塊來實(shí)現(xiàn)敏感密鑰信息的保護(hù)。
2 硬件密碼模塊的安全性分析
軟件密碼模塊運(yùn)行過程中,所使用的安全算法,密鑰信息,權(quán)限控制都無一例外的會(huì)出現(xiàn)在主機(jī)內(nèi)存中,這給了攻擊者以可乘之機(jī)。與軟件密碼模塊不同,硬件密碼模塊的特點(diǎn)是:密鑰由硬件密碼模塊保護(hù),密碼算法由硬件密碼模塊實(shí)現(xiàn),密碼運(yùn)算在硬件密碼模塊內(nèi)進(jìn)行,操作過程中可以保證密鑰只出現(xiàn)在硬件密碼模塊之內(nèi)。本文只以簡(jiǎn)單的方式對(duì)硬件密碼模塊做一下介紹,硬件密碼模塊有一整套復(fù)雜完善的安全機(jī)制來確保敏感數(shù)據(jù)的安全性,不做過多贅述。
2.1 硬件密碼模塊硬件組成