TCP如何保證傳輸安全
- 對稱加密
- 加密和解密使用同一把密鑰進行
- 問題暴露: 明文傳輸密鑰跟客戶端,密鑰在中間被截取了呢,如何安全傳輸密鑰給客戶端?
- 非對稱加密
- 客戶端和服務器同時擁有公鑰和私鑰
- 用公鑰加密的數據,只有對應的私鑰才能解密;用私鑰加密的數據,只有對應的公鑰才能解密
- 過程: 服務器用公鑰加密,客戶端使用私鑰解密
- 問題暴露:加密速度較對稱加密慢百倍
- 對稱加密 + 非對稱加密
- 非對稱加密 加密密鑰
- 對稱加密 加密傳輸數據
- 過程: 明文傳輸公鑰給客戶端 -> 客戶端使用收到的公鑰加密 密鑰(對稱加密的) -> 服務器私鑰解密得到 密鑰(對稱加密的)
- 解決的問題:
- 服務端如何安全得到 密鑰(對稱加密的)
- 數據傳輸速度提升 (真正的數據傳輸使用對稱加密, 只有密鑰傳輸使用了非對稱加密)
- 問題暴露: 服務器明文傳輸公鑰,萬一傳輸過程中被截取了呢 (若截取成功,客戶端傳輸數據再次被截取,豈不是GG),跟換了一個公鑰,也就說服務器身份無法得到驗證
- 數字證書
- 認證中心CA
- 過程: 把要傳輸的公鑰和服務器信息通過Hash算法生成 信息摘要 -> CA使用自己的私鑰加密信息摘要形成數字簽名 -> 再把 公鑰+數字簽名+未hash的個人信息 形成 數字證書 -> 客戶端擁有一份數字證書,經過hash算法對公鑰和個人信息生成信息摘要,最後對比兩份信息摘要 (一致就是可靠的服務器)
- 問題暴露: 1. CA的公鑰怎麼給客戶端 2. CA的私鑰怎麼給服務器
- 客戶端內置證書
- 服務器一開始就申請證書 (需要購買的)