上篇實戰代碼中涉及大量加密概念,易混淆。本文系統梳理非對稱加密、公私鑰、證書、簽名的區別與聯繫,並詳解 X.509 證書獲取與管理。
Kerckhoff 原則:算法公開,密鑰保密。RSA 為最流行公鑰算法,支援加密與數位簽名。
公鑰:(N, e) —— 公開加密
私鑰:d —— 保密解密
安全性基於大數分解困難,<1024 位 N 已不安全。RSA 速度比 DES 慢數倍,僅適用少量數據或加密密鑰。
甲方生成鑰對 → 公鑰公開 → 乙方用公鑰加密發送 → 甲方用私鑰解密。消除密鑰交換需求,保密性強。
成對出現:公鑰加密 ↔ 私鑰解密;私鑰簽名 ↔ 公鑰驗證。.NET 提供:
DSACryptoServiceProvider(僅簽名)RSACryptoServiceProvider(加密+簽名)公鑰公開供任意人加密,私鑰僅持有者知曉,截獲密文無法破譯。
包含:公鑰 + 姓名/主體 + 數位簽名
CA (Certificate Authority) = 證書機構 = 公安局(身份證管理機構)
CA 用自有私鑰對「主體資訊 + 公鑰」雜湊後簽名,產生唯一識別值(如身份證號)。驗證時用 CA 公鑰驗證簽名,確保證書未竄改且確實由 CA 簽發。
朋友寫信 → 查 CA 獲取我的證書(含公鑰) → 用公鑰加密 → 寄給我 → 我用私鑰解密。
加密不一定需要證書,視安全需求而定。大型電商必有 CA 簽發證書(如 VeriSign)。企業內部可自建 CA(Windows Server 2003 Certificate Services)。
ITU-T 制定的證書格式國際標準(如二代身份證規範)。含有效期限制(如 10 年)。
VeriSign 等,廣泛受信、需付費。
自建私有 CA,僅內網信任(如員工胸卡)。
makecert -sr CurrentUser -ss My -n "CN=FrankCertificate" -sky signature -pe
參數解析:
-sr CurrentUser:存儲位置(當前用戶)-ss My:存儲名稱(個人)-n "CN=...":X.500 主體名稱-sky signature:簽名密鑰(1=交換,2=簽名)-pe:私鑰可導出
生成證書存入當前用戶「個人」存儲區。實際開發多用 Windows 憑證服務管理。
以「身份證」類比澄清證書概念,CA 比擬公安局。掌握非對稱加密、公私鑰、證書、簽名四者關係,為 WSE 3.0/WCF 安全開發奠基。下節講策略配置實戰。本文附參考資料鏈接。