介紹
在傳統的密鑰管理系統中,密鑰通常是存儲在設計機或磁碟里,並藉助於網路、磁碟以郵件的方式進行傳遞。為了安全起見,通常在傳遞之前,必須先將所要傳遞的密鑰進行加密處理,接收方收到後再對其進行解密處理。由於採用這種方式時仍然需要傳遞密鑰,只是具體的密鑰對象改變了,因此安全性還是沒有明顯地提高;即命名採用專門的硬體加密機器進行加密處理,但由於儲存和傳遞環節的影響,其安全性能仍等同於軟體加密效果,為此有必要提高儲存和傳遞環節的安全性。雖然傳遞密鑰比較安全的做法是採用非對稱加密體制,用己方私鑰和對方公鑰進行雙重簽名加密,對方用其私鑰和已公鑰進行解密處理。採用這種方法來傳遞密鑰比較麻煩,實現起來非常困難,不僅要求通信雙方要有已方的公鑰和私鑰,而且還要獲得對方的公鑰。公鑰和私鑰的產生比較複雜和困難,而且通常還需要作為公證的第三方介入。目前絕大多數的通信雙方都沒有這些條件,並且它們之間的通信絕大多數是一次性的。考慮到上述原因,往往不採用非對稱加密體制,而仍然採用實現方法和途徑都相對簡單和容易得到的對稱加密體制。
採用對稱加密體制時,加密密鑰和解密密鑰是相同的或相關聯的,因此對其存儲和傳遞的安全性要求非常高。如前所述,採用傳統方式進行加密處理時,其效果等同於軟體加密效果,在安全性方面不如硬體直接加密的效果;由此可以看出,如果我們既用硬體設備進行加密處理,又用專門的硬體設備來存儲和傳遞密鑰,這樣就可以極大地提高密鑰系統的安全性。目前能滿足這兩種要求,而且得到業界廣泛認可的器件只有CPU智慧卡。CPU卡具有硬體加密結構,可以作為加密器件使用;而且其特殊的軟體體系-COS(Chip Operation System)又為數據存儲和操作提供了較高的安全性,可用於小批量數據的存儲。
1 CPU卡的安全功能
CPU卡作為智慧卡家族中最新的成員,由於具有較高的安全性和套用方便性,得到越來越廣泛的套用,CPU卡的安全性不僅體現在其硬體結構上,而且其軟體系統COS也保證了套用的安全性,同時還提高了套用的方便性和靈活性。CPU卡的加\u35299解密功能由內嵌的硬體加密協處理器來完成,具有很高的安全性。目前,CPU卡一般採用DES加密算法。DSP算法是一種疊代分組密碼算法,它加密時把明文以64比特為單位分成塊,然後用密鑰把每一塊的明文轉化為64比特密文。使用的密鑰長度為64位,其中有效長度為56位(有8位用於奇偶校驗)。為了進一步提高安全性,CPU卡通常採用三重DES算法加密,採用的密碼長度為128位。
在套用時,CPU卡的安全性是由其COS的安全體系來保證的,它涉及到卡中信息的訪問控制機制和保密機制。智慧卡之所以能夠迅速地發展並且流行起來,其中的一個重要的原因就在於它能夠通過COS的安全體系給用戶一個較高的安全保證和套用方便性。COS安全體系在概念上包括三部分:安全狀態、安全屬性和安全機制[1]。智慧卡在安全狀態滿足安全屬性的要求,通過執行操作指令,在安全機制的作用下,從當前的安全狀態轉移到下一個安全狀態。
2 系統結構和功能
CPU卡密鑰管理系統的主要功能是提供各種密鑰的生成機制和加密算法,並將生成的密鑰存儲在具有密鑰導出功能的CPU智慧卡,即SAM(Security Access Module)卡中。密鑰的發行採用梯級生成、下發方式,即由上級生成下一級所需的各種子密鑰,並以卡片的形式,採用線路加密的方式傳遞給下一級,極大地提高了系統的安全性和套用的方便性。根據功能,系統分為:根密鑰系統、主密鑰系統、初始化密鑰系統和SAM卡密鑰系統。系統結構具有一定的伸縮性,可以根據實際需要進行裁減,減少或增加分級層次,通常不超過三級傳遞關係(圖中所示即為三級),以免系統過於複雜。在我們投入實際使用的系統中,根據用戶要求和系統規模,取消了初始化密鑰系統這一級而只採用了二級傳遞關鍵,使系統結構更加緊湊,實現起來更加簡單容易。根密鑰系統的主要功能是生成系統最初的原始母密鑰,即根密鑰,它由系統安全管理員輸入的系統安全字(由安全管理員自由決定)來生成;主密鑰系統則用分散因子對根密鑰進行分散加密,得到了主密鑰;而初始化密鑰系統則對主密鑰再進行分散加密,得到工作密鑰系統所使用的工作密鑰;SAM卡密鑰系統則直接由根密鑰導出SAM卡密鑰,將其直接用於工作密鑰系統,以控制和配合工作密鑰的使用。
系統將生成的各種密鑰存儲在相應的CPU智慧卡中。根據鑰卡和主密鑰卡採用具有密鑰導出功能的SAM母卡;而SAM卡密鑰則採用不具有導出功能的SAM卡來儲存。SAM瞳是種加強了密鑰安全功能的CPU卡,它支持密鑰多級分散功能,比普通CPU卡具有更高的安全性。工作密鑰則直接存放於實際工作系統所使用的普通CPU卡中。
系統在生成相應的密鑰時,同時生成相應的認證密鑰,將其存儲在相應的認證卡,以控制和配合密鑰卡的使用。如圖2所示,密鑰卡必須通過其證卡的相互認證(外部認)證後才能正常使用;而密鑰認證卡使用的合法性由個人身份識別號PIN保護,只有正確核心對PIN後才可以使用。
而空白卡片的合法性,則是由產生商認證卡來驗證的。生產商認證卡通常是生產廠商製作的,其中存放著生產商傳輸代碼,它也是由PIN保護的,正確核心對PIN後才可以使用。由此可以看出,系統中每一張卡的使用都必須過相應的認證,成功驗證其合法性後,才能投入正常使用,極大地保證系統的安全性。
3 相關算法
在本系統,加密算法主要採用非常成熟的、強度比較高的DES算法。為了進一步提高系統安全強度,在實際系統中,採用的是以DES算法為基礎的3DES算法。關算法簡介如下。3.1 3DES算法
3DES算法用兩個密鑰(KL和KR)對明文(X)進行3次DES加密/解密[2]。3DES的加密方式:Y=DES(KL,DES-1(KR,DES(KL,X)))
對應的解密方式為:X=DES-1(KL,DES(KR,DES-1(KL,Y)))
其中DES(K,X)表示用密鑰K對數據X進行DES加密,DES-1(K,Y)表示用密鑰K對數據Y進行解密(以下同)。
3.2 分散算法
為了支持分級加密傳遞功能,CPU卡還採用了密鑰分散算法,它是指將一個雙長度(16位元組)的密鑰MK,對分散數據進行處理,推導出一個雙長度的密鑰DK(DKLDKR)。其算法如下[3]:
推導DK左半部分DKL的方法是:
·將分散數據的最右16個數字作為輸入數據;
·將MK作為加密密鑰;
·用MK對輸入數據進行3DEA運算。
推導DK右半部分DKR的方法:
·將分散數據的最右16個數字求反,作為輸入數據;
·將MK作為加密密鑰;
·用MK對輸入數據進行3DEA運算。
3.3 原始密鑰的生成算法
第一步,輸入種子A和種子B:由兩個獨立的人各輸入一個16位數(或少於16位),分別作為SeedA和SeedB;第二步,計算種子C:SeedC=SeedA◎SeedB;
第三步,密鑰種子的初始化:
·KEYINIT=常量
·Seed=DES-1(DES(DES-1(KEYINIT,SeedC),SeedB),SeedA)
·設K3=Seed
第四步,密鑰種子的生成:
·K0=DES-1(DES(DES-1(K3,SeedC),SeedB),SeedA)K3
·K1=DES-1(DES(DES-1(K0,SeedC),SeedB),SeedA)
·K2=DES-1(DES(DES-1(K1,SeedC),SeedB),SeedA)
·K3=DES-1(DES(DES-1(K2,SeedC),SeedB),SeedA)
第五卡,密鑰種子的檢驗:
·K4=K0+K2不是弱DES密鑰;
·K5=K1+K3不是北DES密鑰;
·K4不等於K5;
第六卡,主密鑰生成:
·A=K0K1
·B=K2K3
·MK=A+B,MK即為生成的原始密鑰
重複執行從第四步以第六步,直到所有的原始密鑰全部生成。
本系統採用了成熟、安全性高的加密算法和完美的體系結構,其安全性是由CPU的安全性和DES算法的完全強度來保證的。經過國內某單位兩年多的實際運行,證明本系統較好地貫徹了“秘密在於密鑰”的思想,具有較高的完全性和先進性,主要表現為如下幾個特點:
(1)採用完全性高的CPU卡作為密鑰的產生、存儲和傳遞介質,保證了密鑰數據的安全性;CPU卡獨特的安全體系保證了其中的數據不會被非法操作;
(2)利用硬體加密技術,對整個過程中所使用的臨時變數進行加密處理,並對傳遞過程進行線路加密,保證了在生成和傳遞過程的安全性;
(3)分級傳遞結構,使系統具有一定的擴展性,既支持獨立系統,也可用於分散式系統;
(4)系統具有自癒合功能,對關鍵數據進行備份,保證了系統具有一定的抗毀能力;
(5)系統結構簡單、實現方便、性價比較高。