石頭人面試HTTP之https

前言

小夥伴們在面試過程當中會遇到一些HTTPS相關問題面試

我大概收集整理了下算法

  1. 介紹HTTPS
  2. HTTP和HTTPS的區別
  3. HTTPS的加密過程
  4. HTTPS怎麼創建安全通道
  5. 介紹SSL和TLS
這些問題咱們均可以在如下文章中找到答案

http存在問題

  1. 被竊聽:使用了明文
  2. 遇假裝:不驗證通訊方身份
  3. 遭篡改:沒法證實報文完整性

問題解決

  1. 被竊聽解決安全

    • 通訊加密:經過和SSL或TLS的組合使用,加密通訊內容
    • 內容加密:客戶端對HTTP報文加密處理,(須要客戶端和服務器端有加密和解密的機制)仍有風險
  2. 遇假裝解決服務器

    • 查看證書:SSL提供證書手段
  3. 遭篡改解決併發

    • 完整性保護:https提供

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

https簡介

HTTPS 不是新協議,只是HTTP通訊接口部分用SSL和TLS代替code

HTTP + SSL = HTTPS接口

HTTPS : HTTP -> SSL -> TCP -> IP
HTTPS : HTTP -> TCP -> IP登錄

加密

  1. 對稱密鑰加密(共享密鑰加密):加密解密用同一個密鑰隨機數

    • 密鑰必須發給對方,過程當中可能被竊聽
  2. 非對稱密鑰加密(公開密鑰加密):一把私有密鑰(只有本身知道),一把公開密鑰(任何人均可以知道)

    • 發送方用公開密鑰加密,接收方用私有密鑰解密
    • 處理速度較慢

HTTPS採用共享密鑰加密公開密鑰加密混合加密機制,保證處理速度和安全性

- 交換密鑰階段:     使用公開密鑰加密 能夠簡單理解爲加密的是共享密鑰的公鑰(保證安全)
- 創建通訊交換報文: 使用共享密鑰加密 加密的是通訊的報文(保證速度)

認證

  1. 服務器 用本身的公開密鑰登陸證書認證機構
  2. 認證機構用本身的私有密鑰向服務器的公開密碼加數字簽名 並頒發公鑰證書
  3. 客戶端拿到服務器的公鑰證書,利用認證機構公開密鑰(認證機構公開密鑰已事先植入客戶端),驗證公鑰證書的的數字簽名,已確認服務器公開密鑰的真實性
  4. 使用服務器的公開密鑰加密報文發送
  5. 服務器用私有密鑰解密報文

完整性保護

  1. 應用層發送數據時附加一種MAC的報文摘要,可查知報文是否被篡改

HTTPS安全通訊流程

客戶端支持的加密算法 = [A,B,C]

客戶端隨機數 = R1

服務端隨機數 = R2

TLS四次握手

  1. Client Hello 客戶端請求創建鏈接,向服務端發送(R1 + [A,B,C]
  2. Server Hello 服務端 回覆(R2 + [A] + 證書(非對稱加密公鑰)
  3. Client Key Exchange 客戶端 驗證證書 而後經過 [A] -> key key + 非對稱加密公鑰 = 加密key 併發送(加密key
  4. Server Finish 服務端 利用 加密key + 非對稱加密私鑰 = 解密key
    同時利用 R1 + R2 + 解密key = 對稱加密的密鑰

    此後的HTTP連接數據傳輸即經過對稱加密方式進行加密傳輸。

SSL和TLS

SSL 是一種安全傳輸協議,因爲安全的緣由SSL v1.0和SSL v2.0都沒有公開,直到SSL v3.0。

TLS 是SSL v3.0的升級版,目前市面上全部的HTTPS都是用的是TLS,而不是SSL

爲保證小夥伴們快速理解記憶,本文對HTTPS知識儘量的作了簡化處理,某些細節沒有深究,望見諒
相關文章
相關標籤/搜索