標籤:

網址上的 https 跟 http 相比,加了一個 s,有什麼用?

http+s比http安全嗎?


寫一個關於https的科普貼,結論在最後。

https是什麼?

https, 全稱Hyper Text Transfer Protocol Secure,相比http,多了一個secure,這一個secure是怎麼來的呢?這是由TLS(SSL)提供的,這個又是什麼呢?估計你也不想知道。大概就是一個叫openSSL的library提供的。https和http都屬於application layer,基於TCP(以及UDP)協議,但是又完全不一樣。TCP用的port是80, https用的是443(值得一提的是,google發明了一個新的協議,叫QUIC,並不基於TCP,用的port也是443, 同樣是用來給https的。谷歌好牛逼啊。)總體來說,https和http類似,但是比http安全。

https做得怎麼樣?

一般來說網路安全關心三個問題, CIA, (confidentiality, integrity, availability)。那https在這三方面做的怎麼樣呢?https保證了confidentiality(你瀏覽的頁面的內容如果被人中途看見,將會是一團亂碼。不會發生比如和你用同一個無線網的人收到一個你發的數據包,打開來一看,就是你的密碼啊銀行卡信息啊),intergrity(你瀏覽的頁面就是你想瀏覽的,不會被黑客在中途修改,網站收到的數據包也是你最初發的那個,不會把你的數據給換掉,搞一個大新聞),最後一個availability幾乎沒有提供(雖然我個人認為會增加基礎DOS等的難度,但是這個不值一提),不過https還提供了另一個A, authentication(你連接的是你連接的網站,而不是什麼人在中途偽造了一個網站給你,專業上叫Man In The Middle Attack)。那https具體保護了啥?簡單來說,保護了你從連接到這個網站開始,到你關閉這個頁面為止,你和這個網站之間收發的所有信息,就連url的一部分都被保護了。同時DNS querying這一步也被保護了,不會發生你輸入www.google.com,實際上跑到了另一個網站去了。(這個其實也屬於authentication,我這裡不是很確定,最開始還寫錯了一次,應該來說,https保護了DNS Spoofing 和DNS Cache Poisoning等DNS攻擊)那麼有哪些沒有被保護的?你是誰,你訪問了什麼網站(這個就是anonymity,想要上不好的網站但是不被人知道?可以用VPN或者TOR,當然可能要付出金錢或者速度變慢的代價啦。)

https怎麼做到的?

這個就很複雜了。有興趣的朋友可以看一下這個「The First Few Milliseconds of an HTTPS Connection」。我來簡單介紹一下裡面的一些手段。比如你如何確信這個網站是一個好網站?好網站就會有一個「好網站證書」,也就是certification,這個證書是由CA(certificate authority)頒布的,每次鏈接,網站都先去找CA拿一份證書,然後把這個證書一起發給客戶,來證明自己的清白。也許你會問,萬一是一個壞網站自己偽造的證書呢?這就要牽扯到RSA的公鑰,私鑰加密。不過,google的https是他們自己公司的一個CA發的,感覺怪怪的。總之,你基本可以相信這是一個好網站(歷史上也有CA被入侵之類的事件發生)。這就是authentication(應該也是保護DNS的一步)。當然你也會需要向網站證明一下你自己的身份,然後你們就要決定用什麼方式加密。加密的方式有很多種,比如各種AES啦什麼的。客戶告訴網站,我的瀏覽器支持哪些加密方式,然後網站選擇其中一種,於是你們之間的數據就被加密了。你問我怎麼選擇的?我告訴你是隨機的。你問我是偽隨機嗎,我不知道,偽隨機的話會不會有一種qd的感覺?總之,這就是confidentiality。那怎麼保證你的數據不被修改呢?這就要說到hash,hash演算法可以把一個長長的數據變短,一般情況下,不同的長數據變成的短數據,是不一樣的。哪怕長數據裡面只變化了一點點,短數據也會差別很大(專業術語叫avalanche effect)。傳輸數據的時候,把這個短數據一併傳了,對方就可以知道整個數據包是否被修改。當然這需要雙方都提前知道一些並沒有被傳輸的秘密。常用的hash有md5和SHA256等,md5相對來說不安全,length extenstion attack和collision都很容易。總之,這樣一來,你可以知道中途數據沒有被修改。這就是integrity。

https足夠安全嗎?

最後這個https足夠安全嗎?世界上沒有絕對的安全,首先我提到過,https本身不保證availability,而且別人也能知道你在上這個網站。同時,https本身想保護的東西也不是那麼靠譜。例如赫赫有名的heartbleed,2014年的時候席捲全球。數據顯示,前100的網站(我也不曉得怎麼排的),44個受到heartbleed威脅,其中就有雅虎,stackoverflow這樣的網站。當然我覺得黑客是不會黑掉stackoverflow的,黑掉了以後自己寫程序遇到bug都不知道怎麼辦了。直到今天,還有的網站沒有修復這個bug,而一些已經修復的網站,因為沒有及時更換private key等原因,自以為安全了,其實和沒修復一個樣。當然,還有各種各樣的安全隱患。比如提到的RSA加密,在某些情況下可以用wiener attack破解。其他的例如入侵CA,或者直接入侵用戶的電腦(例如用ssh開remote root shell等)都非常有可能。一定還有很多真正的「黑」科技,答主也不了解了。

總結一下,https對於大部分人來說,意味著比較安全。相比http,讓人更加放心。但是作為普通網民,無論在上什麼網站,http還是https的時候,可都不能掉以輕心哦!安全隱患無處不在~

推薦一下我的專欄,分享程序員技術面試題目的心得和套路,歡迎關注/投稿:總結我們刷過的演算法題 - 知乎專欄


