https數字證書加密理解

       加密的目的是隻有通信雙方能看到通信內容。

       使用過程中一般是一個服務端,多個客戶端。

       目前加密方式要麼是對稱加密,要麼是非對稱加密,對稱加密是加密解密都是同一個,非對稱加密分公鑰和私鑰,私鑰加密的內容公鑰都能解,而公鑰加密的只有私鑰能解。

       先考慮直接用對稱加密和非對稱加密存在的問題,如果服務端與客戶端都使用一個對稱加密,大家都知道密碼,相當於明文通信了;如果使用非對稱加密,私鑰放服務器端,客服端可以安全發送信息給服務器,但服務器發送的大家都能解密,大家都能看到。所以使用一個對稱加密和非對稱加密都存在問題。

       那怎麼解決這個問題?首先不同的客服端採用不同的非對稱加密肯定不對,一對一通信不應該分公私,因此解決方案就是不同客戶端與服務器通信採用不同的對稱加密。這又存在個問題,這個對稱加密放在客戶端還是放服務器呢?如果放客戶端/服務器,又怎麼發送給服務器/客戶端,即使別人截獲也無法看到真實內容呢?

        如果對稱加密放服務器端,然後通信時發給客戶端可以麼? 首先發送給客戶端肯定不能明文方式,那就得加密,加密必須只能客戶端知道,這就需要先將解密方法加密發給客戶端,這就會陷入死循環中,雞與蛋的問題。

        終極解決方案:將客戶端與服務端的對稱加密方式生成放客服端,而非對稱加密的私鑰放服務器端,公鑰放客服端。客戶端需要與服務器通信時,將對稱加密方式以非對稱加密方式發送給服務器端,這個過程是安全的,因爲只有服務器有私鑰,然後後面通信就可以使用客服端傳來的對稱加密來加密數據,這個加密算法只有當前客戶端與服務器知道,所以雙方通信就安全了。

       這還有個問題,客服端一開始是沒有非對稱加密的公鑰的,那就需要向服務器端請求,然後服務器發送給客戶端,如果這個公鑰被頂包了怎麼辦?

       這就是數字證書的作用了,在服務器端使用數字證書的私鑰加密非對稱的公鑰,這步我們只是確保拿到的是正確的公鑰,即使被看到也是沒關係的,因爲公鑰本來就是公開的,怎麼確定拿到的就是正確的?經過數字證書私鑰加密過的,只有對應的公鑰能解密,如果解密失敗說明什麼?說明被替換了,能成功解密就說明拿到的公鑰是正確的。

    到此,整個過程就清楚了。剩下的就是客戶端的數字證書驗證了。

發佈了55 篇原創文章 · 獲贊 18 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章