學(xué)習(xí)筆記。
第7章 確保Web安全的HTTPS
7.1 HTTP的缺點(diǎn)
- 通信使用明文(不加密),內(nèi)容可能被竊聽(tīng)
- 不驗(yàn)證通信方的身份,因此有可能遭遇偽裝
- 無(wú)法證明報(bào)文的完整性,所以有可能已遭篡改
泄密
锅尘、偽裝
、篡改
布蔗。
7.1.1 通信使用明文可能被竊聽(tīng)
- HTTP本身不具有加密功能藤违,即,HTTP報(bào)文默認(rèn)使用明文來(lái)進(jìn)行發(fā)送何鸡。
- TCP/IP是可以被竊聽(tīng)的網(wǎng)絡(luò)纺弊,因?yàn)榘霓D(zhuǎn)發(fā)會(huì)經(jīng)過(guò)多個(gè)設(shè)備。
- SSL和TLS可以建立安全通信線路骡男。
- 可以對(duì)報(bào)文內(nèi)容進(jìn)行加密淆游。
7.1.2 不驗(yàn)證通信方的身份就可能遭遇偽裝
無(wú)論誰(shuí)發(fā)出來(lái)的請(qǐng)求都會(huì)返回響應(yīng),所以會(huì)存在隱患:
- Web服務(wù)器偽裝隔盛;
- 客戶端偽裝犹菱;
- 無(wú)法判斷請(qǐng)求來(lái)自何方,出自誰(shuí)手吮炕;
- 無(wú)意義的請(qǐng)求也會(huì)照單全收腊脱,無(wú)法阻止海量請(qǐng)求下的DoS攻擊。
通過(guò)SSL的證書機(jī)制可以起到驗(yàn)明身份的作用龙亲。
7.1.3 無(wú)法證明報(bào)文的完整性陕凹,可能已遭篡改
7.2 HTTP+加密+認(rèn)證+完整性保護(hù)=HTTPS
7.1 HTTP加上加密處理和認(rèn)證以及完整性保護(hù)后即是HTTPS
7.2.2 HTTPS是身披SSL外殼的HTTP
- 通常HTTP和TCP直接通信,使用SSL之后鳄炉,變?yōu)橄群蚐SL進(jìn)行通信杜耙,再和TCP進(jìn)行通信了。
- SSL是獨(dú)立的協(xié)議拂盯,所以不光是HTTP協(xié)議佑女,其它運(yùn)行在應(yīng)用層的協(xié)議都可以和HTTP配合使用。
7.2.3 相互交換密鑰的公開(kāi)加密技術(shù)
一、對(duì)稱加密的困境
密鑰分為對(duì)稱密鑰和非對(duì)稱密鑰团驱。對(duì)稱密鑰是指加密與解密共用一套密鑰摸吠,非對(duì)稱密鑰則是公鑰加密私鑰解密,私鑰加密公鑰解密嚎花。
用對(duì)稱密鑰加密時(shí)寸痢,需要把密鑰也發(fā)給對(duì)方
,如果密鑰被竊聽(tīng)贩幻,那么信息就會(huì)泄露轿腺。
二两嘴、使用兩把密鑰的非對(duì)稱加密
非對(duì)稱加密很好的解決了上述問(wèn)題丛楚。
在這種加密方式中,公鑰是對(duì)外公開(kāi)的憔辫,任何人都可以獲得趣些,而私鑰要嚴(yán)格保密。發(fā)送報(bào)文的一方使用接收方的公鑰對(duì)報(bào)文進(jìn)行加密贰您,接收方收到后再用自己的私鑰進(jìn)行解密坏平。這種方式不需要發(fā)送用來(lái)解密的私鑰,因此不用擔(dān)心私鑰被攻擊者截獲锦亦。
能否根據(jù)密文和公鑰還原原始報(bào)文舶替?
這么做是異常困難的。解密過(guò)程是對(duì)離散對(duì)數(shù)進(jìn)行求值杠园,這并非輕而易舉顾瞪。退一步講,如果能對(duì)一個(gè)非常大的整數(shù)做到快速因式分解抛蚁,那么密碼破解還是存在希望的陈醒。但就目前的技術(shù)來(lái)看是不現(xiàn)實(shí)的。
三瞧甩、HTTPS采用混合加密機(jī)制
HTTPS同時(shí)采用了對(duì)稱加密和非對(duì)稱加密钉跷。
為什么不全部采用更加安全的非對(duì)稱加密呢?
因?yàn)榉菍?duì)稱加密處理起來(lái)非常復(fù)雜,所以全部采用非對(duì)稱加密的話會(huì)導(dǎo)致通信效率很低肚逸。所以先采用通過(guò)非對(duì)稱加密的方式傳遞對(duì)稱加密用的對(duì)稱密鑰爷辙,確保對(duì)稱密鑰不被攻擊者截獲,之后再采用對(duì)稱加密的方式進(jìn)行通信朦促。
7.2.4 證明公開(kāi)密鑰正確性的證書
目前為止還存在一個(gè)問(wèn)題膝晾,如果對(duì)方要給我發(fā)送信息,首先要知道我的公鑰思灰,因此我就要把我的公鑰發(fā)送給他玷犹,這個(gè)過(guò)程就會(huì)存在風(fēng)險(xiǎn)——公鑰可能被攻擊者截獲。如果是單純的截獲沒(méi)有什么大不了,公鑰本來(lái)就是公開(kāi)的歹颓,你隨便看坯屿,正如上文所言,單靠公鑰和密文還原原始報(bào)文異常困難巍扛,攻擊者拿著公鑰也沒(méi)有用领跛。但問(wèn)題是,蔫兒的壞攻擊者可以替換掉公鑰撤奸,讓發(fā)送方用錯(cuò)誤的公鑰加密吠昭,那么接收方就無(wú)法用自己的私鑰解密,就是要搗蛋不讓你好好通信胧瓜∈概铮或者說(shuō),攻擊者可以用自己的公鑰進(jìn)行替換府喳,這樣發(fā)送方就會(huì)用此公鑰進(jìn)行加密蒲肋,然后攻擊者再次截獲發(fā)送方的報(bào)文,用自己的私鑰解密钝满,還原報(bào)文內(nèi)容并進(jìn)行篡改兜粘,隨后用之前截獲的接收方的公鑰進(jìn)行加密,再轉(zhuǎn)發(fā)給接收方弯蚜,實(shí)現(xiàn)一個(gè)“偷梁換柱”孔轴,誰(shuí)也不會(huì)察覺(jué)。
為了解決上述問(wèn)題碎捺,就引入了證書
機(jī)制路鹰。
證書通常是由值得信賴的第三方機(jī)構(gòu)頒發(fā),隨公鑰一起發(fā)出牵寺,以證明公鑰的安全性悍引。