@納迪@我才不是范進https對google是沒有絲毫影響的,不管是排名或者是收錄。但是在baidu就明顯行不通了,完全不收錄https的站點,更別說排名。假如baidu沒有發現你的http版本,那就是:抱歉,沒有找到與「XX」相關的網頁,就算是做了301,但是一個做了301的頁面拿什麼跟做了優化的對手網站競爭?

另外baidu不收錄https站點,不滋磁+1s,聯想到最近baidu牆倒眾人推,細思極恐啊


https使用了加密渠道,所以載入網頁的速度會比http更慢,也就是說,用https將來則會明顯地多消耗一些時間


https的s是指SSL/TLS,SSL/TLS是加密協議,可以簡單理解為PC客戶端的信息加密,然後發到伺服器端解密,將信息還原。

每個埠有不同的監聽程序,https默認埠是443,http默認埠是80,加一個s就不一樣。也不是所有網站加s就可以加密,需要WEB伺服器端進行相應的配置。

所以這裡加一個s協議,能讓網站安全更長久。


首先我們來看看這兩個縮寫的全稱分別是什麼。

HTTP: Hyper Text Transfer Protocol;

HTTPS: Hyper Text Transfer Protocol over Secure Socket Layer;

可見S的區別之處便是最後的Secure Socket Layer這個東西,百度機器翻譯的結果是安全套接字層,其實還挺準確的。

簡單來說,這就是個給網站相關數據加密的技術,當我們訪問網站時,網站會把一些數據(例如網頁文字、圖片等)下發到我們的瀏覽器,我們會將一些數據(例如訪問請求、登錄帳號密碼)發送到伺服器,當未加密時,這些數據在鏈路里默認都是明文傳輸的,也就是說,在你家和伺服器之間的任何一個路由器/交換機,都可以輕鬆讀取、改寫、偽裝你們往來的數據包。這樣一來,搗亂的小鬼頭們可以重定向你訪問的網站、替換你訪問網站的文字、圖片等內容,也能拿到你提交的帳號、密碼、個人信息等。

而採用了SSL技術時,所有數據都有經過加密,安全性自然提高。當然這個安全也不是絕對安全,SSL主要依靠建立連接時設定的密鑰(也就是所謂安全套接字)對數據進行加密,假如這個密鑰被竊取,那麼加密自然就無意義了。不過就算SSL不能防小人,防君子還是夠用了。


『眾籌』標籤什麼鬼!!!


有什麼用?其實最直觀的體驗的話,就是你訪問一個網頁的時候,會多花一些時間。


簡單地說: https可以防範中間人攻擊

從你的瀏覽器到伺服器中間經過N台設備。

所有的設備都可以看到http中的內容, 包括密碼 (公共wifi盡量不要輸http網站的密碼)。 當然也可以修改傳輸的數碼。 比如電信等可以修改你的網頁加入js代碼跳出彈窗。

而https是加密的, 整個頁面都是加密後傳輸的。 即使理論上中途設備可以解密。但是花費的時間和金錢足以讓他放棄。


簡單說,

HTTP協議傳輸的數據都是未經加密的(除非手動加密解密),這樣的話,即便你的Web應用安全性再高,也有可能在客戶端與服務端傳輸數據的過程中被人劫持數據。這樣你在這個網站上發送到伺服器的任何數據都存在被第三方竊取的可能。試想如果是你註冊支付寶的密碼,後果可想而知。

HTTPS就可以(基本)解決這個安全問題。使用HTTPS傳輸的數據都是經過加密的,只要加密密鑰不泄漏,基本就不大可能被破解。無疑提高了數據在鏈路層傳輸的安全性。


HTTP: 是互聯網上應用最為廣泛的一種網路協議,是一個客戶端和伺服器端請求和應答的標準,用於從WWW伺服器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網路傳輸減少。

HTTPS: 是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。

很多用戶目前對HTTPS持觀望態度,當然網站升級HTTPS有利有弊,利當然是安全係數提升,降低劫持風險,弊端主要體現在速度上,由於證書驗證、多次握手、CPU消耗等原因,https頁面速度會被拖慢一點。

谷歌、火狐等瀏覽器廠商也已經扛起HTTPS大旗,對於HTTP站點會提示不安全警告。而且像谷歌、百度等搜索引擎也早已相應HTTPS號召,都聲稱對HTTPS站點頁面友好甚至優先抓取,排名靠前,當然具體實際實施情況就另當別論了,目前來看,谷歌做的要比百度更成熟一些

網站有必要升級為HTTPS協議嗎?答案顯而易見是肯定的。

要讓互聯網站點都升級到HTTPS協議還需一段時間,但不可否認HTTPS是大勢所趨。下面為大家分享升級HTTPS的方法

這裡有升級的方法,可以參考一下:

網站有必要升級為HTTPS協議嗎?附升級方法-控制項新聞-慧都控制項網


電信 的HTTP 302劫持知道不,莫名其妙的廣告見到過嗎


HTTPS是一種加密的傳輸協議,比HTTP更安全,使用的話需要申請證書。目前國內的大網站都使用了HTTPS,比如百度、阿里系等等。


還換了個埠


補充一點啊

之前幾位說的都比較清楚了

就是這個https會比較慢一點,略微多佔一點資源

可以用來破解百度雲盤的下載壟斷。

就是說可以用你自己的下載器下載。

(^_^)


瀏覽加了s的網站時,網頁上就不會出現那些莫名其妙的廣告了


推薦閱讀:

HTTP是個無狀態協議,怎麼保持登錄狀態?
寫後端 Python,nodejs和php哪個更好一些?
IP地址為什要分類?就是a類,b類,c類。。。?
對於網路「故意錯別字」現象有什麼看法?
HTTP/2正式發布可能會使WEB開發領域產生哪些趨勢?

TAG:計算機網路 |