簡單的Https傳輸過程筆記

Principle

public-key cryptography

經過公鑰加密的密文只能藉由密鑰解密
經過私鑰加密的密文只能藉由公鑰解密
ex: RSA

symmetric key algorithms

加密解密使用同一把密鑰
ex: DES

過程

  • Client say hello to Server
  • Server send CA signed Certification to Client
    • CA signed Certification詳細參照下節
  • Client check Certification(Cert包含公鑰,確保Cert是由可信任的CA簽可的,確保該公鑰確實是該Server的)
  • Client send random string to Server
  • Server使用私鑰加密經過hash後的random string與hash演算法發送回Client(RSA)
    • Hacker可能會發送多個簡單有規律的字串給Server獲得加密後的字串,企圖找出加密規律,hash後再傳送可避免這個
  • Client用公鑰解密得到hash後的random string與hash演算法,並將原random string以hash演算法作hash並比對,若相同可確保是該Server送出的(RSA)
  • Client使用公鑰加密並送出密鑰與對稱加密演算法給Server(RSA)
  • Server使用私鑰解密得到對稱加密密鑰(RSA)
  • Client使用密鑰將帳號密碼與hash過的帳號密碼、hash演算法傳給Server(DES)
    • hash可用來比對並確保傳輸過程中內容沒遭到修改
  • Server使用密鑰解密得到帳號密碼與hash,Server將帳號密碼hash後與Client的hash比對,確保過程中是否內容有遭到修改(DES)
  • 通訊過程中除了hash外也可將random value加入,若收到重複的random value則表示該內容可能是hacker為了干擾重複傳送的

Certification

Certification包含Issuer(CA)、valid to(有效期)、public key、Subject(上述過程中的Server)、Signature algorithm(對Thumbprint加密的演算法)、Thumbprint, Thumbprint algorithm(用來確保Cert的完整性確保沒被修改過)

  • OS內建SecureTrust CA的Certification
  • Server提供公鑰與Server信息給CA申請Cert
  • CA必須驗證該公鑰確實為該Server所擁有並發送Cert給Server
  • Client收到Cert後以CA的公鑰與Signature Alg解密得到Thumbprint與Thumbprint alg.
  • Client使用Thumbprint alg.計算Cert的Thumbprint並比對
  • 此時即可確保Cert沒被修改過且公鑰確實為該Server