狠狠网/色综合久久久久综合体桃花网/日本护士三aaaaaa/久久久久久综合一区中文字幕

或者

HTTPS對網(wǎng)站性能優(yōu)化的影響

作者:數(shù)風(fēng)流人物 瀏覽:128 發(fā)布時間:2018-04-02
分享 評論 0

如今,越來越多的網(wǎng)站和服務(wù)開始啟動加密,HTTPS加密Web流量占到總流量的一半,其中YouTube這樣的流媒體網(wǎng)站首次有50%的流量是經(jīng)過HTTPS,這一切證明了Web的完整加密是可行的。


百度自2017年底起,開始對部分地區(qū)開放了HTTPS加密搜索服務(wù),如今百度已全站開啟了HTTPS安全加密搜索,那么,我們該如何看待百度全站采用HTTPS加密搜索呢?


HTTPS在保護用戶隱私,防止流量劫持方面發(fā)揮著非常關(guān)鍵的作用,但與此同時,HTTPS也會降低用戶訪問速度,增加網(wǎng)站服務(wù)器的計算資源消耗。


百度在工程開發(fā)上幾乎不做沒有性價比的事情,所以我們先看看https這個事情在技術(shù)上的投入在哪里?


一、百度啟用了HTTPS加密搜索


從2017年底開始,百度在部分地區(qū)開始對其搜索啟用了HTTPS加密(VeriSign簽發(fā)的證書),百度HTTPS相關(guān)負(fù)責(zé)人指出,此舉致力于為用戶提供一個安全可靠的網(wǎng)絡(luò)環(huán)境。


當(dāng)你網(wǎng)購的時候,你輸入銀行信息后按繼續(xù),在與銀行網(wǎng)站對接的過程中,你的付款信息在網(wǎng)絡(luò)傳輸過程中,是被加密的,這是為了確保使客戶與服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽。


二、在性能方面的影響


1、多幾次握手,網(wǎng)絡(luò)耗時變長,用戶從http跳轉(zhuǎn)到https還要一點時間。


2、機器性能,https要多做一次RSA校驗。


3、CDN,全國所有節(jié)點要支持https才行,另外,如果面對DDOS,https的解決方案也會復(fù)雜得多。


三、對周邊系統(tǒng)的影響


1、頁面里所有嵌入的資源都要改成https的,這些資源可能會來自不同的部門甚至不同的公司,包括:圖片、js、form表單等等,否則瀏覽器就會報警。


2、手機百度這類使用了百度搜索服務(wù)的客戶端產(chǎn)品,也可能要修改。


3、解決第三方網(wǎng)站看不到refer的問題。


4、所有的開發(fā)、測試環(huán)境都要做https的升級。


還有,上線前肯定是一大堆預(yù)案,保證切換過程順暢,所以說下來,https這個事情的投入真心很大,不是說換就換的。


好了,這個事情的收益在哪里呢?在看來,就是用戶的搜索安全,至于原因可能有以下幾點:


1、被運營商強插廣告,甚至在正常結(jié)果前面插一條廣告。


2、有的時候劫持代碼還會寫錯,導(dǎo)致用戶訪問白屏或者報錯。


3、手機上被瀏覽器或者什么衛(wèi)士篡改或者劫持。


4、最惡心的是泄露用戶數(shù)據(jù),經(jīng)常在網(wǎng)上看到說: 我用百度搜了一個黃金,馬上就有人聯(lián)系我了 我在百度上搜了一種病,馬上醫(yī)院就來電話了 。


5、另外,對百度的收入也有影響、有不少公共wifi自動會自動給百度搜索加一個聯(lián)盟的計費id。


其實在搜索HTTPS很久之前,百度就做了搜索結(jié)果url加密,我想應(yīng)該是基于類似的考慮。


很多互聯(lián)網(wǎng)公司在做大的時候都會遇到這個問題:https成本高,速度又慢,規(guī)模小的時候在涉及到登錄和交易用上就夠了,做大以后遇到信息泄露和劫持,想整體換,代價又很高。


四、HTTPS對訪問速度的影響


在介紹速度優(yōu)化策略之前,先來看下HTTPS對速度有什么影響,在看來,其影響主要來自兩方面:


