Just a Computer Graphics Studio & My Life

HTTP與HTTPS

開發Mobile App有時也要跟Web互動溝通,此時就會接觸到HTTP與HTTPS,一直沒有深入瞭解其中的關係,只知道是有沒有加密的差別,但其實裡頭學問可多的呢!iOS 10即將到來,Apple又針對ATS (App Transport Security)有更嚴謹的規定,我想就趁這個時候來徹底了解一下吧!

HTTP+加密+認證+完整性保護=HTTPS.png

 

所謂HTTPS:

HTTPS=HTTP+加密+認證+完整性保護

上面這個公式,正好可以對應解決HTTP的弊端!

個別解釋上述四個項目:

HTTP

HTTPS並非新的應用層協議,而是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)協議代替。用HTTP的時候,HTTP直接和TCP通信,用SSL的時候,HTTP就會先和SSL通信,然後SSL再和TCP通信。簡而言之,HTTPS就是套了SSL協議外殼的HTTP

加密

HTTP加密傳輸一般使用共享密鑰加密,這是一種對稱加密方法也就是說,發送方和接收方使用同一套密鑰。這樣存在的問題是,密鑰在傳輸過程中可能被竊取。

HTTPS採用的是公開密鑰加密的處理方式。這是一種不對稱的加密方式,就是說,發送方用對方的公開密鑰加密,當信息傳遞到對方的時候,對方用自己的私有密鑰解密,這樣就不涉及傳輸密鑰的安全問題。公開密鑰可以隨意傳輸,私有密鑰只有自己知道。

認證

HTTP協議無法確定通信方,但是SSL可以。它擁有一種叫做證書的手段,可用於確定方。另外偽造證書想當困難,所以只要能夠確定通信方持有證書,就可以判斷通信方的真正意圖。

證書由值得信賴的第三方機構頒發,用以證明服務器端和客戶端是真實存在的。

完整性保護

應用層在發送數據時,會附加一種叫做MAC(Message Authentication Code)的報文摘要。MAC能夠查知報文是否遭到篡改,從而保護報文的完整性。

HTTPS是身披SSL外殼的HTTP

通常,HTTP直接和TCP通信。當使用SSL時,則演變成先和SSL通信,再由SSL和TCP通信了。簡言之,所謂HTTPS,其實就是身披SSL協議這層外殼的HTTP。

http https.png

SSL是獨立於HTTP的協議,所以不光是HTTP協議,其他運行在應用層的SMTP和Telnet等協議均可配合SSL(Secure Socket Layer)協議使用。可以說SSL是當今世界上應用最為廣泛的網絡安全技術。

HTTPS當然也有些問題

當HTTP使用SSL的時候,處理速度會變慢,一般HTTPS比HTTP慢2到100倍。

  1. 因為多了HTTP和SSL及TCP的通信
  2. 因為HTTPS要處理客戶端和服務器之間的加密解密,完整性,證書認證等驗證。這也將消耗CPU和內存等硬件資源

由此看來在一些情況下不用HTTPS的原因也是顯而易見了。因為HTTPS的處理速度會變慢,因為對硬件的消耗,對訪問量很大的web網站而言,其承擔的負載不容小覷。除此之外,節約購買數字證書的成本也是原因之一。所以,一般非敏感性信息還是會用http通信,敏感性的信息才會用https通信。

針對SSL速度慢的情況,沒有根本的解決方案,一般會使用SSL加速器這種(專用服務器)硬件來改善問題。

有了圖解來分辨HTTP和HTTPS的差異就顯而易見!日本人寫的書由中國人來翻譯,看了博主大大的筆記後,讓我更容易記住兩者的特性!

參考:

Advertisements

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: