HTTP與HTTPS協議

HTTP

HTTP是基於TCP協議的一個無狀態協議。

缺點

1.使用明文進行傳輸,內容可能被竊聽
TCP/IP協議族的工做機制,通訊內容在全部的通訊線路上均可能遭到窺視
2.不驗證通訊方的身份,通訊方的身份多是假裝
在http協議中的請求和響應不會對通訊方進行確認,任何人均可以發起請求,另外服務器只須要接受到請求,無論對方是誰都會返回一個響應。(對方的IP和端口沒有被WEB服務器設定限制訪問的狀況下)

隱患:

1.可能將響應信息發送到假裝客戶端上
2.有可能請求到假裝的服務器
3.沒法肯定對方是否具備訪問權限
4.即便是無心義的請求也照單全收,沒法阻止海量請求下的DOS攻擊
5.沒法證實報文的完整性,報文可能被篡改

HTTP自己不具備保存以前發送請求和響應的功能,使用HTTP協議,每當有新的請求發生,就會有對應的新響應產生,協議不保存請求或響應報文的信息,這是爲了更快的處理業務,確保協議的可伸縮性,而特地把HTTP設置的如此簡單。

持久鏈接

低版本的TCP每次請求都會斷開鏈接,爲了解決這個問題,HTTP/1.1想出了持久鏈接的辦法,持久鏈接的特色是,只要任意一端沒有明確提出斷開鏈接,則保持TCP鏈接狀態。

管線化

持久鏈接使得多數請求得以管線化,從前發送請求後需等待並收到響應,才能發送下一個請求,管線化出現後,不用等待響應亦可發送下一請求。

SSL

雖然HTTP沒法確認通訊方,可是使用SSL能夠,SSL不只提供加密處理,並且還使用了一種被稱爲證書的手段,可用於肯定通訊方。

SSL採用一種叫作公開密鑰加密的加密處理方式,公開密鑰加密使用一對非對稱的密鑰,一把叫作私有密鑰,另外一把叫作公開密鑰,私有密鑰不能讓其餘任何人知道,而公開密鑰能夠隨意發佈,任何人都能得到。

使用公開密鑰加密方式,發送密鑰的一方使用對方的公開密鑰進行加密處理,對方收到保密信息後,再使用本身的私有密鑰進行解密,利用這種方式,不須要發送用來解密的私有密鑰,也沒必要擔憂密鑰被攻擊者竊聽盜走。

HTTPS

HTTP沒有加密機制,可是能夠經過SSL(安全套接層)或TLS(安全層傳輸協議)的組合使用,加密HTTP通訊內容。
HTTPS不是一個新協議,是由HTTP先和SSL/TSL,再由SSL/TSL和TCP通訊,也就是說HTTPS使用了一個相似隧道的安全協議層進行通訊。只是HTTP接口部分用SSL和TSL協議代替
在SSL創建安全通訊線路以後,就能夠在這條線路上進行HTTP通訊了,與SSL組合使用的HTTP被稱爲HTTPS

爲何不直接對 HTTP 報文進行加密,而是多加一層 SSL/TLS 呢?由於 HTTP 報文分爲報文首部和報文主體,若是隻對發送內容進行加密(也就是報文主體),而未加密的報文首部信息也會致使信息不安全。

爲何https安全;

它使用了ssl/tls協議傳輸,包含證書、卸載、流量轉發、負載均衡、頁面適配等,保障了傳輸的安全性

對稱加密

簡單來講,就是加密和解密都是經過用一個密鑰。
好比我要傳輸的明文是 5201314,我在傳輸前將明文的全部數字+1,獲得:6302425,而後接收方根據相同的密鑰將密文進行解密,獲得明文。
通常的對稱加密算法是使用 XOR(異或) 這個特色,例如:
var a = 5201314 // 明文 var b = 123456 // 密鑰 var c = a ^ b // 加密 var d = c ^ b // 解密 => 5201314

HTTPS防劫持

網站實現Https訪問能有效避免流量劫持,但前提是必須用受信任SSL證書。不一樣於簡單的Http代理,HTTPS 服務須要權威CA機構(如 沃通CA )頒發的SSL證書纔算有效。自簽證書瀏覽器不認,並且會給予嚴重的警告提示。而遇到「此網站安全證書存在問題」的警告時,大多用戶不明白是什麼狀況,就點了繼續,致使容許了不發份子的僞證書,不受信任的HTTPS 流量所以遭到劫持。

Https是頗有效的流量劫持防範措施,不管是網絡服務提供商仍是廣大網民,爲本身的賬戶安全和權益,都要造成使用https訪問網站的習慣和意識,重要的網站必須部署SSL證書實現HTTPS 加密訪問。要得到SSL證書,能夠 沃通CA 機構去申請,能夠選擇免費SSL證書或者付費SSL證書。

HTTPS採用混合加密機制

HTTPS採用共享密鑰加密和公開密鑰加密二者並用的混合加密機制。
相關文章
相關標籤/搜索