1.HTTP的缺點(diǎn)
- 通信使用明文(不加密),內(nèi)容可能會(huì)被竊聽(tīng)
通信的加密
HTTP協(xié)議中沒(méi)有加密機(jī)制,但可以通過(guò)和SSL(Secure Socket Layer,安全套接層)或TLS(Transport Layer Security,安全層傳輸協(xié)議)的組合使用,加密HTTP的通信內(nèi)容。
用SSL建立安全通行線路之后,就可以在這條線路上進(jìn)行HTTP通信了。與SSL組合使用的HTTPS(HTTP Secure,超文本傳輸安全協(xié)議)。
內(nèi)容的加密
將參與通信的內(nèi)容本身加密的方式。由于HTTP協(xié)議中沒(méi)有加密機(jī)制,那么就對(duì)HTTP協(xié)議傳輸?shù)膬?nèi)容本身加密。即把HTTP報(bào)文里所含的內(nèi)容進(jìn)行加密處理。
- 不驗(yàn)證通信方的身份,因此有可能遭遇偽裝
SSL不僅提供加密,而且還使用了一種被稱為證書的手段,可用于確定方。
證書有值得信任的第三方機(jī)構(gòu)頒發(fā),用以證明服務(wù)器和客戶端是實(shí)際存在的。另外,偽造證書從技術(shù)角度來(lái)說(shuō)是異常困難的一件事。所以只要能夠確認(rèn)通信方持有的證書,即可判斷通信方的真實(shí)意圖。
- 無(wú)法證明報(bào)文的完整性,所以有可能已遭篡改
雖然有使用HTTP協(xié)議確定報(bào)文完整性的方法,但事實(shí)上并不便捷、可靠。其中常用的是MD5和SHA-1等散列值校驗(yàn)的方法,以及用來(lái)確認(rèn)文件的數(shù)字簽名方法。
為了有效防止這些弊端,有必要使用HTTPS.SLL提供認(rèn)證和加密處理及摘要功能。僅靠HTTP確保完整性是非常困難,因此通過(guò)和其他協(xié)議組合使用來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。
2.HTTP+加密+認(rèn)證+完整性保護(hù)= HTTPS
- HTTP是身披SSL外殼的HTTP。
- 相互交換密鑰的公開(kāi)密鑰加密技術(shù)。
SLL采用一種叫做公開(kāi)密鑰加密的加密處理方式。
近代的加密方法中加密算法是公開(kāi)的,而密鑰卻是保密的。通過(guò)這種方式得以保持加密方法的安全性。
加密和解密都會(huì)用到密鑰。沒(méi)有密鑰就沒(méi)法對(duì)密碼解密,反過(guò)來(lái)說(shuō),任何人只要持有密鑰就能解密了。
使用一對(duì)非對(duì)稱的密鑰。一把叫做私有密鑰,一把叫做公開(kāi)密鑰。私有密鑰不能讓任何人知道,而公開(kāi)密鑰則可以隨意發(fā)布,任何人都可以獲得。
使用公開(kāi)密鑰加密方式,發(fā)送密文的一方使用對(duì)方的公開(kāi)密鑰進(jìn)行加密處理,對(duì)方收到被加密的信息后,再使用自己的私有密鑰進(jìn)行解密。利用這種方式,不需要發(fā)送用來(lái)解密的私有密鑰,也不必?fù)?dān)心密鑰被攻擊者竊聽(tīng)而盜走。 - 證明公開(kāi)密鑰正確性的證書
公開(kāi)密鑰加密方式還是存在一些問(wèn)題的。那就是無(wú)法證明公開(kāi)密鑰本身就是貨真價(jià)實(shí)的公開(kāi)密鑰。
為了解決上述問(wèn)題,可以使用由數(shù)字證書認(rèn)證機(jī)構(gòu)和其相關(guān)機(jī)關(guān)頒發(fā)的公開(kāi)密鑰證書。
3.HTTPS的問(wèn)題
HTTPS也存在一些問(wèn)題,那就是當(dāng)使用SSL時(shí),它的處理速度會(huì)變慢。
SSL的慢分兩種。一種是通信慢。另一種是指由于大量消耗CPU及內(nèi)存等資源,導(dǎo)致處理速度變慢。
和使用HTTP相比,網(wǎng)絡(luò)負(fù)載可能會(huì)變慢2到100倍。除去和TCP連接、發(fā)送HTTP請(qǐng)求響應(yīng)之外,還必須進(jìn)行SSL通信,因此整體上處理信息量不可避免會(huì)增加。
另外一點(diǎn)SSL必須進(jìn)行加密處理。在服務(wù)器和客戶端都需要進(jìn)行加密和解密的運(yùn)算處理。因此從結(jié)果上講,比起HTTP會(huì)更多地消耗服務(wù)器和客戶端的硬件資源,導(dǎo)致負(fù)載增強(qiáng)。