HTTPS加密解密筆記
簡單的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