網(wǎng)絡(luò)認(rèn)證為什么不選擇OpenPGP?
TLS(包括其前身的名稱,SSL)在進(jìn)行網(wǎng)絡(luò)認(rèn)證時(shí),加密協(xié)議的作用就是提供強(qiáng)加密的解決方案。盡管在加密認(rèn)證中也存在其它可供選擇的項(xiàng)目,舉例來說,HTTP摘要式身份驗(yàn)證,它們傾向于使用較弱的結(jié)構(gòu)。但對于HTTP摘要式身份驗(yàn)證來說,最大的問題就是這樣的一個(gè)事實(shí),它無法提供識別服務(wù)器的核查機(jī)制。這讓它非常容易遭受到中間人類型的網(wǎng)絡(luò)攻擊。
與此相反,在設(shè)計(jì)的時(shí)間TLS協(xié)議就專門考慮到這種情況,并采用了權(quán)威的PKI證書來對服務(wù)器進(jìn)行驗(yàn)證。該證書制度屬于技術(shù)相關(guān)的過程,基于來自第三方的認(rèn)證授權(quán)來對服務(wù)器進(jìn)行驗(yàn)證;從某些方面來看,類似采用OpenPGP公鑰加密信任模型的網(wǎng)絡(luò),但和官僚機(jī)構(gòu)的結(jié)合性更高。
來自信任網(wǎng)絡(luò)的主要部分屬于它的轉(zhuǎn)折點(diǎn),但是:不是依靠個(gè)人判斷來選擇是否信任,取而代之的是自私自利的商業(yè)認(rèn)證公司來公司使用者誰可以相信,誰不能被信任。
認(rèn)證中心系統(tǒng)分為TLS和瀏覽器使用的HTTPS協(xié)議,這樣的話,即使使用者希望使用類似Perspectives之類的獨(dú)立認(rèn)證核查系統(tǒng),或者M(jìn)onkeysphere之類信任網(wǎng)絡(luò)的話,也還需要對于系統(tǒng)進(jìn)行繁瑣的設(shè)置,以便替代CA公鑰基礎(chǔ)設(shè)施。
在不包含電子商務(wù)要求的自簽名證書中,基本上沒有比CA簽名的注冊證書更容易設(shè)置的了。傳統(tǒng)TLS認(rèn)證模式的靜態(tài)IP地址認(rèn)證不會(huì)被自簽名證書解除,或者被基于OpenPGP之類的其它公共密鑰加密協(xié)議的技術(shù)所限制。
TLS中存在的問題有什么?
在很多情況下,基于TLS的PKI都會(huì)出現(xiàn)問題。舉例來說,對于資源不足又需要安全認(rèn)證的網(wǎng)站來說,由商業(yè)機(jī)構(gòu)或者財(cái)力雄厚的愛好者來提供支持是不合適的。主機(jī)共享,采用便宜的方式來建立一家“真正”的網(wǎng)站,處理使用TLS保護(hù)認(rèn)證時(shí)出現(xiàn)的一些令人不快的問題(舉例來說,共享IP地址)。當(dāng)然,為了保障服務(wù)器認(rèn)證和強(qiáng)加密方面的認(rèn)證保護(hù),這些困難是無法消除的。
在理論上,這是一個(gè)可以獲得解決的問題。作為一種加密協(xié)議,OpenPGP的基本結(jié)構(gòu)是在大約二十年前由加密愛好者眼中的英雄菲爾•齊默爾曼設(shè)計(jì)的。對于個(gè)人、公司和站點(diǎn)來說,在加密/解密過程的半程中使用簡單的公鑰可以實(shí)現(xiàn)非常靈活的設(shè)置,并且支持帶外模式的密鑰核查認(rèn)證。
它采用了大范圍的分配機(jī)制,并且可以用來進(jìn)行外部核查。這里面可以包括作為傳統(tǒng)OpenPGP默認(rèn)密鑰驗(yàn)證過程服務(wù)的網(wǎng)絡(luò)信任模式,以及Perspectives提供的分布式系統(tǒng)。
不過,理論和現(xiàn)實(shí)很少一致,在現(xiàn)實(shí)環(huán)境中,這并不屬于一個(gè)已經(jīng)獲得解決的問題。實(shí)際情況是,TLS的應(yīng)用范圍是如此廣泛,以至于已經(jīng)成為了唯一的選擇,沒有其它競爭者可以對其構(gòu)成威脅,甚至連達(dá)到類似水平的要求都做不到。
沒有一家競爭對手,可以對CA的公鑰基礎(chǔ)設(shè)施構(gòu)成最基本的威脅,它們甚至連挑戰(zhàn)的機(jī)會(huì)都沒有,就更不用說市場份額了。所有這一切讓網(wǎng)絡(luò)身份認(rèn)證的簡單實(shí)現(xiàn)基本覆蓋所有標(biāo)準(zhǔn)共享主機(jī)的想法成為不可能,在每一個(gè)使用OpenPGP之類的外部公共密鑰加密協(xié)議的案例中:單獨(dú)CGI的執(zhí)行情況和PHP實(shí)現(xiàn),都讓TLS成為不合理的負(fù)擔(dān)。即使出現(xiàn)了一定的成功,包括Ruby on Rails、Django、CMSplug-ins在內(nèi)的其它競爭對手也將很快跟進(jìn)。
并且不幸的是,部署加密措施的操作很難做到。對于真正基于OpenPGP的網(wǎng)絡(luò)認(rèn)證簡單實(shí)現(xiàn)來說,實(shí)施的時(shí)間需要了解對服務(wù)器運(yùn)行的軟件類型進(jìn)行假設(shè),這不是什么很方便的事情;或者與OpenPGP的應(yīng)用與服務(wù)器端軟件開發(fā)人員使用的語言種類有關(guān)。
在處理主機(jī)共享,而網(wǎng)絡(luò)開發(fā)人員對于系統(tǒng)中安裝的軟件沒有或者只有很少的控制權(quán),大部分服務(wù)器端語言中常見的加密庫都使用來自共享主機(jī)的同樣外部工具(通常情況下是GnuPG)來作為OpenPGP支持部分的情況下,這么做是一件非常困難的事情。
讓我們不要忘記處理客戶端的艱巨性。功能豐富的新型瀏覽器可以利用基于HTTPS的URI模式來支持TLS加密。然而,它們不會(huì)采用內(nèi)置OpenPGP的方式來支持網(wǎng)絡(luò)身份認(rèn)證。包含強(qiáng)大插件功能的瀏覽器可以采用相對簡單的方法來為系統(tǒng)增加功能,至少在某些情況下可以實(shí)現(xiàn)這一點(diǎn);但插件需要進(jìn)行開發(fā),并且這樣做還涉及到客戶端上安裝的語言和分布式軟件的情況,與共享主機(jī)上的軟件可用性相比,這樣的認(rèn)證系統(tǒng)的可靠性更低。
OpenPGP面臨的另一項(xiàng)挑戰(zhàn)
最終,我們找出了為什么沒有以O(shè)penPGP或類似獨(dú)立公共密鑰加密為基礎(chǔ)的競爭對手可以替代TLS的原因。所有的努力都需要從基層開始,舉例來說,開源軟件開發(fā)社區(qū)應(yīng)該提供整體解決方案,以自下而上的方式揭開針對基于CA的PKI加密模式在實(shí)際網(wǎng)絡(luò)中的霸權(quán)進(jìn)行挑戰(zhàn)的序幕。
如果沒有具備前瞻性的大學(xué)生或者巨型企業(yè)支持的話,這樣的工作將會(huì)是非常難以進(jìn)行的,畢竟,建立一個(gè)新的網(wǎng)絡(luò)身份認(rèn)證體系需要做的工作非常多。更糟糕的可能是,即便這樣的開源系統(tǒng)得以建立,由于合理性或者資金方面的問題可能會(huì)導(dǎo)致它采用許可模式(估計(jì)會(huì)是非盈利版權(quán))發(fā)放,這在某些情況下會(huì)阻礙代碼的使用,從而限制其推廣。
這還沒有包含對易于使用的標(biāo)準(zhǔn)化帶外密鑰驗(yàn)證系統(tǒng)的要求,盡管在理論上它并不屬于系統(tǒng)的組成部分,但對于達(dá)到廣泛普及的目標(biāo)來說將會(huì)起到非常大的作用。
盡管如此,但這種做法看起來似乎是目前唯一最有可能并且最簡單的方式,可以代替TLS提供更為“民主”的選擇;至少在驗(yàn)證領(lǐng)域的情況是這樣,我們甚至預(yù)計(jì)最終可以普及到全程加密。
OpenPGP盡管在本文中被我采用,而且作為典例來進(jìn)行說明,但SSH協(xié)議在這方面的效果也非常好。 希望讀者多多關(guān)注這方面的知識。
【編輯推薦】