
我讀過有關在客戶端主機上產生 2 個金鑰(私有金鑰和公用金鑰)並將公用金鑰複製到伺服器主機的資訊。
據我了解,(如果我錯了,請糾正我):伺服器用公鑰加密資料並發送給客戶端,客戶端用私鑰解密。
但是,如果我需要在客戶端上加密資料以發送到伺服器,該怎麼辦?
公鑰加密客戶端上的資料?但如果伺服器只有公鑰,如何解密呢?
SSH 加密如何運作?
答案1
答案2
我認為您需要了解的第一件事是,雖然 SSH 和 SSL 等許多加密協定使用 PKI 進行身份驗證,但幾乎所有這些系統都不會使用 PKI 來實際傳輸有效負載。
PKI 的 CPU 消耗太大,無法用於傳輸實際的有效負載資料。所發生的情況是,PKI 用於協商隨機產生的金鑰,與對稱加密協定一起使用。要使用的協議也是經過協商的,並且應該是兩個系統可以同意的最強協議。因此,一旦完成最初的握手和協商,幾乎一切都只是標準的對稱密碼。
答案3
這裡有一些實際的例子,假設密鑰 A 被保密,因此是私鑰,密鑰 B 被發佈在公共可訪問的地方,因此是公鑰。
因此,如果您想向每個人發送一條訊息,並且希望他們驗證該訊息是否來自您並且在傳遞過程中未被更改,您可以發送訊息並包含使用密鑰 A 加密的訊息的哈希值。鑰B 可以解密雜湊值,將其與他們收到的訊息進行比較,並驗證該訊息是否來自您(因為只有擁有金鑰A 的人才能產生成功解密雜湊值的加密有效負載,並且因為您是唯一擁有密鑰A 的人,它只能來自您)。這稱為簽名。
現在假設有人想向您發送秘密訊息,但不想透露他們是誰。他們可以使用對稱金鑰加密訊息(正如 Zoredache 所提到的,對稱金鑰的成本要低得多),然後使用該金鑰並使用金鑰 B 對其進行加密,然後將其發送給您。因為只有密鑰 A 可以解密使用密鑰 B 加密的內容,所以其他人無法看到發送給您的訊息中的內容。這就是普通加密的工作原理以及 SSH 交換資料的方式。
答案4
你寫
“公鑰對客戶端上的資料進行加密?但是如果伺服器只有公鑰,如何解密呢?”
我對此了解不多,但我想我可以很清楚地回答這個問題。
如果A想要向B發送訊息,A使用B的公鑰。這就是 B 能夠解密它的方式。
如果 A 使用自己的公鑰來加密該訊息,那麼 B 實際上將無法解密該訊息。
這裡解釋一下
http://www.comodo.com/resources/small-business/digital-certificates2.php