3.7.4 可行的密鑰管理
我們可以使用類(lèi)似于Kerberos的協(xié)議來(lái)建立與管理用戶之間實(shí)際工作的密鑰,這要求每個(gè)用戶與充當(dāng)密鑰分發(fā)中心的服務(wù)器之間共享一個(gè)或多個(gè)長(zhǎng)期密鑰。本書(shū)后面將描述大量其他類(lèi)似協(xié)議,比如第10章將討論銀行如何與其每臺(tái)ATM以及與其連接的每個(gè)銀行內(nèi)網(wǎng)絡(luò)建立長(zhǎng)期共享密鑰,之后,銀行會(huì)使用與Kerberos不太相同的協(xié)議與其每臺(tái)ATM以及網(wǎng)絡(luò)交換機(jī)建立一個(gè)日密鑰,因此,當(dāng)你在屬于其他銀行的ATM上進(jìn)行操作并試圖通過(guò)Cirrus網(wǎng)絡(luò)取錢(qián)時(shí),ATM將使用其與所屬銀行共享的工作密鑰對(duì)交易數(shù)據(jù)進(jìn)行加密,之后,銀行將使用該網(wǎng)絡(luò)的日密鑰進(jìn)行加密的交易數(shù)據(jù)傳遞給Cirrus網(wǎng)絡(luò)。
到現(xiàn)在似乎一切都不錯(cuò),但只要稍稍考慮一下就會(huì)發(fā)現(xiàn),如果按上面的方式實(shí)現(xiàn),銀行就必須為其所擁有的數(shù)百臺(tái)ATM取款機(jī)分別維護(hù)不同的密鑰——?一個(gè)長(zhǎng)期的主密鑰,可能還需要一個(gè)加密密鑰與一個(gè)身份驗(yàn)證密鑰,銀行網(wǎng)絡(luò)的每個(gè)子網(wǎng)絡(luò)都需要一些密鑰。數(shù)百萬(wàn)電子銀行客戶使用的密碼與安全信息,如果這些客戶所在計(jì)算機(jī)上安裝了使用密碼學(xué)機(jī)制的客戶端,也需要為其提供相應(yīng)密鑰。此外,還需要為數(shù)千個(gè)員工提供加密的密碼,形式上也可能是使用用戶密碼加密的Kerberos密鑰。面對(duì)如此之多的密鑰原料,如何進(jìn)行管理?
密鑰管理是一個(gè)復(fù)雜而困難的問(wèn)題,并且經(jīng)常出錯(cuò),因?yàn)檫@通常不是要考慮的首要問(wèn)題。一個(gè)負(fù)責(zé)任的工程師會(huì)認(rèn)真思考需要多少個(gè)密鑰、如何生成這些密鑰、密鑰需要存活多久以及最終如何銷(xiāo)毀密鑰。還有更多需要考慮的問(wèn)題,F(xiàn)ederal Information Processing Standard for key management[948]中列出了大多數(shù)這類(lèi)問(wèn)題。此外,由于應(yīng)用程序的不斷演化,會(huì)導(dǎo)致出現(xiàn)新的問(wèn)題,所以提供額外密鑰以支持未來(lái)的功能是重要的,這樣就不會(huì)因?yàn)樵诓患嫒莸膮f(xié)議中重用而導(dǎo)致現(xiàn)有功能損壞。為從安全失敗中恢復(fù)提供必要支持也是重要的。然而,這些都沒(méi)有標(biāo)準(zhǔn)的做法。
有很多實(shí)際可行的策略,但沒(méi)有哪一種是直截了當(dāng)?shù)?。公鑰加密(將在第5章進(jìn)行討論)可以在一定程度上簡(jiǎn)化密鑰管理的工作,長(zhǎng)期密鑰可以分為私鑰與公鑰兩個(gè)部分,你不需要保存公鑰部分,但必須保證其完整性。在銀行系統(tǒng)中,通常的做法是使用稱為安全模塊的專(zhuān)用密碼處理器,第16章將對(duì)其進(jìn)行詳細(xì)描述。這些設(shè)備完成所有密碼學(xué)處理,并包含一些用于保護(hù)應(yīng)用程序密鑰的內(nèi)部密鑰。由此,你可以讓安全模塊為每個(gè)ATM生成主密鑰,并將其加密后的值存放在ATM主文件中。當(dāng)有來(lái)自某個(gè)ATM的交易數(shù)據(jù)時(shí),就可以從該文件中取回加密后的密鑰,并將加密數(shù)據(jù)與其一起傳送給安全模塊,之后由安全模塊進(jìn)行必要的處理:對(duì)PIN進(jìn)行解密,并對(duì)其進(jìn)行驗(yàn)證——或許通過(guò)與本地保存的加密值進(jìn)行比較來(lái)實(shí)現(xiàn)。遺憾的是,用于完成這些操作的協(xié)議經(jīng)常會(huì)失敗。有很多種攻擊方法可以滲透安全模塊的應(yīng)用程序接口(API),而協(xié)議在API中是暴露的。第18章將詳細(xì)描述這些攻擊方法?,F(xiàn)在只要知道讓安全協(xié)議正確運(yùn)行并不容易就足夠了。你不能在家中設(shè)計(jì)協(xié)議,這比設(shè)計(jì)爆炸裝置可要復(fù)雜得多。