
我對 CA(憑證授權單位)憑證有誤解。不管我讀了多少東西,仍然不完全清楚。
讓我們舉個例子,鮑伯訪問一個網站。為了在 Bob 和網站之間進行可信賴且加密的通信,網站首先向 Bob 頒發數位證書,其中包含公鑰和其他資訊。
然後,鮑伯將使用該公鑰來加密他將發送到網站的數據,而網站將使用相應的私鑰對其進行解密。 (這裡只考慮單向通訊)
中間人可以冒充網站並向鮑伯提供他認為有效的數位證書,然後事情就會變得非常糟糕。
如果網站使用 CA 來解決此問題來驗證或產生自己的證書,我的哪一項陳述是正確的,或者兩者都部分正確? :
1)Bob只是將從網站收到的數位憑證與從CA收到的數位憑證進行比較,因此不執行解密,只是進行比較?在這種情況下,世界上每個 CA 憑證都儲存在 Bob 的本機上進行比較嗎?這是怎麼發生的。
2) Bob 只有一個特殊的 CA 證書,用於解密網站的憑證。 CA 之前已經用 CA 私鑰對 Bob 想要使用的網站的數位憑證進行了加密。然後,Bob 從該網站取得證書,並使用 CA 證書中的 CA 公鑰對其進行解密。如果憑證無法解密,很明顯CA沒有對其進行加密,因此無效。
提前致謝。
答案1
你確實有一個誤會。事實上,你的兩種情況都是錯的。
首先,數位憑證由憑證授權單位(CA)頒發,包含用於數位簽章的公鑰並指定簽署者的身分。憑證用於確認公鑰屬於簽署者,其中 CA 充當擔保人。
就憑證的有效性而言,憑證透過互聯網而不是本地的 CA 進行驗證,並在此過程中從 CA 檢索公鑰。
公鑰用於使用哈希演算法來驗證簽名的物件是否確實是簽名的物件並且沒有以任何方式更改。
正如一張圖片勝過一千個文字:
來源 :了解數位簽名。
答案2
首先,有兩步驗證 CA 核發的憑證:
- 這個特定的 CA 是否值得信任來頒發憑證?
- 該證書真的是由其聲稱的 CA 頒發的嗎?
你的兩個描述幾乎都是正確的一半整個過程卻完全忽略了另一半。將兩者結合起來,你就走上了正確的道路。
但第二點:未使用加密在這種情況下,憑證(包含公鑰)可以用於加密數據,但是不是來解密它。執行的是簽名驗證。
(我懷疑您的一些困惑是由於在某處讀到的,例如「在RSA 中,加密和簽名是相同的」。忘記這一點。雖然在數學意義上大部分是正確的,但在實踐中它具有令人難以置信的誤導性,因為意圖兩者之間是完全相反的。所以當你閱讀一份談論簽署某些內容的文件時不要假設它與加密的意思相同。
“這個網站的證書真的是它所聲稱的CA頒發的嗎?”
關於這一點,變體#2 幾乎是正確的。至少涉及兩個憑證 - 一個代表網站(「伺服器憑證」),另一個代表 CA 本身(稱為「CA 憑證」或根憑證)。
該網站自己的證書是未加密使用 CA 的私鑰;這是簽與 CA 的私鑰。如果無法驗證簽名,則很明顯 CA 並未真正簽署所聲明的內容。
(實際上,鏈通常會更長一點,至少包含三個憑證 - 但機制仍然相同;每個憑證都簽署鏈中的下一個憑證。)
但是 Bob 首先要從哪裡拿到這個「特殊 CA 憑證」呢?見下文。
“一般來說,這個 CA 是否可以頒發證書?”
將收到的 CA 憑證與本機電腦中儲存的「可信任根」清單進行比較。
現在,這與您在變體 #1 中描述的類似,只是電腦不儲存所有證書發布由 CA – 相反,它只儲存屬於 CA 的證書他們自己,即您的變體 #1 中的「特殊 CA 憑證」。
大致有50–100大多數系統上都安裝了“根證書”——不完全是“世界上的每個 CA”,但它涵蓋了許多大大小小的公司。 (列入名單需要花費相當多的費用。)