淺談HTTPS的工作原理
來源:用戶上傳
作者:
在互聯網中,上網經常用HTTPS協議的網站。
下面討論一下HTTPS的工作方式
信息防護主要涉及兩個方面:信息竊取和信息篡改。對稱/非對稱加密算法能夠避免信息竊取,而消息摘要算法能夠避免信息篡改。
目前常用的加密算法主要分成三類:
· 對稱加密算法
· 非對稱加密算法
· 消息摘要算法
一、對稱加密
基本概念
· 采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
· 速度快,對稱性加密通常在消息發送方需要加密大量數據時使用
· 所謂對稱,就是采用這種加密方法的雙方使用方式用同樣的密鑰進行加密和解密
· 密鑰是控制加密及解密過程的指令
· 算法是一組規則,規定如何進行加密和解密
在對稱加密中,數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理后,使其變成復雜的加密密文發送出去。接收方收到密文后,若想解讀原文,則需要使用加密密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密。
常用算法:
在對稱加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。
不同算法的實現機制不同,可參考對應算法的詳細資料。
優缺點:
· 對稱加密算法的優點是算法公開、計算量小、加密速度快、加密效率高。
· 對稱加密算法的缺點是在數據傳送前,發送方和接收方必須商定好秘鑰,然后使雙方都能保存好秘鑰。
· 其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。
· 另外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成為雙方的負擔。
二、非對稱加密
基本概念
· 對稱加密算法在加密和解密時使用的是同一個秘鑰;而非對稱加密算法需要兩個密鑰來進行加密和解密,這兩個秘鑰是公開密鑰(public key,簡稱公鑰)和私有密鑰(private key,簡稱私鑰)。
· 公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密
· 如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密
· 因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
加密解密過程:
1、乙方生成一對密鑰(公鑰和私鑰)并將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機密信息進行加密后再發送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密后的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密后的信息。
在傳輸過程中,即使攻擊者截獲了傳輸的密文,并得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。
同樣,如果乙要回復加密信息給甲,那么需要甲先公布甲的公鑰給乙用于加密,甲自己保存甲的私鑰用于解密。
常用算法:
· 在非對稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。
三、消息摘要算法可以驗證信息是否被篡改。
在數據發送前,首先使用消息摘要算法生成該數據的簽名,然后簽名和數據一同發送給接收者。接收者收到數據后,對收到的數據采用消息摘要算法獲得簽名,最后比較簽名是否一致,以此來判斷數據在傳輸過程中是否發生修改。
HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密后的數據。具體是如何進行加密,解密,驗證的。
客戶端發起HTTPS請求
,就是用戶在瀏覽器里輸入一個https網址,然后連接到server的443端口。
服務端的配置
采用HTTPS協議的服務器必須要有一套數字證書,可以自己制作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。
傳送證書
這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等等。
客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨即值。然后用證書對該隨機值進行加密。
傳送加密信息
這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。
服務段解密信息
服務端用私鑰解密后,得到了客戶端傳過來的隨機值(私鑰),然后把內容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復雜,數據就夠安全。
傳輸加密后的信息
這部分信息是服務段用私鑰加密后的信息,可以在客戶端被還原
客戶端解密信息
非對稱加密算法的性能是非常低的,原因在于尋找大素數、大數計算、數據分割需要耗費很多的CPU周期,所以一般的HTTPS連接只在第一次握手時使用非對稱加密,通過握手交換對稱加密密鑰,在之后的通信走對稱加密。
轉載注明來源:http://www.hailuomaifang.com/1/view-14821826.htm