非對稱加密時序圖
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
-
對稱密鑰加密
- 單密鑰, 加密和解密是相同的密鑰。
- 密鑰保存很重要,加密方和解密方任一方泄露密鑰,將會使通信存在被竊聽、偷換等危險。
- 例:DES(Data Encryption Standard),通用的雙鑰加密算法爲RSA( Rivest-Shamir-Adleman)。
-
非對稱密鑰加密
- 密鑰分爲公鑰和私鑰,公私密鑰不相同,但相互對應。
- 公鑰加密的信息只能私鑰才能解開,反之亦然。
- 公鑰加密私鑰解密,用於通信信息加密;私鑰加密公鑰解密,用於加密方數字簽名,證明身份有效性。
-
非對稱加密時序圖
- 通常C/S架構中加密通信必須驗證S(Server)端的身份有效性,即證書、數字簽名等。
- 中間人攻擊(Middle-Man Attack): 中間人使用自己的證書和公鑰,對client冒充server,對server冒充client.劫持、篡改雙方的通信而不被察覺。
- 針對以上問題,需要server端向第三方的證書權威機構(CA)公證自己的信息、域名和公鑰等,CA對其進行私鑰加密生成"數字證書"(Digital Certificate)。server端後續通信過程中,只需要再加上這個數字證書,client收到後,根據CA的相關公鑰解開證書,獲取到server的信息、域名和公鑰等,然後公鑰解密簽名, 比對信息是否被篡改。能用證書中解開的公鑰解密簽名,則證明發信人的確是想要的client端,比對簽名解密後的digest(hash摘要),則能確認信息是否被篡改,這樣就保證了加密通信的可靠。
-
ssl 雙向驗證、單向驗證和雙方均不驗證
- 一般Web應用是SSL單向驗證,客戶端驗證服務端的身份,服務端不驗證客服端,如瀏覽器訪問服務端網站。企業內微服務、應用間的雙向通行往往需要雙向驗證。
- 從客戶端方面來看,對於服務端的證書可以選擇驗證或者忽略(即始終信賴),後者雖然不安全,但是對於自己開發部署的企業內部程序而言會比較方便。
<全文完>