版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢 業(yè) 設(shè) 計(jì)</b></p><p> 題目:SSL協(xié)議的分析實(shí)現(xiàn)及應(yīng)用</p><p> 姓 名: </p><p> 學(xué) 號(hào): </p><p> 學(xué)
2、院: </p><p> 專 業(yè): 計(jì)算機(jī)網(wǎng)絡(luò)與安全管理 </p><p> 指 導(dǎo) 教 師: </p><p> 2011年 5 月 30 日</p><p><b> 摘要</b></p>&l
3、t;p> 目前,隨著Internet的快速發(fā)展,互聯(lián)網(wǎng)上的信息安全越來(lái)越引起人們的關(guān)注。特別是近年來(lái)網(wǎng)上銀行、電子商務(wù)和電子政務(wù)的發(fā)展,如何保證傳輸信息,特別是交易信息的保密性、完整性已成為繼續(xù)解決的問(wèn)題。安全套接層協(xié)議(Security Socket Layer Protocol , 簡(jiǎn)稱SSL)是Internet上進(jìn)行保密通信的一個(gè)安全協(xié)議。</p><p> 關(guān)鍵詞: 加密算法,數(shù)據(jù)傳輸,SSL協(xié)
4、議,SSL實(shí)現(xiàn),SSL缺陷</p><p><b> 目 錄:</b></p><p><b> 1 .引言1</b></p><p> 1.1 SSL協(xié)議概述1</p><p> 1.2 SSL協(xié)議的體系結(jié)構(gòu)1</p><p> 2 .SSL協(xié)議工作原理
5、2</p><p> 3 .SSL記錄協(xié)議3</p><p> 4. SSL握手協(xié)議4</p><p> 5. SSL協(xié)議的實(shí)現(xiàn)6</p><p> 5.1 OpenSSL初始化6</p><p> 5.2選擇會(huì)話協(xié)議6</p><p> 5.3創(chuàng)建會(huì)話環(huán)境6</p
6、><p> 5.4 建立SSL套接字7</p><p> 5.5 完成SSL握手7</p><p> 5.6 進(jìn)行數(shù)據(jù)傳輸7</p><p> 5.7 結(jié)束SSL通信7</p><p> 6. SSL協(xié)議的缺陷8</p><p> 6.1密鑰管理問(wèn)題8</p>
7、<p> 6.2加密強(qiáng)度問(wèn)題8</p><p> 6.3數(shù)字簽名問(wèn)題8</p><p> 6.4必須建立在可靠連接基礎(chǔ)上8</p><p> 6.5多方通信表現(xiàn)欠佳8</p><p><b> 7.結(jié)束語(yǔ)9</b></p><p><b> 參考文獻(xiàn)10
8、</b></p><p><b> 1 .引言</b></p><p> SSL是一種在客戶端和服務(wù)器端之間建立安全通道的協(xié)議。SSL一經(jīng)提出,就在Internet上得到廣泛的應(yīng)用。SSL最常用來(lái)保護(hù)Web的安全。為了保護(hù)存有敏感信息Web的服務(wù)器的安全,消除用戶在Internet上數(shù)據(jù)傳輸?shù)陌踩檻]。</p><p> Op
9、enSSL是一個(gè)支持SSL認(rèn)證的服務(wù)器.它是一個(gè)源碼開(kāi)放的自由軟件,支持多種操作系統(tǒng)。OpenSSL軟件的目的是實(shí)現(xiàn)一個(gè)完整的、健壯的、商業(yè)級(jí)的開(kāi)放源碼工具,通過(guò)強(qiáng)大的加密算法來(lái)實(shí)現(xiàn)建立在傳輸層之上的安全性。OpenSSL包含一套SSL協(xié)議的完整接口,應(yīng)用程序應(yīng)用它們可以很方便的建立起安全套接層,進(jìn)而能夠通過(guò)網(wǎng)絡(luò)進(jìn)行安全的數(shù)據(jù)傳輸。</p><p> 1.1 SSL協(xié)議概述</p><p&g
10、t; SSL 是Secure socket Layer英文縮寫,它的中文意思是安全套接層協(xié)議,指使用公鑰和私鑰技術(shù)組合的安全網(wǎng)絡(luò)通訊協(xié)議。SSL協(xié)議是網(wǎng)景公司(Netscape)推出的基于 WEB應(yīng)用的安全協(xié)議,SSL協(xié)議指定了一種在應(yīng)用程序協(xié)議(如Http、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證,主要用于提高應(yīng)用
11、程序之間數(shù)據(jù)的安全性,對(duì)傳送的數(shù)據(jù)進(jìn)行加密和隱藏,確保數(shù)據(jù)在傳送中不被改變,即確保數(shù)據(jù)的完整性。</p><p> SSL 以對(duì)稱密碼技術(shù)和公開(kāi)密碼技術(shù)相結(jié)合,可以實(shí)現(xiàn)如下三個(gè)通信目標(biāo):</p><p> 1.(秘密性: SSL客戶機(jī)和服務(wù)器之間傳送的數(shù)據(jù)都經(jīng)過(guò)了加密處理,網(wǎng)絡(luò)中的非法竊聽(tīng)者所獲取的信息都將是無(wú)意義的密文信息。</p><p> 2.完整性:
12、SSL利用密碼算法和散列(HASH)函數(shù),通過(guò)對(duì)傳輸信息特征值的提取來(lái)保證信息的完整性,確保要傳輸?shù)男畔⑷康竭_(dá)目的地,可以避免服務(wù)器和客戶機(jī)之間的信息受到破壞。</p><p> 3.認(rèn)證性:利用證書技術(shù)和可信的第三方認(rèn)證,可以讓客戶機(jī)和服務(wù)器相互識(shí)別對(duì)方的身份。為了驗(yàn)證證書持有者是其合法用戶(而不是冒名用戶), SSL要求證書持有者在握手時(shí)相互交換數(shù)字證書,通過(guò)驗(yàn)證來(lái)保證對(duì)方身份的合法性。</p>
13、;<p> 1.2 SSL協(xié)議的體系結(jié)構(gòu)</p><p> SSL協(xié)議位于TCP/IP協(xié)議模型的網(wǎng)絡(luò)層和應(yīng)用層之間,使用TCP來(lái)提供一種可靠的端到端的安全服務(wù),它是客戶/服務(wù)器應(yīng)用之間的通信不被攻擊竊聽(tīng),并且始終對(duì)服務(wù)器進(jìn)行認(rèn)證,還可以選擇對(duì)客戶進(jìn)行認(rèn)證。SSL協(xié)議在應(yīng)用層通信之前就已經(jīng)完成加密算法、通信密鑰的協(xié)商以及服務(wù)器認(rèn)證工作,在此之后,應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都被加密。SSL實(shí)際上是共同工
14、作的兩層協(xié)議組成,如表1.1所示。從體系結(jié)構(gòu)圖可以看出SSL安全協(xié)議實(shí)際是SSL握手協(xié)議、SSL修改密文協(xié)議、SSL警告協(xié)議和SSL記錄協(xié)議組成的一個(gè)協(xié)議族。</p><p> 表1.1 SSL體系結(jié)構(gòu)</p><p> SSL記錄協(xié)議為SSL連接提供了兩種服務(wù):一是機(jī)密性,二是消息完整性。為了實(shí)現(xiàn)這兩種服務(wù), SSL記錄協(xié)議對(duì)接收的數(shù)據(jù)和被接收的數(shù)據(jù)工作過(guò)程是如何實(shí)現(xiàn)的呢
15、? SSL記錄協(xié)議接收傳輸?shù)膽?yīng)用報(bào)文,將數(shù)據(jù)分片成可管理的塊,進(jìn)行數(shù)據(jù)壓縮(可選),應(yīng)用MAC,接著利用IDEA、DES、3DES或其他加密算法進(jìn)行數(shù)據(jù)加密,最后增加由內(nèi)容類型、主要版本、次要版本和壓縮長(zhǎng)度組成的首部。被接收的數(shù)據(jù)剛好與接收數(shù)據(jù)工作過(guò)程相反,依次被解密、驗(yàn)證、解壓縮和重新裝配,然后交給更高級(jí)用戶。</p><p> SSL修改密文協(xié)議是使用SSL記錄協(xié)議服務(wù)的SSL高層協(xié)議的3個(gè)特定協(xié)議之一,也
16、是其中最簡(jiǎn)單的一個(gè)。協(xié)議由單個(gè)消息組成,該消息只包含一個(gè)值為1的單個(gè)字節(jié)。該消息的唯一作用就是使未決狀態(tài)拷貝為當(dāng)前狀態(tài),更新用于當(dāng)前連接的密碼組。為了保障SSL傳輸過(guò)程的安全性,雙方應(yīng)該每隔一段時(shí)間改變加密規(guī)范。</p><p> SSL告警協(xié)議是用來(lái)為對(duì)等實(shí)體傳遞SSL的相關(guān)警告。如果在通信過(guò)程中某一方發(fā)現(xiàn)任何異常,就需要給對(duì)方發(fā)送一條警示消息通告。警示消息有兩種:一種是 Fatal錯(cuò)誤,如傳遞數(shù)據(jù)過(guò)程中,發(fā)
17、現(xiàn)錯(cuò)誤的MAC,雙方就需要立即中斷會(huì)話,同時(shí)消除自己緩沖區(qū)相應(yīng)的會(huì)話記錄;第二種是Warning消息,這種情況,通信雙方通常都只是記錄日志,而對(duì)通信過(guò)程不造成任何影響。SSL握手協(xié)議可以使得服務(wù)器和客戶能夠相互鑒別對(duì)方,協(xié)商具體的加密算法和MAC算法以及保密密鑰,用來(lái)保護(hù)在SSL記錄中發(fā)送的數(shù)據(jù)。</p><p> SSL握手協(xié)議允許通信實(shí)體在交換應(yīng)用數(shù)據(jù)之前協(xié)商密鑰的算法、加密密鑰和對(duì)客戶端進(jìn)行認(rèn)證(可選)的
18、協(xié)議,為下一步記錄協(xié)議要使用的密鑰信息進(jìn)行協(xié)商,使客戶端和服務(wù)器建立并保持安全通信的狀態(tài)信息。SSL握手協(xié)議是在任何應(yīng)用程序數(shù)據(jù)傳輸之前使用的。SSL握手協(xié)議包含四個(gè)階段:第一個(gè)階段建立安全能力;第二個(gè)階段服務(wù)器鑒別和密鑰交換;第三個(gè)階段客戶鑒別和密鑰交換;第四個(gè)階段完成握手協(xié)議。 </p><p> 2 .SSL協(xié)議工作原理</p><p> SSL協(xié)議處于互聯(lián)網(wǎng)多層協(xié)議集的傳輸層上
19、,運(yùn)行在TCP/IP協(xié)議之上而在其他高層協(xié)議(如HTTP、Telnet、FTP和IMAP等)之下,如表2.1所示。在建立一次SSL連接之前,首先建立TCP/IP連接。SSL協(xié)議可以讓應(yīng)用層協(xié)議透明地加以應(yīng)用。運(yùn)行時(shí),支持SSL協(xié)議的服務(wù)器可以同一個(gè)支持SSL協(xié)議的客戶機(jī)彼此認(rèn)證自己,還允許這兩個(gè)機(jī)器之間建立安全的加密連接,同時(shí)保證信息在傳輸過(guò)程中的完整性。 </p><p> SSL協(xié)議可以分為4個(gè)子協(xié)議:SS
20、L握手協(xié)議、SSL更改密碼規(guī)程協(xié)議、SSL報(bào)警協(xié)議和SSL記錄協(xié)議,其中最重要的兩個(gè)協(xié)議是握手協(xié)議和記錄協(xié)議。SSL記錄協(xié)議定義了數(shù)據(jù)傳送的格式,它位于一些可靠的傳輸層協(xié)議之上(如TCP),用于各種更高層協(xié)議的封裝。SSL握手協(xié)議位于SSL記錄協(xié)議之上,并被SSL記錄協(xié)議所封裝。它描述建立安全連接的過(guò)程,在客戶和服務(wù)器傳送應(yīng)用層數(shù)據(jù)之前,該協(xié)議允許服務(wù)器與客戶機(jī)之間協(xié)商加密算法和會(huì)話密鑰,完成通信雙方的身份驗(yàn)證等功能。</p>
21、;<p> 表2.1 SSL協(xié)議的分層結(jié)構(gòu)</p><p> 3 .SSL記錄協(xié)議</p><p> SSL記錄協(xié)議(Record Protocol)定義了傳輸?shù)母袷?,包括記錄頭和記錄數(shù)據(jù)格式的規(guī)定。發(fā)送方記錄層的工作過(guò)程如圖3.1所示: </p><p> 圖3.1 記錄層的工作過(guò)程</p><p> 1.記錄層
22、從上層接收到任意大小的應(yīng)用層數(shù)據(jù)塊,把數(shù)據(jù)快分成不超過(guò)214字節(jié)的分片。</p><p> 2.記錄層用當(dāng)前的會(huì)話狀態(tài)中給出的壓縮算法靜分片壓縮成一個(gè)壓縮快,壓縮操作是可選的。</p><p> 3.每個(gè)會(huì)話都有相應(yīng)“加密規(guī)格”指定了對(duì)稱加密算法和MAC算法。記錄層用指定的MAC算法對(duì)壓縮塊計(jì)算MAC,用指定的對(duì)稱加密算法加密壓縮塊和MAC,形成密文塊。</p><
23、p> 4.對(duì)密文塊添加SSL記錄頭,然后送到傳輸層,傳輸層受到這個(gè)SSL記錄層數(shù)據(jù)單元后,記上TCP報(bào)頭,得到TCP數(shù)據(jù)包。</p><p> 圖3.2 SSL記錄協(xié)議中數(shù)據(jù)項(xiàng)的格式</p><p> 4. SSL握手協(xié)議</p><p> 圖4.1 SSL建立新會(huì)話時(shí)的握手過(guò)程</p><p> 建立新會(huì)話時(shí)的握手過(guò)程&
24、lt;/p><p> 握手協(xié)議用于數(shù)據(jù)傳輸之前。它可以進(jìn)行服務(wù)器與客戶之間的身份鑒別,同時(shí)通過(guò)服務(wù)器和客戶協(xié)商,決定采用的協(xié)議版本、加密算法,并確定加密數(shù)據(jù)所需的對(duì)稱密鑰,隨后采用公鑰加密技術(shù)產(chǎn)生共享機(jī)密信息(例如對(duì)稱密鑰)。每次連接,握手協(xié)議都要建立一個(gè)會(huì)話。會(huì)話中包含了一套可在多次會(huì)話中使用的加密安全參數(shù),從而減輕了每次建立會(huì)話的負(fù)擔(dān)。然而,必須指出的是,SSL中的每次連接時(shí),在握手協(xié)議中產(chǎn)生的對(duì)稱密鑰都是獨(dú)特
25、的,這種每次更換密鑰的方法顯然在更大程度上確保了系統(tǒng)的不易攻破性。</p><p> 根據(jù)是否驗(yàn)證對(duì)方的證書,SSL的握手過(guò)程可以分為以下三種驗(yàn)證模式:客戶和服務(wù)器都被驗(yàn)證;只驗(yàn)證客戶機(jī),不驗(yàn)證服務(wù)器,這是Internet上使用最廣泛的形式;客戶和服務(wù)器都不驗(yàn)證,也稱為完全匿名模式。SSL握手協(xié)議建立一個(gè)新的會(huì)話的過(guò)程如圖4.2所示,具體如下:</p><p> 階段1:確定一些相關(guān)參
26、數(shù),包括協(xié)議版本、會(huì)話ID、加密規(guī)格、壓縮算法和初始隨機(jī)數(shù)</p><p> 客戶端發(fā)送client_hello消息給服務(wù)器,向服務(wù)器傳送客戶端支持的SSL協(xié)議的版本號(hào)、加密算法的種類、MAC算法的種類、會(huì)話標(biāo)識(shí)、密碼屬性(如hash塊的大?。?,以及其他服務(wù)器和客戶端之間通信所需要的各種信息。</p><p> 服務(wù)器以server_hello向客戶應(yīng)答,服務(wù)器端傳選定的SSL協(xié)議的版
27、本號(hào)、加密算法的種類、MAC算法的種類、密碼屬性及其他相關(guān)信息。</p><p> 階段2:服務(wù)器端發(fā)送自身證書(或臨時(shí)公鑰)及證書請(qǐng)求,最后發(fā)送hello階段結(jié)束信號(hào)。</p><p> 如果需要驗(yàn)證服務(wù)器,服務(wù)器將發(fā)送certificate消息。服務(wù)器首先建立一個(gè)隨機(jī)數(shù),然后對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行數(shù)字簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和服務(wù)器的證書,放在certificate消息中發(fā)送給客戶端
28、。若不需要驗(yàn)證服務(wù)器證書,服務(wù)器發(fā)送包含其臨時(shí)公鑰的server_key_exchange消息。</p><p> 若服務(wù)器需要驗(yàn)證客戶,則發(fā)送certificate_request消息</p><p> 服務(wù)器發(fā)送hello_done消息,表示雙方握手過(guò)程中的hello階段結(jié)束。</p><p> 階段3:客戶端驗(yàn)證服務(wù)器端證書、發(fā)送自身證書、交換對(duì)稱密鑰。
29、</p><p> 客戶利用服務(wù)器傳過(guò)來(lái)的信息驗(yàn)證服務(wù)器的合法性,發(fā)送certificate_verify消息,確定驗(yàn)證通過(guò)。服務(wù)器的合法性包括:證書是否過(guò)期,發(fā)行服務(wù)器證書的CA是否可靠,發(fā)行者證書的公鑰能否正確解開(kāi)服務(wù)器證書的“發(fā)行者的數(shù)字簽名”,服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配。如果合法性驗(yàn)證沒(méi)有通過(guò),通信將斷開(kāi);如果合法性驗(yàn)證通過(guò),則將繼續(xù)進(jìn)行下一步。</p><p&g
30、t; 客戶端先隨機(jī)產(chǎn)生一個(gè)用于后面通信的預(yù)主密碼(pre-master-key),然后用服務(wù)器的公鑰(從服務(wù)器的證書中獲得)對(duì)其加密,再將加密后的預(yù)主密碼通過(guò)client_key_exchange消息傳給服務(wù)器。</p><p> 如果服務(wù)器要求客戶的身份認(rèn)證(在握手過(guò)程中為可選),客戶端會(huì)首先建立一個(gè)隨機(jī)數(shù),然后對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行數(shù)字簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和客戶自己的證書放在certificate消息中
31、,發(fā)送給服務(wù)器端。如果客戶端沒(méi)有證書,則會(huì)回應(yīng)no_certificate告警。</p><p> 階段4:雙方確定加密規(guī)格,結(jié)束握手協(xié)議。</p><p> 客戶端向服務(wù)器端發(fā)出chenge_cipher_spec信息,指明后面的數(shù)據(jù)通信將“預(yù)主密碼”為對(duì)稱密鑰,同時(shí)向服務(wù)器發(fā)送finished消息,表示完成了與服務(wù)器的握手。</p><p> 服務(wù)器檢驗(yàn)客
32、戶證書和簽名隨機(jī)數(shù)的合法性,發(fā)送certificate_verify消息。具體的合法性驗(yàn)證包括:客戶的證書使用日期是否有效,為客戶提供證書的CA是否可靠,發(fā)行CA的公鑰能否正確解開(kāi)客戶證書的發(fā)行CA的數(shù)字簽名,檢查客戶的證書是否在證書撤銷列表(CRL)中。檢驗(yàn)如果沒(méi)有通過(guò),則通信立刻中斷;如果驗(yàn)證通過(guò),則服務(wù)器將用自己的私鑰解開(kāi)加密的“預(yù)主密碼”,然后執(zhí)行一系列步驟來(lái)產(chǎn)生通信使用的主密碼(master-key)(客戶端也將通過(guò)同樣的方法
33、產(chǎn)生相同的主密碼)。</p><p> 服務(wù)器向客戶端發(fā)出change_cipher_spec信息,指明后面的數(shù)據(jù)通信將使用預(yù)主密碼為對(duì)稱密鑰,同時(shí)發(fā)送finished消息,通知客戶端服務(wù)器端的握手過(guò)程結(jié)束。</p><p> SSL的握手部分結(jié)束,SSL安全通道的數(shù)據(jù)通信開(kāi)始,客戶和服務(wù)器開(kāi)始使用相同的對(duì)稱密鑰進(jìn)行數(shù)據(jù)通信,同時(shí)進(jìn)行通信完整性的檢驗(yàn)。</p><p
34、> 2)恢復(fù)一個(gè)已存在會(huì)話時(shí)的握手過(guò)程</p><p> 由上可以看出,SSL協(xié)議的握手過(guò)程是非常好使的,為了減少握手過(guò)程的交互次數(shù),以及對(duì)網(wǎng)絡(luò)帶寬的占用,可將雙方經(jīng)過(guò)完整握手過(guò)程建立起來(lái)的會(huì)話狀態(tài)記錄下來(lái)。在以后連接時(shí),采用會(huì)話重用技術(shù)恢復(fù)會(huì)話過(guò)程,免去會(huì)話參數(shù)的協(xié)商。SSL握手協(xié)議恢復(fù)一個(gè)已存在的會(huì)話的過(guò)程如圖5-5所示。</p><p> 客戶端發(fā)送client_hell
35、o消息給服務(wù)器,其中的session id是要恢復(fù)的會(huì)話的標(biāo)識(shí),服務(wù)器在會(huì)話緩存中檢查是否有這個(gè)會(huì)話標(biāo)識(shí):若有,服務(wù)器將在相應(yīng)的會(huì)話狀態(tài)下建立一個(gè)新的連接,服務(wù)器發(fā)送含有session id的server_hello;若沒(méi)有,服務(wù)器會(huì)生成一個(gè)新的session id,建立一個(gè)新的會(huì)話過(guò)程。當(dāng)通過(guò)恢復(fù)一個(gè)會(huì)話建立一個(gè)連接時(shí),這個(gè)新的連接將繼承這個(gè)會(huì)話狀態(tài)下的壓縮算法、加密規(guī)格和預(yù)主密碼。但該連接會(huì)產(chǎn)生新的隨機(jī)數(shù)和通信密碼。</p&g
36、t;<p> 圖4.2 SSL恢復(fù)一個(gè)已存在會(huì)話時(shí)的握手過(guò)程</p><p> 5. SSL協(xié)議的實(shí)現(xiàn)</p><p> 基于OpenSSL的程序可以被分為兩個(gè)部分:客戶機(jī)和服務(wù)器,使用SSL協(xié)議使通信雙方可以相互驗(yàn)證對(duì)方身份的真實(shí)性,并且能夠保證數(shù)據(jù)的完整性和機(jī)密性。建立SSL通信的過(guò)程如圖5.1所示。</p><p> 圖5.1
37、; SSL通信過(guò)程</p><p> SSL通信模型采用標(biāo)準(zhǔn)的C/S結(jié)構(gòu),除了在TCP層上進(jìn)行傳輸之外,與普通的網(wǎng)絡(luò)通信協(xié)議沒(méi)有太大的區(qū)別,基于OpenSSL的程序都要遵循以下幾個(gè)步驟:</p><p> 5.1 OpenSSL初始化</p><p> 在使用OpenSSL之前,必須進(jìn)行相應(yīng)的協(xié)議初始化工作,這可以通過(guò)下面的函數(shù)實(shí)現(xiàn):</p>&
38、lt;p> int SSL_library_int(void);</p><p><b> 5.2選擇會(huì)話協(xié)議</b></p><p> 在利用OpenSSL開(kāi)始SSL會(huì)話之前,需要為客戶端和服務(wù)器制定本次會(huì)話采用的協(xié)議,目前能夠使用的協(xié)議包括TLSv1.0、SSLv2、SSLv3、SSLv2/v3。</p><p> 需要注意的
39、是,客戶端和服務(wù)器必須使用相互兼容的協(xié)議,否則SSL會(huì)話將無(wú)法正常進(jìn)行。</p><p><b> 5.3創(chuàng)建會(huì)話環(huán)境</b></p><p> 在OpenSSL中創(chuàng)建的SSL會(huì)話環(huán)境稱為CTX,使用不同的協(xié)議會(huì)話,其環(huán)境也不一樣的。申請(qǐng)SSL會(huì)話環(huán)境的OpenSSL函數(shù)是:</p><p> SSL_CTX *SSL_CTX_new(S
40、SL_METHOD * method);</p><p> 當(dāng)SSL會(huì)話環(huán)境申請(qǐng)成功后,還要根據(jù)實(shí)際的需要設(shè)置CTX的屬性,通常的設(shè)置是指定SSL握手階段證書的驗(yàn)證方式和加載自己的證書。制定證書驗(yàn)證方式的函數(shù)是:</p><p> int SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int(*verify_callback),int(X509_ST
41、ORE_CTX *));</p><p> 為SSL會(huì)話環(huán)境加載CA證書的函數(shù)是:</p><p> SSL_CTX_load_verify_location(SSL_CTX *ctx,const char *Cafile,const char *Capath);</p><p> 為SSL會(huì)話加載用戶證書的函數(shù)是:</p><p>
42、 SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,int type);</p><p> 為SSL會(huì)話加載用戶私鑰的函數(shù)是:</p><p> SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx,const char* file,int type);</p><p&
43、gt; 在將證書和私鑰加載到SSL會(huì)話環(huán)境之后,就可以調(diào)用下面的函數(shù)來(lái)驗(yàn)證私鑰和證書是否相符:</p><p> int SSL_CTX_check_private_key(SSL_CTX *ctx);</p><p> 5.4 建立SSL套接字</p><p> SSL套接字是建立在普通的TCP套接字基礎(chǔ)之上,在建立SSL套接字時(shí)可以使用下面的一些函數(shù):&
44、lt;/p><p> SSL *SSl_new(SSL_CTX *ctx); </p><p> //申請(qǐng)一個(gè)SSL套接字</p><p> int SSL_set_fd(SSL *ssl,int fd);) </p><p><b> //綁定讀寫套接字</b></p><
45、;p> int SSL_set_rfd(SSL *ssl,int fd); </p><p><b> //綁定只讀套接字</b></p><p> int SSL_set_wfd(SSL *ssl,int fd); </p><p><b> //綁定只寫套接字</b></p>&
46、lt;p> 5.5 完成SSL握手</p><p> 在成功創(chuàng)建SSL套接字后,客戶端應(yīng)使用函數(shù)SSL_connect( )替代傳統(tǒng)的函數(shù)connect( )來(lái)完成握手過(guò)程:</p><p> int SSL_connect(SSL *ssl);</p><p> 而對(duì)服務(wù)器來(lái)講,則應(yīng)使用函數(shù)SSL_ accept ( )替代傳統(tǒng)的函數(shù)accept (
47、 )來(lái)完成握手過(guò)程:</p><p> int SSL_accept(SSL *ssl);</p><p> 握手過(guò)程完成之后,通常需要詢問(wèn)通信雙方的證書信息,以便進(jìn)行相應(yīng)的驗(yàn)證,這可以借助于下面的函數(shù)來(lái)實(shí)現(xiàn):</p><p> X509 *SSL_get_peer_certificate(SSL *ssl);</p><p> 該函
48、數(shù)可以從SSL套接字中提取對(duì)方的證書信息,這些信息已經(jīng)被SSL驗(yàn)證過(guò)了。</p><p> X509_NAME *X509_get_subject_name(X509 *a);</p><p> 該函數(shù)得到證書所用者的名字。</p><p> 5.6 進(jìn)行數(shù)據(jù)傳輸</p><p> 當(dāng)SSL握手完成之后,就可以進(jìn)行安全的數(shù)據(jù)傳輸了,在
49、數(shù)據(jù)傳輸階段,需要使用SSL_read( )和SSL_write( )來(lái)替代傳統(tǒng)的read( )和write( )函數(shù),來(lái)完成對(duì)套接字的讀寫操作:</p><p> int SSL_read(SSL *ssl,void *buf,int num);</p><p> int SSL_write(SSL *ssl,const void *buf,int num);</p>
50、<p> 5.7 結(jié)束SSL通信</p><p> 當(dāng)客戶端和服務(wù)器之間的數(shù)據(jù)通信完成之后,調(diào)用下面的函數(shù)來(lái)釋放已經(jīng)申請(qǐng)的SSL資源:</p><p> int SSL_shutdown(SSL *ssl); </p><p> //關(guān)閉SSL套接字</p><p> void SSl_free(SSL *ss
51、l); </p><p> //釋放SSL套接字</p><p> void SSL_CTX_free(SSL_CTX *ctx); </p><p> //釋放SSL會(huì)話環(huán)境</p><p> 6. SSL協(xié)議的缺陷</p><p> 根據(jù)以上內(nèi)容可知,SSL協(xié)議所采用的加密算法和認(rèn)證算法使它具
52、有一定的安全性,能夠在一定程度上抵抗某些攻擊。 除此之外SSL協(xié)議具備很強(qiáng)的靈活性,在瀏覽器中大都建有SSL功能。但是SSL協(xié)議也有很多缺陷,具體如下:</p><p><b> 6.1密鑰管理問(wèn)題</b></p><p> 設(shè)計(jì)一個(gè)安全秘密的密鑰交換協(xié)議是很復(fù)雜的,因此,SSL握手協(xié)議中客戶機(jī)和服務(wù)器在互相發(fā)送自己能夠支持的加密算法時(shí),是以明文傳送的,存在被攻擊
53、修改的可能。</p><p><b> 6.2加密強(qiáng)度問(wèn)題</b></p><p> 服務(wù)器證書分為高端和低端兩種,高端證書加密強(qiáng)度比低端證書高。SSL通信中具體達(dá)到的加密強(qiáng)度與客戶操作系統(tǒng)、瀏覽器版本、網(wǎng)絡(luò)服務(wù)器的所采用的證書等因素相關(guān)。如許多客戶的系統(tǒng)不支持128位強(qiáng)度的加密鏈接,即便服務(wù)器證書可以支持128位,客戶端也自動(dòng)降低加密強(qiáng)度,除非他采用了支持SCG
54、技術(shù)的服務(wù)器證書(強(qiáng)制型),方可實(shí)現(xiàn)128位加密強(qiáng)度。因此,客戶機(jī)的性能將會(huì)影響到SSL的安全性。</p><p><b> 6.3數(shù)字簽名問(wèn)題</b></p><p> SSL協(xié)議對(duì)握手之后的通信內(nèi)容沒(méi)有數(shù)字簽名功能,即沒(méi)有抗否認(rèn)服務(wù)。若要增加數(shù)字簽名功能,則需要在協(xié)議中打“補(bǔ)丁”。這樣做,在用于加密密鑰的同時(shí)又用于數(shù)字簽名,這在安全上存在漏洞。后來(lái)PKI體系完
55、善了這種措施,即雙密鑰機(jī)制,將加密密鑰和數(shù)字簽名密鑰二者分開(kāi),成為雙證書機(jī)制。這是PKI完整的安全服務(wù)體系。</p><p> 6.4必須建立在可靠連接基礎(chǔ)上</p><p> SSL協(xié)議的底層協(xié)議僅限于TCP協(xié)議。由于SSL要求有TCP通道,所以對(duì)于使用UDP協(xié)議的DNS類型的應(yīng)用場(chǎng)合是不適合的。</p><p> 6.5多方通信表現(xiàn)欠佳</p>
56、<p> 由于SSL的連接本質(zhì)上是一對(duì)一的,所以在通信方只有兩個(gè)的情況下它會(huì)工作的很好。在多對(duì)多的環(huán)境中,它的表現(xiàn)欠佳。 </p><p><b> 7.結(jié)束語(yǔ)</b></p><p> SSL協(xié)議采用數(shù)字證書進(jìn)行雙端實(shí)體認(rèn)證,用非對(duì)稱加密算法進(jìn)行密鑰協(xié)商,用對(duì)稱加密算法將數(shù)據(jù)加密后進(jìn)行傳輸以保證數(shù)據(jù)的保密性,并且通過(guò)計(jì)算數(shù)字摘要來(lái)驗(yàn)證數(shù)據(jù)在傳輸
57、過(guò)程中是否被篡改和偽造,從而為敏感數(shù)據(jù)在Internet上的傳輸提供了一種安全保障手段。</p><p> OpenSSL是一個(gè)開(kāi)放源代碼的SSL協(xié)議的產(chǎn)品實(shí)現(xiàn),它采用C語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,具備了跨系統(tǒng)的性能。調(diào)用OpenSSL 的函數(shù)就可以實(shí)現(xiàn)一個(gè)SSL加密的安全數(shù)據(jù)傳輸通道,從而保護(hù)客戶端和服務(wù)器之間數(shù)據(jù)的安全。</p><p><b> 參考文獻(xiàn)</b&
58、gt;</p><p> 1. 袁藝,林生,朱淵超. 信息安全專題講座:淺析計(jì)算機(jī)漏洞及修補(bǔ)措施.《保密工作》2009年 第2期。</p><p> 2. 徐震,鄧亞平.SET的安全性分析與改進(jìn).重慶郵電學(xué)院學(xué)報(bào),2005,17(6),745~748</p><p> 3. 馬瑞萍.SSL安全性分析研究.網(wǎng)絡(luò)安全技術(shù)與應(yīng)用;2001,12期,17~2</
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)安全協(xié)議SSL原理及應(yīng)用.pdf
- 基于SSL協(xié)議的網(wǎng)絡(luò)安全存儲(chǔ)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)安全協(xié)議課程設(shè)計(jì)--ssl協(xié)議的安全性研究
- ARP協(xié)議分析及在網(wǎng)絡(luò)安全中的應(yīng)用實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)—網(wǎng)絡(luò)安全防護(hù)及sep應(yīng)用
- 基于SSL協(xié)議的網(wǎng)絡(luò)安全系統(tǒng)研究與設(shè)計(jì).pdf
- 畢業(yè)設(shè)計(jì)論文--企業(yè)網(wǎng)絡(luò)安全分析
- 企業(yè)網(wǎng)絡(luò)安全分析畢業(yè)設(shè)計(jì)論文
- 基于SSL的網(wǎng)絡(luò)安全終端的研究與實(shí)現(xiàn).pdf
- 網(wǎng)絡(luò)安全畢業(yè)設(shè)計(jì)---校園網(wǎng)網(wǎng)絡(luò)安全及其對(duì)策
- 畢業(yè)設(shè)計(jì)-企業(yè)網(wǎng)絡(luò)安全設(shè)計(jì)
- 基于IPSec與SSL VPN的網(wǎng)絡(luò)安全研究與實(shí)現(xiàn).pdf
- 基于SSL的QTI-NG網(wǎng)絡(luò)安全管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)----防火墻在網(wǎng)絡(luò)安全中的應(yīng)用
- 基于IPSec網(wǎng)絡(luò)安全協(xié)議的研究及實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)---企業(yè)網(wǎng)絡(luò)安全實(shí)施
- 基于路由器的網(wǎng)絡(luò)安全研究和實(shí)現(xiàn)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)網(wǎng)絡(luò)安全評(píng)估模型設(shè)計(jì)
- 網(wǎng)絡(luò)安全系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)設(shè)計(jì)基于路由器的網(wǎng)絡(luò)安全研究和實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論