張玉國



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