1. 程式人生 > >SSL、數字簽名、CA 工作原理通俗描述

SSL、數字簽名、CA 工作原理通俗描述

SSL(Secure Socket Layer) 是一種加密技術,可以提供對稱加密和非對稱加密。由於它在協議層里正好是在傳輸層與應用層之間,這就決定了上層應用必須經過它,這就是它廣泛流行和易於實現的原因。


對稱加密有md5,sha1。由於md5已被學者證明可以計算出加密衝突,即它有一定的不安全性,所以建議用sha1加密。


非對稱性加密有RSA,即密碼有一對,一個私鑰,一個公鑰,公鑰可以讓所有人知道,私鑰只有自己知道。


這樣理解,伺服器產生一對金鑰,公鑰給別人即客戶端,客戶端用它來加密,加密後發給服務端,服務端用自己的私鑰解密後得到資料。


數字簽名就和上面的過程相反,即資料由服務端用私鑰加密,客戶端用服務端的公鑰解密,解得出來就說明這資料包的確是出服務端發過來的。


數字簽名是由服務端自己籤的,但沒人去驗證這個服務端是不是你所要訪問的真實的,所以需要第三方來幫忙檢驗,就和支付寶處於第三方來協調的位置一樣。這個第三方就叫CA。


所以伺服器產生的公鑰就交給CA,CA用CA自己的私鑰加密,即數字簽名,加密生會生成證書,證書還是要交給服務端,放在服務端那邊。當客戶端訪問服務端時,服務端就會把這個證書安裝到客戶端上。


客戶端就會用CA提供的CA自己的公鑰來解密這個證書,(當然這個CA是瀏覽器預裝時嵌入的可信的CA,如果不是預裝時嵌入的CA,此時就沒有CA的公鑰,就解不了,就會彈出告警。)解得開就說明這個證書是某個CA認證過了的,是可信的,解開後就會得到資料,而這個資料就是服務端的公鑰,此時用這個公鑰與服務端進行資料傳輸。


資料傳輸過程中,由於RSA方式加解密速度非常慢,所以會把對稱與非對稱兩者結合起來用,即用RSA把對稱加密的密碼進行加密傳輸,再用對稱密碼進行加解密,這樣就可以提高效率,且是安全的。