HTTP+加密+認證+完整性保護=HTTPS算法
HTTP是一種新協議嗎?:瀏覽器
不是,HTTPS只是HTTP通訊接口部分用SSL和TLS協議代替而已安全
HTTP中,身處應用層的HTTP直接和TCP通訊。而在使用了SSL時,則變成HTTP先和SSL通訊,再由SSL和TCP通訊,在採用了SSL以後,HTTP就擁有了HTTPS的加密,證書和完整性保護這些功能服務器
只有在HTTP協議中才可使用SSL協議嗎?:網絡
SSL是獨立於HTTP的協議,不光是HTTP協議,其餘運行在應用層的SMTP和Telnet等協議都可配合SSL協議使用。網站
SSL的具體加密方法?:加密
SSL採用一種叫作公開密鑰加密的加密處理方式接口
這裏說一下近代的加密方式,加密算法公開,而密鑰保密。內存
共享密鑰加密(對稱密鑰加密):發送端須要把密鑰發送給接收端,這裏就存在安全性問題,密鑰的發送也須要安全保密,否則被竊取到了,竊聽者既有了公開的加密算法,又有了密鑰,破解密鑰垂手可得,那麼咱們就須要把密鑰安全的發送到接收端,可是咱們若是能夠把密鑰安全的發送給接收端,那咱們就能夠安全地把數據發送過去,那還要密鑰幹什麼呢?因此如今採用的加密方式摒棄了以前的,公開加密算法,保護密鑰的方式。資源
公開密鑰加密(非對稱密鑰加密):使用兩把密鑰,一把叫作私有密鑰,另外一把叫作公開密鑰,私有密鑰不能讓其餘任何人知道,而公開密鑰則能夠隨意發佈,任何人均可以得到。發送密文的一方使用對方的公開密鑰進行加密處理,對方收到被加密的信息後,再使用本身的私有密鑰進行解密。
優缺點:公開密鑰加密明顯安全性要更高一些,可是公開密鑰加密的處理速度要比共享密鑰加密慢。
HTTPS採用的加密方式?:
HTTPS採用共享密鑰加密和公開密鑰加密二者並用的混合加密機制。若密鑰可以實現安全交換,那麼有可能會考慮僅使用公開密鑰加密來通訊。
在交換密鑰環節使用公開密鑰加密方式,以後的創建通訊交換報文階段則使用共享密鑰加密方式
公開密鑰的安全性彷佛是完美的,是這樣嗎?:
不是,公開密鑰加密方式仍是存在一些問題。那就是沒法證實公開密鑰自己就是貨真價實的公開密鑰。好比,正準備和某臺服務器創建公開密鑰加密方式下的通訊時,如何證實收到的公開密鑰就是本來預想的那臺服務器發行的公開密鑰。或許在公開密鑰傳輸途中,真正的公開密鑰已經被攻擊者替換掉了。
可是這種不完美是由解決辦法的,可使用由數字證書認證機構(CA)和其相關機關頒發的公開密鑰證書。數字證書的業務流程是這樣的:
首先,服務器的運營人員向數字證書認證機構提出公開密鑰的申請。數字證書認證機構在判明提出申請者的身份以後,會對已申請的公開密鑰作數字簽名,而後分配這個已簽名的公開密鑰,並將該公開密鑰放入公鑰證書後綁定在一塊兒。
服務器會將這份由數字證書認證機構頒發的公鑰證書發送給客戶端,以進行公開密鑰加密方式通訊。公鑰證書也可叫作數字證書或直接稱爲證書。
接到證書的客戶端可使用數字證書認證機構的公開密鑰,對那張證書上的數字簽名進行驗證,一旦驗證經過,客戶端即可明確兩件事:一,認證服務器的公開密鑰的是真實有效的數字證書認證機構。二,服務器的公開密鑰是值得信賴的。
此處認證機關的公開密鑰必須安全地轉交給客戶端。使用通訊方式時,如何安全轉交是一件很困難的事,所以,多數瀏覽器開發商發佈版本時,會事先在內部植入經常使用認證機關的公開密鑰。
SSL慢嗎?:
因爲HTTPS還須要作服務器,客戶端,雙方加密及解密處理,所以會消耗CPU和內存等硬件資源,SSL通訊部分消耗網絡資源。而SSL通訊部分又由於要對通訊進行處理,因此時間上又延長了。
HTTPS比HTTP要慢2到100倍,目前並無根本解決這一問題的方案,可使用SSL加速器這種(專用服務器)硬件來改善該問題。該硬件爲SSL通訊專用硬件,相對軟件來說,可以提升數倍SSL的計算速度。僅在SSL處理時發揮SSL加速器的功效,以分擔負載。
爲何全部的WEB網站不一直使用HTTPS?:
如上一條所說,若是全部網站都使用HTTPS,則請求處理速度會十分十分十分慢,而且購買證書也須要錢,因此不包含我的信息的網站沒有必要使用HTTPS