大家在網上衝浪的時候,經常會遇到下面這種情況,即提醒與該網站的鏈接不安全。
不安全的原因大部分盒友也都清楚,是因爲使用了已經被淘汰的HTTP協議,而不是帶有加密認證功能的HTTPS協議和HTTPS安全證書。那麼這兩類協議有什麼區別?以及爲什麼要採用安全證書?我們先來探討第一個問題。
HTTP和HTTPS的區別
HTTP協議是互聯網上應用最爲廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標準(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。即我們的谷歌瀏覽器是一個本地客戶端,通過網址URL,從互聯網服務器上下載數據,並呈現我們(網頁)。
所謂協議,理解爲一系列的規則和約定。就好像在一場遊戲中,大家需要遵循共同的規則才能順利進行遊戲。互聯網協議也是如此,它規定了計算機在網絡中如何相互通信、交換數據的方式和格式。所謂超文本,盒友們最熟悉的應該就是 HTML 了,它本身只是純文字文件,但內部用標籤定義了多種多媒體鏈接,組成文字、圖片、音頻和視頻等的混合體,含有“超鏈接”,能夠從一個“超文本”跳躍到另一個“超文本”,形成複雜的非線性、網狀的結構關係。
但是HTTP協議是不安全的,不包含加密和認證的部分,所有就誕生了HTTPS,HTTPS是以安全爲目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層(後來改成了升級版的TLS,這裏統一用SSL),HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。HTTPS協議的主要作用可以分爲兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是數字簽名,確認網站的真實性。
下面從兩個方面來介紹SSL/TLS帶來的安全性,即:1.驗證服務器的身份,2.瀏覽器和服務器之間的通信加密。
通信加密
證書體系是利用數字簽名來構建的,數字簽名需要用到非對稱加密的知識,所以我們先談談第二個功能,即建立一個加密信道,我們先假設互聯網服務器和我們的瀏覽器客戶端已經認證了雙方的身份,這時我們要引入公鑰加密:
公鑰加密:客戶端和服務端均擁有一個公有密匙和一個私有密匙。公有密匙可以對外暴露,所有人都知道你的公鑰,而私有密匙只有自己可見。 當我們想給A發消息時,我們使用A的公有密匙加密消息,只有對應的A的私有密匙才能解開。這樣客戶端在發送消息前,先用服務器的公匙對消息進行加密,服務器收到後再用自己的私匙進行解密。
公鑰加密採用公有密匙和私有密匙的方式,解決了http中消息保密性問題,建立起來加密的通信信道。但是缺點也很明顯,即公鑰和私鑰是通過數學算法生成的,常見的TLS簽名使用RSA2048或者橢圓曲線,加密的速度和加密的規模都是很大的,非常的麻煩,所以還要引入對稱加密:
在對稱加密中,加密和解密使用相同的密鑰。這就好比有一把鎖和一把鑰匙,用這把鑰匙把鎖鎖上,然後再用這把鑰匙來開鎖。
對稱加密的優點是加密和解密速度快,效率高。例如,在大量數據需要加密傳輸的情況下,能迅速完成加密工作。
對稱加密的性能相對對稱加密來說會慢上幾倍甚至幾百倍,比較消耗系統資源。正是因爲如此,https將兩種加密結合了起來,也就引入了第一部分,數字簽名與證書。
數字證書
爲了應對上面非對稱加密帶來的效率問題,HTTPS協議引入了數字證書與數字簽名
數字簽名與公鑰加密原理類似,也是有公鑰和私鑰,簽名者使用自己的私鑰對消息進行處理,生成一個獨特的簽名。接收者則使用發送者的公鑰來驗證這個簽名。如果驗證通過,就可以確認消息的來源和完整性。例如,在電子合同簽署中,一方使用自己的私鑰對合同內容進行簽名,另一方收到後用對應的公鑰驗證,就能確定合同來自對方且內容未被改動。
一些具有廣泛公信力的組織(稱之爲CA)會爲網站簽發數字安全證書,具體過程是CA 會把持有者的公鑰、⽤途、頒發者、有效時間等信息使⽤CA⾃⼰的私鑰將其簽名,⽣成 Certificate Signature,也就是 CA 對證書做了簽名;
CA(證書頒發機構):負責頒發、管理和撤銷數字證書,具有權威性和公信力。 RA(註冊機構):接收證書申請、驗證身份信息並傳遞給 CA。 VA(驗證機構):負責驗證數字證書的有效性和狀態。
而通常瀏覽器和操作系統中集成了這些CA 的公鑰信息,瀏覽器收到證書後可以使⽤ CA 的公鑰對網站的 暑期前面進行認證,來判斷該網站是否是合法的交互方。即如果我們信任CA,那麼我們就應該信任這個網站服務器。
通過這種授權認證和數字簽名的手段,我們就可以在建立加密信道之前判斷對方的身份,避免遭受到攻擊。
因此,在一開始,客戶端向服務器端索要證書並驗證公鑰,雙方通過密鑰協商(最簡單的例子就是用公鑰加密的方法去加密對稱密鑰,傳遞給對方)生成”對話密鑰”,該密鑰爲對稱加密使用的密鑰,雙方使用對稱加密來進行加密通信,這樣就避免了公鑰加密的效率問題,同時避免了對稱密鑰密鑰保密和分發的問題。
當然,真實的TLS算法比這個流程更加複雜且,通常爲密鑰交換算法 + 簽名算法 + 對稱加密算法 + 摘要算法,比如使用 ECDHE 算法(基於離散對數的公鑰加密算法)進行密鑰交換,用 RSA (基於因子分解的公鑰算法)簽名和身份認證,握手後的通信使用 AES 對稱算法(基於置換和混淆的對稱加密算法)。
有什麼缺點?
雖然說HTTPS有很大的優勢,但其相對來說,還是存在不足之處,主要是兩點,一是慢,二是貴
雖然說上面看起來還蠻快的,但是相比不交換證書以及通信不加密的HTTP,HTTPS要慢的多,在《HTTP與HTTPS的區別,詳細介紹[通俗易懂]》提到,HTTPS協議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電。
另外,證書肯定是要花錢的,常見的https證書包括DVSSL證書(域名驗證)、OV SSL證書(組織驗證)和EV SSL證書(擴展驗證)。我簡單搜了一下,似乎DV證書價格相對較低,通常在幾百元之間。OV證書需要驗證企業身份,價格在幾百至幾千不等。而EV證書則是安全性最高的證書,價格在數千元以上。而且證書這東西有“保質期”,需要年年找CA續費,所以這也造成一些小網站仍在使用HTTP協議(比如我們山大的青春山大網站)
總結一下,網站的安全認證和簽名使用了密碼學中的數字簽名以及公鑰加密/對稱加密算法,保障了網站內容不被惡意篡改。
參考自:
HTTP與HTTPS的區別 – 愛笑的蛙蛙 – 博客園
HTTP與HTTPS的區別,詳細介紹[通俗易懂]-全棧程序員站長-騰訊雲
HTTP 與 HTTPS 的區別-菜鳥教程
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com