踮起仰望 HTTPS原理

HTTPS原理

  • Http爲什麼是不安全的協議?

    使用http傳輸數據至少存在着數據被監聽以及數據被篡改這兩大風險,因此http是一種不安全的傳輸協議

  • HTTPS = HTTP + SSL(TLS)

    SSL 即安全套接字層,它在 OSI 七層網絡模型中處於第五層,SSL 在 1999
    年被 IETF(互聯網工程組)更名爲 TLS ,即傳輸安全層,直到現在,TLS
    一共出現過三個版本,1.1、1.2 和 1.3 ,目前最廣泛使用的是 1.2;TLS
    用於兩個通信應用程序之間提供保密性和數據完整性。TLS
    由記錄協議、握手協議、警告協議、變更密碼規範協議、擴展協議等幾個子協議組成,綜合使用了對稱加密、非對稱加密、身份認證等許多密碼學前沿技術

  • TLS:由於非對稱加密的運算速度慢,而對稱加密的運算速度較快,所以TLS使用了混合加密的方式,在通信剛開始時使用非對稱加密算法來進行交換會話密鑰,之後數據的傳遞採用對稱加密算法,保證傳輸有效率

  • 摘要算法 : MD5 是屬於密碼哈希算法(cryptographic hashalgorithm)的一種,MD5 可用於從任意長度的字符串創建 128 位字符串值。儘管 MD5存在不安全因素,但是仍然沿用至今。可以通過加鹽使得 摘要算法更加安全

    什麼是加鹽?在密碼學中,鹽就是一項隨機數據,用作哈希數據,密碼或密碼的單向函數的附加輸入。鹽用於保護存儲中的密碼什麼是單向?就是在說這種算法沒有密鑰可以進行解密,只能進行單向加密,加密後的數據無法解密,不能逆推出原文​

  • CA機構簽發數字證書:CA機構專門用於給各個網站簽發數字證書,從而保證瀏覽器可以安全地獲得各個網站的公鑰,公鑰可以對" 之後傳輸的數據使用的對稱加密密鑰 " 進行加解密.

    • 1.首先,我們作爲一個網站的管理員需要向CA機構進行申請,將自己的公鑰提交給CA機構。CA機構則會使用我們提交的公鑰,再加上一系列其他的信息,如網站域名、有效時長等,來製作證書
    • 2.證書製作完成後,CA機構會使用自己的私鑰對其加密,並將加密後的數據返回給我們,我們只需要將獲得的加密數據配置到網站服務器上即可
    • 3.每當有瀏覽器請求我們的網站時,首先會將這段加密數據返回給瀏覽器,此時瀏覽器會用CA機構的公鑰來對這段數據解密
    • 4.如果能解密成功,就可以得到CA機構給我們網站頒發的證書了,其中當然也包括了我們網站的公鑰。你可以在瀏覽器的地址欄上,點擊網址左側的小鎖圖標來查看證書的詳細信息
  • 上面流程中提到的第4 點中的 “此時瀏覽器會用CA機構的公鑰來對這段數據解密” 中的公鑰,爲了安全,又該如何獲取到CA機構的公鑰?

    這個問題就很好解決了,因爲世界上的網站是無限多的,而CA機構總共就那麼幾家。任何正版操作系統都會將所有主流CA機構的公鑰內置到操作系統當中,所以我們不用額外獲取,解密時只需遍歷系統中所有內置的CA機構的公鑰,只要有任何一個公鑰能夠正常解密出數據,就說明它是合法的

  • 接上面的點,假如攻擊者知道abc.com使用的是某家CA機構的證書,那麼他也可以同樣去這家CA機構申請一個合法的證書,然後在瀏覽器請求abc.com時對返回的加密證書數據進行替換,這時CA機構頒發的證書也不見得安全啊?
    有CA機構在製作的證書時除了網站的公鑰外,還要包含許多其他數據,用來輔助進行校驗,比如說網站的域名就是其中一項重要的數據,如果證書中加入了網站的域名,那麼攻擊者就只能無功而返了。因爲,即使加密數據可以被成功解密,但是最終解密出來的證書中包含的域名和瀏覽器正在請求的域名對不上,那麼此時瀏覽器仍然會顯示異常界面

  • 總結:

    • HTTPS是由HTTP和TLS組成,HTTP負責數據的傳輸,TLS負責網站安全認證和數據安全;
    • 一般HTTPS協議都需要去向專門的CA機構簽發數字證書,這數字證書是由網站的非對稱加密的公鑰、網站域名和證書有效時長

      組成,證書製作完成還需要用CA機構自家的私鑰對其加密,之後將加密後的數據配置在網站服務器;
    • 當客戶端請求網站時,網站將CA機構簽發的加密數據返回給客戶端,客戶端使用系統內置的所有CA機構的公鑰進行一
      一解密,只要有任何一個公鑰能夠正常解密出數據,就說明這個公鑰是合法的,這步驟還需要校驗客戶端請求的域名和
      CA機構簽發的證書裏的域名等 數據 是否 一樣, 以此 拿到網站
      非對稱加密的公鑰;
    • 之後客戶端隨機生成一個密鑰(該密鑰用於之後數據傳輸中,對稱加密的密鑰),使用公鑰對齊加密,傳輸給服務端;
    • 服務端收到瀏覽器發過來的數據,使用非對稱加密的私鑰
      對齊解密,拿到密鑰;
    • 之後數據傳輸,就用的 “對稱加密” 對數據進行加解密。
  • 疑問點

    • 如果沒有CA機構製作的證書,是否可行?
      • 假設沒有CA機構製作的證書,那https首次傳輸是使用非對稱加密算法來傳輸key,具體過程:即
        服務端使用非對稱算法生成
        公鑰A和私鑰A,將公鑰A傳遞給客戶端,客戶端生成密鑰key,並使用公鑰A加密,傳遞迴服務端,服務端拿到數據之後,使用私鑰A對其解密,拿到密鑰key。
      • 那這個交換密鑰的過程,假設有中間者監聽並篡改公鑰A呢?
        怎麼篡改公鑰A?
      • 公鑰A傳遞給客戶端的過程,中間者也使用非對稱加密算法生成公鑰B和私鑰B,截取並使用公鑰B替換公鑰A,客戶端收到公鑰B,生成密鑰key並使用公鑰B加密,傳遞迴服務端,那中間者就可以拿到該數據,並使用私鑰B進行解密,從而拿到密鑰key;
        接着是不是可以使用公鑰A對密鑰key進行加密,將該數據傳遞迴服務端
      • 因此,沒有CA機構製作的證書,是不可行的,因爲還是會被盜取密鑰key
  • 參考: https://mp.weixin.qq.com/s/DGIkZT26CBafJzpQgrqqdQ

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