我們常常在使用網(wǎng)上銀行時看到的連接都是以“https”開始的,那么這個https是什么呢?這其實是表示目前連接使用了SSL進行加密,能保證客戶端到服務(wù)器端的通信都在被保護起來,那么瀏覽器是如果實現(xiàn)的呢?下面讓我們來介紹一下SSL基本的實現(xiàn)方法。
首先我們有兩種基本的加解密算法類型:對稱加密,非對稱加密(公私鑰加密),現(xiàn)在介紹一下這兩種加密算法的特點:
對稱加密:密鑰只有一個,加密解密為同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等,示意圖如下:
非對稱加密:密鑰成對出現(xiàn)(且根據(jù)公鑰無法推知私鑰,根據(jù)私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等,示意圖如下:
根據(jù)上面的兩種加密方法,現(xiàn)在我們就可以設(shè)計一種無法讓他人在互聯(lián)網(wǎng)上知道你的通訊信息的加密方法:
在服務(wù)器端存在一個公鑰及私鑰
客戶端從服務(wù)器取得這個公鑰
客戶端產(chǎn)生一個隨機的密鑰
客戶端通過公鑰對密鑰加密(非對稱加密)
客戶端發(fā)送到服務(wù)器端
服務(wù)器端接受這個密鑰并且以后的服務(wù)器端和客戶端的數(shù)據(jù)全部通過這個密鑰加密(對稱加密)
HTTPS通信過程的時序圖如下:
正如上圖所示,我們能保證下面幾點:
客戶端產(chǎn)生的密鑰只有客戶端和服務(wù)器端能得到
加密的數(shù)據(jù)只有客戶端和服務(wù)器端才能得到明文
客戶端到服務(wù)端的通信是安全的
當(dāng)然實際的SSL實現(xiàn)算法復(fù)雜的多,并有數(shù)據(jù)校驗、身份驗證等功能,如果需要更多了角請參看RFC2246及RFC4346文檔。