Web 安全
主要內容
12.1 Web 安全威脅
12.2 Web 安全的實現方法
12.3 SSL 協議
- 12.3.1 SSL 概述
- 12.3.2 更改密碼規格協議
- 12.3.3 警告協議
- 12.3.4 SSL 記錄協議
- 12.3.5 SSL 握手協議
- 12.3.6 SSL 的安全性分析
- 12.3.7 TLS 協議
12.1 Web 安全威脅
Internet 對信息保密和系統安全的考慮並不完備:
- Web 服務是動態交互(雙向);
- Web 服務使用廣泛而且信譽非常重要;
- Web 服務器難以配置,底層軟件複雜,隱藏安全漏洞;
- 編寫和使用 Web 服務的用戶安全意識相對薄弱,相關的腳本程序易出現安全問題。
—— 攻擊與破壞事件層出不窮,需要安全 Web 服務。
Web 安全威脅的分類
- 主動攻擊:僞裝成其他用戶、篡改C/S之間信息 或 篡改Web站點信息(難預防但易檢測)
- 被動攻擊:監聽數據流獲取信息或進行信息量分析(難檢測但易預防)
- 對 Web 服務器的安全威脅
- 對 Web 瀏覽器的安全威脅
- 對通信信道的安全威脅
Web 安全威脅與對策
12.1.1 對 Web 服務器的安全威脅
Web 服務越強大,包含安全漏洞概率就越高。
HTTP 服務可在不同權限下運行:
- 高權限下提供更大靈活性,允許程序執行所有指令,並不受限制地訪問系統高敏感的特權區域;
- 低權限下在所運行程序周圍設置邏輯柵欄,只允許它運行部分指令和訪問系統中不敏感的數據區。
大多數情況下 HTTP 服務只需運行在低權限下。
12.1.2 對 Web 瀏覽器的安全威脅
活動內容:靜態頁面 中嵌入的對用戶透明的程序 —— 顯示動態圖像、下載和播放音樂等。
原來由服務器完成的輔助功能轉交給空閒的瀏覽器。
用戶查看這種頁面時,它們會自動下載並在瀏覽器上運行。
破壞瀏覽器的人將破壞性的活動內容放進看起來無害的頁面。
12.1.3 對通信信道的安全威脅
- 監聽程序 會威脅通信信道中所傳輸信息的 機密性
- 僞造、篡改、重放 會威脅所傳輸信息的 完整性
- 缺乏身份認證 使得冒充他人身份進行 中間人攻擊
- 缺乏數字簽名機制 使得通信雙方能 相互攻擊
- 拒絕服務攻擊 使得通信信道不能保證 可用性
12.2 Web 安全的實現方法
從網絡下載程序並在本機運行,就相當於接受程序開發者的控制——沒有一個操作系統能控制一個已經開始執行的程序的權限。
基於網絡層實現 Web 安全
IPSec 提供端到端的安全機制,是一個通用解決方案。
各種應用程序不需修改就可享用 IPSec 提供的安全機制,也減少了安全漏洞的產生。
基於傳輸層實現 Web 安全
SSL 或 TLS 可作爲基礎協議棧的組成部分,對應用透明;也可直接嵌入到瀏覽器中使用。
使用 SSL 或 TLS 後,傳送的應用層數據會被加密,從而保證通信的安全。
基於應用層實現 Web 安全
特定安全服務爲特定應用定製體現,將安全服務直接嵌入在應用程序中。
12.3 SSL協議
12.3.1 SSL概述
- Secure Socket Layer,安全套接層協議,會話層,由 Netscape 推出。
- 主要實現 Web 服務器和瀏覽器之間的安全通信。
- 在 應用層協議 和 TCP/IP 協議之間提供機密性、完整性、服務器認證及可選的客戶機認證的機制。
SSL協議棧
- 介於 HTTP 與 TCP 之間的一個可選層,絕大多數應用層協議可直接建立在 SSL 之上。
- SSL 不是一個單獨的協議,而是兩層協議。
SSL實現的安全服務
SSL握手協議:用公開加密算法驗證服務器身份,並傳遞客戶端產生的對稱的會話密鑰(先)
SSL記錄協議:用會話密鑰來加/解密數據(後)
- 機密性:SSL 客戶機和服務器之間傳送加密數據。
- 完整性:SSL 可避免服務器和客戶機之間的信息被破壞。
- 認證性:SSL 握手時要求交換證書,通過驗證證書來保證對方身份的合法性。
SSL的認證和不可否認性
- 客戶機認證是可選的,否則客戶端都得有數字證書並內置相應組件,代價高。
- SSL不能提供不可否認性,Communicator 4.04瀏覽器引入“表單簽名(Form Signing)”功能。
- 它對電子商務中包含購買者的訂購信息和付款指令的表單進行數字簽名。
12.3.2 更改密碼規格協議
Change Cipher Spec Protocol 具有以下特性:
- 位於SSL記錄協議之上。
- ContentType=20。
- 協議只包含一條消息(一個值爲1的字節)。
把未決狀態設置爲當前狀態,更新當前連接的密鑰組,這標誌着加密策略的改變。
12.3.3 警告協議
Aler t消息:當握手過程或數據加密等出錯或發生異常時,爲對等實體傳遞SSL警告或終止當前連接。
Alert Protocol具有以下特性:
- 位於SSL記錄協議之上。
- ContentType=21。
- 協議包含兩個字節:警告級別和警告代碼。
12.3.4 SSL記錄協議
Record Protocol 描述SSL信息交換過程中的記錄格式。
所有數據(含SSL握手信息)都被封裝在記錄中,一個記錄由兩部分組成:記錄頭和數據。
SSL記錄協議的操作步驟:
- 將數據分段成可操作的數據塊
- 對分塊數據進行數據壓縮
- 計算 MAC 值
- 對壓縮數據及MAC值加密
- 加入 SSL 記錄頭
- 在 TCP 中傳輸結果單元
SSL記錄頭:
內容類型(ContentType):用於處理分段的上層協議類型。
協議版本(ProtocolVersion):標明SSL版本號。
壓縮長度(Length):原文分段長度或壓縮分段長度。
12.3.5 SSL握手協議
Handshake Protocol 的協商結果是 SSL記錄協議處理的基礎,ContentType 爲 22。
協議頭有三個部分:
- 消息類型(1B)
- 消息長度(3B)
- 內容(1B):與該消息有關的參數
SSL v3.0 的握手過程用到三種協議:握手協議、更改密碼規格協議 和 警告協議。
SSL握手消息及參數
SSL的握手過程
握手協議的 Hello 階段
—— 協商協議版本、會話ID、密碼組、壓縮算法、交換隨機數等。
(1)Client Hello消息
- 客戶端將版本號、隨機數、會話ID、支持的密碼算法組合和壓縮算法發給服務器供其選擇。
(2)Server Hello消息
- 該消息做出決定並將決定傳回客戶端:版本號、會話ID、服務器隨機數、選擇的密碼算法組合和壓縮算法。
握手協議的 Key Agreement 階段
—— 發送服務器證書,並請求客戶端證書(可選)。
(3)Certificate 消息
- 服務器發送自己證書給客戶端以證明自己身份。
(4)Server Hello Done 消息
- 服務器向客戶端表明 Server Hello 結束。
(5)Client Key Exchange 消息
- 客戶端用服務器的公鑰加密預主密鑰發送給服務器,以便雙方協商會話密鑰。
握手協議的 Finished 階段
—— 改變密碼組,完成握手。
(6)Change Cipher Spec消息
- 表示記錄加密及認證的改變,指示將啓用新密鑰。
(7)Finished消息
- 客戶端收到Finished消息表明服務器已用私鑰解開預主密鑰,並最終生成了正確的會話密鑰。
特殊消息 ClosureAlert:可以結束連接,防止截斷攻擊。
12.3.6 SSL的安全性分析
SSL協議的安全性隱患:
- 預主密鑰 ——> master_secret ——> SSL會話密鑰
- 能否保證隨機數質量也是SSL的安全隱患。
- 有可能遭受中間人攻擊。
- 利用SSL的攻擊無法被 IDS 檢測和 FW 過濾到。
- Web 服務器使用 SSL 時,吞吐量會顯著下降。
- 不能保證 Web 瀏覽器和服務器自身安全。
master_ secret 生成過程:
增強SSL安全性方法
-
增強 master_secret 的保密性
預主密鑰的口令加密方法和硬件加密方法。 -
提高隨機數的質量
用硬件隨機數發生器產生的隨機數作爲產生隨機數的軟件方法 PRNG 的種子,進行高強度的處理。 -
提高證書 CA 的可靠性
在服務器的認證階段,CA控制所有證書的頒發和有效性判斷。
12.3.7 TLS協議
- 編寫 Transport Layer Security 的目的是不要再出現新的易混淆的協議,並提供可擴展性和兼容性。
- TLS 在傳輸層源和目的實體間建立了一條安全通道,提供基於證書的認證、數據完整性和機密性。
- TLS v1和SSL v3差別很小,但兩者不能兼容和互操作,TLS協議還不能取代SSL協議。
TLS的目標
- 數據安全:用於在兩方之間建立安全連接。
- 互操作性:TLS 一方可在不知道另一方代碼時成功交換加密信息。
- 可擴展性:避免重建一種全新的協議;避免重新實現一個全新的安全庫。
- 系統效率:使用緩存機制以減少需要建立的連接數,還非常注意減少網絡流量。