WS-Security 基於 XML 加密/簽名標準,提供機密性、完整性、真實性等全方位安全,互操作性優異。但其性能代價高昂。本文通過實測量化 WS-Security 處理開銷與訊息膨脹,對比 SSL 與 WS-SecureConversation,並給出選型指導與優化建議。
測試環境與基準應用
- 硬體:Athlon X2 5400+、4GB RAM、Mandriva 64-bit Linux。
- 軟體:Sun JVM 1.6.0_13 32-bit、Tomcat 6.0.20 (Server 1024MB Heap)、Client 512MB Heap。
- 框架:Axis2 1.5 + 最新 Rampart 夜間構建版。
- 應用:地震數據檢索服務 (93,000 條記錄內存索引)。請求指定範圍,返回分組結果。兩測試序列:
- 小訊息:1,000 請求,僅 826 條匹配。
- 大訊息:100 請求,176,745 條匹配。
六大安全配置實測對比
| 配置 | 說明 |
| plain | 無安全 |
| ssl | HTTPS (TLS) |
| username | WS-Security 純文本 UsernameToken |
| sign | WS-Security 主體/Header 簽名 + Timestamp |
| encr | WS-Security 主體加密 |
| signencr | 簽名 + 加密 + Timestamp |
核心發現 (相對 plain 倍數):
- SSL:性能接近 plain (小訊息 +80%,大訊息 +20%)。
- UsernameToken:小訊息比 SSL 慢數倍,大訊息更甚 (主要開銷在 DOM 轉換)。
- 簽名/加密:計算密集型,signencr 達 plain 21 倍 耗時。

性能瓶頸深度解析
- DOM 轉換開銷:Rampart 當前實現將所有訊息轉為 DOM (即使無安全處理)。UsernameToken 測試中 DOM 創建佔大頭,大訊息下與實際加密耗時相当。
- XML 規範化:簽名需將 XML 轉為規範格式,DOM 模型最易實現,但轉換成本高。
- 加密/摘要計算:非對稱加密 (證書) 計算密集,為必然開銷。
Rampart 1.5 計劃修復 DOM 問題,可改善 UsernameToken,但簽名/加密核心開銷難大幅降低。
訊息大小膨脹分析

- UsernameToken 僅增大請求。
- 簽名/加密同時增大請求/回應。
- Header 開銷固定,小訊息相對影響劇烈。
- Base64 編碼帶來額外填充開銷。
WS-SecureConversation:會話機制優化
基於 WS-Security/WS-Trust,建立安全會話令牌 (SCT),後續訊息使用對稱金鑰加密/簽名,避免重複非對稱運算。
- 測試配置:僅加密主體,對比
encr (證書非對稱加密)。
- 小訊息:速度近 2 倍 (非對稱開銷佔比大)。
- 大訊息:提升 18% (對稱加密主體成主導)。

額外開銷:初始 Token 交換需 2-3 輪額外請求/回應 (RST/RSTR)。
何時選用 WS-Security vs SSL?
| 需求 | 推薦方案 | 理由 |
| 點對點機密性/完整性,單一服務器直連處理 | SSL (HTTPS) | 性能近無安全,標準成熟,部署簡單 |
| 多跳傳遞,中間系統不可信,需端到端機密性 | WS-Security 加密 | SSL 僅保護單跳,中間節點可見明文 |
| 需不可抵賴真實性、審計追蹤 | WS-Security 簽名 | SSL 僅連接建立時驗證,無法事後證明具體訊息來源 |
| 長會話、高頻小訊息交換 | WS-SecureConversation | 會話令牌大幅降低非對稱運算開銷 |
| 需傳遞 SAML/UsernameToken 等標準安全令牌 | WS-Security | 標準化互操作優於自建方案 |
降低 WS-Security 成本的實戰策略
- 避免疊加:勿同時啟用 SSL + WS-Security 全開,按需選擇單一機制。
- 細粒度策略:僅對敏感操作/訊息應用安全 (參考前文)。
- 採用 WS-SecureConversation:長會話、小訊息場景優先。
- 硬體加速:XML Gateway 卸載加密/簽名,但需評估安全邊界與實際增益。
- 評估業務量:低頻服務 (如每小時數十請求) 性能影響可忽略,無需過度優化。
結語
WS-Security 性能成本顯著 (簽名加密達 20x 開銷),SSL 點對點加密多數場景更優。但涉及多跳、審計、標準令牌傳遞等高級需求時,WS-Security/WS-SecureConversation 成為必要投資。理解開銷來源 (DOM、規範化、非對稱運算),採取細粒度策略、會話優化、硬體卸載等組合拳,可在安全與性能間取得平衡。