2013-08-02 175 views
1

我一直在尋找關於SSL證書和加密協議的信息。我得到了很好的答案,特別是在這個網站上。SSL證書和身份驗證

只有一件事我沒有得到。如果我得到了這個權利,身份驗證(我的意思是驗證服務器身份,而不是證書身份)是使用非對稱密碼術進行的。

這意味着步驟將是(阻止我,如果我錯了):

  • 客戶端使用驗證公鑰加密的隨機挑戰字符串,並將其發送給服務器。
  • 服務器使用其私鑰解密並將其發送回客戶端。
  • 客戶端檢查服務器的響應是否與剛剛發送的隨機質詢字符串匹配。

什麼防止假冒服務器做這樣的,一個真正的證書,比如說,www.example.com但不具有私有密鑰?

  • 客戶端使用經過驗證的公鑰對隨機挑戰字符串進行加密並將其發送到服務器。
  • 假服務器將加密的隨機挑戰字符串發送到www.example.com,作爲客戶端希望檢查其身份。
  • www.example.com將解密後的隨機挑戰字符串發送回假服務器。
  • 假服務器將其發送回客戶端。
  • 身份確認?

回答

2

客戶端使用驗證的公鑰對隨機挑戰字符串 進行加密並將其發送到服務器。

客戶端用服務器的公鑰加密某些東西的密鑰交換模式是RSA密鑰交換模式。在section F.1.1.2 of the TLS specification中有完整的描述。

實質上,客戶端生成預主密鑰,使用服務器的公鑰(在服務器發送的服務器證書中找到)對其進行加密,然後將其發送到服務器(在客戶端密鑰交換消息中)。而已。只有具有匹配私鑰的服務器才能解密它。服務器不會將任何破譯的版本發送回客戶端,因此無法要求第三方執行您似乎想到的任何操作。

-2

這只是一個稻草人的論點。您列出的步驟完全是虛構的。該實際步驟是:

  1. 服務器發送其證書作爲TLS握手的一部分。
  2. 服務器通過其證書和其他由其私鑰簽名的握手消息發送數字簽名。
  3. 客戶端使用證書中的公鑰來驗證數字簽名。

只有擁有與證書中公鑰對應的私鑰的服務器才能成功。

我建議你做一些閱讀,而不是在互聯網上隨機貼子:儘量規範參考:RFC 2246

+0

@BabuSrinivasan你錯了。 #2沒有錯。您將發行方簽名的證書中包含的簽名與TLS握手協議期間交換的簽名混淆,該協議在整個握手過程中計算,包括證書在內。否則,客戶端不可能認證服務器實際擁有該證書。坦率地說,你似乎對此一無所知。我也建議您閱讀RFC 2246。你顯然還沒有聽說過自簽證書。 – EJP

+0

@downvoter我的獎盃內閣的另一個downvoted正確的答案。這種濫用投票系統只會降低本網站的實用性。 – EJP

+0

您的「規範性參考」鏈接已關閉以及您的帖子 – user1855153