第八章 對SSL抵禦攻擊能力的分析
安全套接字層(SSL)協議,是對計算機之間整個會話進行加密的協議,它能提供Internet上通信的保密性。該協議允許客戶∕服務器應用程序在通信時,能夠阻止竊聽、報文偽造等安全攻擊。
下麵,我們將從通信量分析、主動攻擊、重放攻擊、密碼組回滾攻擊以及中間人攻擊這五種常見的安全攻擊入手,初步分析SSL的抵禦攻擊能力。
1.通信量分析
如果常規的攻擊失敗,密碼破譯專家會轉向使用更複雜的攻擊。通信量分析是另外一種被動攻擊,但它經常是惡意攻擊,因此值得一提。通信量分析的目標在於,通過檢查包中未加密的域及屬性,以獲得受保護會話的機密信息。例如,通過檢查未加密的源和目標的IP地址(甚至TCP端口號),或者檢查網絡通信流,一個通信量分析專家可以確定通信各方的通信內容,使用的服務類型,有時甚至還可以獲得有關商業或個兒關係的信息。實際上,用戶大都認為通信量分析的威脅相對來說是無害的,因此SSL不會試圖阻止這種攻擊。忽略通信量分析看來是一種可行的設計方案。
然而在SSL體係結構中,通信量分析仍會造成一些巧妙的威脅。BennetYee已經指出,檢查密文的長度會暴露出有關SSL或被SSL加密的網站通信中用到的URL請求的信息【Yee96】。當一個Web瀏覽器通過加密傳輸(如SSL)連接到一台Web服務器時,包含有URL信息的GET請求會以加密方式進行傳輸。嚴格來說,瀏覽器要下載哪一個頁麵,這種信息是保密的--顯然,具有URL方麵的知識,對於一個想下載整個網站的人來說,這已經足夠了--而且,通信量分析可以獲得Web服務器的身份信息,請求的URL長度,以及從Web服務器所返回的html數據的長度。這個漏洞往往使得竊聽者能夠發現用戶訪問了哪些Web頁麵。
上述弱點之所以出現,是因為密文長度暴露了明文的長度。SSL在塊加密模式中支持隨機填充,而在流加密模式中卻不支持。我們相信,對於所有的加密模式,SSL將會在最小程度上支持任意長度填充的使用,而且會仔細地考慮它在特定應用程序中的需求。
2.主動攻擊
SSL能抵禦主動攻擊以安全地保護機密數據,這一點非常重要。當然,所使用的加密算法應該在被選擇明文∕被選擇密文攻擊下是安全的,但這對於加密算法來說還不夠。IETF的IPSEC工作組的最近研究表明,即使所使用的密碼強度足夠,在記錄層上精明的主動攻擊仍能打破係統的保密性。SSL3.0的記錄層能抵禦這些強有力的攻擊:更進一步,為何這些攻擊會被阻止,值得我們討論。
IPSEC中的一個重要的主動攻擊是Bellovin的剪貼攻擊。回想起來,要獲得保密性,光對鏈接進行加密是不夠的--接收端也必須防止敏感數據在無意中被泄露出來。剪貼攻擊的攻擊方式就是謀求接收端的信任,使之對敏感數據進行解密並將這些數據泄露給它們。
SSL3.0能夠阻止剪貼攻擊。阻止這種攻擊的一種局部性防禦策略是為每一個不同的上下文使用獨立的會話密鑰,這樣便能在不同的連接之間,以及連接的不同方向之間阻止剪貼操作。SSL已經為每個連接方向使用了獨立的密鑰。但是,這種機製無法阻止傳輸中一個方向上的剪貼操作。應用最廣泛的防禦策略是在所有加密包上使用強大的認證機製,以阻止敵方對密文數據的修改。SSL記錄層確實采用了這種防禦策略,因此剪貼操作被完全阻止住了。
另一種主動攻擊是短塊攻擊,它主要針對IPSEC。這種攻擊適用於最後的報文塊包含一個一字節長的明文並且報文塊剩餘部分由隨機數填充的情況。在SSL上並沒有明顯的短塊攻擊。SSL記錄層格式與以前的IPSEC格式相當類似,這種格式容易遭到攻擊,因此可以想象,修改性攻擊會對SSL產生威脅。但是,無論如何,由標準SSL加密的Web服務器基本上不會受到短塊攻擊的威脅,因為這些服務器不會經常對短塊進行加密。(但要注意,由SSL加密的telnet客戶端必須得到特殊的保護,以防止短塊攻擊,因為每一次按鍵在傳送時都是一字節長的數據包。)