①、協(xié)議交互所增加的網(wǎng)絡(luò)RTT(round trip time)。


②、加解密相關(guān)的計算耗時。


卡內(nèi)基梅隆大學(xué)、西班牙電信和都靈理工大學(xué)的研究人員在ACM CoNEXT上發(fā)表了一篇論文(PDF),量化了網(wǎng)站從HTTP切換到HTTPS所付出的代價。


研究人員分析了啟用加密對延遲、消耗數(shù)據(jù)和客戶端電池壽命的影響,他們發(fā)現(xiàn),HTTPS的 S 會使得頁面加載時間增加了50%,增加10%到20%的耗電,此外,HTTPS還會影響緩存增加數(shù)據(jù)開銷和功耗,以及父母控制和病毒掃描等也會受到影響。


下面分別跟大家介紹一下:


1、網(wǎng)絡(luò)耗時增加


由于HTTP和HTTPS都需要DNS解析,并且大部分情況下使用了DNS緩存,為了突出對比效果,忽略主域名的DNS解析時間。


用戶使用HTTP協(xié)議訪問www.或者www.時會有如下網(wǎng)絡(luò)上的交互耗時:


可見,用戶只需要完成TCP三次握手建立TCP連接就能夠直接發(fā)送HTTP請求獲取應(yīng)用層數(shù)據(jù),此外在整個訪問過程中也沒有需要消耗計算資源的地方。


接下來看HTTPS的訪問過程,相比HTTP要復(fù)雜很多,在部分場景下,使用HTTPS訪問有可能增加7個RTT,如下圖:


HTTPS首次請求需要的網(wǎng)絡(luò)耗時解釋如下:


①、三次握手建立TCP連接,耗時一個RTT。


②、使用HTTP發(fā)起GET請求,服務(wù)端返回302跳轉(zhuǎn)到www.域名需要一個RTT以及302跳轉(zhuǎn)延時。


a、大部分情況下用戶不會手動輸入www.域名來訪問HTTPS,服務(wù)端只能返回302強制瀏覽器跳轉(zhuǎn)到https。


b、瀏覽器處理302跳轉(zhuǎn)也需要耗時。


③、三次握手重新建立TCP連接,耗時一個RTT。


302跳轉(zhuǎn)到HTTPS服務(wù)器之后,由于端口和服務(wù)器不同,需要重新完成三次握手,建立TCP連接。


④、TLS完全握手階段一,耗時至少一個RTT。


a、這個階段主要是完成加密套件的協(xié)商和證書的身份認(rèn)證。


b、服務(wù)端和瀏覽器會協(xié)商出相同的密鑰交換算法、對稱加密算法、內(nèi)容一致性校驗算法、證書簽名算法、橢圓曲線(非ECC算法不需要)等。


c、瀏覽器獲取到證書后需要校驗證書的有效性,比如是否過期,是否撤銷。


⑤、解析CA站點的DNS,耗時一個RTT。


a、瀏覽器獲取到證書后,有可能需要發(fā)起OCSP或者CRL請求,查詢證書狀態(tài)。


b、瀏覽器首先獲取證書里的CA域名。


c、如果沒有命中緩存,瀏覽器需要解析CA域名的DNS。


⑥、三次握手建立CA站點的TCP連接,耗時一個RTT。


DNS解析到IP后,需要完成三次握手建立TCP連接。


⑦、發(fā)起OCSP請求,獲取響應(yīng)。耗時一個RTT。


⑧、完全握手階段二,耗時一個RTT及計算時間。


完全握手階段二主要是密鑰協(xié)商。


⑨、完全握手結(jié)束后,瀏覽器和服務(wù)器之間進行應(yīng)用層(也就是HTTP)數(shù)據(jù)傳輸。


當(dāng)然不是每個請求都需要增加7個RTT才能完成HTTPS首次請求交互,據(jù)了解,大概只有不到0.01%的請求才有可能需要經(jīng)歷上述步驟,它們需要滿足如下條件:


①、必須是首次請求,即建立TCP連接后發(fā)起的第一個請求,該連接上的后續(xù)請求都不需要再發(fā)生上述行為。


②、必須要發(fā)生完全握手,而正常情況下80%的請求能實現(xiàn)簡化握手。


