日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

http和https的区别和联系

發布時間:2025/3/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 http和https的区别和联系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • https是什么?
    • https做得怎么樣?
    • https怎么做到的?
    • 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【DNS查詢】這一步也被保護了,不會發生你輸入www.google.com,實際上跑到了另一個網站去了。(這個其實也屬于authentication,我這里不是很確定,最開始還寫錯了一次,應該來說,https保護了DNS Spoofing【DNS欺騙】 和DNS Cache Poisoning【DNS緩存中毒】等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(高級加密標準【Advanced Encryption Standard】)啦什么的。客戶告訴網站,我的瀏覽器支持哪些加密方式,然后網站選擇其中一種,于是你們之間的數據就被加密了。你問我怎么選擇的?我告訴你是隨機的。你問我是偽隨機嗎,我不知道,偽隨機的話會不會有一種qd的感覺?總之,這就是confidentiality。那怎么保證你的數據不被修改呢?這就要說到hash,hash算法可以把一個長長的數據變短,一般情況下,不同的長數據變成的短數據,是不一樣的。哪怕長數據里面只變化了一點點,短數據也會差別很大(專業術語叫avalanche effect【雪崩效應】)。傳輸數據的時候,把這個短數據一并傳了,對方就可以知道整個數據包是否被修改。當然這需要雙方都提前知道一些并沒有被傳輸的秘密。常用的hash有md5(MD5信息摘要算法【英語:MD5 Message-Digest Algorithm】)和SHA256(安全散列算法SHA【Secure Hash Algorithm】)等,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的時候,可都不能掉以輕心哦!安全隱患無處不在。

參考文章:http 和 https 有何區別?如何靈活使用?

總結

以上是生活随笔為你收集整理的http和https的区别和联系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。