安全協定
Posted on Mar 27, 2025
TLS/SSL (Transport Layer Security)
- TLS 握手過程:
- ClientHello:客戶端發送支援的加密算法和隨機數
- ServerHello:伺服器選擇加密算法並發送隨機數和證書
- 證書驗證:客戶端驗證伺服器證書
- 金鑰交換:使用非對稱加密建立共享密鑰
- 完成握手:雙方使用對稱加密保護後續通訊
- 加密類型:
- 對稱加密:AES、ChaCha20 等,用於資料傳輸
- 非對稱加密:RSA、ECC,用於金鑰交換
- 雜湊函數:SHA-256、SHA-384,用於訊息完整性
- TLS 版本演進:
- TLS 1.0/1.1:已棄用,存在安全漏洞
- TLS 1.2:目前廣泛使用,支援多種加密套件
- TLS 1.3:最新版本,大幅改進安全性和效能
- Perfect Forward Secrecy (PFS):即使私鑰洩露,之前的通訊仍安全
- TLS 1.3 改進:
- 減少握手往返次數(1-RTT)
- 移除不安全的加密算法
- 握手加密
- 0-RTT 恢復功能(權衡安全性與性能)
- 證書驗證機制:
- 證書鏈:根 CA → 中間 CA → 終端實體證書
- CRL (Certificate Revocation List):憑證撤銷清單
- OCSP (Online Certificate Status Protocol):線上憑證狀態協定
- SNI (Server Name Indication):支援單一 IP 多域名證書
- 安全增強功能:
- HSTS (HTTP Strict Transport Security):強制瀏覽器使用 HTTPS
- Certificate Pinning:證書釘選,防止憑證攻擊
SSH (Secure Shell)
- SSH 版本差異:
- SSH-1:已棄用,存在安全漏洞
- SSH-2:目前標準版本,安全性大幅改善
- 認證方式:
- 密碼認證:簡單但安全性較低
- 公鑰認證:高安全性,使用密鑰對
- 雙因素認證:結合密鑰和密碼/驗證碼
- 密鑰類型比較:
- RSA:傳統算法,密鑰長度 2048/4096 bits
- DSA:已不推薦使用
- ECDSA:橢圓曲線算法,較短密鑰長度
- Ed25519:新一代橢圓曲線算法,推薦使用
- 連接建立流程:
- TCP 連接建立(預設端口 22)
- 協議版本協商
- 演算法協商
- 金鑰交換
- 用戶認證
- 主機身份驗證:
- known_hosts 檔案:儲存已知主機的公鑰指紋
- 主機密鑰檢查:防止中間人攻擊
- 首次連接警告:新主機連接時的安全提示
- SSH 隧道:
- 本地轉發:-L 選項,將本地端口轉發到遠端
- 遠程轉發:-R 選項,將遠端端口轉發到本地
- 動態轉發:-D 選項,建立 SOCKS 代理
- SSH 配置與管理:
~/.ssh/config
文件配置- 主機別名設定
- 密鑰管理與 ssh-agent
- 連接池和復用 (ControlMaster)
- 免密碼登入設定
IPSec (Internet Protocol Security)
- 協議組件:
- AH (Authentication Header):僅提供認證和完整性,不加密
- ESP (Encapsulating Security Payload):提供認證、完整性和加密
- 運行模式:
- 傳輸模式:僅加密 IP 封包的負載,保留原始 IP 標頭
- 隧道模式:加密整個 IP 封包並添加新的 IP 標頭
- 安全關聯 (SA):定義加密算法、密鑰和安全參數
- IKE (Internet Key Exchange):
- IKEv1:傳統版本,較複雜的協商過程
- IKEv2:改進版本,更簡潔且支援移動性
- 第一階段:建立 ISAKMP SA,保護第二階段
- 第二階段:建立 IPSec SA
- NAT 穿透:
- NAT-T (NAT Traversal):解決 NAT 環境下的 IPSec 連接問題
- UDP 封裝:將 ESP 封包封裝在 UDP 中通過 NAT
- 實際應用:
- 站點對站點 VPN:連接不同辦公室網路
- 遠程訪問 VPN:員工在外部存取公司網路
- L2TP/IPSec VPN:結合 L2TP 隧道和 IPSec 加密
- 配置考量:
- 加密算法選擇:AES、3DES 等對稱加密
- 認證方式:PSK (Pre-Shared Key) 或憑證
- 完整性驗證:SHA-1、SHA-256 等雜湊算法