SSL協(xié)議相關(guān)知識簡介_第1頁
SSL協(xié)議相關(guān)知識簡介_第2頁
SSL協(xié)議相關(guān)知識簡介_第3頁
SSL協(xié)議相關(guān)知識簡介_第4頁
SSL協(xié)議相關(guān)知識簡介_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、引言         SSL是一種在客戶端和服務(wù)器端之間建立安全通道的協(xié)議。SSL一經(jīng)提出,就在Internet上得到廣泛的應(yīng)用。SSL最常用來保護(hù)Web的安全。為了保護(hù)存有敏感信息Web的服務(wù)器的安全,消除用戶在Internet上數(shù)據(jù)傳輸?shù)陌踩檻]。OpenSSL是一個(gè)支持SSL認(rèn)證的服務(wù)器它是一個(gè)源碼開放的自由軟件,支持多種操作系統(tǒng)。OpenSSL軟件的目的是實(shí)現(xiàn)一個(gè)完整的、健壯的、商業(yè)級的開放源碼工具,通過強(qiáng)大的加密算法來實(shí)現(xiàn)建立在傳輸層之上的安全性。OpenSSL包含一套SSL協(xié)議的完整接口,應(yīng)用程序應(yīng)用它們可以很方

2、便的建立起安全套接層,進(jìn)而能夠通過網(wǎng)絡(luò)進(jìn)行安全的數(shù)據(jù)傳輸。2  SSL協(xié)議概述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)用程序之間數(shù)據(jù)的安全性,對傳送的數(shù)據(jù)進(jìn)行加密和隱藏,確保數(shù)據(jù)在傳送中不被改變,即確

3、保數(shù)據(jù)的完整性。 SSL 以對稱密碼技術(shù)和公開密碼技術(shù)相結(jié)合,可以實(shí)現(xiàn)如下三個(gè)通信目標(biāo):(1)秘密性: SSL客戶機(jī)和服務(wù)器之間傳送的數(shù)據(jù)都經(jīng)過了加密處理,網(wǎng)絡(luò)中的非法竊聽者所獲取的信息都將是無意義的密文信息。( 2)完整性: SSL利用密碼算法和散列(HASH)函數(shù),通過對傳輸信息特征值的提取來保證信息的完整性,確保要傳輸?shù)男畔⑷康竭_(dá)目的地,可以避免服務(wù)器和客戶機(jī)之間的信息受到破壞。(3)認(rèn)證性:利用證書技術(shù)和可信的第三方認(rèn)證,可以讓客戶機(jī)和服務(wù)器相互識別對方的身份。為了驗(yàn)證證書持有者是其合法用戶(而不是冒名用戶), SSL要求證書持有者在握手時(shí)相互交換數(shù)字證書,通過驗(yàn)證來保證對

4、方身份的合法性。3  SSL協(xié)議的體系結(jié)構(gòu)SSL協(xié)議位于TCP/IP協(xié)議模型的網(wǎng)絡(luò)層和應(yīng)用層之間,使用TCP來提供一種可靠的端到端的安全服務(wù),它是客戶/服務(wù)器應(yīng)用之間的通信不被攻擊竊聽,并且始終對服務(wù)器進(jìn)行認(rèn)證,還可以選擇對客戶進(jìn)行認(rèn)證。SSL協(xié)議在應(yīng)用層通信之前就已經(jīng)完成加密算法、通信密鑰的協(xié)商以及服務(wù)器認(rèn)證工作,在此之后,應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都被加密。SSL實(shí)際上是共同工作的兩層協(xié)議組成,如圖1所示。從體系結(jié)構(gòu)圖可以看出SSL安全協(xié)議實(shí)際是SSL握手協(xié)議、SSL修改密文協(xié)議、SSL警告協(xié)議和SSL記錄協(xié)議組成的一個(gè)協(xié)議族。   握手協(xié)議修改密 &#

5、160; 文協(xié)議報(bào)警協(xié)議        SSL記錄協(xié)議           TCP           IP                   圖1 

6、; SSL體系結(jié)構(gòu)        SSL記錄協(xié)議為SSL連接提供了兩種服務(wù):一是機(jī)密性,二是消息完整性。為了實(shí)現(xiàn)這兩種服務(wù), SSL記錄協(xié)議對接收的數(shù)據(jù)和被接收的數(shù)據(jù)工作過程是如何實(shí)現(xiàn)的呢? 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)容類型、主要版本、次要版本和壓縮長度組成的首部。被接收的數(shù)據(jù)剛好與接收數(shù)據(jù)工作過程相反,依次被解密、驗(yàn)證、解壓縮和重新裝配,然后交給更高級用戶。  &#

