12306之根证书
本文想簡(jiǎn)單談?wù)勀莻€(gè)所謂的“根證書”。在訪問(wèn)鐵道部網(wǎng)上售票官網(wǎng) www.12306.cn 后,有一個(gè)醒目的提示,為保證順暢購(gòu)票,需要下載安裝根證書。那么什么是根證書?為什么買火車票的時(shí)候需要下載和安裝,在淘寶等在線交易網(wǎng)站購(gòu)物時(shí)候?yàn)槭裁淳筒恍枰@樣做?
人民群眾可以通過(guò)互聯(lián)網(wǎng)購(gòu)買火車票。雖然說(shuō)在線買的難度不比以往排隊(duì)購(gòu)買低多少,但這總算是一次值得鼓勵(lì)的嘗試。不過(guò)在線購(gòu)票系統(tǒng)一經(jīng)推出,在技術(shù)上就已經(jīng)被人批得體無(wú)完膚。
為了確保安全,很多涉及在線交易的網(wǎng)站,例如網(wǎng)上銀行、購(gòu)物網(wǎng)站等,都會(huì)使用SSL技術(shù)對(duì)頁(yè)面內(nèi)容進(jìn)行加密。SSL技術(shù)在這里的主要用途有兩個(gè):?
1.確保網(wǎng)站服務(wù)器和用戶瀏覽器之間的通訊不被竊聽(tīng):這一點(diǎn)很好理解。SSL屬于一種公鑰加密體系,簡(jiǎn)單來(lái)說(shuō),一個(gè)SSL證書分為兩部分:公鑰和私鑰。其中私鑰會(huì)被網(wǎng)站所有者妥善保管,并在服務(wù)器端用私鑰將網(wǎng)絡(luò)通訊全部加密;而公鑰會(huì)在網(wǎng)上廣為傳播,一個(gè)私鑰加密后的數(shù)據(jù)只有用所對(duì)應(yīng)的公鑰才能解謎。因此只要SSL證書本身可以保證安全,那么在訪問(wèn)網(wǎng)站的時(shí)候就可以保證網(wǎng)絡(luò)通訊不被他人所竊取,并且如果有人進(jìn)行中間人攻擊,因?yàn)闆](méi)有相應(yīng)的私鑰,因此瀏覽器這端可以及時(shí)察覺(jué)。
2.確保網(wǎng)站所宣稱的身份真實(shí)可靠:這一點(diǎn)也不難理解。網(wǎng)上有個(gè)網(wǎng)站叫做支付寶,可如何保證這個(gè)網(wǎng)站就是那個(gè)真正的支付寶,而不是其他人偽造的釣魚網(wǎng)站?因此真正的支付寶可以使用SSL證書,這種針對(duì)企業(yè)用的證書的申請(qǐng)手續(xù)比較繁瑣,有一大堆審查流程,需要提交大量相關(guān)的證明文件,因此可以保證只有真正的某公司才能以這個(gè)公司的名義申請(qǐng)證書,只要申請(qǐng)到證書,就可以確信身份的可靠。此外近些年還有一種更可靠的EVSSL證書。
試試看訪問(wèn)“https://www.alipay.com”這個(gè)域名,隨后可以看到,在瀏覽器的地址欄,“Http”協(xié)議后面出現(xiàn)了“s”這個(gè)字母,并且IE地址欄的右側(cè)顯示了一個(gè)鎖頭圖標(biāo),因此證明該網(wǎng)站是SSL加密的。點(diǎn)擊這個(gè)鎖頭圖標(biāo)后,還可以看到網(wǎng)站所用證書的相關(guān)信息。
加密功能基本上沒(méi)什么需要解釋的,因此下文的重點(diǎn)將放在身份可靠性這塊。在上圖所示界面上點(diǎn)擊“查看證書”鏈接,隨后可以看到該網(wǎng)站SSL證書的詳情:
在這里一個(gè)很通用的規(guī)則是:如果瀏覽器檢測(cè)到加密網(wǎng)站所用的證書是正常的,那么地址欄就會(huì)顯示為綠色(使用EVSSL證書)或者白色(使用普通SSL證書),這種情況下可以放心地瀏覽該網(wǎng)站,并提交自己的數(shù)據(jù);如果瀏覽器檢測(cè)到網(wǎng)站的證書有問(wèn)題,那么地址欄就會(huì)顯示為紅色,提醒我們注意,同時(shí)取決于具體情況,地址欄右側(cè)會(huì)顯示有“證書錯(cuò)誤”按鈕,而且網(wǎng)站內(nèi)容不會(huì)顯示,取而代之的是瀏覽器的警告信息。基本上主流瀏覽器的最新版本都已經(jīng)具備這樣的功能。
這個(gè)過(guò)程的基本原理是:假設(shè)我們信任A公司,而A公司信任B公司,那么我們就可以信任B公司。很明顯,“www.alipay.com”的證書是“VeriSign Class 3 International Server CA – G3”頒發(fā)的,這表示后者信任前者,可以證明前者的真實(shí)身份,但是我們又憑什么信任后者這個(gè)證書頒發(fā)機(jī)構(gòu)?
上述文字里不止一次提到“信任”一詞,那么“信任”在這里是什么意思?是否像我們平時(shí)講話時(shí)說(shuō)的“我信任他”那樣,代表我們相信他是個(gè)好人,不會(huì)干壞事?其實(shí)完全不是這樣。這里所說(shuō)的“信任”,只是說(shuō)明證書持有人的身份是真實(shí)可靠的,至于持有人用這個(gè)證書干什么事情,不在“信任”的范疇內(nèi)。例如,網(wǎng)上很多臭名昭著的惡意軟件,現(xiàn)在都帶有數(shù)字證書(倒是很多正規(guī)用途的軟件因?yàn)殚_(kāi)發(fā)商缺乏安全觀念不帶證書),同時(shí)因?yàn)檫@些數(shù)字證書的“根”都是我們信任的根證書頒發(fā)機(jī)構(gòu),因此,操作系統(tǒng)
和瀏覽器是信任這些公司的身份的,但并不代表這些公司的軟件不會(huì)干壞事。只要肯花錢,任何人都可以在商業(yè)性質(zhì)的證書頒發(fā)機(jī)構(gòu)買到直接被我們的系統(tǒng)所信任的證書。?
其實(shí)Windows和任何操作系統(tǒng)本身就包含一些受信任證書頒發(fā)機(jī)構(gòu)的根證書,要查看這些根證書,可以運(yùn)行“certmgr.msc”打開(kāi)證書控制臺(tái),然后從控制臺(tái)窗口左側(cè)的控制臺(tái)樹(shù)中依次進(jìn)入“證書-當(dāng)前用戶”→“受信任的根證書頒發(fā)機(jī)構(gòu)”→“證書”,隨后右側(cè)的窗口中會(huì)顯示本機(jī)預(yù)置的所有根證書頒發(fā)機(jī)構(gòu),其中就有“CA – G3”,這表示我們信任“CA – G3”,而“CA – G3”信任“www.alipay.com”,因此我們可以信任“www.alipay.com”。如果從證書控制臺(tái)中刪除“CA – G3”的根證書,表示我們不再信任它,那么它所信任的公司也將不再被我們信任。
這里要重點(diǎn)提出“根證書”這個(gè)概念,全世界具有提供數(shù)字證書業(yè)務(wù)的公司有很多,而Windows自帶的“根證書”很少,默認(rèn)情況下,我們是如何信任這么多不同公司頒發(fā)的不同證書的?其實(shí)這就是“根”這個(gè)字的含義,因?yàn)榭梢灶C發(fā)證書的公司雖然很多,但最基本的根證書頒發(fā)機(jī)構(gòu)只有有限的幾個(gè),默認(rèn)情況下都是被操作系統(tǒng)所信任的。那么既然操作系統(tǒng)能信任根證書頒發(fā)機(jī)構(gòu),自然也就可以信任被根證書頒發(fā)機(jī)構(gòu)信任的公司,進(jìn)而可以信任被這些公司所信任的下一級(jí)公司。
如何證明這一點(diǎn)?可以單擊上圖中的“查看證書”鏈接,隨后打開(kāi)“證書”對(duì)話框,切換到“證書路徑”選項(xiàng)卡后,可以看到下圖所示界面。從該圖中可以看出,整個(gè)證書信任鏈的路徑分為三個(gè)層次,最頂層的是我們信任的根證書頒發(fā)機(jī)構(gòu),該機(jī)構(gòu)給“InternationalServer CA – G3”頒發(fā)了證書,因此,我們信任“CA-G3”;隨后“CA-G3”又給“www.alipay.com”頒發(fā)了證書,因此也可以信任“www.alipay.com”。如果“www.alipay.com”再給別人頒發(fā)證書,那么這個(gè)人的身份依然可以被我們信任。
當(dāng)我們查看12306.cn 這個(gè)網(wǎng)站的證書信息時(shí)就會(huì)發(fā)現(xiàn),這個(gè)證書根本沒(méi)有一個(gè)有效的受信任CA,完全是自己給自己發(fā)著玩的。
很遺憾的是,這種做法雖然很不安全,可國(guó)內(nèi)的大佬們很喜歡使用。例如在我的系統(tǒng)中,這里就有建行和工行網(wǎng)銀自行添加的根證書。
那么這種做法除了能省幾個(gè)錢之外,對(duì)用戶來(lái)說(shuō)有什么危害?
在12306.cn訂票的很多人可能會(huì)看到過(guò)“該站點(diǎn)安全證書的吊銷信息不可用,是否繼續(xù)”這樣的信息。這是什么意思?
還是以上文那個(gè)DigiNotar的例子來(lái)說(shuō),假設(shè)某個(gè)大型CA被攻擊,私鑰被竊取,這時(shí)候有兩種方法盡量避免
1.類似Windows補(bǔ)丁這樣,由軟件廠商通過(guò)發(fā)布更新的方式,將被盜證書強(qiáng)制設(shè)置為不信任。 2.使用證書吊銷列表(CRL)。?
第一種方式比較好理解,但并不是所有公司都能獲此殊榮。畢竟主流操作系統(tǒng)的用戶數(shù)量龐大,根本不可能針對(duì)一個(gè)地區(qū)性的,或者規(guī)模很小的公司的被盜證書發(fā)布更新,強(qiáng)制不信任。因此第二種情況就至關(guān)重要了。每個(gè)證書中都包含CRL,其實(shí)這個(gè)可以理解為一個(gè)網(wǎng)址,通過(guò)這個(gè)網(wǎng)址可以獲得證書吊銷的相關(guān)信息。
因此如果一個(gè)小公司通過(guò)商業(yè)性CA購(gòu)買的證書被盜了,只要將相關(guān)信息告知CA,這家CA就會(huì)將這個(gè)證書的內(nèi)容添加到CRL中。隨后任何一個(gè)用戶在執(zhí)行涉及到證書的操作,例如安裝帶有數(shù)字簽名的軟件,或者訪問(wèn)SSL網(wǎng)站的時(shí)候,系統(tǒng)都會(huì)通過(guò)這個(gè)CRL地址檢索吊銷清單,并查看當(dāng)前軟件或網(wǎng)站使用的證書是否位于清單中。如果不在,就證明這個(gè)證書依然是可信任的;如果在,就證明該證書已經(jīng)被盜,因此軟件或網(wǎng)站存在仿冒的可能。
而因?yàn)?/span>12306.cn使用了自己給自己頒發(fā)的證書,因此也就根本無(wú)法在自己的證書中包含CRL信息,所以會(huì)看到“吊銷信息不可用”的提示,這意味著瀏覽器在告訴你,你所訪問(wèn)的網(wǎng)站,不一定能完全證明其可靠,這可能是真網(wǎng)站,但也有是釣魚網(wǎng)站的可能。
而如果12306.cn的證書私鑰丟失或被盜(看看去年底的大規(guī)模泄密事件,誰(shuí)敢保證沒(méi)有這種可能性),持有該證書的人想要偽造一個(gè)釣魚網(wǎng)站,或者以鐵道部的身份發(fā)布惡意軟件,那真是輕而易舉,并且鐵道部對(duì)此會(huì)束手無(wú)策。
畢竟在線購(gòu)買火車票的人全都安裝了這個(gè)根證書,而該證書根本無(wú)法通過(guò)CRL吊銷。此外還有一個(gè)更重要的問(wèn)題,如果盜取該證書的人繼續(xù)使用“SRCA”的身份給其他人以其他身份頒發(fā)證書,例如以銀行或支付中介的名義,結(jié)果會(huì)怎樣?因?yàn)樗性诰€購(gòu)買過(guò)火車票的人,由于根證書的關(guān)系,系統(tǒng)已經(jīng)信任SRCA的根證書,因此這些偽造的證書也會(huì)直接被信任。最壞的情況下,所有熱門的SSL加密網(wǎng)站(購(gòu)物、銀行、股票….)要想被偽造都是輕而易舉的。
什么意思呢?如果某天你訪問(wèn)的“支付寶”網(wǎng)站的證書信任鏈?zhǔn)窍旅孢@樣,你覺(jué)得會(huì)是什么后果?
當(dāng)然,上述希望可能永遠(yuǎn)不會(huì)成真,因此作為一般用戶,如果你已經(jīng)成功在線購(gòu)買到火車票(恭喜你啊,你要不要去買個(gè)彩票試試手氣),那么建議你在“受信任的根證書頒發(fā)機(jī)構(gòu)”節(jié)點(diǎn)下將SRCA的根證書徹底刪除。
總結(jié)
- 上一篇: 前端学习(2181):vue-route
- 下一篇: 邮局用计算机对信件进行自动分拣,计算机组