數字證書及 CA 的掃盲介紹

文章目錄
★先說一個通俗的例子
★相關專業術語的解釋
★證書有啥用?
★總結
  最近1-2周,關於 CNNIC 的 CA 證書問題,網上搞得沸沸揚揚。但是俺發覺,即使是一些 IT 行業的技術人員,也搞不太明白該問題的嚴重性(至於不懂技術的傻瓜用戶,就更甭提了)。主要在於 CA 證書是一個相對專業的東東,大夥兒平時接觸不多。
  所以,俺打算寫3個帖子:第1個用來掃盲 CA 證書的基礎知識(也就是本帖);第2個則用來揭露 CNNIC 這個老流氓的醜惡歷史(在“這裏”);第3個介紹如何 CNNIC 證書的危害及清除方法(在“這裏”)。爲了達到普及的效果,俺會盡量用比較淺顯,非技術的語言來講清楚這事兒。


★先說一個通俗的例子


  考慮到證書體系的相關知識比較枯燥、晦澀。俺先拿一個通俗的例子來說事兒。

◇普通的介紹信


  想必大夥兒都聽說過介紹信的例子吧?假設 A 公司的張三先生要到 B 公司去拜訪,但是 B 公司的所有人都不認識他,他咋辦捏?常用的辦法是帶公司開的一張介紹信,在信中說:茲有張三先生前往貴公司辦理業務,請給予接洽......云云。然後在信上敲上A公司的公章。
  張三先生到了 B 公司後,把介紹信遞給 B 公司的前臺李四小姐。李小姐一看介紹信上有 A 公司的公章,而且A公司是經常和 B 公司有業務往來的,這位李小姐就相信張先生不是歹人了。
  說到這,愛擡槓的同學會問了:萬一公章是僞造的,咋辦捏?在此,俺要先聲明,在本例子中,先假設公章是難以僞造滴,否則俺的故事沒法說下去鳥。

◇引入中介機構的介紹信


  好,回到剛纔的話題。如果和 B 公司有業務往來的公司很多,每個公司的公章都不同,那前臺就要懂得分辨各種公章,非常滴麻煩。所以,有某個中介公司 C,發現了這個商機。C公司專門開設了一項“代理公章”的業務。
  今後,A 公司的業務員去B公司,需要帶2個介紹信:
  介紹信1
  含有 C 公司的公章及 A 公司的公章。並且特地註明:C 公司信任A公司。
  介紹信2
  僅含有 A 公司的公章,然後寫上:茲有張三先生前往貴公司辦理業務,請給予接洽......云云。

  某些不開竅的同學會問了,這樣不是增加麻煩了嗎?有啥好處捏?
  主要的好處在於,對於接待公司的前臺,就不需要記住各個公司的公章分別是啥樣子的;他/她只要記住中介公司 C 的公章即可。當他/她拿到兩份介紹信之後,先對“介紹信1”的 C 公章,驗明正身;確認無誤之後,再比對“介紹信1”和“介紹信2”的兩個 A 公章是否一致。如果是一樣的,那就可以證明“介紹信2”是可以信任的了。


★相關專業術語的解釋


  費了不少口水,終於說完了一個俺自認爲比較通俗的例子。如果你聽到到這兒,還是想不明白這個例子在說啥,那後續的內容,就不必浪費時間聽了 :(
  下面,俺就着上述的例子,把相關的名詞,作一些解釋。

◇什麼是證書?


  “證書”洋文也叫“digital certificate”或“public key certificate”(專業的解釋看“這裏”)。
  它是用來證明某某東西確實是某某東西的東西(是不是像繞口令?)。通俗地說,證書就好比例子裏面的公章。通過公章,可以證明該介紹信確實是對應的公司發出的。
  理論上,人人都可以找個證書工具,自己做一個證書。那如何防止壞人自己製作證書出來騙人捏?請看後續 CA 的介紹。

◇什麼是CA?


  CA 是“Certificate Authority”的縮寫,也叫“證書授權中心”。(專業的解釋看維基百科“這裏”)
  它是負責管理和簽發證書的第三方機構,就好比例子裏面的中介——C 公司。一般來說,CA 必須是所有行業和所有公衆都信任的、認可的。因此它必須具有足夠的權威性。就好比A、B兩公司都必須信任 C 公司,纔會找 C 公司作爲公章的中介。

◇什麼是CA證書?


  CA 證書,顧名思義,就是CA頒發的證書。
  前面已經說了,人人都可以找工具製作證書。但是你一個小破孩製作出來的證書是沒啥用處的。因爲你【不是】權威的 CA 機關,你自己搞的證書不具有權威性。
  這就好比上述的例子裏,某個壞人自己刻了一個公章,蓋到介紹信上。但是別人一看,不是【受信任】的中介公司的公章,就不予理睬。壞蛋的陰謀就不能得逞啦。
  文本後續提及的證書,若無特殊說明,均指 CA 證書。

◇什麼是證書之間的信任關係?


  在俺的例子裏談到,引入中介後,業務員要同時帶兩個介紹信。第一個介紹信包含了兩個公章,並註明,公章C信任公章A。證書間的信任關係,就和這個類似。就是用一個證書來證明另一個證書是真實可信滴。

◇什麼是證書信任鏈?


  實際上,證書之間的信任關係,是可以嵌套的。比如,C 信任 A1,A1 信任 A2,A2 信任 A3......這個叫做證書的信任鏈。只要你信任鏈上的頭一個證書,那後續的證書,都是可以信任滴。

◇什麼是根證書?


  “根證書”的洋文叫“root certificate”,專業的解釋請看維基百科“這裏”。爲了說清楚根證書是咋回事,再來看個稍微複雜點的例子。
  假設 C 證書信任 A 和 B;然後 A 信任 A1 和 A2;B 信任 B1 和 B2。則它們之間,構成如下的一個樹形關係(一個倒立的樹)。
不見圖 請翻牆

  處於最頂上的樹根位置的那個證書,就是“根證書”。除了根證書,其它證書都要依靠上一級的證書,來證明自己。那誰來證明“根證書”可靠捏?實際上,根證書自己證明自己是可靠滴(或者換句話說,根證書是不需要被證明滴)。
  聰明的同學此刻應該意識到了:根證書是整個證書體系安全的根本。所以,如果某個證書體系中,根證書出了問題(不再可信了),那麼所有被根證書所信任的其它證書,也就不再可信了。這個後果是相當相當滴嚴重(簡直可以說是災難性的),具體細節在下一個帖子《CNNIC 證書的危害及各種清除方法》中介紹。


★證書有啥用?


  CA 證書的作用有很多,俺爲了節省口水,只列出常用的幾個。

◇驗證網站是否可信(針對HTTPS)


  通常,我們如果訪問某些敏感的網頁(比如用戶登錄的頁面),其協議都會使用 HTTPS 而不是 HTTP。因爲 HTTP 協議是明文的,一旦有壞人在偷窺你的網絡通訊,他/她就可以看到網絡通訊的內容(比如你的密碼、銀行帳號、等);而 HTTPS 是加密的協議,可以保證你的傳輸過程中,壞蛋無法偷窺。
  但是,千萬【不要】以爲,HTTPS 協議有了加密,就可高枕無憂了。俺再舉一個例子來說明,光有加密是不夠滴。假設有一個壞人,搞了一個假的網銀的站點,然後誘騙你上這個站點。假設你又比較單純,一不留神,就把你的帳號,口令都輸入進去了。那這個壞蛋的陰謀就得逞鳥。
  爲了防止壞人這麼幹,HTTPS 協議除了有加密的機制,還有一套證書的機制。通過證書來確保,某個站點確實就是某個站點。
  有了證書之後,當你的瀏覽器在訪問某個 HTTPS 網站時,會驗證該站點上的 CA 證書(類似於驗證介紹信的公章)。如果瀏覽器發現該證書沒有問題(證書被某個根證書信任、證書上綁定的域名和該網站的域名一致、證書沒有過期),那麼頁面就直接打開;否則的話,瀏覽器會給出一個警告,告訴你該網站的證書存在某某問題,是否繼續訪問該站點?爲了形象起見,下面給出 IE 和 Firefox 的抓圖:

不見圖 請翻牆

不見圖 請翻牆

  大多數知名的網站,如果用了 HTTPS 協議,其證書都是可信的(也就不會出現上述警告)。所以,今後你如果上某個知名網站,發現瀏覽器跳出上述警告,你就要小心啦!

◇驗證某文件是否可信(是否被篡改)


  證書除了可以用來驗證某個網站,還可以用來驗證某個文件是否被篡改。具體是通過證書來製作文件的數字簽名。製作數字簽名的過程太專業,咱就不說了。後面專門告訴大家如何驗證文件的數字簽名。考慮到大多數人用 Windows 系統,俺就拿 Windows 的例子來說事兒。
  比如,俺手頭有一個 Firefox 的安裝文件(帶有數字簽名)。當俺查看該文件的屬性,會看到如下的界面。眼神好的同學,會注意到到上面有個“數字簽名”的標籤頁。如果沒有出現這個標籤頁,就說明該文件沒有附帶數字簽名。

不見圖 請翻牆

  選擇該標籤頁,看到如下界面。
  順便說一下,某些數字簽名中沒有包含“郵件地址”,那麼這一項會顯示“不可用”;同樣的,某些數字簽名沒有包含“時間戳”,也會顯示“不可用”。不要緊張,這裏顯示的“不可用”跟數字簽名的有效性【沒關係】。
不見圖 請翻牆

  一般來說,簽名列表中,有且僅有一個簽名。選中它,點“詳細信息”按鈕。跳出如下界面:
  通常這個界面會顯示一行字:“該數字簽名正常”(圖中紅圈標出)。如果有這行字,就說明該文件從出廠到你手裏,中途沒有被篡改過(是原裝滴、是純潔滴)。

不見圖 請翻牆

  如果該文件被篡改過了(比如,感染了病毒、被注入木馬),那麼對話框會出現一個警告提示“該數字簽名無效”(圖中紅圈標出)。界面如下:
不見圖 請翻牆

  不論簽名是否正常,你都可以點“查看證書”按鈕。這時候,會跳出證書的對話框。如下:
不見圖 請翻牆

不見圖 請翻牆

  從後一個界面,可以看到俺剛纔說的證書信任鏈。圖中的信任鏈有3層:
第1層是根證書(Thawte Premium Server CA)
第2層是 Thawte 專門用來簽名的證書
第3層是 Mozilla 自己的證書

  目前大多數知名的公司(或組織機構),其發佈的可執行文件(比如軟件安裝包、驅動程序、安全補丁),都帶有數字簽名。你可以自己去看一下。
  建議大夥兒在安裝軟件之前,都先看看是否有數字簽名?如果有,就按照上述步驟驗證一把。一旦數字簽名是壞的,那可千萬別裝。


★總結


  費了半天口水,大致介紹了 CA 證書相關的概念。想更深入瞭解這方面知識的同學,可以找些信息安全或密碼學方面的資料,繼續鑽研。
  如果哪個同學覺得俺有說得不對的地方,或者有需要補充的內容,歡迎到本文留言

轉載自:https://program-think.blogspot.com/2010/02/introduce-digital-certificate-and-ca.html
發佈了112 篇原創文章 · 獲贊 62 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章