觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊
客戶中心
關(guān)注云客
如今,越來越多的網(wǎng)站和服務(wù)開始啟動(dòng)加密,HTTPS加密Web流量占到總流量的一半,其中YouTube這樣的流媒體網(wǎng)站首次有50%的流量是經(jīng)過HTTPS,這一切證明了Web的完整加密是可行的。
百度自2017年底起,開始對(duì)部分地區(qū)開放了HTTPS加密搜索服務(wù),如今百度已全站開啟了HTTPS安全加密搜索,那么,我們該如何看待百度全站采用HTTPS加密搜索呢?
HTTPS在保護(hù)用戶隱私,防止流量劫持方面發(fā)揮著非常關(guān)鍵的作用,但與此同時(shí),HTTPS也會(huì)降低用戶訪問速度,增加網(wǎng)站服務(wù)器的計(jì)算資源消耗。
百度在工程開發(fā)上幾乎不做沒有性價(jià)比的事情,所以我們先看看https這個(gè)事情在技術(shù)上的投入在哪里?
一、百度啟用了HTTPS加密搜索
從2017年底開始,百度在部分地區(qū)開始對(duì)其搜索啟用了HTTPS加密(VeriSign簽發(fā)的證書),百度HTTPS相關(guān)負(fù)責(zé)人指出,此舉致力于為用戶提供一個(gè)安全可靠的網(wǎng)絡(luò)環(huán)境。
當(dāng)你網(wǎng)購的時(shí)候,你輸入銀行信息后按繼續(xù),在與銀行網(wǎng)站對(duì)接的過程中,你的付款信息在網(wǎng)絡(luò)傳輸過程中,是被加密的,這是為了確保使客戶與服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽。
二、在性能方面的影響
1、多幾次握手,網(wǎng)絡(luò)耗時(shí)變長,用戶從http跳轉(zhuǎn)到https還要一點(diǎn)時(shí)間。
2、機(jī)器性能,https要多做一次RSA校驗(yàn)。
3、CDN,全國所有節(jié)點(diǎn)要支持https才行,另外,如果面對(duì)DDOS,https的解決方案也會(huì)復(fù)雜得多。
三、對(duì)周邊系統(tǒng)的影響
1、頁面里所有嵌入的資源都要改成https的,這些資源可能會(huì)來自不同的部門甚至不同的公司,包括:圖片、js、form表單等等,否則瀏覽器就會(huì)報(bào)警。
2、手機(jī)百度這類使用了百度搜索服務(wù)的客戶端產(chǎn)品,也可能要修改。
3、解決第三方網(wǎng)站看不到refer的問題。
4、所有的開發(fā)、測試環(huán)境都要做https的升級(jí)。
還有,上線前肯定是一大堆預(yù)案,保證切換過程順暢,所以說下來,https這個(gè)事情的投入真心很大,不是說換就換的。
好了,這個(gè)事情的收益在哪里呢?在看來,就是用戶的搜索安全,至于原因可能有以下幾點(diǎn):
1、被運(yùn)營商強(qiáng)插廣告,甚至在正常結(jié)果前面插一條廣告。
2、有的時(shí)候劫持代碼還會(huì)寫錯(cuò),導(dǎo)致用戶訪問白屏或者報(bào)錯(cuò)。
3、手機(jī)上被瀏覽器或者什么衛(wèi)士篡改或者劫持。
4、最惡心的是泄露用戶數(shù)據(jù),經(jīng)常在網(wǎng)上看到說: 我用百度搜了一個(gè)黃金,馬上就有人聯(lián)系我了 我在百度上搜了一種病,馬上醫(yī)院就來電話了 。
5、另外,對(duì)百度的收入也有影響、有不少公共wifi自動(dòng)會(huì)自動(dòng)給百度搜索加一個(gè)聯(lián)盟的計(jì)費(fèi)id。
其實(shí)在搜索HTTPS很久之前,百度就做了搜索結(jié)果url加密,我想應(yīng)該是基于類似的考慮。
很多互聯(lián)網(wǎng)公司在做大的時(shí)候都會(huì)遇到這個(gè)問題:https成本高,速度又慢,規(guī)模小的時(shí)候在涉及到登錄和交易用上就夠了,做大以后遇到信息泄露和劫持,想整體換,代價(jià)又很高。
四、HTTPS對(duì)訪問速度的影響
在介紹速度優(yōu)化策略之前,先來看下HTTPS對(duì)速度有什么影響,在看來,其影響主要來自兩方面:
①、協(xié)議交互所增加的網(wǎng)絡(luò)RTT(round trip time)。
②、加解密相關(guān)的計(jì)算耗時(shí)。
卡內(nèi)基梅隆大學(xué)、西班牙電信和都靈理工大學(xué)的研究人員在ACM CoNEXT上發(fā)表了一篇論文(PDF),量化了網(wǎng)站從HTTP切換到HTTPS所付出的代價(jià)。
研究人員分析了啟用加密對(duì)延遲、消耗數(shù)據(jù)和客戶端電池壽命的影響,他們發(fā)現(xiàn),HTTPS的 S 會(huì)使得頁面加載時(shí)間增加了50%,增加10%到20%的耗電,此外,HTTPS還會(huì)影響緩存增加數(shù)據(jù)開銷和功耗,以及父母控制和病毒掃描等也會(huì)受到影響。
下面分別跟大家介紹一下:
1、網(wǎng)絡(luò)耗時(shí)增加
由于HTTP和HTTPS都需要DNS解析,并且大部分情況下使用了DNS緩存,為了突出對(duì)比效果,忽略主域名的DNS解析時(shí)間。
用戶使用HTTP協(xié)議訪問www.或者www.時(shí)會(huì)有如下網(wǎng)絡(luò)上的交互耗時(shí):
可見,用戶只需要完成TCP三次握手建立TCP連接就能夠直接發(fā)送HTTP請求獲取應(yīng)用層數(shù)據(jù),此外在整個(gè)訪問過程中也沒有需要消耗計(jì)算資源的地方。
接下來看HTTPS的訪問過程,相比HTTP要復(fù)雜很多,在部分場景下,使用HTTPS訪問有可能增加7個(gè)RTT,如下圖:
HTTPS首次請求需要的網(wǎng)絡(luò)耗時(shí)解釋如下:
①、三次握手建立TCP連接,耗時(shí)一個(gè)RTT。
②、使用HTTP發(fā)起GET請求,服務(wù)端返回302跳轉(zhuǎn)到www.域名需要一個(gè)RTT以及302跳轉(zhuǎn)延時(shí)。
a、大部分情況下用戶不會(huì)手動(dòng)輸入www.域名來訪問HTTPS,服務(wù)端只能返回302強(qiáng)制瀏覽器跳轉(zhuǎn)到https。
b、瀏覽器處理302跳轉(zhuǎn)也需要耗時(shí)。
③、三次握手重新建立TCP連接,耗時(shí)一個(gè)RTT。
302跳轉(zhuǎn)到HTTPS服務(wù)器之后,由于端口和服務(wù)器不同,需要重新完成三次握手,建立TCP連接。
④、TLS完全握手階段一,耗時(shí)至少一個(gè)RTT。
a、這個(gè)階段主要是完成加密套件的協(xié)商和證書的身份認(rèn)證。
b、服務(wù)端和瀏覽器會(huì)協(xié)商出相同的密鑰交換算法、對(duì)稱加密算法、內(nèi)容一致性校驗(yàn)算法、證書簽名算法、橢圓曲線(非ECC算法不需要)等。
c、瀏覽器獲取到證書后需要校驗(yàn)證書的有效性,比如是否過期,是否撤銷。
⑤、解析CA站點(diǎn)的DNS,耗時(shí)一個(gè)RTT。
a、瀏覽器獲取到證書后,有可能需要發(fā)起OCSP或者CRL請求,查詢證書狀態(tài)。
b、瀏覽器首先獲取證書里的CA域名。
c、如果沒有命中緩存,瀏覽器需要解析CA域名的DNS。
⑥、三次握手建立CA站點(diǎn)的TCP連接,耗時(shí)一個(gè)RTT。
DNS解析到IP后,需要完成三次握手建立TCP連接。
⑦、發(fā)起OCSP請求,獲取響應(yīng)。耗時(shí)一個(gè)RTT。
⑧、完全握手階段二,耗時(shí)一個(gè)RTT及計(jì)算時(shí)間。
完全握手階段二主要是密鑰協(xié)商。
⑨、完全握手結(jié)束后,瀏覽器和服務(wù)器之間進(jìn)行應(yīng)用層(也就是HTTP)數(shù)據(jù)傳輸。
當(dāng)然不是每個(gè)請求都需要增加7個(gè)RTT才能完成HTTPS首次請求交互,據(jù)了解,大概只有不到0.01%的請求才有可能需要經(jīng)歷上述步驟,它們需要滿足如下條件:
①、必須是首次請求,即建立TCP連接后發(fā)起的第一個(gè)請求,該連接上的后續(xù)請求都不需要再發(fā)生上述行為。
②、必須要發(fā)生完全握手,而正常情況下80%的請求能實(shí)現(xiàn)簡化握手。
③、瀏覽器需要開啟OCSP或者CRL功能,Chrome默認(rèn)關(guān)閉了ocsp功能,firefox和IE都默認(rèn)開啟。
④、瀏覽器沒有命中OCSP緩存,Ocsp一般的更新周期是7天,firefox的查詢周期也是7天,也就說是7天中才會(huì)發(fā)生一次ocsp的查詢。
⑤、瀏覽器沒有命中CA站點(diǎn)的DNS緩存,只有沒命中DNS緩存的情況下才會(huì)解析CA的DNS。
2、計(jì)算耗時(shí)增加
上節(jié)還只是簡單描述了HTTPS關(guān)鍵路徑上必須消耗的純網(wǎng)絡(luò)耗時(shí),沒有包括非常消耗CPU資源的計(jì)算耗時(shí),事實(shí)上計(jì)算耗時(shí)也不小(30ms以上),從瀏覽器和服務(wù)器的角度分別介紹一下:
①、瀏覽器計(jì)算耗時(shí)
a、RSA證書簽名校驗(yàn),瀏覽器需要解密簽名,計(jì)算證書哈希值,如果有多個(gè)證書鏈,瀏覽器需要校驗(yàn)多個(gè)證書。
b、RSA密鑰交換時(shí),需要使用證書公鑰加密premaster,耗時(shí)比較小,但如果手機(jī)性能比較差,可能也需要1ms的時(shí)間。
c、ECC密鑰交換時(shí),需要計(jì)算橢圓曲線的公私鑰。
d、ECC密鑰交換時(shí),需要使用證書公鑰解密獲取服務(wù)端發(fā)過來的ECC公鑰。
e、ECC密鑰交換時(shí),需要根據(jù)服務(wù)端公鑰計(jì)算master key。
f、應(yīng)用層數(shù)據(jù)對(duì)稱加解密。
g、應(yīng)用層數(shù)據(jù)一致性校驗(yàn)。
②、服務(wù)端計(jì)算耗時(shí)
a、RSA密鑰交換時(shí)需要使用證書私鑰解密premaster,這個(gè)過程非常消耗性能。
b、ECC密鑰交換時(shí),需要計(jì)算橢圓曲線的公私鑰。
c、ECC密鑰交換時(shí),需要使用證書私鑰加密ECC的公鑰。
d、ECC密鑰交換時(shí),需要根據(jù)瀏覽器公鑰計(jì)算共享的master key。
e、應(yīng)用層數(shù)據(jù)對(duì)稱加解密。
f、應(yīng)用層數(shù)據(jù)一致性校驗(yàn)。
由于客戶端的CPU和操作系統(tǒng)種類比較多,所以計(jì)算耗時(shí)不能一概而論,手機(jī)端的HTTPS計(jì)算會(huì)比較消耗性能,單純計(jì)算增加的延遲至少在50ms以上,PC端也會(huì)增加至少10ms以上的計(jì)算延遲。
服務(wù)器的性能一般比較強(qiáng),但由于RSA證書私鑰長度遠(yuǎn)大于客戶端,所以服務(wù)端的計(jì)算延遲也會(huì)在5ms以上。
五、HTTPS協(xié)議為何沒在互聯(lián)網(wǎng)上全面采用?
很多人會(huì)有一個(gè)疑問:https夠不夠呢?肯定是不夠的,但是沒有更好的方案了,可為什么更安全的HTTPS協(xié)議沒有在互聯(lián)網(wǎng)上全面采用呢?簡單來說,有以下幾點(diǎn):
1、SSL證書需要錢,功能越強(qiáng)大的證書費(fèi)用越高,個(gè)人網(wǎng)站、小網(wǎng)站沒有必要一般不會(huì)用。
2、SSL證書通常需要綁定IP,不能在同一IP上綁定多個(gè)域名,IPv4資源不可能支撐這個(gè)消耗。(SSL有擴(kuò)展可以部分解決這個(gè)問題,但是比較麻煩,而且要求瀏覽器、操作系統(tǒng)支持,Windows XP就不支持這個(gè)擴(kuò)展,考慮到XP的裝機(jī)量,這個(gè)特性幾乎沒用。)
3、HTTPS連接緩存不如HTTP高效,大流量網(wǎng)站如非必要也不會(huì)采用,流量成本太高。
4、HTTPS連接服務(wù)器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本,如果全部采用HTTPS,基于大部分計(jì)算資源閑置的假設(shè)的VPS的平均成本會(huì)上去。
5、HTTPS協(xié)議握手階段比較費(fèi)時(shí),對(duì)網(wǎng)站的相應(yīng)速度有負(fù)面影響,如非必要,沒有理由犧牲用戶體驗(yàn)。
6、最關(guān)鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家(你們懂的)可以控制CA根證書的情況下,中間人攻擊一樣可行。
另外,在客戶端被植入無數(shù)后門、木馬的狀況下,HTTPS連接的作用非常有限,這也許是支付寶不可能像PayPal那么易用的原因之一。
點(diǎn)擊熱力圖是什么?
百度知心搜索--基于深度數(shù)據(jù)瓦解和用戶行為分析的搜索引擎
vps系統(tǒng)盤空間不足的解決方案
IIS配置支持偽靜態(tài) ISAPI
如何設(shè)置windows 2003 服務(wù)器IIS
Incapsula免費(fèi)CDN服務(wù)申請使用及加速效果測評(píng)
CSS表單設(shè)計(jì)-Web標(biāo)準(zhǔn)(div+css)教程
SEO優(yōu)化中如何添加alt標(biāo)簽
服務(wù)器與網(wǎng)站優(yōu)化之間有什么關(guān)系
純靜態(tài)網(wǎng)站都有哪些優(yōu)勢
評(píng)論(0人參與,0條評(píng)論)
發(fā)布評(píng)論
最新評(píng)論