- HTTP有以下安全性問題:
- 明文通信烟阐,內容可能被監(jiān)聽
- 不驗證通信方身份辣卒,通信方身份可能遭遇偽裝
- 無法證明報文的完整性,報文可能遭篡改
密碼學三要素:機密性倦春、認證性户敬、完整性
HTTPS并不是新協議,而是讓HTTP和SSL(Secure Sockets Layer)通信睁本,再由SSL和TCP通信尿庐,也就是說HTTPS使用了隧道進行通信。
通過使用SSL呢堰,HTTPS具有了加密(防竊聽)抄瑟、認證(防偽裝)和完整性保護(防篡改)。
加密
- HTTPS采用混合的加密機制:
- 使用非對稱密鑰加密方式枉疼,傳輸對稱密鑰加密方式所需要的密鑰锐借,從而保證安全性问麸;
- 獲取到對稱密鑰后,再使用對稱密鑰加密方式進行通信钞翔,從而保證效率严卖。
認證
- 通過使用 證書 來對通信方進行認證。
- 數字證書認證機構(CA布轿,Certificate Authority)是客戶端與服務器雙方都可信賴的第三方機構哮笆。
- 服務器的運營人員向 CA 提出公開密鑰的申請,CA 在判明提出申請者的身份之后汰扭,會對已申請的公開密鑰做數字簽名稠肘,然后分配這個已簽名的公開密鑰,并將該公開密鑰放入公開密鑰證書后綁定在一起萝毛。
- 進行 HTTPS 通信時项阴,服務器會把證書發(fā)送給客戶端“拾客戶端取得其中的公開密鑰之后环揽,先使用數字簽名進行驗證,如果驗證通過庵佣,就可以開始通信了歉胶。
完整性保護
- SSL 提供報文摘要功能來進行完整性保護。
- HTTP 也提供了 MD5 報文摘要功能巴粪,但不是安全的通今。例如報文內容被篡改之后,同時重新計算 MD5 的值肛根,通信接收方是無法意識到發(fā)生了篡改辫塌。
- HTTPS 的報文摘要功能之所以安全,是因為它結合了加密和認證這兩個操作派哲。試想一下璃氢,加密之后的報文,遭到篡改之后狮辽,也很難重新計算報文摘要一也,因為無法輕易獲取明文。
HTTPS的缺點
- 因為需要進行加密解密等過程喉脖,因此速度會更慢椰苟;
- 需要支付證書授權的高額費用。