李勝華
摘要:本文討論了移動(dòng)環(huán)境下的密鑰管理問(wèn)題,比較和分析了幾種典型的移動(dòng)密鑰管理方案,對(duì)密鑰的生成和分發(fā)過(guò)程進(jìn)行了詳細(xì)的對(duì)比。
關(guān)鍵詞:移動(dòng)環(huán)境;密鑰管理;分布密鑰;會(huì)話密鑰;共享密鑰
當(dāng)前移動(dòng)環(huán)境下的密鑰管理主要有兩種基本方式:一種是通過(guò)智能卡及人工分發(fā)的方式,實(shí)現(xiàn)移動(dòng)終端與應(yīng)用服務(wù)器之間的共享密鑰與會(huì)話密鑰的分配與管理;另一種是基于身份認(rèn)證機(jī)制實(shí)現(xiàn)密鑰的管理。下面介紹兩個(gè)分別對(duì)應(yīng)了這兩種基本方式的移動(dòng)環(huán)境密鑰管理方案。
一、一個(gè)手機(jī)銀行的密鑰管理方案
該方案使用智能卡和人工分發(fā)的方式,實(shí)現(xiàn)手機(jī)客戶端與銀行之間的密鑰管理。密鑰管理系統(tǒng)是通過(guò)兩個(gè)密鑰組件生成主密鑰并輸出到兩類(lèi)卡片中,一類(lèi)是用于卡片生產(chǎn)的個(gè)人化密鑰卡(SAM),一類(lèi)是系統(tǒng)所需的主機(jī)系統(tǒng)密鑰卡(KMC)。系統(tǒng)的基本結(jié)構(gòu)如圖1所示。
圖1手機(jī)銀行密鑰管理體系結(jié)構(gòu)
整個(gè)密鑰管理包括主密鑰生成和分發(fā)、分布式密鑰使用、會(huì)話密鑰使用三個(gè)過(guò)程:
1.主密鑰的生成過(guò)程
(1)兩個(gè)安全負(fù)責(zé)人輸人各自的密鑰組件,密鑰組件卡由PIN保護(hù)。
(2)密鑰管理系統(tǒng)生成密鑰管理卡(KMC),密鑰管理卡由兩張傳輸密鑰卡(TKC)保護(hù)。密鑰管理卡可將密鑰傳輸給密鑰組件(HSM)。兩張傳輸密鑰卡應(yīng)由兩位不同的安全負(fù)責(zé)人秘密保存。
(3)密鑰管理系統(tǒng)生成安全存儲(chǔ)組件卡(SAM)。
(4)可用密鑰管理系統(tǒng)修改KCC, TKC,SAM的PIN(為安全起見(jiàn),應(yīng)盡快修改PIN)。
2.主密鑰傳輸過(guò)程
(1)密鑰管理卡(KMC )將被送到HSM。
(2)兩個(gè)安全負(fù)責(zé)人將各自的傳輸密鑰卡(TKC)送到HSM,并輸入TKC的PIN。
(3)ISM自動(dòng)讀出兩個(gè)傳輸密鑰,并由此計(jì)算出KMC的傳輸密鑰。
(4)HSM從KMC中讀出主密鑰(MK),并存儲(chǔ)主密鑰。
3.分布密鑰使用
分布密鑰,是手機(jī)銀行客戶與系統(tǒng)之間長(zhǎng)期使用的數(shù)據(jù)加密密鑰。分布密鑰方法中,包含一個(gè)存儲(chǔ)在系統(tǒng)中的主密鑰和在每一張卡上存放的多個(gè)分布密鑰,分布密鑰Kd是由主密鑰Km和一個(gè)在卡上存在并且每一張卡上數(shù)據(jù)是唯一的一個(gè)數(shù)據(jù)Dd,通過(guò)加密算法計(jì)算得出,每一次卡片將數(shù)據(jù)M加密后得到密文{M } Kd,傳輸時(shí)附帶上Dd,這樣系統(tǒng)可得到密文{M } Kd及Dd。銀行系統(tǒng)可計(jì)算出卡片的分布密鑰,然后利用分布密鑰解密數(shù)據(jù)。
4.會(huì)話密鑰使用
會(huì)話密鑰的使用與分布密鑰大致相似,只不過(guò)用于產(chǎn)生會(huì)話密鑰的數(shù)據(jù)不是固定的Dd,而是一個(gè)隨機(jī)Random,這樣就保證了每次的會(huì)話密鑰各不相同。具體過(guò)程是:用卡上的密鑰(主密鑰或是分布密鑰)與一個(gè)隨機(jī)數(shù)Random,通過(guò)加密算法得出一個(gè)用于此次數(shù)據(jù)傳輸?shù)臅?huì)話密鑰,將數(shù)據(jù)用會(huì)話密鑰加密后連同隨機(jī)數(shù)一起發(fā)出,系統(tǒng)收到后,使用隨機(jī)數(shù)得到會(huì)話密鑰,再用會(huì)話密鑰解密數(shù)據(jù)。
二、Wassim Itani系統(tǒng)的密鑰管理方案
在Wassim Itani 和Ayman I Kayssi提出的端到端安全解決方案中,采用的是基于身份認(rèn)證的密鑰管理方式,主要包括共享密鑰存儲(chǔ)、用戶身份認(rèn)證和會(huì)話密鑰協(xié)商三部分內(nèi)容。
1.共享密鑰存儲(chǔ)
共享密鑰K_share是在移動(dòng)終端和應(yīng)用服務(wù)器中長(zhǎng)期存儲(chǔ),用于會(huì)話密鑰的加密,從而保證會(huì)話密鑰安全交換的密鑰,必需得到安全的存儲(chǔ)。在服務(wù)器端的共享密鑰存放在數(shù)據(jù)庫(kù)中,可以通過(guò)相應(yīng)的數(shù)據(jù)庫(kù)安全管理系統(tǒng)和其它安全策略保證其安全。移動(dòng)終端的共享密鑰通過(guò)兩種方法保證其安全:一是加密后存放在Keys類(lèi),并且該Keys類(lèi)被打包在JAR文件中;二是通過(guò)混淆器混淆JAR文件來(lái)阻止對(duì)代碼的反匯編,從而阻止獲取加密后的共享密鑰。移動(dòng)終端對(duì)共享密鑰的加密處理如圖2所示,它使用客戶的64位密碼Pincode填充它本身來(lái)形成一個(gè)128位的加密密鑰,用于加密共享密鑰K_share。
圖2共享密鑰加密過(guò)程
2.用戶身份認(rèn)證
用戶身份認(rèn)證過(guò)程如圖3所示,首先移動(dòng)終端向應(yīng)用服務(wù)器發(fā)送認(rèn)證信息,這些信息包括用戶ID“userid”、時(shí)間戳“timeStamp”、隨機(jī)數(shù)randomNumber以及摘要值H{userid,timeStamp,randomNumber,pincode},該摘要值是使用SHA-1摘要算法,以u(píng)serid、timeStamp、randomNumber以及用個(gè)人識(shí)別碼后生成的pincode作為輸入信息生成。
圖3系統(tǒng)認(rèn)證過(guò)程
應(yīng)用服務(wù)器的AuthServlet收到認(rèn)證信息后,先請(qǐng)求用戶產(chǎn)生一個(gè)HttpSession對(duì)象,將userID存放在會(huì)話變量中,然后根據(jù)用戶ID“userid”,利用數(shù)據(jù)庫(kù)訪問(wèn)接口,從用戶信息數(shù)據(jù)庫(kù)中取出用戶的pincode及上次登錄系統(tǒng)的時(shí)間戳timeStamp,通過(guò)將取出的timeStamp與收到的用戶信息中的timeStamp比較,可以防止重放攻擊;最后,將數(shù)據(jù)庫(kù)中取出的pincode和從客戶端接收的userid、timeStamp、randomNumber輸入,同樣使用SHA-1算法生成摘要值,并將該摘要與認(rèn)證信息中的摘要值進(jìn)行對(duì)比,相同則認(rèn)證成功,不同則說(shuō)明認(rèn)證失敗。
3.會(huì)話密鑰協(xié)商
當(dāng)移動(dòng)終端向服務(wù)器端的InitServlet發(fā)出會(huì)話密鑰的協(xié)商請(qǐng)求后,InitServlet首先獲取該用戶的HttpSession對(duì)象,從Session會(huì)話對(duì)象中獲取認(rèn)證信息,確保用戶是已經(jīng)通過(guò)認(rèn)證。
InitServlet生成兩個(gè)128位的加/解密會(huì)話密鑰對(duì)——Session Keys,其中每個(gè)密鑰負(fù)責(zé)一個(gè)方向上的數(shù)據(jù)安全傳輸,也就是說(shuō):一個(gè)密鑰用于在手機(jī)客戶端加密數(shù)據(jù),在服務(wù)器端解密數(shù)據(jù);另外一個(gè)密鑰用于在服務(wù)器端加密數(shù)據(jù),在手機(jī)客戶端解密數(shù)據(jù)。會(huì)話密鑰對(duì)存放在Session會(huì)話變量中,然后對(duì)會(huì)話密鑰進(jìn)行加密處理,所使用的128位加密密鑰是由64位用戶密碼Pincode填補(bǔ)64位共享密鑰K_share組成。(其中Pincode和K_share是以u(píng)serID為參數(shù)從數(shù)據(jù)中獲取的)加密處理后的會(huì)話密鑰對(duì)Session Keys以HTTP應(yīng)答的形式發(fā)送給手機(jī)客戶端。
移動(dòng)終端在接收到服務(wù)器端發(fā)給的加密會(huì)話密鑰后,需要進(jìn)行解密處理:首先是根據(jù)用戶的密碼Pincode解密出存放在JAR文件的Keys類(lèi)中的共享密鑰K_share,然后使用64位Pincode填補(bǔ)64位K_share組成的128位密鑰,解密出會(huì)話密鑰對(duì)Session Keys。
三、結(jié)論
在資源受限的移動(dòng)計(jì)算環(huán)境中,往往使用對(duì)稱(chēng)加密技術(shù)來(lái)保證通信的安全。因此,密鑰管理所關(guān)心的主要是會(huì)話密鑰的產(chǎn)生及安全分發(fā)問(wèn)題。上述兩種密鑰管理方案安全性高,使用比較靈活,但實(shí)現(xiàn)復(fù)雜,成本較高,只適用于移動(dòng)銀行、移動(dòng)證券等安全性要求較高的應(yīng)用領(lǐng)域。
參考文獻(xiàn):
[1]中國(guó)移動(dòng)通信公司.移動(dòng)商務(wù)安全報(bào)告,2003.
[2] Manish Verma.XML security,2003.
[3] Bilal Siddiqui.Exploring XML Encry- ption,2002.
[4] Michael Juntao Yuan. J2ME 移動(dòng)應(yīng)用程序開(kāi)發(fā).北京:清華大學(xué)出版社,2004.