首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WSE 3.0 構建 Web 服務安全(二):非對稱加密、證書、簽名核心概念澄析

     編輯:關於.NET

前言

上篇實戰代碼中涉及大量加密概念,易混淆。本文系統梳理非對稱加密、公私鑰、證書、簽名的區別與聯繫,並詳解 X.509 證書獲取與管理。

一、非對稱加密算法

Kerckhoff 原則:算法公開,密鑰保密。RSA 為最流行公鑰算法,支援加密與數位簽名。

RSA 原理

  1. 選大質數 p、q,計算 N = p×q
  2. 選 e,1 < e < N,與 (p-1)(q-1) 互質
  3. 計算 d:d×e ≡ 1 (mod (p-1)(q-1))
  4. 銷毀 p、q

公鑰:(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)。

X.509 標準

ITU-T 制定的證書格式國際標準(如二代身份證規範)。含有效期限制(如 10 年)。

四、X.509 證書獲取與管理

1. 免費試用證書

2. 商業 CA 購買

VeriSign 等,廣泛受信、需付費。

3. Windows Server 2003 憑證服務

自建私有 CA,僅內網信任(如員工胸卡)。

4. makecert.exe 命令行工具

makecert -sr CurrentUser -ss My -n "CN=FrankCertificate" -sky signature -pe

參數解析:

  • -sr CurrentUser:存儲位置(當前用戶)
  • -ss My:存儲名稱(個人)
  • -n "CN=...":X.500 主體名稱
  • -sky signature:簽名密鑰(1=交換,2=簽名)
  • -pe:私鑰可導出
makecert 執行結果

生成證書存入當前用戶「個人」存儲區。實際開發多用 Windows 憑證服務管理。

五、總結

以「身份證」類比澄清證書概念,CA 比擬公安局。掌握非對稱加密、公私鑰、證書、簽名四者關係,為 WSE 3.0/WCF 安全開發奠基。下節講策略配置實戰。本文附參考資料鏈接。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved