密鑰證書攔截
是什麼阻止了某人攔截我的大部分/所有通信並偽造證書?
即使我希望從密鑰伺服器獲取證書,中間人也可以攔截我的請求並向我發送偽造的證書。
當我希望從鏡像下載軟體映像並使用軟體原始網站中提供的密鑰和簽名對該軟體進行身份驗證時,我如何確定我正在下載該網站提供的密鑰和簽名?也許有人截獲了這些下載並發送了我偽造的簽名和密鑰。
這對生活在獨裁國家的人來說是個問題,因為他們的政府可以很容易地做到這一點。
中間人( MITM ) 攻擊可能是擊敗公鑰密碼系統的最可行方法。您可以通過使用來自獨立第二通道的資訊驗證證書來阻止 MITM 。不幸的是,這樣的驗證並不總是容易或萬無一失的。
在沒有中央認證機構的系統(如 PGP/GnuPG)的情況下,第二個渠道應該是電話交談或(甚至更好)面對面的會議。在那次談話中,證書持有者向您證明他/她的身份,並證明您持有他/她的公鑰證書的精確副本。後者通常通過驗證您持有的證書的指紋(加密強雜湊)與所有者證書的指紋(他/她會向您讀出)相匹配來證明。
由於這種嚴格的驗證通常是繁重的或不可行的,因此 PGP 還提供了一種稱為信任網路的東西。簡而言之:人們簽署他們堅信是真實的密鑰(希望在親自驗證它們之後,如前所述),然後他們將這些密鑰分發得非常廣泛。然後,如果我收到一個由我信任的人(即我的信任網路中的某個人)簽名的密鑰,我可以確信該密鑰是真實的。
另一方面,如果我收到一個沒有可信簽名的密鑰證書,並且我很難或不可能親自與它的所有者驗證證書,那麼我就處於不確定的位置。我應該信任這個密鑰嗎?答案將取決於許多因素,包括:我從哪裡獲得密鑰,以及我使用密鑰的目的。這個決定可能不是一件容易的事。例如,我會懷疑地查看任何同時提供簽名和驗證相同簽名所需的證書的網站,因為任何人都可能將這對文件放在那裡。如果我從兩個獨立的位置(例如分別從網站和公鑰伺服器)獲得簽名和證書,我會對簽名和證書更有信心。
在將證書頒發機構(CA) 用作受信任第三方的系統中(例如在 Web 上用於驗證 SSL/TLS 主機證書的系統),用於驗證的獨立第二個通道是本地 PC 上 CA 公鑰證書的儲存。假定您的 PC 的本地 CA 密鑰儲存僅通過受信任的方式進行初始化和更新,因此您(希望)對其中的 CA 和密鑰是真實的有很高的信心。(請注意,您還相信您的密鑰庫中的所有這些 CA實際上是值得信賴的。這種信心是否有充分根據是另一天的討論。)
當網站在 SSL/TLS 連接設置期間向您的瀏覽器提供其主機證書時,瀏覽器會檢查該證書是否由您 PC 的本地 CA 儲存中的 CA 簽名。
$$ For simplicity, I am ignoring certificate chaining, which adds nothing to this discusson. $$要使 MITM 成功地將經過 SSL 身份驗證的網站欺騙到您的瀏覽器,他必須讓他的假主機證書由您本地 CA 商店中的一個 CA 簽名。有幾種可能發生的方式。如果某些惡意軟體干擾了您的本地 CA 商店,那麼您的瀏覽器可能會被假 CA 簽名的假證書欺騙。或者,如果一個合法的 CA(如 Verisign 或 Thawte)被欺騙簽署一個假證書,那麼您的瀏覽器將接受它是真實的,而您對此無能為力。您可以嘗試從您的 CA 儲存中刪除所有已知簽署了錯誤證書的 CA,但隨後您的瀏覽器將開始拒絕由這些 CA 簽署的所有完全有效的證書。不好。 總之,只有在密鑰/證書驗證過程被破壞的情況下,MITM 才能成功。不幸的是,嚴格驗證證書通常太難(在 PGP/GnuPG 的情況下),或者過程可能被各種方式毒害(在受信任的第三方系統的情況下)。