https是什么?
https, 全稱Hyper Text Transfer Protocol Secure,相比http,多了一個secure,這一個secure是怎么來的呢?這是由TLS(SSL)提供的,這個又是什么呢?估計你也不想知道。大概就是一個叫openSSL的library提供的。https和http都屬于application layer,基于TCP(以及UDP)協(xié)議,但是又完全不一樣。TCP用的port是80, https用的是443(值得一提的是,google發(fā)明了一個新的協(xié)議,叫QUIC,并不基于TCP,用的port也是443, 同樣是用來給https的。谷歌好牛逼啊。)總體來說,https和http類似,但是比http安全。
https做得怎么樣?
一般來說網(wǎng)絡(luò)安全關(guān)心三個問題, CIA, (confidentiality, integrity, availability)。那https在這三方面做的怎么樣呢?https保證了confidentiality(你瀏覽的頁面的內(nèi)容如果被人中途看見,將會是一團(tuán)亂碼。不會發(fā)生比如和你用同一個無線網(wǎng)的人收到一個你發(fā)的數(shù)據(jù)包,打開來一看,就是你的密碼啊銀行卡信息?。?,intergrity(你瀏覽的頁面就是你想瀏覽的,不會被黑客在中途修改,網(wǎng)站收到的數(shù)據(jù)包也是你最初發(fā)的那個,不會把你的數(shù)據(jù)給換掉,搞一個大新聞),最后一個availability幾乎沒有提供(雖然我個人認(rèn)為會增加基礎(chǔ)DOS等的難度,但是這個不值一提),不過https還提供了另一個A, authentication(你連接的是你連接的網(wǎng)站,而不是什么人在中途偽造了一個網(wǎng)站給你,專業(yè)上叫Man In The Middle Attack)。那https具體保護(hù)了啥?簡單來說,保護(hù)了你從連接到這個網(wǎng)站開始,到你關(guān)閉這個頁面為止,你和這個網(wǎng)站之間收發(fā)的所有信息,就連url的一部分都被保護(hù)了。同時DNS querying這一步也被保護(hù)了,不會發(fā)生你輸入www.google.com,實際上跑到了另一個網(wǎng)站去了。(這個其實也屬于authentication,我這里不是很確定,最開始還寫錯了一次,應(yīng)該來說,https保護(hù)了DNS Spoofing 和DNS Cache Poisoning等DNS攻擊)那么有哪些沒有被保護(hù)的?你是誰,你訪問了什么網(wǎng)站(這個就是anonymity,想要上不好的網(wǎng)站但是不被人知道?可以用VPN或者TOR,當(dāng)然可能要付出金錢或者速度變慢的代價啦。)
https怎么做到的?
這個就很復(fù)雜了。有興趣的朋友可以看一下這個“The First Few Milliseconds of an HTTPS Connection”。我來簡單介紹一下里面的一些手段。比如你如何確信這個網(wǎng)站是一個好網(wǎng)站?好網(wǎng)站就會有一個“好網(wǎng)站證書”,也就是certification,這個證書是由CA(certificate authority)頒布的,每次鏈接,網(wǎng)站都先去找CA拿一份證書,然后把這個證書一起發(fā)給客戶,來證明自己的清白。也許你會問,萬一是一個壞網(wǎng)站自己偽造的證書呢?這就要牽扯到RSA的公鑰,私鑰加密。不過,google的https是他們自己公司的一個CA發(fā)的,感覺怪怪的??傊?,你基本可以相信這是一個好網(wǎng)站(歷史上也有CA被入侵之類的事件發(fā)生)。這就是authentication(應(yīng)該也是保護(hù)DNS的一步)。當(dāng)然你也會需要向網(wǎng)站證明一下你自己的身份,然后你們就要決定用什么方式加密。加密的方式有很多種,比如各種AES啦什么的。客戶告訴網(wǎng)站,我的瀏覽器支持哪些加密方式,然后網(wǎng)站選擇其中一種,于是你們之間的數(shù)據(jù)就被加密了。你問我怎么選擇的?我告訴你是隨機(jī)的。你問我是偽隨機(jī)嗎,我不知道,偽隨機(jī)的話會不會有一種qd的感覺?總之,這就是confidentiality。那怎么保證你的數(shù)據(jù)不被修改呢?這就要說到hash,hash算法可以把一個長長的數(shù)據(jù)變短,一般情況下,不同的長數(shù)據(jù)變成的短數(shù)據(jù),是不一樣的。哪怕長數(shù)據(jù)里面只變化了一點點,短數(shù)據(jù)也會差別很大(專業(yè)術(shù)語叫avalanche effect)。傳輸數(shù)據(jù)的時候,把這個短數(shù)據(jù)一并傳了,對方就可以知道整個數(shù)據(jù)包是否被修改。當(dāng)然這需要雙方都提前知道一些并沒有被傳輸?shù)拿孛堋3S玫膆ash有md5和SHA256等,md5相對來說不安全,length extenstion attack和collision都很容易??傊@樣一來,你可以知道中途數(shù)據(jù)沒有被修改。這就是integrity。
https足夠安全嗎?
最后這個https足夠安全嗎?世界上沒有絕對的安全,首先我提到過,https本身不保證availability,而且別人也能知道你在上這個網(wǎng)站。同時,https本身想保護(hù)的東西也不是那么靠譜。例如赫赫有名的heartbleed,2014年的時候席卷全球。數(shù)據(jù)顯示,前100的網(wǎng)站(我也不曉得怎么排的),44個受到heartbleed威脅,其中就有雅虎,stackoverflow這樣的網(wǎng)站。當(dāng)然我覺得黑客是不會黑掉stackoverflow的,黑掉了以后自己寫程序遇到bug都不知道怎么辦了。直到今天,還有的網(wǎng)站沒有修復(fù)這個bug,而一些已經(jīng)修復(fù)的網(wǎng)站,因為沒有及時更換private key等原因,自以為安全了,其實和沒修復(fù)一個樣。當(dāng)然,還有各種各樣的安全隱患。比如提到的RSA加密,在某些情況下可以用wiener attack破解。其他的例如入侵CA,或者直接入侵用戶的電腦(例如用ssh開remote root shell等)都非常有可能。一定還有很多真正的“黑”科技,答主也不了解了。
總結(jié)一下,https對于大部分人來說,意味著比較安全。相比http,讓人更加放心。但是作為普通網(wǎng)民,無論在上什么網(wǎng)站,http還是https的時候,可都不能掉以輕心哦!安全隱患無處不在。
一、HTTP和HTTPS的基本概念
HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。
HTTPS:是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL。
HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?;另一種就是確認(rèn)網(wǎng)站的真實性。
二、HTTP與HTTPS有什么區(qū)別?
HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全,為了保證這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設(shè)計了SSL(Secure Sockets Layer)協(xié)議用于對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行加密,從而就誕生了HTTPS。簡單來說,HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全。
HTTPS和HTTP的區(qū)別主要如下:
1、https協(xié)議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
三、HTTPS的工作原理
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取,所以很多銀行網(wǎng)站或電子郵箱等等安全級別較高的服務(wù)都會采用HTTPS協(xié)議。
客戶端在使用HTTPS方式與Web服務(wù)器通信時有以下幾個步驟,如圖所示。
?。?)客戶使用https的URL訪問Web服務(wù)器,要求與Web服務(wù)器建立SSL連接。
?。?)Web服務(wù)器收到客戶端請求后,會將網(wǎng)站的證書信息(證書中包含公鑰)傳送一份給客戶端。
?。?)客戶端的瀏覽器與Web服務(wù)器開始協(xié)商SSL連接的安全等級,也就是信息加密的等級。
?。?)客戶端的瀏覽器根據(jù)雙方同意的安全等級,建立會話密鑰,然后利用網(wǎng)站的公鑰將會話密鑰加密,并傳送給網(wǎng)站。
(5)Web服務(wù)器利用自己的私鑰解密出會話密鑰。
?。?)Web服務(wù)器利用會話密鑰加密與客戶端之間的通信。
四、HTTPS的優(yōu)點
盡管HTTPS并非絕對安全,掌握根證書的機(jī)構(gòu)、掌握加密算法的組織同樣可以進(jìn)行中間人形式的攻擊,但HTTPS仍是現(xiàn)行架構(gòu)下最安全的解決方案,主要有以下幾個好處:
?。?)使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
(2)HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性。
?。?)HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。
(4)谷歌曾在2014年8月份調(diào)整搜索引擎算法,并稱“比起同等HTTP網(wǎng)站,采用HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名將會更高”。
五、HTTPS的缺點
雖然說HTTPS有很大的優(yōu)勢,但其相對來說,還是存在不足之處的:
(1)HTTPS協(xié)議握手階段比較費時,會使頁面的加載時間延長近50%,增加10%到20%的耗電;
?。?)HTTPS連接緩存不如HTTP高效,會增加數(shù)據(jù)開銷和功耗,甚至已有的安全措施也會因此而受到影響;
?。?)SSL證書需要錢,功能越強(qiáng)大的證書費用越高,個人網(wǎng)站、小網(wǎng)站沒有必要一般不會用。
(4)SSL證書通常需要綁定IP,不能在同一IP上綁定多個域名,IPv4資源不可能支撐這個消耗。
?。?)HTTPS協(xié)議的加密范圍也比較有限,在黑客攻擊、拒絕服務(wù)攻擊、服務(wù)器劫持等方面幾乎起不到什么作用。最關(guān)鍵的,SSL證書的信用鏈體系并不安全,特別是在某些國家可以控制CA根證書的情況下,中間人攻擊一樣可行。
六、http切換到HTTPS
如果需要將網(wǎng)站從http切換到https到底該如何實現(xiàn)呢?
這里需要將頁面中所有的鏈接,例如js,css,圖片等等鏈接都由http改為https。例如:http://www.baidu.com改為https://www.baidu.com
BTW,這里雖然將http切換為了https,還是建議保留http。所以我們在切換的時候可以做http和https的兼容,具體實現(xiàn)方式是,去掉頁面鏈接中的http頭部,這樣可以自動匹配http頭和https頭。例如:將http://www.baidu.com改為//www.baidu.com。然后當(dāng)用戶從http的入口進(jìn)入訪問頁面時,頁面就是http,如果用戶是從https的入口進(jìn)入訪問頁面,頁面即使https的。
HTTP 缺省工作在TCP協(xié)議80端口,用戶訪問網(wǎng)站http:// 打頭的都是標(biāo)準(zhǔn)HTTP服務(wù),HTTP所封裝的信息是明文的,通過抓包工具可以分析其信息內(nèi)容,如果這些信息包含有你的銀行卡帳號、密碼,你肯定無法接受這種服務(wù),那有沒有可以加密這些敏感信息的服務(wù)呢?那就是HTTPS!
HTTPS缺省工作在TCP協(xié)議443端口,它的工作流程一般如以下方式:
1) 完成TCP三次同步握手
2) 客戶端驗證服務(wù)器數(shù)字證書,通過,進(jìn)入步驟3
3) DH算法協(xié)商對稱加密算法的密鑰、hash算法的密鑰
4) SSL安全加密隧道協(xié)商完成
5)網(wǎng)頁以加密的方式傳輸,用協(xié)商的對稱加密算法和密鑰加密,保證數(shù)據(jù)機(jī)密性;用協(xié)商的hash算法進(jìn)行數(shù)據(jù)完整性保護(hù),保證數(shù)據(jù)不被篡改
如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進(jìn)入論壇