7、160;     SSL修改密文協(xié)議是使用SSL記錄協(xié)議服務(wù)的SSL高層協(xié)議的3個(gè)特定協(xié)議之一,也是其中最簡單的一個(gè)。協(xié)議由單個(gè)消息組成,該消息只包含一個(gè)值為1的單個(gè)字節(jié)。該消息的唯一作用就是使未決狀態(tài)拷貝為當(dāng)前狀態(tài),更新用于當(dāng)前連接的密碼組。為了保障SSL傳輸過程的安全性,雙方應(yīng)該每隔一段時(shí)間改變加密規(guī)范。        SSL告警協(xié)議是用來為對等實(shí)體傳遞SSL的相關(guān)警告。如果在通信過程中某一方發(fā)現(xiàn)任何異常,就需要給對方發(fā)送一條警示消息通告。警示消息有兩種:一種是 Fatal錯(cuò)誤,如

8、傳遞數(shù)據(jù)過程中,發(fā)現(xiàn)錯(cuò)誤的MAC,雙方就需要立即中斷會話,同時(shí)消除自己緩沖區(qū)相應(yīng)的會話記錄;第二種是Warning消息,這種情況,通信雙方通常都只是記錄日志,而對通信過程不造成任何影響。SSL握手協(xié)議可以使得服務(wù)器和客戶能夠相互鑒別對方,協(xié)商具體的加密算法和MAC算法以及保密密鑰,用來保護(hù)在SSL記錄中發(fā)送的數(shù)據(jù)。SSL握手協(xié)議允許通信實(shí)體在交換應(yīng)用數(shù)據(jù)之前協(xié)商密鑰的算法、加密密鑰和對客戶端進(jìn)行認(rèn)證(可選)的協(xié)議,為下一步記錄協(xié)議要使用的密鑰信息進(jìn)行協(xié)商,使客戶端和服務(wù)器建立并保持安全通信的狀態(tài)信息。SSL握手協(xié)議是在任何應(yīng)用程序數(shù)據(jù)傳輸之前使用的。SSL握手協(xié)議包含四個(gè)階段:第一個(gè)階段建立安

9、全能力;第二個(gè)階段服務(wù)器鑒別和密鑰交換;第三個(gè)階段客戶鑒別和密鑰交換;第四個(gè)階段完成握手協(xié)議。4        SSL協(xié)議的實(shí)現(xiàn)基于OpenSSL的程序可以被分為兩個(gè)部分:客戶機(jī)和服務(wù)器,使用SSL協(xié)議使通信雙方可以相互驗(yàn)證對方身份的真實(shí)性,并且能夠保證數(shù)據(jù)的完整性和機(jī)密性。建立SSL通信的過程如圖2所示。         圖2  SSL通信過程 SSL通信模型采用標(biāo)準(zhǔn)的C/S結(jié)構(gòu),除了在TCP層上進(jìn)行傳輸之外,與普通的網(wǎng)絡(luò)通信協(xié)議沒有

10、太大的區(qū)別,基于OpenSSL的程序都要遵循以下幾個(gè)步驟:(1 ) OpenSSL初始化在使用OpenSSL之前,必須進(jìn)行相應(yīng)的協(xié)議初始化工作,這可以通過下面的函數(shù)實(shí)現(xiàn):int SSL_library_int(void);(2 ) 選擇會話協(xié)議在利用OpenSSL開始SSL會話之前,需要為客戶端和服務(wù)器制定本次會話采用的協(xié)議,目前能夠使用的協(xié)議包括TLSv1.0、SSLv2、SSLv3、SSLv2/v3。需要注意的是,客戶端和服務(wù)器必須使用相互兼容的協(xié)議,否則SSL會話將無法正常進(jìn)行。(3 ) 創(chuàng)建會話環(huán)境在OpenSSL中創(chuàng)建的SSL會話環(huán)境稱為CTX,使用不同的協(xié)議會話,其環(huán)境也不一樣的。

11、申請SSL會話環(huán)境的OpenSSL函數(shù)是:SSL_CTX *SSL_CTX_new(SSL_METHOD * method);當(dāng)SSL會話環(huán)境申請成功后,還要根據(jù)實(shí)際的需要設(shè)置CTX的屬性,通常的設(shè)置是指定SSL握手階段證書的驗(yàn)證方式和加載自己的證書。制定證書驗(yàn)證方式的函數(shù)是:int SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int(*verify_callback),int(X509_STORE_CTX *);為SSL會話環(huán)境加載CA證書的函數(shù)是:SSL_CTX_load_verify_location(SSL_CTX *ctx,const char

12、*Ca char *Capath);為SSL會話加載用戶證書的函數(shù)是:SSL_CTX_use_certificate_ *ctx, const char * type);為SSL會話加載用戶私鑰的函數(shù)是:SSL_CTX_use_PrivateKey_ *ctx,const char* type);在將證書和私鑰加載到SSL會話環(huán)境之后,就可以調(diào)用下面的函數(shù)來驗(yàn)證私鑰和證書是否相符:int SSL_CTX_check_private_key(SSL_CTX *ctx);(4) 建立SSL套接字SSL套接字是建立在普通的TCP套接字基礎(chǔ)之上,在建立SSL套接字時(shí)可以使用下面的一些函數(shù):SSL *S

13、Sl_new(SSL_CTX *ctx);  /申請一個(gè)SSL套接字int SSL_set_fd(SSL *ssl,int fd);)  /綁定讀寫套接字int SSL_set_rfd(SSL *ssl,int fd);  /綁定只讀套接字int SSL_set_wfd(SSL *ssl,int fd); /綁定只寫套接字(5) 完成SSL握手在成功創(chuàng)建SSL套接字后,客戶端應(yīng)使用函數(shù)SSL_connect( )替代傳統(tǒng)的函數(shù)connect( )來完成握手過程:int SSL_connect(SSL *ssl);而對服務(wù)器來講,則應(yīng)使用函數(shù)SSL_ accept

14、( )替代傳統(tǒng)的函數(shù)accept ( )來完成握手過程:int SSL_accept(SSL *ssl);握手過程完成之后,通常需要詢問通信雙方的證書信息,以便進(jìn)行相應(yīng)的驗(yàn)證,這可以借助于下面的函數(shù)來實(shí)現(xiàn):X509 *SSL_get_peer_certificate(SSL *ssl);該函數(shù)可以從SSL套接字中提取對方的證書信息,這些信息已經(jīng)被SSL驗(yàn)證過了。X509_NAME *X509_get_subject_name(X509 *a);該函數(shù)得到證書所用者的名字。(6) 進(jìn)行數(shù)據(jù)傳輸當(dāng)SSL握手完成之后,就可以進(jìn)行安全的數(shù)據(jù)傳輸了,在數(shù)據(jù)傳輸階段,需要使用SSL_read( )和SSL

15、_write( )來替代傳統(tǒng)的read( )和write( )函數(shù),來完成對套接字的讀寫操作:int SSL_read(SSL *ssl,void *buf,int num);int SSL_write(SSL *ssl,const void *buf,int num);(7 ) 結(jié)束SSL通信當(dāng)客戶端和服務(wù)器之間的數(shù)據(jù)通信完成之后,調(diào)用下面的函數(shù)來釋放已經(jīng)申請的SSL資源:int SSL_shutdown(SSL *ssl);  /關(guān)閉SSL套接字void SSl_free(SSL *ssl);  /釋放SSL套接字void SSL_CTX_free(SSL_CTX *c

16、tx);  /釋放SSL會話環(huán)境4  結(jié)束語SSL協(xié)議采用數(shù)字證書進(jìn)行雙端實(shí)體認(rèn)證,用非對稱加密算法進(jìn)行密鑰協(xié)商,用對稱加密算法將數(shù)據(jù)加密后進(jìn)行傳輸以保證數(shù)據(jù)的保密性,并且通過計(jì)算數(shù)字摘要來驗(yàn)證數(shù)據(jù)在傳輸過程中是否被篡改和偽造,從而為敏感數(shù)據(jù)在Internet上的傳輸提供了一種安全保障手段。OpenSSL是一個(gè)開放源代碼的SSL協(xié)議的產(chǎn)品實(shí)現(xiàn),它采用C語言作為開發(fā)語言,具備了跨系統(tǒng)的性能。調(diào)用OpenSSL  的函數(shù)就可以實(shí)現(xiàn)一個(gè)SSL加密的安全數(shù)據(jù)傳輸通道,從而保護(hù)客戶端和服務(wù)器之間數(shù)據(jù)的安全。SSL 協(xié)議的握手和通訊 為了便于更好的認(rèn)識和理解 SSL 協(xié)議,這

17、里著重介紹 SSL 協(xié)議的握手協(xié)議。SSL 協(xié)議既用到了公鑰加密技術(shù)又用到了對稱加密技術(shù),對稱加密技術(shù)雖然比公鑰加密技術(shù)的速度快,可是公鑰加密技術(shù)提供了更好的身份認(rèn)證技術(shù)。SSL 的握手協(xié)議非常有效的讓客戶和服務(wù)器之間完成相互之間的身份認(rèn)證,其主要過程如下: 客戶端的瀏覽器向服務(wù)器傳送客戶端 SSL 協(xié)議的版本號,加密算法的種類,產(chǎn)生的隨機(jī)數(shù),以及其他服務(wù)器和客戶端之間通訊所需要的各種信息。 服務(wù)器向客戶端傳送 SSL 協(xié)議的版本號,加密算法的種類,隨機(jī)數(shù)以及其他相關(guān)信息,同時(shí)服務(wù)器還將向客戶端傳送自己的證書。 客戶利用服務(wù)器傳過來的信息驗(yàn)證服務(wù)器的合法性,服務(wù)器的合法性包括:證書是否過期,發(fā)

18、行服務(wù)器證書的 CA 是否可靠,發(fā)行者證書的公鑰能否正確解開服務(wù)器證書的“發(fā)行者的數(shù)字簽名”,服務(wù)器證書上的域名是否和服務(wù)器的實(shí)際域名相匹配。如果合法性驗(yàn)證沒有通過,通訊將斷開;如果合法性驗(yàn)證通過,將繼續(xù)進(jìn)行第四步。用戶端隨機(jī)產(chǎn)生一個(gè)用于后面通訊的“對稱密碼”,然后用服務(wù)器的公鑰(服務(wù)器的公鑰從步驟中的服務(wù)器的證書中獲得)對其加密,然后將加密后的“預(yù)主密碼”傳給服務(wù)器。 如果服務(wù)器要求客戶的身份認(rèn)證(在握手過程中為可選),用戶可以建立一個(gè)隨機(jī)數(shù)然后對其進(jìn)行數(shù)據(jù)簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和客戶自己的證書以及加密過的“預(yù)主密碼”一起傳給服務(wù)器。 如果服務(wù)器要求客戶的身份認(rèn)證,服務(wù)器必須檢驗(yàn)客戶證

19、書和簽名隨機(jī)數(shù)的合法性,具體的合法性驗(yàn)證過程包括:客戶的證書使用日期是否有效,為客戶提供證書的 CA 是否可靠,發(fā)行 CA 的公鑰能否正確解開客戶證書的發(fā)行 CA 的數(shù)字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗(yàn)如果沒有通過,通訊立刻中斷;如果驗(yàn)證通過,服務(wù)器將用自己的私鑰解開加密的“預(yù)主密碼”,然后執(zhí)行一系列步驟來產(chǎn)生主通訊密碼(客戶端也將通過同樣的方法產(chǎn)生相同的主通訊密碼)。 服務(wù)器和客戶端用相同的主密碼即“通話密碼”,一個(gè)對稱密鑰用于 SSL 協(xié)議的安全數(shù)據(jù)通訊的加解密通訊。同時(shí)在 SSL 通訊過程中還要完成數(shù)據(jù)通訊的完整性,防止數(shù)據(jù)通訊中的任何變化。 客戶端向服務(wù)器端發(fā)出

20、信息,指明后面的數(shù)據(jù)通訊將使用的步驟中的主密碼為對稱密鑰,同時(shí)通知服務(wù)器客戶端的握手過程結(jié)束。 服務(wù)器向客戶端發(fā)出信息,指明后面的數(shù)據(jù)通訊將使用的步驟中的主密碼為對稱密鑰,同時(shí)通知客戶端服務(wù)器端的握手過程結(jié)束。 SSL 的握手部分結(jié)束,SSL 安全通道的數(shù)據(jù)通訊開始,客戶和服務(wù)器開始使用相同的對稱密鑰進(jìn)行數(shù)據(jù)通訊,同時(shí)進(jìn)行通訊完整性的檢驗(yàn)。雙向認(rèn)證 SSL 協(xié)議的具體過程 瀏覽器發(fā)送一個(gè)連接請求給安全服務(wù)器。 服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。 客戶瀏覽器檢查服務(wù)器送過來的證書是否是由自己信賴的 CA 中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,客戶瀏覽器就給客戶一

21、個(gè)警告消息:警告客戶這個(gè)證書不是可以信賴的,詢問客戶是否需要繼續(xù)。 接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個(gè)服務(wù)器的合法身份。 服務(wù)器要求客戶發(fā)送客戶自己的證書。收到后,服務(wù)器驗(yàn)證客戶的證書,如果沒有通過驗(yàn)證,拒絕連接;如果通過驗(yàn)證,服務(wù)器獲得用戶的公鑰。 客戶瀏覽器告訴服務(wù)器自己所能夠支持的通訊對稱密碼方案。 服務(wù)器從客戶發(fā)送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密后通知瀏覽器。 瀏覽器針對這個(gè)密碼方案,選擇一個(gè)通話密鑰,接著用服務(wù)器的公鑰加過密后發(fā)送給服務(wù)器。 服務(wù)器接收到瀏覽器送過來的

22、消息,用自己的私鑰解密,獲得通話密鑰。 服務(wù)器、瀏覽器接下來的通訊都是用對稱密碼方案,對稱密鑰是加過密的。 上面所述的是雙向認(rèn)證 SSL 協(xié)議的具體通訊過程,這種情況要求服務(wù)器和用戶雙方都有證書。單向認(rèn)證 SSL 協(xié)議不需要客戶擁有 CA 證書,具體的過程相對于上面的步驟,只需將服務(wù)器端驗(yàn)證客戶證書的過程去掉,以及在協(xié)商對稱密碼方案,對稱通話密鑰時(shí),服務(wù)器發(fā)送給客戶的是沒有加過密的(這并不影響 SSL 過程的安全性)密碼方案。 這樣,雙方具體的通訊內(nèi)容,就是加過密的數(shù)據(jù),如果有第三方攻擊,獲得的只是加密的數(shù)據(jù),第三方要獲得有用的信息,就需要對加密的數(shù)據(jù)進(jìn)行解密,這時(shí)候的安全就依賴于密碼方案的安

23、全。而幸運(yùn)的是,目前所用的密碼方案,只要通訊密鑰長度足夠的長,就足夠的安全。這也是我們強(qiáng)調(diào)要求使用 128 位加密通訊的原因。證書各部分的含義Version 證書版本號,不同版本的證書格式不同 Serial Number 序列號,同一身份驗(yàn)證機(jī)構(gòu)簽發(fā)的證書序列號唯一 Algorithm Identifier 簽名算法,包括必要的參數(shù) Issuer 身份驗(yàn)證機(jī)構(gòu)的標(biāo)識信息 Period of Validity 有效期 Subject 證書持有人的標(biāo)識信息 Subjects Public Key 證書持有人的公鑰 Signature 身份驗(yàn)證機(jī)構(gòu)對證書的簽名證書的格式 認(rèn)證中心所發(fā)放的證書均遵循

24、X.509 V3 標(biāo)準(zhǔn),其基本格式如下: 證書版本號(Certificate Format Version) 含義:用來指定證書格式采用的 X.509 版本號。證書序列號(Certificate Serial Number) 含義:用來指定證書的唯一序列號,以標(biāo)識 CA 發(fā)出的所有公鑰證書。簽名(Signature) 算法標(biāo)識(Algorithm Identifier) 含義:用來指定 CA 簽發(fā)證書所用的簽名算法。 簽發(fā)此證書的 CA 名稱(Issuer ) 含義:用來指定簽發(fā)證書的 CA 的 X.500 唯一名稱(DN, Distinguished Name)。證書有效期(Validity

25、 Period) 起始日期(notBefore) 終止日期(notAfter) 含義:用來指定證書起始日期和終止日期。用戶名稱(Subject) 含義:用來指定證書用戶的 X.500 唯一名稱(DN,Distinguished Name)。用戶公鑰信息(Subject Public Key Information) 算法(algorithm) 算法標(biāo)識(AlgorithmIdentifier) 用戶公鑰(subjectPublicKey) 含義:用來標(biāo)識公鑰使用的算法,并包含公鑰本身。 證書擴(kuò)充部分(擴(kuò)展域)(Extensions) 含義:用來指定額外信息。X.509 V3 證書的擴(kuò)充部分(擴(kuò)

26、展域)及實(shí)現(xiàn)方法如下: CA 的公鑰標(biāo)識(AuthorityKeyIdentifier) 公鑰標(biāo)識(SET 未使用)(KeyIdentifier) 簽發(fā)證書者證書的簽發(fā)者的甄別名(CertificateIssuer) 簽發(fā)證書者證書的序列號(Certificate Serial Number)X.509 V3 證書的擴(kuò)充部分(擴(kuò)展域)及實(shí)現(xiàn)CA 的公鑰標(biāo)識(AuthorityKeyIdentifier) 公鑰標(biāo)識(SET 未使用)(KeyIdentifier) 簽發(fā)證書者證書的簽發(fā)者的甄別名(Certificat簽發(fā)證書者證書的序列號(Certificate Serial N含義:CA 簽名證

27、書所用的密鑰對的唯一標(biāo)識用戶的公鑰標(biāo)識(SubjectKeyIdentifier)含義:用來標(biāo)識與證書中公鑰相關(guān)的特定密鑰進(jìn)行解密。 證書中的公鑰用途(KeyUsage) 含義:用來指定公鑰用途。用戶的私鑰有效期(PrivateKeyUsagePeriod) 起始日期(NoteBefore) 終止日期(NoteAfter) 含義:用來指定用戶簽名私鑰的起始日期和終止日期。 CA 承認(rèn)的證書政策列表(Certificate Policies) 含義:用來指定用戶證書所適用的政策,證書政策可由對象標(biāo)識符表示。 用戶的代用名(SubstitutionalName) 含義:用來指定用戶的代用名。 CA

28、 的代用名(IssuerAltName) 含義:用來指定 CA 的代用名。 基本制約(BasicConstraints) 含義:用來表明證書用戶是最終用戶還是 CA。 在 SET 系統(tǒng)中有一些私有擴(kuò)充部分(擴(kuò)展域)HashedRootKey 含義:只在根證書中使用,用于證書更新時(shí)進(jìn)行回溯。 證書類型(CertificateType) 含義:用來區(qū)別不同的實(shí)體。該項(xiàng)是必選的。 商戶數(shù)據(jù)(MerchantData) 含義:包含支付網(wǎng)關(guān)需要的所有商戶信息。 持卡人證書需求(CardCertRequired) 含義:顯示支付網(wǎng)關(guān)是否支持與沒有證書的持卡人進(jìn)行交易。 SET 擴(kuò)展(SETExtensio

29、ns) 含義:列出支付網(wǎng)關(guān)支持的支付命令的 SET 信息擴(kuò)展。 CRL 數(shù)據(jù)定義版本(Version) 含義:顯示 CRL 的版本號。CRL 的簽發(fā)者(Issuer) 含義:指明簽發(fā) CRL 的 CA 的甄別名。 CRL 發(fā)布時(shí)間(thisUpdate) 預(yù)計(jì)下一個(gè) CRL 更新時(shí)間(NextUpdate) 撤銷證書信息目錄(RevokedCertificates) CRL 擴(kuò)展(CRLExtension) CA 的公鑰標(biāo)識(AuthorityKeyIdentifier) CRL 號(CRLNumber)=   SSL認(rèn)證機(jī)構(gòu)是干什么的,在電子商務(wù)中如何實(shí)現(xiàn)?來源:Chin

30、aITLab2003-1-15 0:52:00 一協(xié)議的起源 隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)向整個(gè)經(jīng)濟(jì)社會各層次延伸,整個(gè)社會表現(xiàn)對Internet、Intranet 、Extranet等使用的更大的依賴性。隨著企業(yè)間信息交互的不斷增加,任何一種網(wǎng)絡(luò)應(yīng)用和增值服務(wù)的使用程度將取決于所使用網(wǎng)絡(luò)的信息安全有無保障,網(wǎng)絡(luò)安全已成為現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用的最大障礙,也是急需解決的難題之一。 由于Web上有時(shí)要傳輸重要或敏感的數(shù)據(jù),因此Netscape公司在推出Web瀏覽器首版的同時(shí),提出了安全通信協(xié)議SSL(Secure Socket Layer),目前已有2.0和3.0版本。SSL采用公開密鑰技術(shù)。其目標(biāo)

31、是保證兩個(gè)應(yīng)用間通信的保密性和可靠性,可在服務(wù)器和客戶機(jī)兩端同時(shí)實(shí)現(xiàn)支持。目前,利用公開密鑰技術(shù)的SSL協(xié)議,并已成為Internet上保密通訊的工業(yè)標(biāo)準(zhǔn)?,F(xiàn)行Web瀏覽器普遍將HTTP和SSL相結(jié)合,從而實(shí)現(xiàn)安全通信。 二協(xié)議概述 安全套接層協(xié)議(SSL)是在Internet基礎(chǔ)上提供的一種保證私密性的安全協(xié)議。它能使客戶/服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽,并且始終對服務(wù)器進(jìn)行認(rèn)證,還可選擇對客戶進(jìn)行認(rèn)證。SSL協(xié)議要求建立在可靠的傳輸層協(xié)議(例如:TCP)之上。SSL協(xié)議的優(yōu)勢在于它是與應(yīng)用層協(xié)議獨(dú)立無關(guān)的。高層的應(yīng)用層協(xié)議(例如:HTTP,。 。)能透明的建立于SSL協(xié)議之上。SSL協(xié)

32、議在應(yīng)用層協(xié)議通信之前就已經(jīng)完成加密算法、通信密鑰的協(xié)商以及服務(wù)器認(rèn)證工作。在此之后應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都會被加密,從而保證通信的私密性。 通過以上敘述,SSL協(xié)議提供的安全信道有以下三個(gè)特性: ? 私密性。因?yàn)樵谖帐謪f(xié)議定義了會話密鑰后,所有的消息都被加密。 ? 確認(rèn)性。因?yàn)楸M管會話的客戶端認(rèn)證是可選的,但是服務(wù)器端始終是被認(rèn)證的。 ? 可靠性。因?yàn)閭魉偷南ㄏ⑼暾詸z查(使用MAC)。 三協(xié)議規(guī)范 SSL協(xié)議由SSL記錄協(xié)議和SSL握手協(xié)議兩部分組成。 1. SSL記錄協(xié)議: 在SSL協(xié)議中,所有的傳輸數(shù)據(jù)都被封裝在記錄中。記錄是由記錄頭和長度不為0的記錄數(shù)據(jù)組成的。所有的SSL通

33、信包括握手消息、安全空白記錄和應(yīng)用數(shù)據(jù)都使用SSL記錄層。SSL記錄協(xié)議包括了記錄頭和記錄數(shù)據(jù)格式的規(guī)定。 1) SSL記錄頭格式: SSL的記錄頭可以是兩個(gè)或三個(gè)字節(jié)長的編碼。SSL記錄頭的包含的信息包括:記錄頭的 長度、記錄數(shù)據(jù)的長度、記錄數(shù)據(jù)中是否有粘貼數(shù)據(jù)。其中粘貼數(shù)據(jù)是在使用塊加密算 法時(shí),填充實(shí)際數(shù)據(jù),使其長度恰好是塊的整數(shù)倍。最高位為1時(shí),不含有粘貼數(shù)據(jù),記 錄頭的長度為兩個(gè)字節(jié),記錄數(shù)據(jù)的最大長度為32767個(gè)字節(jié);最高位為0時(shí),含有粘貼 數(shù)據(jù),記錄頭的長度為三個(gè)字節(jié),記錄數(shù)據(jù)的最大長度為16383個(gè)字節(jié)。 當(dāng)數(shù)據(jù)頭長度是三個(gè)字節(jié)時(shí),次高位有特殊的含義。次高位為1時(shí),標(biāo)識所傳輸

34、的記錄是 普通的數(shù)據(jù)記錄;次高位為0時(shí),標(biāo)識所傳輸?shù)挠涗浭前踩瞻子涗?被保留用于將來協(xié) 議的擴(kuò)展)。 記錄頭中數(shù)據(jù)長度編碼不包括數(shù)據(jù)頭所占用的字節(jié)長度。記錄頭長度為兩個(gè)字節(jié)的記錄長度的計(jì)算公式:記錄長度(byte0 ; 0x7f) << 8) | byte1。其中byte0、byte1分別表示傳輸?shù)牡谝粋€(gè)、第二個(gè)字節(jié)。記錄頭長度為三個(gè)字節(jié)的記錄長度的計(jì)算公式:記錄長度(byte0 ; 0x3f) << 8) | byte1。其中byte0、byte1的含義同上。判斷是否是安全空白記錄的計(jì)算公式:(byte0 ; 0x40) != 0。粘貼數(shù)據(jù)的長度為傳輸?shù)牡谌齻€(gè)字節(jié)。

35、 2) SSL記錄數(shù)據(jù)的格式: SSL的記錄數(shù)據(jù)包含三個(gè)部分:MAC數(shù)據(jù)、實(shí)際數(shù)據(jù)和粘貼數(shù)據(jù)。 MAC數(shù)據(jù)用于數(shù)據(jù)完整性檢查。計(jì)算MAC所用的散列函數(shù)由握手協(xié)議中的CIPHERCHOICE消息確定。若使用MD2和MD5算法,則MAC數(shù)據(jù)長度是16個(gè)字節(jié)。MAC的計(jì)算公式:MAC數(shù)據(jù)HASH密鑰,實(shí)際數(shù)據(jù),粘貼數(shù)據(jù),序號。當(dāng)會話的客戶端發(fā)送數(shù)據(jù)時(shí),密鑰是客戶的寫密鑰(服務(wù)器用讀密鑰來驗(yàn)證MAC數(shù)據(jù));而當(dāng)會話的客戶端接收數(shù)據(jù)時(shí),密鑰是客戶的讀密鑰(服務(wù)器用寫密鑰來產(chǎn)生MAC數(shù)據(jù))。序號是一個(gè)可以被發(fā)送和接收雙方遞增的計(jì)數(shù)器。每個(gè)通信方向都會建立一對計(jì)數(shù)器,分別被發(fā)送者和接收者擁有。計(jì)數(shù)器有32位

36、,計(jì)數(shù)值循環(huán)使用,每發(fā)送一個(gè)記錄計(jì)數(shù)值遞增一次,序號的初始值為0。 2. SSL握手協(xié)議: SSL握手協(xié)議包含兩個(gè)階段,第一個(gè)階段用于建立私密性通信信道,第二個(gè)階段用于客戶認(rèn)證。 1) 第一階段: 第一階段是通信的初始化階段,通信雙方都發(fā)出HELLO消息。當(dāng)雙方都接收到HELLO消息時(shí),就有足夠的信息確定是否需要一個(gè)新的密鑰。若不需要新的密鑰,雙方立即進(jìn)入握手協(xié)議的第二階段。否則,此時(shí)服務(wù)器方的SERVERHELLO消息將包含足夠的信息使客戶方產(chǎn)生一個(gè)新的密鑰。這些信息包括服務(wù)器所持有的證書、加密規(guī)約和連接標(biāo)識。若密鑰產(chǎn)生成功,客戶方發(fā)出CLIENTMASTERKEY消息,否則發(fā)出錯(cuò)誤消息。最

37、終當(dāng)密鑰確定以后,服務(wù)器方向客戶方發(fā)出SERVERVERIFY消息。因?yàn)橹挥袚碛泻线m的公鑰的服務(wù)器才能解開密鑰。下圖為第一階段的流程: 需要注意的一點(diǎn)是每一通信方向上都需要一對密鑰,所以一個(gè)連接需要四個(gè)密鑰,分別為客戶方的讀密鑰、客戶方的寫密鑰、服務(wù)器方的讀密鑰、服務(wù)器方的寫密鑰。 2) 第二階段:第二階段的主要任務(wù)是對客戶進(jìn)行認(rèn)證,此時(shí)服務(wù)器已經(jīng)被認(rèn)證了。服務(wù)器方向客戶發(fā)出認(rèn)證請求消息:REQUESTCERTIFICATE。當(dāng)客戶收到服務(wù)器方的認(rèn)證請求消息,發(fā)出 自己的證書,并且監(jiān)聽對方回送的認(rèn)證結(jié)果。而當(dāng)服務(wù)器收到客戶的認(rèn)證,認(rèn)證成功返回SERVERFINISH消息,否則返回錯(cuò)誤消息。到此

38、為止,握手協(xié)議全部結(jié)束。 3. 典型的協(xié)議消息流程: 消息名 方向 內(nèi)容 不需要新密鑰 CLIENTHELLO C>S challenge, session_id, cipher_specs SERVERHELLO S>C connection-id, session_id_hit CLIENTFINISH C>S Eclient_write_keyconnection-id SERVER-VERIFY S>C Eserver_write_keychallenge SERVERFINISH S>C Eserver_write_keysession_id 需要新密鑰

39、 CLIENTHELLO C>S challenge, cipher_specs SERVERHELLO S>C connection-id,server_certificate,cipher_specs CLIENTMASTERKEY C>S Eserver_public_keymaster_key CLIENTFINISH C>S Eclient_write_keyconnection-id SERVERVERIFY S>C Eserver_write_keychallenge SERVERFINISH S>C Eserver_write_keynew_

40、session_id 需要客戶認(rèn)證 CLIENTHELLO C>S challenge, session_id, cipher_specs SERVERHELLO S>C connection-id, session_id_hit CLIENTFINISH C>S Eclient_write_keyconnection-id SERVER-VERIFY S>C Eserver_write_keychallenge REQUESTCERTIFICATE S>C Eserver_write_keyauth_type,challenge' CLIENTCERTI

41、FICATE C>S Eclient_write_keycert_type,client_cert,response_data SERVERFINISH S>C Eserver_write_keysession_id 四相關(guān)技術(shù): 1. 加密算法和會話密鑰: 如前所述,加密算法和會話密鑰是在握手協(xié)議中協(xié)商并有CIPHERCHOICE指定的?,F(xiàn)有的SSL版本中所用到的加密算法包括:RC4、RC2、IDEA和DES,而加密算法所用的密鑰由消息散列函數(shù)MD5產(chǎn)生。RC4、RC2是由RSA定義的,其中RC2適用于塊加密,RC4適用于流加密。下述為CIPHERCHIOCE的可能取值和會話密鑰的計(jì)算: SSL_CK_RC4_128_WITH_MD5 SSL_CK_RC4_128_EXPORT40_WITH_MD5 SSL_CK_RC2_128_CBC_WITH_MD5 SSL_CK_RC2_128_CBC_EXPORT40_WITH_MD5 SSL_CK_IDEA_128_CBC_WITH

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論