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