3.5 環(huán)境變化
協(xié)議失敗的一個常見原因是環(huán)境變化,環(huán)境變化會導(dǎo)致原來成立的假設(shè)不再成立,從而安全協(xié)議就無法應(yīng)對新的威脅。
倫敦交通部門使用的票務(wù)系統(tǒng)是一個很好的實例。20世紀(jì)80年代早期,乘客想出了各種詭計來減少乘車的花費。比如,長途往返于郊區(qū)和城區(qū)之間的乘客可能會買兩張更便宜的短程季票——?一張是從郊區(qū)車站到附近的車站,另一張是從目的地到其他城區(qū)車站。這使得他能夠通過關(guān)卡,如果在途中遇到查票(極少出現(xiàn)的情況),就謊稱是郊區(qū)車站的售票機(jī)壞了。
在投入大筆資金對其改造以后,票務(wù)系統(tǒng)具備了防止這些詭計的完整功能:所有關(guān)卡都自動化,車票可以保留狀態(tài),并修改法律規(guī)定對無票乘客施行現(xiàn)場罰款。
但突然之間,大環(huán)境也改變了,國家交通系統(tǒng)私有化使得交通部門分化為幾十家私營的鐵路和公路公司。有些新運營公司開始互相欺騙,而系統(tǒng)對此無能為力。比如,每賣掉一張當(dāng)日通票,收入由各個汽車、火車和地鐵運營商分配,分配依據(jù)是售票地點。突然之間,鐵路公司需要通過預(yù)售火車票才能保持營業(yè)收入占最大份額。除了外部的一些不良分子(某些乘客)之外,現(xiàn)在又加上了內(nèi)部的投機(jī)者(鐵路公司)。于是,混亂和法律問題隨之而來。
運輸系統(tǒng)的問題并不是一個新問題,實際上在20世紀(jì)70年代中期,人們在意大利的法沙谷滑雪場已經(jīng)注意到了這個問題。在那里,游人買一張月票,就可以登上山谷中運送滑雪者上山的所有纜車。有人看到索道的服務(wù)員拿著一摞卡,每過一個游客就用一張卡過一下讀卡機(jī)。由于各索道操作員的收入是依靠運送客人的數(shù)量來分配的,所以每個操作員都盡可能地增加自己的數(shù)字[1217]。
還有一個關(guān)于提款機(jī)詐騙領(lǐng)域的很好實例。在1993和1994年,荷蘭遭受了“夢幻提款”風(fēng)潮,當(dāng)時報刊上有很多爭論,一方面銀行聲稱其系統(tǒng)是安全的,而另一方面很多人向報紙寫信聲稱受害。最后,銀行在譴責(zé)聲中積極調(diào)查了那些事件,并注意到很多受害者都在烏得勒支附近的某個汽車加油站使用過銀行卡,警察對該加油站進(jìn)行了監(jiān)視,隨后一名員工被捕——?警方證實,該員工在讀卡器及對其控制的PC機(jī)之間進(jìn)行接線,記錄了客戶卡磁條上的詳細(xì)內(nèi)容,而他則偷窺獲取客戶的PIN[33]。
為什么系統(tǒng)會設(shè)計得這么糟糕?20世紀(jì)80年代早期,當(dāng)IBM和VISA這些機(jī)構(gòu)制定磁條卡和PIN的管理標(biāo)準(zhǔn)時,工程師們做了兩個假設(shè)。第一個假設(shè)是,磁條的內(nèi)容不保密——?包括卡號、版本號和有效期限,而PIN是保密的[880](這里的類比是,磁條是持卡人的名字,而PIN是密碼。本書后面還會講很多關(guān)于命名的困難之處)。第二個假設(shè)是,銀行卡設(shè)備只會在可信環(huán)境中使用,比如安全穩(wěn)定的自動取款機(jī),或者出納員在銀行出納臺上操作?;谶@些假設(shè),顯然只對PIN進(jìn)行加密即可,而磁條上的數(shù)據(jù)則可以從磁卡機(jī)上明文傳送。
到1993年,這兩個假設(shè)都不再成立了。有一段時間盛行制造假卡,主要集中在20世紀(jì)80年代后期的遠(yuǎn)東地區(qū),這促使銀行在磁條上加入身份驗證碼。另一方面,銀行卡產(chǎn)業(yè)取得了商業(yè)上的成功,使得各國銀行把借貸卡從ATM機(jī)擴(kuò)展應(yīng)用到各種商店終端上。這兩種環(huán)境便更緊密地聯(lián)合在一起,破壞了最初系統(tǒng)設(shè)計所依賴的基礎(chǔ):人們不再是把不包含安全數(shù)據(jù)的磁條卡插入可信機(jī)器上,而是把帶有安全數(shù)據(jù)的卡插入不可信機(jī)器上。這些變更是逐漸發(fā)生的,在這么長的時間里,業(yè)界沒有看出即將要出現(xiàn)的問題。