③、瀏覽器需要開啟OCSP或者CRL功能,Chrome默認(rèn)關(guān)閉了ocsp功能,firefox和IE都默認(rèn)開啟。


④、瀏覽器沒有命中OCSP緩存,Ocsp一般的更新周期是7天,firefox的查詢周期也是7天,也就說是7天中才會發(fā)生一次ocsp的查詢。


⑤、瀏覽器沒有命中CA站點的DNS緩存,只有沒命中DNS緩存的情況下才會解析CA的DNS。


2、計算耗時增加


上節(jié)還只是簡單描述了HTTPS關(guān)鍵路徑上必須消耗的純網(wǎng)絡(luò)耗時,沒有包括非常消耗CPU資源的計算耗時,事實上計算耗時也不小(30ms以上),從瀏覽器和服務(wù)器的角度分別介紹一下:


①、瀏覽器計算耗時


a、RSA證書簽名校驗,瀏覽器需要解密簽名,計算證書哈希值,如果有多個證書鏈,瀏覽器需要校驗多個證書。


b、RSA密鑰交換時,需要使用證書公鑰加密premaster,耗時比較小,但如果手機性能比較差,可能也需要1ms的時間。


c、ECC密鑰交換時,需要計算橢圓曲線的公私鑰。


d、ECC密鑰交換時,需要使用證書公鑰解密獲取服務(wù)端發(fā)過來的ECC公鑰。


e、ECC密鑰交換時,需要根據(jù)服務(wù)端公鑰計算master key。


f、應(yīng)用層數(shù)據(jù)對稱加解密。


g、應(yīng)用層數(shù)據(jù)一致性校驗。


②、服務(wù)端計算耗時


a、RSA密鑰交換時需要使用證書私鑰解密premaster,這個過程非常消耗性能。


b、ECC密鑰交換時,需要計算橢圓曲線的公私鑰。


c、ECC密鑰交換時,需要使用證書私鑰加密ECC的公鑰。


d、ECC密鑰交換時,需要根據(jù)瀏覽器公鑰計算共享的master key。


e、應(yīng)用層數(shù)據(jù)對稱加解密。


f、應(yīng)用層數(shù)據(jù)一致性校驗。


由于客戶端的CPU和操作系統(tǒng)種類比較多,所以計算耗時不能一概而論,手機端的HTTPS計算會比較消耗性能,單純計算增加的延遲至少在50ms以上,PC端也會增加至少10ms以上的計算延遲。


服務(wù)器的性能一般比較強,但由于RSA證書私鑰長度遠(yuǎn)大于客戶端,所以服務(wù)端的計算延遲也會在5ms以上。


五、HTTPS協(xié)議為何沒在互聯(lián)網(wǎng)上全面采用?


很多人會有一個疑問:https夠不夠呢?肯定是不夠的,但是沒有更好的方案了,可為什么更安全的HTTPS協(xié)議沒有在互聯(lián)網(wǎng)上全面采用呢?簡單來說,有以下幾點:


1、SSL證書需要錢,功能越強大的證書費用越高,個人網(wǎng)站、小網(wǎng)站沒有必要一般不會用。


2、SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。(SSL有擴展可以部分解決這個問題,但是比較麻煩,而且要求瀏覽器、操作系統(tǒng)支持,Windows XP就不支持這個擴展,考慮到XP的裝機量,這個特性幾乎沒用。)


3、HTTPS連接緩存不如HTTP高效,大流量網(wǎng)站如非必要也不會采用,流量成本太高。


4、HTTPS連接服務(wù)器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本,如果全部采用HTTPS,基于大部分計算資源閑置的假設(shè)的VPS的平均成本會上去。


5、HTTPS協(xié)議握手階段比較費時,對網(wǎng)站的相應(yīng)速度有負(fù)面影響,如非必要,沒有理由犧牲用戶體驗。


6、最關(guān)鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家(你們懂的)可以控制CA根證書的情況下,中間人攻擊一樣可行。


另外,在客戶端被植入無數(shù)后門、木馬的狀況下,HTTPS連接的作用非常有限,這也許是支付寶不可能像PayPal那么易用的原因之一。