百度公開支持https,我們還在等什么呢?
百度從2014年開始對外開放了https的訪問,并于3月初正式對全網(wǎng)用戶進(jìn)行了https跳轉(zhuǎn)。
你也許會問,切換就切換唄,和我有啥關(guān)系?我平常用百度還不是照常順順當(dāng)當(dāng)?shù)?,沒感覺到什么切換。
話說,平常我們呼吸空氣也順順溜溜的,沒有什么感覺,但要是沒有了空氣,那就沒法愉快的生活了。https對于互聯(lián)網(wǎng)安全的重要性,正如空氣對于我們?nèi)祟惖闹匾砸粯印0俣热厩袚Q到https之后,我們才可以愉快的搜索,愉快的上網(wǎng)。
https究竟是如何實現(xiàn)讓我們更加安全呢,讓百度技術(shù)宅來個深度揭秘:
問題1:https是什么?我有沒有用到https?
https是httpoverssl(SecureSocketLayer),簡單講就是http的安全版本,在http的基礎(chǔ)上通過傳輸加密和身份認(rèn)證保證了傳輸過程中的安全性。你通常訪問的網(wǎng)站大部分都是http的,最簡單的方法可以看看網(wǎng)址是以http://開頭還是https://開頭。
以下幾個截圖就是chrome,firefox,IE10在使用https時的效果。
注意圖中綠色的部分, 我們后面詳細(xì)說說。
想進(jìn)一步了解 HTTPS,可以閱讀《大型網(wǎng)站的 HTTPS 實踐(一)– HTTPS 協(xié)議和原理》
問題2:https為什么比http安全?https加密是不是需要我在電腦上安裝證書/保存密碼?
不帶“s”的http不安全,主要是因為它傳輸?shù)氖敲魑膬?nèi)容,也不對傳輸雙方進(jìn)行身份驗證。只要在數(shù)據(jù)傳輸路徑的任何一個環(huán)節(jié)上,都能看到傳輸?shù)膬?nèi)容,甚至對其進(jìn)行修改。例如一篇文章“攻下隔壁女生路由器后,我都做了些什么”中,很多攻擊的環(huán)節(jié),都是通過分析http的內(nèi)容來進(jìn)行。而在現(xiàn)實生活中呢,你很有可能泄露你的論壇高級會員賬號/密碼,游戲vip賬號/密碼,隱私的聊天內(nèi)容,郵件,在線購物信息,等等。實在是太可怕的有木有!
https之所以安全,是因為他利用ssl/tls協(xié)議傳輸。舉個簡單的例子,電影風(fēng)語者中,美軍發(fā)現(xiàn)密碼經(jīng)常被日本竊聽和破解,就征召了29名印第安納瓦霍族人作為譯電員,因為這語言只有他們族人懂。即使日本人竊聽了電文,但是看不懂內(nèi)容也沒用;想偽造命令也無從下手,修改一些內(nèi)容的話,印第安人看了,肯定會說看(shen)不(me)懂(gui)。看到這里,你肯定發(fā)現(xiàn)了,這是基于兩邊都有懂這個語言(加密解密規(guī)則)的人才行啊,那么我的電腦上需要安裝什么密鑰或者證書嗎?一般情況作為普通用戶是不用考慮這些的,我們有操作系統(tǒng),瀏覽器,數(shù)學(xué)家,安全和網(wǎng)絡(luò)工程師等等,幫你都做好了,放心的打開瀏覽器用就好啦。
如果你實在好奇,想知道雙方不用相同的密鑰如何進(jìn)行加密的,可以搜索下”公鑰加密”(非對稱加密),”RSA”,”DH密鑰交換”,“ssl原理”“數(shù)字證書”等關(guān)鍵詞。
有朋友會想了,不就是加密嗎,我wifi密碼都能破,找個工具分分鐘就破解了。這個想法可不對,雖然沒有絕對的安全,但是可以極大增加破解所需要的成本,https目前使用的加密方式是需要巨大的計算量(按照目前計算機的計算能力)才可能破解的,你會用世界上最強的超級計算機花費100年(只是一個比喻)去解密,看看100年前隔壁老王在百度上搜什么嗎。
問題3:百度為什么要上https?
我們每天會處理用戶投訴,比如說:頁面出現(xiàn)白頁/出現(xiàn)某些奇怪的東西;返回了403的頁面;搜索不了東西;搜索url帶了小尾巴,頁面總要閃幾次;頁面彈窗廣告;搜索個汽車就有人給我打電話推銷4s店和保險什么的…
各種千奇百怪的情況碰到過的請舉手。查來查去,很大一部分原因是有些壞人在數(shù)據(jù)的傳輸過程中修改百度的頁面內(nèi)容,竊聽用戶的搜索內(nèi)容。悄悄告訴你,https就是能解決這樣問題的技術(shù)哦,趕緊把瀏覽器首頁改成https://www.baidu.com吧。
從方向上來說,HTTPS也是未來的趨勢,目前大家使用的HTTP還是1.1/1.0版本的,新的HTTP2.0版本的標(biāo)準(zhǔn)已經(jīng)發(fā)布了。標(biāo)準(zhǔn)中涉及了加密的規(guī)范,雖然標(biāo)準(zhǔn)中沒有強制使用,但是已經(jīng)有很多瀏覽器實現(xiàn)聲稱他們只會支持基于加密連接的HTTP2.0(https://http2.github.io/faq/#does-http2-require-encryption)。
問題4:https不就是在http后面加個s,很難么?
難,又不難。
它包含證書,卸載,流量轉(zhuǎn)發(fā),負(fù)載均衡,頁面適配,瀏覽器適配,refer傳遞等等等等。反正我指頭肯定不夠數(shù)。
對于一個超小型個人站點來說,技術(shù)宅1天就能搞定從申請證書到改造完成。如果是從零開始建設(shè),會更容易。
但是對于百度搜索這種大胖紙來說,可就難了。
1,它一開始并不是為https設(shè)計的
2,內(nèi)容豐富(內(nèi)容本身的表現(xiàn)形式很多:圖片,視頻,flash,form等等),種類豐富(頁面上除了自然結(jié)果,有視頻,圖片,地圖,貼吧,百科,第三方的內(nèi)容,app等等)。
3,數(shù)據(jù)來源復(fù)雜,有幾十個內(nèi)部產(chǎn)品線的內(nèi)容,幾百個域名,成千上萬個開發(fā)者的內(nèi)容
4,百度在全國,甚至世界范圍都有很多idc和cdn節(jié)點,都得覆蓋到。
5,還不能因此拖慢了百度的速度(國內(nèi)使用https的銀行,在線交易的站點,有沒有覺得很慢?)
6,上https本來就是為了更好的體驗,可不能導(dǎo)致大家使用不穩(wěn)定。
…
想了解更詳細(xì)的內(nèi)容,可以閱讀《大型網(wǎng)站的HTTPS實踐(四)–協(xié)議層以外的實踐[1]》
Google部署https花費了1-2年,13年將證書從1024位升級到2048位花了3個月。百度也是去年就開放了入口和小流量,但是今年3月才進(jìn)行全量上線,可以想像整體的復(fù)雜性。
問題5:如何看待百度搜索支持全站https?
國外的幾個大型站點都https化了,這是未來互聯(lián)網(wǎng)的趨勢(有興趣的同學(xué)可以搜索下’http/2’)。
對百度自身來說,https能夠保護(hù)用戶體驗,減少劫持/隱私泄露對用戶的傷害。
很多人會有疑惑,我沒有被劫持,百度上https有什么作用,反而讓我變慢了一些。從我們的第一手?jǐn)?shù)據(jù)可以看到,劫持的影響正越來越大,在法制不健全的環(huán)境下,它被當(dāng)成一個產(chǎn)業(yè),很多公司以它為生,不少以此創(chuàng)業(yè)的團隊還拿到了風(fēng)投。等它真正傷害到你的時候,你可能又會問我們?yōu)槭裁床蛔鲂┦裁?。所以,我們寧愿早一些去面對它?/span>
https在國內(nèi)的大型站點目前還只用在部分賬戶的登陸和支付等環(huán)節(jié)。百度也是國內(nèi)第一個全站https的大型站點,它的用戶非常多,流量也很大。百度能夠上線https會打消大家的疑慮,對其他國內(nèi)的站點是很好的示范,這個帶頭作用會顯著加速國內(nèi)互聯(lián)網(wǎng)https的進(jìn)程,有助于中國互聯(lián)網(wǎng)的網(wǎng)絡(luò)安全建設(shè)。百度作為搜索引擎,是流量的入口和分發(fā)的渠道,后續(xù)如果對https的站點內(nèi)容的抓取,標(biāo)記,權(quán)值傾斜,那么更能引導(dǎo)互聯(lián)網(wǎng)的網(wǎng)站向https進(jìn)行遷移。
問題6:https慢不慢?
繁重的計算和多次交互天然的影響了https的訪問速度。。如果什么優(yōu)化都不做,https會明顯慢很多。在百度已經(jīng)進(jìn)行過很多速度優(yōu)化的條件下,如果站點本身已經(jīng)做過常規(guī)優(yōu)化,但是不針對https做優(yōu)化,這種情況下我們實測的結(jié)果是0.2-0.4秒耗時的增加。如果是沒有優(yōu)化過的站點,慢1秒都不是夢。至于現(xiàn)在慢不慢呢,大家已經(jīng)體驗了這么多天了,有感覺嗎?
答案:A慢死了,你們在做啥?B有些慢啊C還行,基本無感D啥,我已經(jīng)用了https了?
是不是選的C或者D?喂喂,選A的那位你打開別的網(wǎng)站慢么,以前沒有上HTTPS的時候慢么。。。隔壁老王在蹭你網(wǎng)呢。
所以,不是慢,是沒有優(yōu)化。
問題7:https耗性能嗎?
答案是,握手的時候耗,建好連接之后就不太耗了。按照目前加密強度的計算開銷,服務(wù)器支撐握手性能會下降6-8倍,但是如果建立好連接之后,服務(wù)器就幾乎可能撐住打滿網(wǎng)卡的https流量了。所以連接復(fù)用率的提升和計算性能的優(yōu)化都是重點??梢蚤喿x《大型網(wǎng)站的HTTPS實踐(三)–基于協(xié)議和配置的優(yōu)化》
問題8:劫持有些什么樣的途經(jīng)?
你的電腦,你設(shè)置的dns,你的瀏覽器,你用的網(wǎng)絡(luò),都有可能被劫持。
簡單和大家介紹下運營商的內(nèi)容劫持是如何進(jìn)行的,運營商會分析你的網(wǎng)絡(luò)請求,它可以先于網(wǎng)站回包,也能修改數(shù)據(jù)包的內(nèi)容。所以它可以讓你跳轉(zhuǎn)一次,在網(wǎng)址上加上小尾巴,也能在你訪問的頁面彈出小廣告。感興趣的話,還可以通過這篇文章看看你的電腦如何被lsp劫持的《暗云木馬》
問題9:https解決了所有劫持問題嗎?
俗話說有終有始,我們來說一說文章開始說的瀏覽器上的綠色標(biāo)記。它標(biāo)志著這個安全連接可信賴的級別。綠色通常是好的,黃色則是說明有些不安全,例如在https的頁面中加載了http的資源,這樣http的資源還是有被劫持的風(fēng)險。
其實客戶端,局域網(wǎng)的風(fēng)險也很大,惡意插件,木馬可以做很多事情,你使用的路由器,DNS也比較脆弱。如果某個大型網(wǎng)站被標(biāo)記為了紅色,那你就更要小心了(當(dāng)然也可能是某個猴子忘記了續(xù)費替換證書,導(dǎo)致證書過期了),你有可能遭受了ssl劫持(中間人攻擊的一種),特別是遇到如下圖提示的時候(訪問一些自己簽名的站點也會有類似的提示)。中間人攻擊還有其他種類的,比如代理你的通信讓你退化http,還可以利用注入根證書,可以讓你瀏覽器還是綠色的標(biāo)記,就問你怕不怕?
還是那句話,沒有絕對的安全,但是我們可以盡量降低風(fēng)險。
https能夠在絕大部分情況下保證互聯(lián)網(wǎng)訪問數(shù)據(jù)傳輸?shù)陌踩@是目前我們力所能及的工作。
問題10:我應(yīng)該如何更爽更快切換到https?
如此強悍有用的https,我也想體驗,在安全的互聯(lián)網(wǎng)世界中翱翔,那么我該怎么做呢?
實際上你不需要動手,百度的攻城獅已經(jīng)體貼的幫你做到了?,F(xiàn)在訪問百度試試,我們已經(jīng)自動切換到https了,再也不用擔(dān)心隱私泄露的問題,趕緊來體驗吧!
另外以下一些技巧能有讓https有更好的性能哦:
1,使用更高端大氣上檔次的瀏覽器(最好是非IE系列的,比如chrome,firefox,safari瀏覽器,或者百度等雙核瀏覽器的極速模式。
2,把瀏覽器首頁或者收藏夾的百度url也換為https://www.baidu.com,可以讓你有更快更好的體驗。