使用C_分析SSL數據包
使用C#分析SSL數據包韓海鷹(河南省鄭州九中)摘要本文為了分析廣泛使用在Internet和Intranet的服務器和客戶端中SSLV3/TLS1.0協(xié)議,使用.Net的C#構建了分析SSL數據包的方

使用C#分析SSL數據包
韓海鷹
(河南省鄭州九中)
摘要本文為了分析廣泛使用在Internet和Intranet的服務器和客戶端中SSLV3/TLS1.0協(xié)議,使用.Net的C#構建了分析SSL數據包的方法和實現的步驟,為研究數據安全通訊協(xié)議提供了一種途徑,同時這種方法也可以檢驗數據安全通訊協(xié)議的可靠性。
關鍵詞SSLC#信息安全.Net現今SSL/TLS[1]安全協(xié)議廣泛地用在Internet和Intranet的服務器和客戶端中,用于在傳輸層安全地傳送數據,它為TCP/IP連接提供數據加密、服務器認證、消息完整性以及可選的客戶機認證,主要用于提高應用程序之間數據的安全性,對傳送的數據進行加密和隱藏,確保數據的完整性在傳送中不被改變。
使用SSL/TLS進行編程現在可以使用的的方法:①使用JAVA的SSL編程接口。②使用OPENSSL編程接口。使用這些方法的好處是可以不考慮SSL/TLS具體實現的細節(jié),簡化編程,提高效率。
作者在研究使用.Net和C#實現SSL/TLS通訊過程中有一些體會,這里給大家談一談。結合SSL/TLS的協(xié)議數據分析給一個.Net和C#實現的SSL/TLS數據轉發(fā)器的程序。該轉發(fā)器位于IE瀏覽器和WebServer之間,轉發(fā)它們之間的SSL/TLS通訊數據,在轉發(fā)過程中可以將數據保存下來分析數據,替換數據,模擬客戶端、服務器端。限于篇幅,只能給出轉發(fā)過程的程序,具體分析數據、模擬客戶端等略去。1
SSL/TLS原理
SSL[4]
(SecureSocketLayer)是netscape公司設計的主要用于web的安全傳輸協(xié)議,這種協(xié)議在WEB上獲得了廣泛的應用。SSL協(xié)議指定了一種在應用程序協(xié)議(如Http、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數據安全性分層的機制。SSLv3是SSL的第三版,改進了協(xié)議的效率,靈活性和特征集。目前普遍使用的版本是SSLv3.0。
IETF(www.ietf.org)將SSL作了標準化,RFC文檔是RFC2246,并將其稱為TLS(TransportLayerSecurity),TLS1.0就是SSLv3.1,與SSLv3.0在大部分上是一樣的,只是在其主要區(qū)別僅在于散列函數和密鑰生成函數等一小部分上,主要實現過程是一樣的。本文以SSLv3.0為主,TLS(即SSLv3.1)的實現,大家可以稍做修改就可以了。
TLS/SSLv3是一個介于HTTP等應用層協(xié)議與TCP之間的一個層,其位置如下:
圖1協(xié)議層次示意圖2體系結構圖
SSL實際上是共同工作的兩層協(xié)議組成,從體系結構圖可以看出SSL安全協(xié)議實際是SSL握手協(xié)議、SSL修改密文協(xié)議、SSL警告協(xié)議和SSL記錄協(xié)議組成的一個協(xié)議族。2
SSL/TLS數據轉發(fā)器的實現
2.1程序環(huán)境
(1)客戶端:Windows2000或WindowsXP,IE6.0,安裝了NetFrameWork1.1。
WebServer:支持SSL通訊。
本文使用的方法是在同一臺計算機上,WindowsXP+PersonalWebServer+MicroSoftVisualStudioNet2003。
(2)證書:服務器證書和客戶證書的申請過程請參照相應的文檔。這里因為篇幅問題不在詳細說明了。
(3)服務器端配置:服務器端SSL通訊的配置在很多文檔里
都有詳細的描述,這里也不詳細說明了。
2.2客戶端配置
(1)配置IE:打開IE,“工具”下“Internet選項”的“高級”選項。IE默認是使用SSL2.0和SSL3.0,往前兼容SSL2.0。本文將SSL2.0的選項去掉,因為IE默認在發(fā)起SSL連接時候,先用SSL2.0格式的數據包。將SSL2.0的選項去掉后,強迫發(fā)起SSL連接時候,用SSL3.0格式的數據包。這一點在分析數據包時很重要。
(2)服務器的證書的根證書導入到客戶的信任根證書區(qū)域。具體過程如下:從證書服務中將根證書導出到文件,然后打開客戶機。在任務欄上,單擊“開始”,然后單擊“運行”。鍵入“mmc”,然后單擊“確定”。在“控制臺”菜單上,單擊“添加/刪除管理單元”。單擊“添加”。選擇“證書”,然后單擊“添加”。選擇“計算機帳戶”,然后單擊“下一步”。選擇“本地計算機(運行這個控制臺的計算機)”,然后單擊“完成”。單擊“關閉”,然后單擊“確定”。
在MMC管理單元的左窗格中展開“證書(本地計算機)”。展開“受信任的根證書頒發(fā)機構”。右鍵單擊“證書”,指向“所有任務”,然后單擊“導入”。單擊“下一步”跳過“證書導入向導”的“歡迎”對話框。輸入CA的.cer文件的路徑和文件名。單擊“下一步”。選擇“將所有的證書放入下列存儲區(qū)”,然后單擊“瀏覽”。選擇“顯示物理存儲區(qū)”。在列表中展開“受信任的根證書頒發(fā)機構”,然后選擇“本地計算機”。依次單擊“確定”、“下一步”以及“完成”。單擊“確定”關閉確認消息框。
在MMC管理單元中刷新“證書”文件夾的視圖,確認該CA的證書已列出。關閉MMC管理單元。3
最基本的SSL通訊過程
本文談最基本的SSL通訊過程,即IE瀏覽器通過HTTPS向WebServer請求默認的主頁。
注意:客戶端驗證證書時候,證書的CN與請求的域名要一樣,否則會出現安全警告:“證書的CN與請求的域名不同”,這樣會干擾我們的數據轉發(fā)過程,導致轉發(fā)失敗。所以要在目錄C:\WINDOWS\system32\drivers\etc的hosts中加入一行:192.168.3.55www.mytest.com。192.168.3.55是本文服務器主機的地址,www.mytest.com是服務器主機名。客戶端即(IE瀏覽器)發(fā)出SSL/TLS連接請求,輸入地址:https://www.mytest.com。讀者可以根據自己的主機輸入,建議不要用LocalHost或127.0.0.1。WebServer響應請求,建立連接并返回默認主頁。
我們從最基本的SSL通訊過程開始分析,所以假設服務器有可用于密鑰交換的證書,服務器不向客戶端要求證書。整個過程可以分為五步:
(1)客戶端發(fā)起SSL連接請求(包含Client_random和支持的加密系列)。
(2)服務器回應(包含Server_random和證書和雙方都支持的加密方法)。
(3)客戶端驗證證書,用服務器證書中的公鑰加密產生的隨機數Pre_master,用Client_random、Server_random和Pre_master計算出加密參數。向服務器發(fā)出改變加密的協(xié)議,并將除去改變加密協(xié)議以前所有收發(fā)的數據用加密參數處理后發(fā)出。
(4)服務器收到加密的Pre_master,用自己的私鑰解密,用Client_random、Server_random和Pre_master計算出加密參數,也用與客戶端相同的方法和數據用加密參數處理后與收到(轉111頁)
,
與設備界面之間的最短空間距離。
2.7接線端子導線安裝試驗
該試驗目的是檢驗接線端子與導線連接的可靠性。從具有適當標稱截面積的軟導線的端部,剝去約8mm長的絕緣層,使該多股導線中的一根線懸空,然后將其余線束完全嵌入并夾緊在接線端子內。在不向后撕裂絕緣層的條件下,這根懸空的線應沿每一個可能的方向彎曲,但不要圍繞隔離保護物銳彎。
2.8溫升試驗
在正常使用時,設備及其零部件不應產生過高的溫度。一般應采用熱電偶法來進行測定,而測量繞組的溫度時可采用電阻法。規(guī)定的最大溫升限值是基于設備工作時室內溫度為25℃的假設作出的。試驗期間,室內環(huán)境溫度不要求保持在某一規(guī)定值上,但須記錄。試驗應在樣品正常負載條件下進行,首先記錄試驗開始時的室內環(huán)境溫度,然后打開電源,使樣品工作在正常負載的狀態(tài),保持狀態(tài)觀察溫度變化,當溫度達到穩(wěn)定時,記錄此時零部件的溫度以及環(huán)境溫度。
2.9對地漏電流測量試驗
該試驗目的是檢驗設備電源部分對地漏電流是否符合要求。對無保護接地的II類設備,應對操作人員接觸區(qū)內的導電零部件,以及對貼在可觸及的非導電零部件上、面積不超過10cm×20cm的金屬箔進行試驗。金屬箔在被試表面上應占有最大可能的面積,但不超過規(guī)定的尺寸。如果金屬箔的面積小于被試表面,則應移動金屬箔,以便能對被試表面的所有部分進行試驗,應注意避免該金屬箔影響設備的散熱。
2.10異常工作和故障試驗
2.10.1元器件的異常工作試驗檢驗當部分元器件工作異常時,或者誤操作后,對操作人員和維護人員的危害程度。試驗時應使設備在額定電壓或額定電壓范圍的上限電壓下工作,并在設備上或模擬電路上,一次施加一個下列規(guī)定的條件進行試驗。①當該機電元件正常通電時,應將其機械動作鎖定在最不利的位置上;②如果某個機電元件通常是間斷通電的,則應在驅動電路上模擬故障,使該機電元件連續(xù)通電。對出現故障時不易被操作人員察覺到的設備或機電元件,連續(xù)通電時間持續(xù)到建立起穩(wěn)定狀態(tài)或引起其他后果為止,對其他設備或機電元件,持續(xù)5min或引起其他后果為止。
2.10.2元器件故障試驗本試驗適用于除電動機、變壓器和機電元件外的元器件和電路。首先通過檢查設備、電路圖和元器件(接103頁)的客戶發(fā)來的數據比較,如果一致說明加密參數協(xié)商成功。然后將此前除去改變加密協(xié)議以前所有收發(fā)的數據用加密參數處理后緊接發(fā)出改變加密的協(xié)議后發(fā)出。
(5)客戶端也用與服務器相同的方法和數據用加密參數處理后與收到的數據比較,如果一致說明加密參數協(xié)商成功。至此,SSL/TLS參數協(xié)商成功。
(6)往下就是應用數據傳輸,本文請求的是一個簡單網頁,用了2個應用數據傳輸數據包。
往來的通訊數據的順序如下圖所示:
規(guī)范,以此來確定出可以合理預計到會發(fā)生的那些故障條件。如果設備有多個插座連有同一個內部電路,則只須對一個樣品插座進行試驗。與電源輸入有關的一次電路的元器件(如電源線、設備耦合器、EMC濾波元件、開關等),它們互連一個故障條件。
2.11安全電壓試驗(ELV)
小于42.4V的交流電壓或是小于60V的直流電壓叫安全電壓;安全電壓電路僅指在正常工作條件下,在導體與導體之間或任一導體與地之間的交流峰值不超過42.4V或直流值不超過60V的二次電路,一般僅靠基本絕緣而沒有接地,所以不允許操作人員觸摸。
2.12標牌耐久性試驗
可利用本試驗對標牌的耐久性進行檢驗。
首先,用一塊蘸有水的棉布用手擦拭15s,然后,再用一塊蘸有汽油的棉布用手擦拭15s,試驗完成后標記仍應清析,標記銘牌應不可能輕易被揭掉,而且不應該出現卷邊。
2.13安全標志的檢查
通過目測觀察,標識的原則要求是:①設備上必須有能保持長久、清晰易辨的標志或標牌,應給出安全使用設備所必需的主要特征,如額定參數、接線方式、接地標記、危險標記等;②由于設備本身的條件所限,不能在其上標出時,必須以其他方式清楚、可靠和有效地將應注意的事項告訴使用人員(例如用操作說明書或安裝說明書的形式),在此情況下,這種文件應視為設備的組成部分;③設備上應該清楚地標出制造公司、牌號或商標,如不好實現,則可印在包裝箱上;④附上指示燈和按鈕等顏色,在運用中所表示的含義。3
結語
本文較全面、詳盡地總結了電子設備進行安全試驗時的條件和要求,希望能對電子設備安全性工作的開展和提高有所幫助。
參考文獻[1][2][3][4]
王鍵石.電子設備結構設計標準手冊.中國標準出版社邱成悌.電子設備結構設計原理.東南大學出版社陸延康.特種設備安全技術.同濟大學出版社
電工產品強制性安全認證用標準匯編.中國標準出版社
作者簡介周焱,河南省平頂山市平頂山工學院電氣系講師,武漢大學電氣工程學院碩士,現主要從事工業(yè)自動化的研究與教學工作。(收稿日期:2006?11?30)
掉記錄層包頭后存入文件。
(3)轉發(fā)器從文件中獲得數據,加上記錄層包頭后向WebServer發(fā)出SSL/TLS請求,WebServer的SSL/TLS接收端口使用4430,以區(qū)別轉發(fā)器偵聽端口。
(4)轉發(fā)器將WebServer的響應去掉記錄層包頭后存入文件,在從文件中獲得數據,加上記錄層包頭后向IE瀏覽器發(fā)出。
如此這般,轉發(fā)器就記錄了所有來往數據,便于分析,當然也可以模擬數據。三者關系如下圖所示:
參考文獻
[1]RFC2246T.Dierks,C.AllenTheTLSprotocolversion1.0,1998
[2]RFC2104KrawczykHHMAC:Keyed-hashingforMessageAuthentication(Version1.5),1997
[3]RFC2459InternetX.509PublicKeyInfrastructureCertificateandCRLProfile,1999
[4]ssl-mostrecentdraft302TheSSLProtocolVersion3.0,1996
[5]RFC2817FergusonP,SenieD.Networkingressfiltering:DefeatingdenialofserviceattackwhichemployIPsourceaddressspoofing.,2000
4具體轉發(fā)程序
(1)轉發(fā)器先運行,在默認的SSL/TLS接收端口443建立偵
作者簡介韓海鷹(1967-),高級教師,1989年北京師范大學數學系畢業(yè),現從事計算機教學和科研工作。


(收稿日期:2006?12?26)
聽。
(2)IE向轉發(fā)器發(fā)出SSL/TLS請求,轉發(fā)器接受到數據后去