我們都知道HTTPS能夠加密信息突颊,以免敏感信息被第三方獲取鲁豪。所以很多銀行網(wǎng)站或電子郵箱等等安全級別較高的服務(wù)都會采用HTTPS協(xié)議。
HTTPS其實是有兩部分組成:HTTP +SSL/ TLS律秃,也就是在HTTP上又加了一層處理加密信息的模塊爬橡。服務(wù)端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸?shù)臄?shù)據(jù)都是加密后的數(shù)據(jù)棒动。具體是如何進行加密糙申,解密,驗證的船惨,且看下圖柜裸。
這個沒什么好說的缕陕,就是用戶在瀏覽器里輸入一個https網(wǎng)址,然后連接到server的443端口疙挺。
采用HTTPS協(xié)議的服務(wù)器必須要有一套數(shù)字證書扛邑,可以自己制作,也可以向組織申請铐然。區(qū)別就是自己頒發(fā)的證書需要客戶端驗證通過蔬崩,才可以繼續(xù)訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇搀暑,有1年的免費服務(wù))沥阳。這套證書其實就是一對公鑰和私鑰。如果對公鑰和私鑰不太理解自点,可以想象成一把鑰匙和一個鎖頭桐罕,只是全世界只有你一個人有這把鑰匙,你可以把鎖頭給別人樟氢,別人可以用這個鎖把重要的東西鎖起來冈绊,然后發(fā)給你,因為只有你一個人有這把鑰匙埠啃,所以只有你才能看到被這把鎖鎖起來的東西死宣。
這個證書其實就是公鑰,只是包含了很多信息碴开,如證書的頒發(fā)機構(gòu)毅该,過期時間等等。
這部分工作是有客戶端的TLS來完成的潦牛,首先會驗證公鑰是否有效眶掌,比如頒發(fā)機構(gòu),過期時間等等巴碗,如果發(fā)現(xiàn)異常朴爬,則會彈出一個警告框,提示證書存在問題橡淆。如果證書沒有問題召噩,那么就生成一個隨即值。然后用證書對該隨機值進行加密逸爵。就好像上面說的具滴,把隨機值用鎖頭鎖起來,這樣除非有鑰匙师倔,不然看不到被鎖住的內(nèi)容构韵。
這部分傳送的是用證書加密后的隨機值,目的就是讓服務(wù)端得到這個隨機值,以后客戶端和服務(wù)端的通信就可以通過這個隨機值來進行加密解密了疲恢。
服務(wù)端用私鑰解密后凶朗,得到了客戶端傳過來的隨機值(私鑰),然后把內(nèi)容通過該值進行對稱加密冈闭。所謂對稱加密就是俱尼,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰萎攒,不然無法獲取內(nèi)容遇八,而正好客戶端和服務(wù)端都知道這個私鑰,所以只要加密算法夠彪悍耍休,私鑰夠復(fù)雜刃永,數(shù)據(jù)就夠安全。
這部分信息是服務(wù)段用私鑰加密后的信息羊精,可以在客戶端被還原
客戶端用之前生成的私鑰解密服務(wù)段傳過來的信息斯够,于是獲取了解密后的內(nèi)容。整個過程第三方即使監(jiān)聽到了數(shù)據(jù)喧锦,也束手無策读规。
作者:朱祁林
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載燃少,但未經(jīng)作者同意必須保留此段聲明束亏,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利阵具。
SSL的位置
SSL介于應(yīng)用層和TCP層之間碍遍。應(yīng)用層數(shù)據(jù)不再直接傳遞給傳輸層,而是傳遞給SSL層阳液,SSL層對從應(yīng)用層收到的數(shù)據(jù)進行加密怕敬,并增加自己的SSL頭。
RSA性能是非常低的帘皿,原因在于尋找大素數(shù)东跪、大數(shù)計算、數(shù)據(jù)分割需要耗費很多的CPU周期鹰溜,所以一般的HTTPS連接只在第一次握手時使用非對稱加密虽填,通過握手交換對稱加密密鑰,在之后的通信走對稱加密奉狈。