為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴
發(fā)表日期:2017-02 文章編輯:小燈 瀏覽次數(shù):2862
HTTP到HTTPS
HTTP的缺點(diǎn)
在進(jìn)行 HTTP 通信時(shí),信息可能會(huì)監(jiān)聽、服務(wù)器或客戶端身份偽裝等安全問題。HTTPS 則能有效解決這些問題。這里就簡(jiǎn)單了解下 HTTPS。
HTTP 日常使用極為廣泛的協(xié)議,它很優(yōu)秀且方便,但還是存在一些問題,如:
– 明文通信,內(nèi)容可以直接被竊聽
– 無法驗(yàn)證報(bào)文的完整性,可能被篡改
– 通信方身份不驗(yàn)證,可能遇到假的客戶端或服務(wù)器
1.1 明文通信,內(nèi)容可以直接被竊聽
HTTP 不會(huì)對(duì)請(qǐng)求和響應(yīng)的內(nèi)容進(jìn)行加密,報(bào)文直接使用明文發(fā)送。報(bào)文在服務(wù)器與客戶端流轉(zhuǎn)中間,會(huì)經(jīng)過若干個(gè)結(jié)點(diǎn),這些結(jié)點(diǎn)中隨時(shí)都可能會(huì)有竊聽行為。
因?yàn)橥ㄐ乓欢〞?huì)經(jīng)過中間很多個(gè)結(jié)點(diǎn),所以就算是報(bào)文經(jīng)過了加密,也一樣會(huì)被竊聽到,不過是竊聽到加密后的內(nèi)容。要竊聽相同段上的通信還是很簡(jiǎn)單的,比如可以使用常用的抓包工具 Wireshark。
那如何保護(hù)信息的安全呢?最常用的就是加密技術(shù)了。加密方式可以根據(jù)加密對(duì)象分以下幾種:
通信加密
HTTP 協(xié)議基于 TCP/IP 協(xié)議族,它沒有加密機(jī)制。但可以通過 SSL(Secure Socket Layer,安全套接層)建立安全的通信線路,再進(jìn)行 HTTP 通信,這種與 SSL 結(jié)合使用的稱為 HTTPS(HTTP Secure,超文本傳安全協(xié)議)。
內(nèi)容加密
還可以對(duì)通信內(nèi)容本身加密。HTTP 協(xié)議中沒有加密機(jī)制,但可以對(duì)其傳輸?shù)膬?nèi)容進(jìn)行加密,也就是對(duì)報(bào)文內(nèi)容進(jìn)行加密。這種加密方式要求客戶端對(duì) HTTP 報(bào)文進(jìn)行加密處理后再發(fā)送給服務(wù)器端,服務(wù)器端拿到加密后的報(bào)文再進(jìn)行解密。這種加密方式不同于 SSL 將整個(gè)通信線路進(jìn)行加密,所以它還是有被篡改的風(fēng)險(xiǎn)的。
1.2 無法驗(yàn)證報(bào)文的完整性,可能被篡改
接收到的內(nèi)容可能被做假
HTTP 協(xié)議是無法證明通信報(bào)文的完整性的。因此請(qǐng)求或響應(yīng)在途中隨時(shí)可能被篡改而不自知,也就是說,沒有任何辦法確認(rèn),發(fā)出的請(qǐng)求/響應(yīng)和接收到的請(qǐng)求/響應(yīng)是前后相同的。
比如瀏覽器從某個(gè)網(wǎng)站上下載一個(gè)文件,它是無法確定下載的文件和服務(wù)器上有些話的文件是同一個(gè)文件的。文件在傳輸過程中被掉包了也是不知道的。
這種請(qǐng)求或響應(yīng)在傳輸途中,被攔截、篡改的攻擊就是中間人攻擊。
某運(yùn)營商就經(jīng)常干這種事,打開百度、網(wǎng)易什么的,中間直接來個(gè)大大的廣告,你懂的…
防止篡改
也有一些 HTTP 協(xié)議確定報(bào)文完整性的方法,不過這些方法很不方便,也不太可靠。用得最多的就是 MD5 等散列值校驗(yàn)的方法。很多文件下載服務(wù)的網(wǎng)站都會(huì)提供相應(yīng)文件的 MD5 散列值,一來得用戶親自去動(dòng)手校驗(yàn)(中國估計(jì)只有 0.1% 不到的用戶懂得怎么做吧),二來如果網(wǎng)站提供的 MD5 值也被改寫的話呢?所以這種方法不方便也不可靠。
1.3 通信方身份不驗(yàn)證,可能遇到假的客戶端或服務(wù)器
在進(jìn)行 HTTP 通信時(shí),請(qǐng)求和響應(yīng)方都不會(huì)對(duì)通信方進(jìn)行身份確認(rèn)。這也會(huì)給人以可乘之機(jī)。
任何人都可以發(fā)起、響應(yīng)請(qǐng)求
在 HTTP 通信時(shí),由于服務(wù)器不確認(rèn)請(qǐng)求發(fā)起方的身份,所以任何設(shè)備都可以發(fā)起請(qǐng)求,服務(wù)器會(huì)對(duì)每一個(gè)接收到的請(qǐng)求進(jìn)行響應(yīng)(當(dāng)然,服務(wù)器可以限制 IP 地址和端口號(hào))。由于服務(wù)器會(huì)響應(yīng)所有接收到的請(qǐng)求,所以有人就利用這一點(diǎn),給服務(wù)器發(fā)起海量的無意義的請(qǐng)求,造成服務(wù)器無法響應(yīng)正式的請(qǐng)求,這就是 Dos 攻擊(Denial Of Service,拒絕服務(wù)攻擊)。
由于客戶端也不會(huì)驗(yàn)證服務(wù)器是否真實(shí),所以遇到來自假的服務(wù)器的響應(yīng)時(shí),客戶端也不知道,只能交由人來判斷。釣魚網(wǎng)站就是利用了這一點(diǎn)。
查明對(duì)方的證書
HTTP 協(xié)議無法確認(rèn)通信方,而 SSL 則是可以的。SSL 不僅提供了加密處理,還提供了叫做“證書”的手段,用于確定通信方的身份。
證書是由值得信任的第三方機(jī)構(gòu)頒發(fā)(已獲得社會(huì)認(rèn)可的企業(yè)或組織機(jī)構(gòu))的,用以證明服務(wù)器和客戶端的身份。而且偽造證書從目前的技術(shù)來看,是一件極為難的事情,所以證書往往可以確定通信方的身份。
以客戶端訪問網(wǎng)頁為例??蛻舳嗽陂_始通信之前,先向第三機(jī)機(jī)構(gòu)確認(rèn) Web 網(wǎng)站服務(wù)器的證書的有效性,再得到其確認(rèn)后,再開始與服務(wù)器進(jìn)行通信。
HTTPS
2.1 HTTP + 加密 + 認(rèn)證 + 完整性保護(hù) = HTTPS
HTTPS 也就是 HTTP 加上加密處理、認(rèn)證以及完整性保護(hù)。HTTP 協(xié)議在通信過程如果沒有使用加密的明文,比如在 Web 頁面輸入手機(jī)號(hào),如果這條通信線路再竊聽,那么手機(jī)號(hào)就被別人知道了。
另外,在 HTTP 中,服務(wù)器和客戶端都無法確認(rèn)通信方,說不定就是正在和某個(gè)騙子通信呢。還得考慮報(bào)文在通信過程中有沒有被篡改。
為了解決上面這些問題,可以在 HTTP 上加入加密處理和認(rèn)證機(jī)制。這種添加了加密及認(rèn)證機(jī)制的 HTTP 就叫做 HTTPS(HTTP Secure)。
使用 HTTPS 通信時(shí),用的是 https://,而不是 http://。另外,當(dāng)瀏覽器訪問 HTTPS 的 Web 網(wǎng)站時(shí),瀏覽器地址欄會(huì)出現(xiàn)一個(gè)帶鎖的標(biāo)記。
2.2 HTTPS 是 HTTP 披了層 SSL 的外殼
HTTPS 并非是應(yīng)用層的新協(xié)議,而是 HTTP 通信接口部分用 SSL 協(xié)議代替而已。
本來,HTTP 是直接和 TCP 通信。在 HTTPS 中,它先和 SSL 通信,SSL 再和 TCP 通信。所以說 HTTPS 是披了層 SSL 外殼的 HTTP。
SSL 是獨(dú)立于 HTTP 的協(xié)議,所以其他類似于 HTTP 的應(yīng)用層 SMTP 等協(xié)議都可以配合 SSL 協(xié)議使用,也可以給它們?cè)鰪?qiáng)安全性。
2.3 SSL 密鑰
加密
數(shù)據(jù)在傳輸過程中,很容易被竊聽。加密就是保護(hù)數(shù)據(jù)安全的措施。一般是利用技術(shù)手段把數(shù)據(jù)變成亂碼(加密)傳送,到達(dá)目的地后,再利用對(duì)應(yīng)的技術(shù)手段還原數(shù)據(jù)(解密)。
加密包含算法和密鑰兩個(gè)元素。算法將要加密的數(shù)據(jù)與密鑰(一竄數(shù)字)相結(jié)合,產(chǎn)生不可理解的密文。由此可見,密鑰與算法同樣重要。
對(duì)數(shù)據(jù)加密技術(shù)可以分為兩類:私人密鑰加密(對(duì)稱密鑰加密)和公開密鑰加密(非對(duì)稱密鑰加密)。
SSL 采用了 公開密鑰加密(Public-key cryptography)的加密處理方式。
現(xiàn)在的加密方法中,加密算法都是公開的,網(wǎng)上都有各種算法原理解析的內(nèi)容。加密算法雖然是公開的,算法用到的密鑰卻是保密的,以此來保持加密方法的安全性。
加密和解密都會(huì)用到密鑰。有了密鑰就可以解密了,如果密鑰被攻擊者獲得,加密也就沒有意義了。
私人密鑰
私人密鑰加密就是加密和解密用的是同一個(gè)密鑰,這也稱為對(duì)稱密鑰加密。
私人密鑰加密存在這樣一個(gè)問題,必須要將密鑰發(fā)送給對(duì)方。但如何才能安全地轉(zhuǎn)交密鑰呢?如果在互聯(lián)網(wǎng)上轉(zhuǎn)交密鑰時(shí),被監(jiān)聽了,那加密也就沒有意義了。也就是說,只要在互聯(lián)網(wǎng)上發(fā)送密鑰,就有被竊聽的風(fēng)險(xiǎn),但如果不發(fā)送,對(duì)方怎么解密呢?再說,如果密鑰能夠安全發(fā)送,那數(shù)據(jù)不也應(yīng)該能安全送達(dá)么!
公開密鑰加密
公開密鑰加密方式能很好地解決私人密鑰加密的困難。
公開密鑰加密方式有兩把密鑰。一把叫做私有密鑰(private key),另一把叫做公開密鑰(public key)。私有密鑰是一方保管,而公開密鑰則誰都可以獲得。
這種方式是需要發(fā)送密文的一方先獲得對(duì)方的公開密鑰,使用已知的算法進(jìn)行加密處理。對(duì)方收到被加密的信息后,再使用自己的私有密鑰進(jìn)行解密。
這種加密方式有意思是的加密算法的神奇,經(jīng)過這個(gè)公開的算法加密后的密文,即使知道公開密鑰,也是無法對(duì)密文還原的。要想對(duì)密文進(jìn)行解決,必須要有私鑰才行。所以公開密鑰加密是非常安全的,即使竊聽到密文和公開密鑰,卻還是無法進(jìn)行解密。
混合加密
公開密鑰加密很安全,但與私人密鑰加密相比,由于公開密鑰加密的算法復(fù)雜性,導(dǎo)致它的加密和解密處理速度都比私人密鑰加密慢很多,效率很低。所以可以充分利用它們各自的優(yōu)勢(shì),結(jié)合起來。
先用公開密鑰加密,交換私人密鑰加密會(huì)用的密鑰,之后的通信交換則使用私人密鑰方式。這就是混合加密。
1) 使用公開密鑰加密方式安全地交換在稍后的私人密鑰加密中要使用的密鑰
2)確保交換的密鑰是安全的前提下,使用私人密鑰加密方式進(jìn)行通信
2.4 公開密鑰證書
其實(shí),公開密鑰加密方式還存在一個(gè)很大的問題:它無法證明公開密鑰本身是真實(shí)的公開密鑰。比如,打算跟銀行的服務(wù)器建立公開密鑰加密方式的通信時(shí),怎么證明收到的公開密鑰就是該服務(wù)器的密鑰呢?畢竟,要調(diào)包公開密鑰是極為簡(jiǎn)單的。
這時(shí),數(shù)字證書認(rèn)證機(jī)構(gòu)(CA,Certificated Authority)就出場(chǎng)了。
數(shù)字證書認(rèn)證機(jī)構(gòu)是具有權(quán)威性、公正性的機(jī)構(gòu)。它的業(yè)務(wù)流程是:首先,服務(wù)器的開發(fā)者向數(shù)字證書認(rèn)證機(jī)構(gòu)提出公開密鑰(服務(wù)器公開密鑰)的申請(qǐng)。數(shù)字證書認(rèn)證機(jī)構(gòu)在核實(shí)申請(qǐng)者的身份之后,會(huì)用自己的公開密鑰(數(shù)字簽名公開密鑰)對(duì)申請(qǐng)的公開密鑰做數(shù)字簽名,再將 服務(wù)器公開密鑰、數(shù)字簽名以及申請(qǐng)者身份等信息放入公鑰證書。
服務(wù)器則將這份由數(shù)字證書認(rèn)證機(jī)構(gòu)頒發(fā)的公鑰證書發(fā)送給客戶端,以進(jìn)行公開密鑰加密方式通信。公鑰證書也可做數(shù)字證書或簡(jiǎn)稱為為證書。證書就相當(dāng)于是服務(wù)器的身份證。
客戶端接到證書后,使用 數(shù)字簽名公開密鑰 對(duì)數(shù)字簽名進(jìn)行驗(yàn)證,當(dāng)驗(yàn)證通過時(shí),也就證明了:1、真實(shí)有效的數(shù)字證書認(rèn)證機(jī)構(gòu)。2、真實(shí)有效的服務(wù)器公開密鑰。然后就可能與服務(wù)器安全通信了。
其實(shí)這里還是有一個(gè)問題的。那就是如何將 數(shù)字簽名公開密鑰 安全地轉(zhuǎn)給客戶端?難道再去另一個(gè)認(rèn)證機(jī)制那確認(rèn)(現(xiàn)在是真有的)?無疑,安全轉(zhuǎn)交是一件困難的事。因此,常用的認(rèn)證機(jī)關(guān)的公開密鑰會(huì)被很多瀏覽器內(nèi)置在里面。
EV SSL(增強(qiáng)型)證書
證書作用這一是證明服務(wù)器是否規(guī)范,另一個(gè)作用是可以確認(rèn)服務(wù)器背后的企業(yè)是否真實(shí)。具有這種特性的證書就是 EV SSL (Extended Validation SSL Certificate)證書。
EV SSL 證書是基于國際標(biāo)準(zhǔn)的嚴(yán)格身份驗(yàn)證頒發(fā)的證書。通過認(rèn)證的網(wǎng)站能獲得更高的認(rèn)可度。
EV SSL 證書在視覺上最大的特色在于激活瀏覽器的地址欄的背景色是綠色。而且在地址欄中顯示了 SSL 證書中記錄的組織名稱。
這個(gè)機(jī)制原本是為了防止用戶被釣魚攻擊的,但效果如何還真不知道,目前來看,很多用戶根本不清楚這是啥玩意兒。
客戶端證書
客戶端也是可以有證書的,讓服務(wù)器知道,正在通信的客戶端是可信任的。
相比之下,客戶端證書存在幾個(gè)問題。第一是證書的獲取和安裝。想要獲取證書時(shí),還得用戶自行安裝,關(guān)鍵是客戶端證書還是要花錢買的。另外,安裝這件事本身就有很多年長的人不太會(huì)。
所以,客戶端證書只在安全性要求級(jí)高的特殊情況下都會(huì)用。比如網(wǎng)上專業(yè)銀行,在登錄時(shí),不僅要用戶名和密碼,還要用個(gè)U盾。
客戶端的另一個(gè)問題是,客戶端證書只能證明客戶端的存在,卻不能證明是用戶本人在操作。也許是還證書都被盜了呢?
認(rèn)證機(jī)構(gòu)被黑
SSL 的安全建立在認(rèn)證機(jī)構(gòu)絕對(duì)可靠這一前提之下。但認(rèn)證機(jī)構(gòu)也有成功被黑的時(shí)候。在 2011年7月10號(hào),荷蘭的一家名叫 DigiNotar(同年9月20號(hào)宣布破產(chǎn)) 的認(rèn)證機(jī)構(gòu)被黑窩入侵,還頒布了 google.com、twitter.com 等網(wǎng)站的偽造證書,走到8月28號(hào)才被伊朗發(fā)現(xiàn)。這一事件從根本上撼動(dòng)了 SSL 的可信度。
因?yàn)閭卧熳C書上有正規(guī)認(rèn)證機(jī)構(gòu)的數(shù)字簽名,所以瀏覽器會(huì)判定該證書是正常的。當(dāng)偽造的證書被用于服務(wù)器偽裝時(shí),用戶根本無法察覺。
雖然微軟、蘋果、Opera 等瀏覽器廠商積極采取了措施,不過生效卻是要一段時(shí)間的,這段時(shí)間內(nèi)造成的用戶的損失有多大就不知道了。
OpenSSL
OpenSSL 是用 C 寫的一套 SSL 和 TLS 開源實(shí)現(xiàn)。這也就意味著人人都可以基于這個(gè)構(gòu)建屬于自己的認(rèn)證機(jī)構(gòu),然后給自己的頒發(fā)服務(wù)器證書。不過然并卵,其證書不可在互聯(lián)網(wǎng)上作為證書使用。
這種自認(rèn)證機(jī)構(gòu)給自己頒發(fā)的證書,叫做自簽名證書。自己給自己作證,自然是算不得數(shù)的。所以瀏覽器在訪問這種服務(wù)器時(shí),會(huì)顯示“無法確認(rèn)連接安全性”等警告消息。
OpenSSL 在2014年4月,被爆出一個(gè)內(nèi)存溢出引出的 BUG,駭客利用這點(diǎn)能拿到服務(wù)器很多信息,其中就包括私鑰,也就使得 HTTPS 形同虛設(shè)。當(dāng)時(shí)全世界大概有一百萬左右的服務(wù)器有受到此漏洞的影響。由于 OpenSSL 舉足輕重的作用,再加上足夠致命的問題,使得這個(gè) BUG 被形容為“互聯(lián)網(wǎng)心臟出血”。這是近年來互聯(lián)網(wǎng)最嚴(yán)重的安全事件。
HTTPS 缺點(diǎn)
HTTPS 使用 SSL 通信,所以它的處理速度會(huì)比 HTTP 要慢。
一是通信慢。它和 HTTP 相比,網(wǎng)絡(luò)負(fù)載會(huì)變慢 2 到 100倍。除去和 TCP 連接、發(fā)送 HTTP 請(qǐng)求及響應(yīng)外,還必須進(jìn)行 SSL 通信,因此整體上處理通信量會(huì)不可避免的增加。
二是 SSL 必須進(jìn)行加密處理。在服務(wù)器和客戶端都需要進(jìn)行加密和解密的去處處理。所以它比 HTTP 會(huì)更多地消耗服務(wù)器和客戶端的硬件資源。
由于 HTTPS 會(huì)消耗更多的資源,再者還要花錢購買證書,所以目前 HTTPS 一般只會(huì)用到敏感信息上。
不過雖然目前的硬件的快速發(fā)展,HTTPS 的資源消耗問題將不再是什么太大問題了。另外,隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,用戶信息泄露情況日益嚴(yán)重,也是非常有必要采用 HTTPS 來進(jìn)行通信的。Apple 就在 iOS9 中鼓勵(lì)應(yīng)用積極使用 HTTPS。
日期:2018-04 瀏覽次數(shù):6777
日期:2017-02 瀏覽次數(shù):3456
日期:2017-09 瀏覽次數(shù):3676
日期:2017-12 瀏覽次數(shù):3544
日期:2018-12 瀏覽次數(shù):4843
日期:2016-12 瀏覽次數(shù):4595
日期:2017-07 瀏覽次數(shù):13659
日期:2017-12 瀏覽次數(shù):3522
日期:2018-06 瀏覽次數(shù):4279
日期:2018-05 瀏覽次數(shù):4458
日期:2017-12 瀏覽次數(shù):3570
日期:2017-06 瀏覽次數(shù):3995
日期:2018-01 瀏覽次數(shù):3958
日期:2016-12 瀏覽次數(shù):3925
日期:2018-08 瀏覽次數(shù):4441
日期:2017-12 瀏覽次數(shù):3733
日期:2016-09 瀏覽次數(shù):6453
日期:2018-07 瀏覽次數(shù):3223
日期:2016-12 瀏覽次數(shù):3241
日期:2018-10 瀏覽次數(shù):3396
日期:2018-10 瀏覽次數(shù):3503
日期:2018-09 瀏覽次數(shù):3593
日期:2018-02 瀏覽次數(shù):3611
日期:2015-05 瀏覽次數(shù):3538
日期:2018-09 瀏覽次數(shù):3318
日期:2018-06 瀏覽次數(shù):3448
日期:2017-02 瀏覽次數(shù):3884
日期:2018-02 瀏覽次數(shù):4347
日期:2018-02 瀏覽次數(shù):4191
日期:2016-12 瀏覽次數(shù):3587
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.