張敏++陳利羽++樊火生
摘 要 本文提出了建立基于國產化可信芯片的文件加密系統的必要性,采用我國自主研發的TCM安全芯片為可信根,通過C++/C#語言混合編程實現可信系統開發,經過TCM芯片進行加密的數據就只能在該平臺上進行解密和處理,證明了TCM的可信信息系統的可行性。
【關鍵詞】國產化 TCM 加密 解密
1 研究背景
研發自己的可信計算技術,是國家安全的需要,我國目前采用的信息產品存在嚴重的安全隱患。關鍵信產品都是來自國外,安全后門普遍存在。
在此背景下,許多公司和研究機構在可信計算方面進行了大量的研究,2005年4月聯想集團和中科院計算所完成了安全芯片和可信PC平臺開發。2005年4月,兆日科技也推出符合可信計算聯盟技術標準的可信安全芯片。2008年4月底,中國可信計算聯盟(CTCU)在國家信息中心成立。2007年12月,國家密碼管理局正式發布了《可信計算平臺密碼支撐平臺功能和接口技術規范》,至此,中國有了自己的可信計算規范。
2 研究目的
建立基于硬件的應用軟件的訪問控制策略,讓指定的用戶在指定終端上使用指定的應用軟件做指定的事,指定策略范圍之外的行為都是不被允許的,為應用系統提供一個可信、可控、可管理的安全運行環境。包含如下幾點:
2.1 芯片級的身份鑒別
可信信息系統采用基于TCM模塊的平臺身份證書標識用戶身份。
2.2 芯片級的數據保護
利用了硬件級加解密算法,完成數據保護。
2.3 芯片級的應用軟件訪問控制
采用基于信任鏈的訪問控制機制,用戶在計算機終端上只能安裝和使用已授權的應用軟件和程序。應用軟件及其包含的可執行文件、動態鏈接庫和控件的完整性,由可信密碼模塊安全芯片驗證。
3 系統總體設計
3.1 系統架構設計
本系統三層結構,包括可信密碼模塊、中間層及應用層。其中:
3.1.1 可信密碼模塊
主要用為可信計算電腦提供數據加密,將敏感數據存放在芯片的安全存儲區中;提供完整的密鑰管理方案,包括密鑰的建立,存儲,遷移以及密鑰協商等功能。
3.1.2 中間層
介于前端TCM硬件模塊與應用軟件中間,提供數據加密程序、數據簽名等功能的封裝。
3.1.3 應用層
包括身份認證,數據加密,軟件保護等上層應用。
3.2 系統邏輯結構圖
為了簡化系統開發和實現一個穩鍵、可靠的系統架構,根據系統分層設計的思想,把系統分為:表示層,業務邏輯層,中間層,數據處理層。
3.2.1 表示層
使用WinForm作為數據表示層。
3.2.2 業務邏輯層
使用C#作為業務邏輯層。
3.2.3 中間層
使用C#、CLR和C++作為中間傳輸層。
3.2.4 數據處理層
使用Subsonic代碼生成工具作為數據處理層。
4 系統關鍵技術實現
C/C++則擅長寫算法的編寫,執行效率高,因此封裝TCM的底層函數都是用C/C++開發的,而C#則擅長快速開發,同時有良好的兼容性,本系統利用CLR C++(指托管C++)把本機C++代碼包裝起來編寫輸出類庫,供C#使用,由于CLR C++和C#都符合CLS規范,所以兩者可以無縫集成,在一個解決方案里包含這兩種語言的項目。下面以數據加密為例說明一下實現方法:
4.1 用C++實現TCM數據加密函數
//加密函數
//keylenth:密鑰長度;key:密鑰數據;dataLength:被加密數據長度;
//data;加密數據;enDataLength:密文長度;enData;密文數據
TSM_RESULT TcmEncryption(UINT32 keylenth,BYTE* key,UINT32 dataLength,BYTE* data,UINT32 &enDataLength,BYTE* &enData)
{//函數實現}
4.2 使用托管C++包裝本地C++類
TSM_RESULT TcmEncryption(UINT32 keyLenth,BYTE* key,UINT32 dataLength,BYTE* data,UINT32 &enDataLength,BYTE* &enData)
{
System::UInt32 r=-1;
CTcm tcm;//非托管C++類
r=tcm.TcmEncryption(keyLenth,key,dataLength, data,enDataLength,enData);
return r;
}
由以上代碼可以看出,托管c++代碼的函數聲明跟C++幾乎一樣。編譯生成TCM_CM_DLL.DLL供C#使用。
4.3 在C#中使用托管C++庫
在C#項目中的“引用”添加對“TCM_CM_DLL.DLL”的引用。用對象瀏覽器查看TCM_CM_DLL的成員變量和函數,可以看出導出的加密函數為:
public uint TcmEncryption(uint keyLenth, byte* key, uint dataLength, byte* data, uint* enDataLength, byte** enData)
此函數可以直接在C#使用。
5 結論
本系統參考《可信計算密碼支撐平臺功能與接口規范》,設計開發了國產自主平臺下的可信信息系統,實現了密鑰管理、數據加密、文件簽名、軟件保護等功能,系統運行結果表明該方法切實可行,執行效率高,為應用軟件系統提供一個可信、可控、可管理的安全運行環境,經過TCM芯片進行加密的數據就只能在該平臺上進行解密和處理,從而把機密數據綁定在該平臺上,即使數據被盜,數據也無法解密。
參考文獻
[1]李小將,梅欒芳,師俊芳等.基于TCM的嵌入式可信終端系統設計[J].計算機工程與設計,2010,31(04):733-735.
[2]何慧,江水,李立號,桑耘.基于TCM的國產化虛擬可信計算平臺研究[J].計算機工程,2011(S1).
[3]李偉.基于可信密碼模塊的電子簽名系統設計與實現[D].西安:西安電子科技大學,2012.
[4]馮登國.可信計算-理論與實踐[M].北京:清華大學出版社,2013.
[5]敬軍,郝福珍,徐東華.國產自主平臺下可信執行環境的設計與實現[J].計算機工程與設計,2012(10).
作者單位
核工業計算機應用研究所 北京市 100048