2021-4-10 | 計算機
傳統(tǒng)的安全防護技術主要是通過防火墻、病毒檢測、Virtualprivatenetwork(VPN)等來實現(xiàn)安全保障,而這些技術基本上都是以軟件為基礎,側(cè)重以防為主,致使各種防御措施越做越復雜,系統(tǒng)性能要求越來越高,但是安全性仍然不能得到保障。
現(xiàn)在通常的做法是,在純軟件防護基礎上,再增加一層硬件保護,協(xié)同特有的軟件技術,能夠很大程度地提高甚至完全保障系統(tǒng)的安全性。而可信計算密碼支撐平臺正是一種能夠提供高可靠性、可用性的軟硬件計算機平臺,它的思想是通過可信平臺模塊,以密碼學技術為支撐,以操作系統(tǒng)為核心,通過一些加解密技術和認證技術來為系統(tǒng)提供安全性保障。
1基于ETSM板卡的可信計算機平臺
本文采用的是以雙處理器協(xié)同處理的硬件體系結(jié)構(gòu)技術,是一個雙處理器雙操作系統(tǒng)的安全Windows終端,即硬件體系結(jié)構(gòu)采取保持主核系統(tǒng)(PC機)的軟硬件結(jié)構(gòu)不變、增加輔核系統(tǒng)(ARM處理系統(tǒng))的方法。
在Windows主機中的PCI插槽中插人一塊ARM板卡,ARM板卡運行Linux系統(tǒng),通過PCI9054高速芯片與Windows主機相連。
板卡中集成了密碼算法模塊、隨機數(shù)發(fā)生器(產(chǎn)生真隨機數(shù))模塊以及可信處理模塊。Windows系統(tǒng)和Linux系統(tǒng)通過ARM板卡中的雙端口存儲器進行內(nèi)部重要數(shù)據(jù)信息通信,雙端口處理器是可信密碼模塊與Windows主機進行密鑰管理的緩沖存儲器,是可信計算機平臺的重要組成部分,Windows主核系統(tǒng)和Linux輔核系統(tǒng)通過中斷機制共同對密鑰的加載、存儲和授權(quán)數(shù)據(jù)進行有效的管理。
2密鑰管理
可信密碼模塊內(nèi)部提供SM2一橢圓曲線密碼算法、SMS4一對稱密碼算法、SM3一密碼雜湊算法、HMAC一消息認證碼算法。這些算法的功能都是在密鑰的基礎上提供的,因此作為密碼學基本要素的密鑰管理決定著整個可信計算機平臺的安全性舊J,是可信計算體系的核心。
2.1密鑰管理總體架構(gòu)
在可信計算中,密鑰是以樹形結(jié)構(gòu)存儲的。
整個密鑰層次為樹形結(jié)構(gòu),存儲主密鑰(Storagemasterkey,SMK)是整個密鑰層次結(jié)構(gòu)的根密鑰,其余的密鑰是由它直接或間接地進行保護的,其保護方式為父密鑰加密子密鑰¨0l。本文是以雙核協(xié)同處理的硬件體系結(jié)構(gòu),在可信計算密鑰樹形結(jié)構(gòu)的基礎上,針對ETSM平臺,設計實現(xiàn)出可信計算機密鑰體系結(jié)構(gòu),密碼算法與隨機數(shù)發(fā)生器由FPGA硬件實現(xiàn),其具有快速、高效、產(chǎn)生真隨機數(shù)的特點,它為E,rsM提供最基本的可信密碼算法(SM2、SMS4、SM3、HMAC),并提供隨機數(shù)產(chǎn)生和基本數(shù)據(jù)加解密服務;ETSM密鑰管理模塊是ETSM的核心模塊,它對密鑰的生成、加載、注冊、銷毀等進行有效安全地管理,其管理方式是按照樹形結(jié)構(gòu)來實現(xiàn)的;雙端口密鑰緩存管理是PC機與ETSM板卡通信的樞紐,承擔著命令字與數(shù)據(jù)的交換;外部密鑰數(shù)據(jù)庫是用來存放經(jīng)ETSM生成并加密的密鑰數(shù)據(jù)塊,對于用戶需要注冊的密鑰就是存儲在此外部的密鑰數(shù)據(jù)庫中。
2.2ETSM密鑰管理
可信密碼模塊中的密鑰按照使用范圍可以分為三類L8曲J:(1)平臺身份類密鑰,包括密碼模塊密鑰(TCMendorsementkey,EK)、平臺身份密鑰(Platformidentitykey,PIK)、平臺加密密鑰(Plat-formencryptionkey,PEK);(2)平臺存儲類密鑰,如SMK,用于保護PIK和用戶密鑰UK的主密鑰,是密鑰存儲樹結(jié)構(gòu)的根密鑰;(3)用戶類密鑰,如UK,用于實現(xiàn)用戶所需的密碼功能,包括機密性、完整性保護和身份認證等。
在信息系統(tǒng)中,密鑰若是無限制的明文存儲,無論訪問控制如何復雜,也總會有一些特權(quán)用戶有機會存取密鑰,這對信息系統(tǒng)的安全是十分不利的。因此在可信計算中就采用多級密鑰管理體系,SMK是整個密鑰層次結(jié)構(gòu)的根密鑰,是密鑰存儲的關鍵密鑰,其余所有的密鑰都是由它直接或間接地進行保護的,由SMK派生多個子密鑰。
父密鑰以加密的方式加密子密鑰存儲,對于處在葉子節(jié)點的密鑰,層次越高,它的安全性越高,但是它的管理就會相對復雜一些,一般三層可以滿足安全要求。本文實現(xiàn)的ETSM密鑰管理,其核心就是密鑰的數(shù)據(jù)管理與實現(xiàn)。密鑰的數(shù)據(jù)結(jié)構(gòu)如圖3所示,algorithm字段標識該密鑰屬于何種密鑰(SM2或SMS4密鑰),每個子密鑰都是由其父密鑰進行加密,對于SMS4密鑰,它的整個密鑰數(shù)據(jù)部分都要進行加密,而對于SM2密鑰,它的公鑰部分不進行加密,私鑰部分則由其父密鑰進行加密。父密鑰的類型也可以是SM2或SMS4的一種,因此hSM2Key與hSMS4Key用來存放必要的密鑰信息。authDataUsage存放該密鑰的授權(quán)數(shù)據(jù),flag代表此密鑰是否已解密,0代表已加密,l代表已解密。
函數(shù)Tspi—Key—CreateKey(TCM—KEYhKey,TCM—KEYhParentKey)使ETSM板卡生成指定的密鑰,由父密鑰對生成的密鑰進行加密保護。調(diào)用函數(shù)Tspi—Key—LoadKey(TCM—KEYhKey,TCM—KEYhParentKey)將密鑰加載到ETSM板卡內(nèi)部才能使用,只有通過父密鑰對需加載的密鑰進行解密才能夠正確地加載。密鑰的生成是依賴于高效的FPGA硬件實現(xiàn),當生成密鑰字符串后,必須由指定的父密鑰進行加密,并填充加密后的相應字段。同理,密鑰的加載只有通過父密鑰對需加載的密鑰進行解密才能夠正確地加載,并填充相應的字段。如果密鑰是需要授權(quán)的,就需要為密鑰設置正確的授權(quán)數(shù)據(jù)才能加載,否則就會加載失敗。
2.3雙端口密鑰緩存管理雙端口存儲器是PC機與ETSM進行信息交換的關鍵部件,它為上層的應用程序提供可信的服務保障。當用戶使用ESPI層的功能函數(shù)時,PC機Windows往雙端口存儲器寫入相應的數(shù)據(jù),并觸發(fā)中斷向ETSM板卡提出相應的功能請求,ETSM板卡則在內(nèi)部響應請求做相應處理,再將處理結(jié)果返回給Windows。命令字段是整個密鑰緩存的重要部分,它代表的是功能命令字段,每當用戶需要ETSM的服務時,ETSM就會根據(jù)命令字段的類型做出相應的處理,命令字段種類繁多,這里僅列出幾條密鑰相關的部分定義。例如,當用戶調(diào)用Tspi—Data—Encrypt時,命令字段就為KEY—ENCRYPT,并在雙端口存儲器寫入相應的密鑰信息,包括加密的密鑰數(shù)據(jù)塊以及密鑰類型、授權(quán)數(shù)據(jù)等,并觸發(fā)中斷,ETSM收到中斷后讀取命令字,并提取密鑰信息,對數(shù)據(jù)進行加密,將加密后的結(jié)果返回給PC機。