??? 摘? 要: 隨著對(duì)信息安全的要求不斷提高,傳統(tǒng)的等效于軟件加密的密鑰管理手段已不能滿足信息系統(tǒng)的安全要求,因此設(shè)計(jì)了一種新型的密鑰管理系統(tǒng)" title="管理系統(tǒng)">管理系統(tǒng)。該系統(tǒng)采用安全性高的CPU智能卡,用硬件方式來(lái)產(chǎn)生、存儲(chǔ)和傳遞密鑰,極大地提高了密鑰管理系統(tǒng)的安全性。?
??? 關(guān)鍵詞: 安全? 智能卡? 密鑰?
?
??? 在傳統(tǒng)的密鑰管理系統(tǒng)中,密鑰通常是存儲(chǔ)在計(jì)算機(jī)或磁盤里,并借助于網(wǎng)絡(luò)、磁盤以郵件的方式進(jìn)行傳遞。為了安全起見,通常在傳遞之前,必須先將所要傳遞的密鑰進(jìn)行加密處理,接收方收到后再對(duì)其進(jìn)行解密處理。由于采用這種方式時(shí)仍然需要傳遞密鑰,只是具體的密鑰對(duì)象改變了,因此安全性還是沒有明顯地提高;即使采用專門的硬件加密機(jī)器進(jìn)行加密處理,但由于儲(chǔ)存和傳遞環(huán)節(jié)的影響,其安全性能仍等同于軟件加密效果,為此有必要提高儲(chǔ)存和傳遞環(huán)節(jié)的安全性。?
??? 雖然傳遞密鑰比較安全的做法是采用非對(duì)稱加密體制,用己方私鑰和對(duì)方公鑰" title="公鑰">公鑰進(jìn)行雙重簽名加密,對(duì)方用其私鑰和己方公鑰進(jìn)行解密處理。采用這種方法來(lái)傳遞密鑰比較麻煩,實(shí)現(xiàn)起來(lái)非常困難,不僅要求通信雙方要有己方的公鑰和私鑰,而且還要獲得對(duì)方的公鑰。公鑰和私鑰的產(chǎn)生比較復(fù)雜和困難,而且通常還需要作為公證的第三方介入。目前絕大多數(shù)的通信雙方都沒有這些條件,并且它們之間的通信絕大多數(shù)是一次性的??紤]到上述原因,往往不采用非對(duì)稱加密體制,而仍然采用實(shí)現(xiàn)方法和途徑都相對(duì)簡(jiǎn)單和容易得多的對(duì)稱加密體制。?
??? 采用對(duì)稱加密體制時(shí),加密密鑰和解密密鑰是相同的或相關(guān)聯(lián)的,因此對(duì)其存儲(chǔ)和傳遞的安全性要求非常高。如前所述,采用傳統(tǒng)方式進(jìn)行加密處理時(shí),其效果等同于軟件加密效果,在安全性方面不如硬件直接加密的效果;由此可以看出,如果我們既用硬件設(shè)備進(jìn)行加密處理,又用專門的硬件設(shè)備來(lái)存儲(chǔ)和傳遞密鑰,這樣就可以極大地提高密鑰系統(tǒng)的安全性。目前能滿足這兩種要求,而且得到業(yè)界廣泛認(rèn)可的器件只有CPU智能卡。CPU卡具有硬件加密結(jié)構(gòu),可以作為加密器件使用;而且其特殊的軟件體系-COS(Chip Operation System)又為數(shù)據(jù)存儲(chǔ)和操作提供了較高的安全性,可用于小批量數(shù)據(jù)的存儲(chǔ)。?
??? 本文采用CPU智能卡作為加密和存儲(chǔ)介質(zhì),按照對(duì)稱加密體制的思想,設(shè)計(jì)和實(shí)現(xiàn)了一種新型密鑰系統(tǒng),較好地實(shí)現(xiàn)了密鑰的產(chǎn)生、存儲(chǔ)和傳遞功能,滿足了用戶信息系統(tǒng)的安全要求。?
1 CPU卡的安全功能?
??? CPU卡作為智能卡家族中最新的成員,由于具有較高的安全性和應(yīng)用方便性,得到越來(lái)越廣泛的應(yīng)用。CPU卡的安全性不僅體現(xiàn)在其硬件結(jié)構(gòu)上,而且其軟件系統(tǒng)COS也保證了應(yīng)用的安全性,同時(shí)還提高了應(yīng)用的方便性和靈活性。?
??? CPU卡的加解密功能由內(nèi)嵌的硬件加密協(xié)處理器來(lái)完成,具有很高的安全性。目前,CPU卡一般采用DES加密算法。DES算法是一種迭代分組密碼算法,它加密時(shí)把明文以64比特為單位分成塊,然后用密鑰把每一塊的明文轉(zhuǎn)化為64比特密文。使用的密鑰長(zhǎng)度為64位,其中有效長(zhǎng)度為56位(有8位用于奇偶校驗(yàn))。為了進(jìn)一步提高安全性,CPU卡通常采用三重DES算法加密,采用的密碼長(zhǎng)度為128位。?
??? 在應(yīng)用時(shí),CPU卡的安全性是由其COS的安全體系來(lái)保證的,它涉及到卡中信息的訪問(wèn)控制機(jī)制和保密機(jī)制。智能卡之所以能夠迅速地發(fā)展并且流行起來(lái),其中的一個(gè)重要的原因就在于它能夠通過(guò)COS的安全體系給用戶一個(gè)較高的安全保證和應(yīng)用方便性。COS安全體系在概念上包括三部分:安全狀態(tài)、安全屬性和安全機(jī)制[1]。智能卡在安全狀態(tài)滿足安全屬性的要求,通過(guò)執(zhí)行操作指令,在安全機(jī)制的作用下,從當(dāng)前的安全狀態(tài)轉(zhuǎn)移到下一個(gè)安全狀態(tài)。?
2 系統(tǒng)結(jié)構(gòu)" title="系統(tǒng)結(jié)構(gòu)">系統(tǒng)結(jié)構(gòu)和功能?
??? 本密鑰系統(tǒng)的主要功能是提供各種密鑰的生成機(jī)制和加密算法,并將生成的密鑰存儲(chǔ)在具有密鑰導(dǎo)出功能的CPU智能卡,即SAM(Security Access Module)卡中。系統(tǒng)結(jié)構(gòu)如圖1所示,密鑰的發(fā)行采用梯級(jí)生成、下發(fā)方式,即由上一級(jí)生成下一級(jí)所需的各種子密鑰,并以卡片的形式,采用線路加密的方式傳遞給下一級(jí),極大地提高了系統(tǒng)的安全性和應(yīng)用的方便性。根據(jù)功能,系統(tǒng)分為:根密鑰系統(tǒng)、主密鑰" title="主密鑰">主密鑰系統(tǒng)、初始化密鑰系統(tǒng)和SAM卡密鑰系統(tǒng)。系統(tǒng)結(jié)構(gòu)具有一定的伸縮性,可以根據(jù)實(shí)際需要進(jìn)行裁減,減少或增加分級(jí)層次,通常不超過(guò)三級(jí)傳遞關(guān)系(圖中所示即為三級(jí)),以免系統(tǒng)過(guò)于復(fù)雜。在我們投入實(shí)際使用的系統(tǒng)中,根據(jù)用戶要求和系統(tǒng)規(guī)模,取消了初始化密鑰系統(tǒng)這一級(jí)而只采用了二級(jí)傳遞關(guān)系,使系統(tǒng)結(jié)構(gòu)更加緊湊,實(shí)現(xiàn)起來(lái)更加簡(jiǎn)單容易。?
?
?
??? 根密鑰系統(tǒng)的主要功能是生成系統(tǒng)最初的原始母密鑰,即根密鑰,它由系統(tǒng)安全管理員輸入的系統(tǒng)安全字(由安全管理員自主決定)來(lái)生成;主密鑰系統(tǒng)則用分散因子對(duì)根密鑰進(jìn)行分散加密,得到主密鑰;而初始化密鑰系統(tǒng)則對(duì)主密鑰再進(jìn)行分散加密,得到工作密鑰系統(tǒng)所使用的工作密鑰;SAM卡密鑰系統(tǒng)則直接由根密鑰導(dǎo)出SAM卡密鑰,將其直接用于工作密鑰系統(tǒng),以控制和配合工作密鑰的使用。?
??? 系統(tǒng)將生成的各種密鑰存儲(chǔ)在相應(yīng)的CPU智能卡中。根密鑰卡和主密鑰卡采用具有密鑰導(dǎo)出功能的SAM母卡;而SAM卡密鑰則采用不具有導(dǎo)出功能的SAM卡來(lái)儲(chǔ)存。SAM卡是一種加強(qiáng)了密鑰安全功能的CPU卡,它支持密鑰多級(jí)分散功能,比普通的CPU卡具有更高的安全性。工作密鑰則直接存放于實(shí)際工作系統(tǒng)所使用的普通CPU卡中。?
??? 系統(tǒng)在生成相應(yīng)的密鑰時(shí),同時(shí)生成相應(yīng)的認(rèn)證密鑰,將其存儲(chǔ)在相應(yīng)的認(rèn)證卡中,以控制和配合密鑰卡的使用。如圖2所示,密鑰卡必須通過(guò)其認(rèn)證卡的相互認(rèn)證(外部認(rèn)證)后才能正常使用;而密鑰認(rèn)證卡使用的合法性由個(gè)人身份識(shí)別號(hào)PIN保護(hù),只有正確核對(duì)PIN后才可以使用。?
?
?
????而空白卡片的合法性,則是由生產(chǎn)商認(rèn)證卡來(lái)驗(yàn)證的。生產(chǎn)商認(rèn)證卡通常是由生產(chǎn)廠商制作的,其中存放著生產(chǎn)商傳輸代碼,它也是由PIN保護(hù)的,正確核對(duì)PIN后才可以使用。由此可以看出,系統(tǒng)中每一張卡的使用都必須經(jīng)過(guò)相應(yīng)的認(rèn)證,成功驗(yàn)證其合法性后,才能投入正常使用,這樣,極大地保證了系統(tǒng)的安全性。?
3 相關(guān)算法?
??? 在本系統(tǒng),加密算法主要采用了非常成熟的、強(qiáng)度比較高的DES算法。為了進(jìn)一步提高系統(tǒng)安全強(qiáng)度,在實(shí)際系統(tǒng)中,采用的是以DES算法為基礎(chǔ)的3DES" title="3DES">3DES算法。有關(guān)算法簡(jiǎn)介如下。?
3.1 3DES算法?
??? 3DES算法用兩個(gè)密鑰(KL和KR)對(duì)明文(X)進(jìn)行3次DES加密/解密[2]。?
??? 3DES的加密方式:?
??? Y=DES(KL,DES-1(KR,DES(KL,X)))?
??? 對(duì)應(yīng)的解密方式為:?
??? X=DES-1(KL,DES(KR,DES-1(KL,Y)))?
其中DES(K,X)表示用密鑰K對(duì)數(shù)據(jù)X進(jìn)行DES加密,DES-1(K,Y)表示用密鑰K對(duì)數(shù)據(jù)Y進(jìn)行解密(以下同)。?
3.2 分散算法?
??? 為了支持分級(jí)加密傳遞功能,CPU卡還采用了密鑰分散算法,它是指將一個(gè)雙長(zhǎng)度(16字節(jié))的密鑰MK,對(duì)分散數(shù)據(jù)進(jìn)行處理,推導(dǎo)出一個(gè)雙長(zhǎng)度的密鑰DK(DKL||DKR)。其算法如下[3]:?
??? 推導(dǎo)DK左半部分DKL的方法是:?
??? ·將分散數(shù)據(jù)的最右16個(gè)數(shù)字作為輸入數(shù)據(jù);?
??? ·將MK作為加密密鑰;?
??? ·用MK對(duì)輸入數(shù)據(jù)進(jìn)行3DEA運(yùn)算。?
??? 推導(dǎo)DK右半部分DKR的方法:?
??? ·將分散數(shù)據(jù)的最右16個(gè)數(shù)字求反,作為輸入數(shù)據(jù);?
??? ·將MK作為加密密鑰;?
??? ·用MK對(duì)輸入數(shù)據(jù)進(jìn)行3DEA運(yùn)算。?
3.3 原始密鑰的生成算法?
??? 第一步,輸入種子A和種子B:由兩個(gè)獨(dú)立的人各輸入一個(gè)16位數(shù)(或少于16位),分別作為SeedA和SeedB;?
??? 第二步,計(jì)算種子C: SeedC=SeedASeedB;?
??? 第三步,密鑰種子的初始化:?
??? ·KEYINIT=常量?
??? ·Seed=DES-1(DES(DES-1(KEYINIT,SeedC),SeedB),SeedA)?
??? ·設(shè)K3=Seed?
??? 第四步,密鑰種子的生成:?
???
???
??? 重復(fù)執(zhí)行從第四步到第六步,直到所有的原始密鑰全部生成。?
??? 本系統(tǒng)采用了成熟、安全性高的加密算法和完善的體系結(jié)構(gòu),其安全性是由CPU的安全性和DES算法的安全強(qiáng)度來(lái)保證的。經(jīng)過(guò)國(guó)內(nèi)某單位兩年多的實(shí)際運(yùn)行,證明本系統(tǒng)較好地貫徹了“秘密在于密鑰”的思想,具有較高的安全性和先進(jìn)性,主要表現(xiàn)為如下幾個(gè)特點(diǎn):?
??? (1)采用安全性高的CPU卡作為密鑰的產(chǎn)生、存儲(chǔ)和傳遞介質(zhì),保證了密鑰數(shù)據(jù)的安全性;CPU卡獨(dú)特的安全體系保證了其中的數(shù)據(jù)不會(huì)被非法操作;?
??? (2)利用硬件加密技術(shù),對(duì)整個(gè)過(guò)程中所使用的臨時(shí)變量進(jìn)行加密處理,并對(duì)傳遞過(guò)程進(jìn)行線路加密,保證了在生成和傳遞過(guò)程的安全性;?
??? (3)分級(jí)傳遞結(jié)構(gòu),使系統(tǒng)具有一定的擴(kuò)展性,既支持獨(dú)立系統(tǒng),也可用于分布式系統(tǒng);?
??? (4)系統(tǒng)具有自愈合能力,對(duì)關(guān)鍵數(shù)據(jù)進(jìn)行備份,保證了系統(tǒng)具有一定的抗毀能力;?
??? (5)系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、實(shí)現(xiàn)方便、性價(jià)比較高。?
參考文獻(xiàn)?
1 Information technology-Identification cards-Integrated?circuit(s) cards with contracts-Part 4:terindustry?commands for interchange. International Standard ISO/IEC 7816-4, 1995?
2 王愛英. 智能卡技術(shù). 北京:清華大學(xué)出版社,1996?
3 PSAM卡應(yīng)用規(guī)范(試行).中國(guó)人民銀行,1999