傳輸層安全協議
傳輸層安全協議
傳輸層安全協議及其前身安全套接層(Secure Sockets Layer,縮寫作SSL)是一種安全協議,目的是為網際網路通信,提供安全及數據完整性保障。網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景導航者時,推出HTTPS協議,以SSL進行加密,這是SSL的起源。IETF將SSL進行標準化,1999年公布第一版TLS標準文件。隨後又公布RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。在瀏覽器、電子郵件、即時通信、VoIP、網路傳真等應用程序中,廣泛支持這個協議。主要的網站,如Google、Facebook等也以這個協議來創建安全連接,發送數據。當前已成為網際網路上保密通信的工業標準。
SSL包含記錄層(Record Layer)和傳輸層,記錄層協議確定傳輸層數據的封裝格式。傳輸層安全協議使用X.509認證,之後利用非對稱加密演算來對通信方做身份認證,之後交換對稱密鑰作為會談密鑰(Session key)。這個會談密鑰是用來將通信兩方交換的數據做加密,保證兩個應用間通信的保密性和可靠性,使客戶與伺服器應用之間的通信不被攻擊者竊聽。
目錄
簡述: 傳輸層安全協議詳解 傳輸層安全協議的目的是為了保護傳輸層的安全,並在傳輸層上提供實現保密、認證和完整性的方法。1.SSL(安全套接字層協議)SSL(Secure SocketLayer)是由Netscape設計的一種開放協議;它指定了一種在應用程序協議(例如http、telnet、NNTP、FTP)和TCP/IP之間提供數據安全性分層的機制。它為TCP/IP連接提供數據加密、伺服器認證、消息完整性以及可選的客戶機認證。SSL的主要目的是在兩個通信應用程序之間提供私密信和可靠性。這個過程通過3個元素來完成:l 握手協議。這個協議負責協商被用於客戶機和伺服器之間會話的加密參數。當一個SSL客戶機和伺服器第一次開始通信時,它們在一個協議版本上達成一致,選擇加密演演算法,選擇相互認證,並使用公鑰技術來生成共享密鑰。l 記錄協議。這個協議用於交換應用層數據。應用程序消息被分割成可管理的數據塊,還可以壓縮,並應用一個MAC(消息認證代碼);然後結果被加密並傳輸。接受方接受數據並對它解密,校驗MAC,解壓縮並重新組合它,並把結果提交給應用程序協議。l 警告協議。這個協議用於指示在什麼時候發生了錯誤或兩個主機之間的會話在什麼時候終止。??下面我們來看一個使用WEB客戶機和伺服器的範例。WEB客戶機通過連接到一個支持SSL的伺服器,啟動一次SSL會話。支持SSL的典型WEB伺服器在一個與標準HTTP請求(默認為埠80)不同的埠(默認為443)上接受SSL連接請求。當客戶機連接到這個埠上時,它將啟動一次建立SSL會話的握手。當握手完成之後,通信內容被加密,並且執行消息完整性檢查,知道SSL會話過期。SSL創建一個會話,在此期間,握手必須只發生過一次。??SSL握手過程步驟:??步驟1:SSL客戶機連接到SSL伺服器,並要求伺服器驗證它自身的身份。步驟2:伺服器通過發送它的數字證書證明其身份。這個交換還可以包括整個證書鏈,直到某個根證書權威機構(CA)。通過檢查有效日期並確認證書包含有可信任CA的數字簽名,來驗證證書。步驟3:然後,伺服器發出一個請求,對客戶端的證書進行驗證。但是,因為缺乏公鑰體系結構,當今的大多數伺服器不進行客戶端認證。步驟4:協商用於加密的消息加密演演算法和用於完整性檢查的哈希函數。通常由客戶機提供它支持的所有演演算法列表,然後由伺服器選擇最強健的加密演演算法。步驟5:客戶機和伺服器通過下列步驟生成會話密鑰:a. 客戶機生成一個隨機數,並使用伺服器的公鑰(從伺服器的證書中獲得)對它加密,發送到伺服器上。b. 伺服器用更加隨機的數據(從客戶機的密鑰可用時則使用客戶機密鑰;否則以明文方式發送數據)響應。c. 使用哈希函數,從隨機數據生成密鑰。SSL協議的優點是它提供了連接安全,具有3個基本屬性:l 連接是私有的。在初始握手定義了一個密鑰之後,將使用加密演演算法。對於數據加密使用了對稱加密(例如DES和RC4)。l 可以使用非對稱加密或公鑰加密(例如RSA和DSS)來驗證對等實體的身份。l 連接時可靠的。消息傳輸使用一個密鑰的MAC,包括了消息完整性檢查。其中使用了安全哈希函數(例如SHA和MD5)來進行MAC計算。??對於SSL的接受程度僅僅限於HTTP內。它在其他協議中已被表明可以使用,但還沒有被廣泛應用。??注意:IETF正在定義一種新的協議,叫做“傳輸層安全”(Transport LayerSecurity,TLS)。它建立在Netscape所提出的SSL3.0協議規範基礎上;對於用於傳輸層安全性的標準協議,整個行業好像都正在朝著TLS的方向發展。但是,在TLS和SSL3.0之間存在著顯著的差別(主要是它們所支持的加密演演算法不同),這樣,TLS1.0和SSL3.0不能互操作。2.SSH(安全外殼協議)SSH是一種在不安全網路上用於安全遠程登錄和其他安全網路服務的協議。它提供了對安全遠程登錄、安全文件傳輸和安全TCP/IP和X-Window系統通信量進行轉發的支持。它可以自動加密、認證並壓縮所傳輸的數據。正在進行的定義SSH協議的工作確保SSH協議可以提供強健的安全性,防止密碼分析和協議攻擊,可以在沒有全球密鑰管理或證書基礎設施的情況下工作的非常好,並且在可用時可以使用自己已有的證書基礎設施(例如DNSSEC和X.509)。SSH協議由3個主要組件組成:l 傳輸層協議,它提供伺服器認證、保密性和完整性,並具有完美的轉發保密性。有時,它還可能提供壓縮功能。l 用戶認證協議,它負責從伺服器對客戶機的身份認證。l 連接協議,它把加密通道多路復用組成幾個邏輯通道。??SSH傳輸層是一種安全的低層傳輸協議。它提供了強健的加密、加密主機認證和完整性保護。SSH中的認證是基於主機的;這種協議不執行用戶認證。可以在SSH的上層為用戶認證設計一種高級協議。??這種協議被設計成相當簡單而靈活,以允許參數協商並最小化來回傳輸的次數。密鑰交互方法、公鑰演演算法、對稱加密演演算法、消息認證演演算法以及哈希演演算法等都需要協商。??數據完整性是通過在每個包中包括一個消息認證代碼(MAC)來保護的,這個MAC是根據一個共享密鑰、包序列號和包的內容計算得到的。??在UNIX、Windows和Macintosh系統上都可以找到SSH實現。它是一種廣為接受的協議,使用眾所周知的建立良好的加密、完整性和公鑰演演算法。??3.SOCKS協議??“套接字安全性”(socket security,SOCKS)是一種基於傳輸層的網路代理協議。它設計用於在TCP和UDP領域為客戶機/伺服器應用程序提供一個框架,以方便而安全的使用網路防火牆的服務。SOCKS最初是由David和MichelleKoblas開發的;其代碼在Internet上可以免費得到。自那之後經歷了幾次主要的修改,但該軟體仍然可以免費得到。SOCKS版本4為基於TCP的客戶機/伺服器應用程序(包括telnet、FTP,以及流行的信息發現協議如http、Wais和Gopher)提供了不安全的防火牆傳輸。SOCKS版本5在RFC1928中定義,它擴展了SOCKS版本4,包括了UDP;擴展了其框架,包括了對通用健壯的認證方案的提供;並擴展了定址方案,包括了域名和IPV6地址。當前存在一種提議,就是創建一種機制,通過防火牆來管理IP多點傳送的入口和出口。這是通過對已有的SOCKS版本5協議定義擴展來完成的,它提供單點傳送TCP和UDP流量的用戶級認證防火牆傳輸提供了一個框架。但是,因為SOCKS版本5中當前的UDP支持存在著可升級性問題以及其他缺陷(必須解決之後才能實現多點傳送),這些擴展分兩部分定義。l 基本級別UDP擴展。l 多點傳送UDP擴展。??SOCKS是通過在應用程序中用特殊版本替代標準網路系統調用來工作的(這是為什麼SOCKS有時候也叫做應用程序級代理的原因)。這些新的系統調用在已知埠上(通常為1080/TCP)打開到一個SOCKS代理伺服器(由用戶在應用程序中配置,或在系統配置文件中指定)的連接。如果連接請求成功,則客戶機進入一個使用認證方法的協商,用選定的方法認證,然後發送一個中繼請求。SOCKS伺服器評價該請求,並建立適當的連接或拒絕它。當建立了與SOCKS伺服器的連接之後,客戶機應用程序把用戶想要連接的機器名和埠號發送給伺服器。由SOCKS伺服器實際連接遠程主機,然後透明地在客戶機和遠程主機之間來回移動數據。用戶甚至都不知道SOCKS伺服器位於該循環中。??使用SOCKS的困難在於,人們必須用SOCKS版本替代網路系統調用(這個過程通常稱為對應用程序SOCKS化---SOCKS-ification或SOCKS-ifying)。幸運的是,大多數常用的網路應用程序(例如telnet、FTP、finger和whois)都已經被SOCKS化,並且許多廠商現把SOCKS支持包括在商業應用程序中。