Android中HTTPS應用開發--HTTPS介紹

對https的總結,整理成文字。

小序

開發一般使用的http協議,是明文傳輸的,當然是不安全的。如果涉及到用戶信息隱私,就可能通過某種技術手段獲取得到並加以利用。
想要自己的應用安全,保護用戶數據,就需要使用https協議。

爲什麼需要HTTPS?

網絡應用會面臨這些問題:數據泄露、請求劫持、內容篡改等等,核心原因就在於HTTP是全裸式的明文請求,域名、路徑和參數都被中間人們看得一清二楚。HTTPS做的就是給請求加密,讓其對用戶更加安全。對於自身而言除了保障用戶利益外,還可避免本屬於自己的流量被挾持,以保護自身利益。
儘管HTTPS並非絕對安全,掌握根證書的機構、掌握加密算法的組織同樣可以進行中間人形式的攻擊。不過HTTPS是現行架構下最安全的解決方案,並且它大幅增加了中間人攻擊的成本。

HTTPS是什麼?

HTTPS 其實就是個安全版的 http。
HTTPS是在http協議的基礎上增加了SSL/TLS( SSL 和 TLS 說的都是同一個協議,版本不同而已。TLS是SSL的升級版)。
在瀏覽器的地址欄中以 https:// 開頭, 這表示, 你的瀏覽器跟這個網站的數據往來都是安全的.https 跟 http 的最大區別在於 https 多加了一個保障通訊安全的層.
這裏寫圖片描述
SSL/TLS:SSL (Secure Sockets Layer) 是一種在客戶端跟服務器端建立一個加密連接的安全標準. 一般用來加密網絡服務器跟瀏覽器, 或者是郵件服務器跟郵件客戶端(如: Outlook)之間傳輸的數據.
SSL 能保障敏感信息(如:銀行卡號, 社保卡號, 登陸憑證等)的傳輸安全. 一般情況下, 數據在瀏覽器跟服務器之間的傳輸使用的是明文格式, 這種方式存在資料被竊取的風險. 如果黑客能攔截瀏覽器跟服務器之間的通訊數據, 就能看到通訊的內容.

爲什麼說HTTPS是安全的?

HTTPS 協議提供了三個強大的功能來對抗上述的劫持行爲:

  1. 內容加密。瀏覽器到百度服務器的內容都是以加密形式傳輸,中間者無法直接查看原始內容。
  2. 身份認證。保證用戶訪問的是百度服務,即使被 DNS 劫持到了第三方站點,也會提醒用戶沒有訪問百度服務,有可能被劫持
  3. 數據完整性。防止內容被第三方冒充或者篡改。

內容加密

加密算法一般分爲兩種,對稱加密和非對稱加密。所謂對稱加密(也叫密鑰加密)就是指加密和解密使用的是相同的密鑰。而非對稱加密(也叫公鑰加密)就是指加密和解密使用了不同的密鑰。
對稱加密

對稱內容加密強度非常高,一般破解不了。但存在一個很大的問題就是無法安全地生成和保管密鑰。假如客戶端軟件和服務器之間每次會話都使用固定的,相同的密鑰加密和解密,肯定存在很大的安全隱患。如果有人從客戶端端獲取到了對稱密鑰,整個內容就不存在安全性了,而且管理海量的客戶端密鑰也是一件很複雜的事情。

非對稱加密

非對稱加密主要用於密鑰交換(也叫密鑰協商),能夠很好地解決這個問題。瀏覽器和服務器每次新建會話時都使用非對稱密鑰交換算法協商出對稱密鑰,使用這些對稱密鑰完成應用數據的加解密和驗證,整個會話過程中的密鑰只在內存中生成和保存,而且每個會話的對稱密鑰都不相同(除非會話複用),中間者無法竊取。

在非對稱密鑰交換算法出現以前,對稱加密一個很大的問題就是不知道如何安全生成和保管密鑰。非對稱密鑰交換過程主要就是爲了解決這個問題,使得對稱密鑰的生成和使用更加安全。

HTTPS一般使用的加密與HASH算法如下:
  非對稱加密算法:RSA,DSA/DSS
  對稱加密算法:AES,RC4,3DES
  HASH算法:MD5,SHA1,SHA256

其中非對稱加密算法用於在握手過程中加密生成的密碼,對稱加密算法用於對真正傳輸的數據進行加密,而HASH算法用於驗證數據的完整性。由於瀏覽器生成的密碼是整個數據加密的關鍵,因此在傳輸的時候使用了非對稱加密算法對其加密。非對稱加密算法會生成公鑰和私鑰,公鑰只能用於加密數據,因此可以隨意傳輸,而網站的私鑰用於對數據進行解密,所以網站都會非常小心的保管自己的私鑰,防止泄漏。

非對稱密鑰交換算法是整個 HTTPS 得以安全的基石,充分理解非對稱密鑰交換算法是理解 HTTPS 協議和功能的關鍵。

參考:
爲你的Android App實現自簽名的 SSL證書
圖解HTTPS
大型網站的HTTPS實踐一:HTTPS協議和原理
HTTPS那些事:HTTPS原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章