国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SSL協(xié)議的分析及實現(xiàn)

1引言 

    SSL是一種在客戶端和服務(wù)器端之間建立安全通道的協(xié)議。SSL一經(jīng)提出,就在Internet上得到廣泛的應(yīng)用。SSL最常用來保護Web的安全。為了保護存有敏感信息Web的服務(wù)器的安全,消除用戶在Internet上數(shù)據(jù)傳輸?shù)陌踩檻]。

OpenSSL是一個支持SSL認證的服務(wù)器.它是一個源碼開放的自由軟件,支持多種操作系統(tǒng)。OpenSSL軟件的目的是實現(xiàn)一個完整的、健壯的、商業(yè)級的開放源碼工具,通過強大的加密算法來實現(xiàn)建立在傳輸層之上的安全性。OpenSSL包含一套SSL協(xié)議的完整接 口,應(yīng)用程序應(yīng)用它們可以很方便的建立起安全套接層,進而能夠通過網(wǎng)絡(luò)進行安全的數(shù)據(jù)傳輸。

2  SSL協(xié)議概述

SSLSecure socket Layer英文縮寫,它的中文意思是安全套接層協(xié)議,指使用公鑰和私鑰技術(shù)組合的安全網(wǎng)絡(luò)通訊協(xié)議。SSL協(xié)議是網(wǎng)景公司(Netscape)推出的基于 WEB應(yīng)用的安全協(xié)議,SSL協(xié)議指定了一種在應(yīng)用程序協(xié)議(HttpTelenet、NMTPFTP)TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分 層的機制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認證、消息完整性以及可選的客戶機認證,主要用于提高應(yīng)用程序之間數(shù)據(jù)的安全性,對傳送的數(shù)據(jù)進行加 密和隱藏,確保數(shù)據(jù)在傳送中不被改變,即確保數(shù)據(jù)的完整性。

SSL 以對稱密碼技術(shù)和公開密碼技術(shù)相結(jié)合,可以實現(xiàn)如下三個通信目標:

(1)秘密性: SSL客戶機和服務(wù)器之間傳送的數(shù)據(jù)都經(jīng)過了加密處理,網(wǎng)絡(luò)中的非法竊聽者所獲取的信息都將是無意義的密文信息。

(2)完整性: SSL利用密碼算法和散列(HASH)函數(shù),通過對傳輸信息特征值的提取來保證信息的完整性,確保要傳輸

的信息全部到達目的地,可以避免服務(wù)器和客戶機之間的信息受到破壞。

(3)認證性:利用證書技術(shù)和可信的第三方認證,可以讓客戶機和服務(wù)器相互識別對方的身份。為了驗證證書持有者是其合法用戶(而不是冒名用戶), SSL要求證書持有者在握手時相互交換數(shù)字證書,通過驗證來保證對方身份的合法性。

3  SSL協(xié)議的體系結(jié)構(gòu)

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

  

握手協(xié)議

修改密文協(xié)議

報警協(xié)議

SSL記錄協(xié)議

TCP

IP

                                                   圖1  SSL體系結(jié)構(gòu)

    SSL記錄協(xié)議為SSL連接提供了兩種服務(wù):一是機密性,二是消息完整性。為了實現(xiàn)這兩種服務(wù), SSL記錄協(xié)議對接收的數(shù)據(jù)和被接收的數(shù)據(jù)工作過程是如何實現(xiàn)的呢? SSL記錄協(xié)議接收傳輸?shù)膽?yīng)用報文,將數(shù)據(jù)分片成可管理的塊,進行數(shù)據(jù)壓縮(可選),應(yīng)用MAC,接著利用IDEA、DES、3DES或其他加密算法進行 數(shù)據(jù)加密,最后增加由內(nèi)容類型、主要版本、次要版本和壓縮長度組成的首部。被接收的數(shù)據(jù)剛好與接收數(shù)據(jù)工作過程相反,依次被解密、驗證、解壓縮和重新裝 配,然后交給更高級用戶。

    SSL修改密文協(xié)議是使用SSL記錄協(xié)議服務(wù)的SSL高層協(xié)議的3個特定協(xié)議之一,也是其中最簡單的一個。協(xié)議由單個消息組成,該消息只包含一個值為1的 單個字節(jié)。該消息的唯一作用就是使未決狀態(tài)拷貝為當前狀態(tài),更新用于當前連接的密碼組。為了保障SSL傳輸過程的安全性,雙方應(yīng)該每隔一段時間改變加密規(guī)范。

    SSL告警協(xié)議是用來為對等實體傳遞SSL的相關(guān)警告。如果在通信過程中某一方發(fā)現(xiàn)任何異常,就需要給對方發(fā)送一條警示消息通告。警示消息有兩種:一種是 Fatal錯誤,如傳遞數(shù)據(jù)過程中,發(fā)現(xiàn)錯誤的MAC,雙方就需要立即中斷會話,同時消除自己緩沖區(qū)相應(yīng)的會話記錄;第二種是Warning消息,這種情 況,通信雙方通常都只是記錄日志,而對通信過程不造成任何影響。SSL握手協(xié)議可以使得服務(wù)器和客戶能夠相互鑒別對方,協(xié)商具體的加密算法和MAC算法以 及保密密鑰,用來保護在SSL記錄中發(fā)送的數(shù)據(jù)。

SSL握手協(xié)議允許通信實體在交換應(yīng)用數(shù)據(jù)之前協(xié)商密鑰的算法、加密密鑰和對客戶端進行認證(可選)的協(xié)議,為下一步記錄協(xié)議要使用的密鑰信息 進行協(xié)商,使客戶端和服務(wù)器建立并保持安全通信的狀態(tài)信息。SSL握手協(xié)議是在任何應(yīng)用程序數(shù)據(jù)傳輸之前使用的。SSL握手協(xié)議包含四個階段:第一個階段 建立安全能力;第二個階段服務(wù)器鑒別和密鑰交換;第三個階段客戶鑒別和密鑰交換;第四個階段完成握手協(xié)議。

4 SSL協(xié)議的實現(xiàn)
基于OpenSSL的程序可以被分為兩個部分:客戶機和服務(wù)器,使用SSL協(xié)議使通信雙方可以相互驗證對方身份的真實性,并且能夠保證數(shù)據(jù)的完整性和機密性。建立SSL通信的過程如圖2所示。
生成證書結(jié)構(gòu)-->socket的過程-->socket和ssl聯(lián)系起來-->ssl握手過程-->實現(xiàn)通信

2  SSL通信過程

SSL通信模型采用標準的C/S結(jié)構(gòu),除了在TCP層上進行傳輸之外,與普通的網(wǎng)絡(luò)通信協(xié)議沒有太大的區(qū)別,基于OpenSSL的程序都要遵循以下幾個步驟:

(1) OpenSSL初始化

在使用OpenSSL之前,必須進行相應(yīng)的協(xié)議初始化工作,這可以通過下面的函數(shù)實現(xiàn):

int SSL_library_int(void);

(2) 選擇會話協(xié)議

在利用OpenSSL開始SSL會話之前,需要為客戶端和服務(wù)器制定本次會話采用的協(xié)議,目前能夠使用的協(xié)議包括TLSv1.0SSLv2、SSLv3SSLv2/v3。

需要注意的是,客戶端和服務(wù)器必須使用相互兼容的協(xié)議,否則SSL會話將無法正常進行。

(3) 創(chuàng)建會話環(huán)境

OpenSSL中創(chuàng)建的SSL會話環(huán)境稱為CTX,使用不同的協(xié)議會話,其環(huán)境也不一樣的。申請SSL會話環(huán)境的OpenSSL函數(shù)是:

SSL_CTX *SSL_CTX_new(SSL_METHOD * method);

SSL會話環(huán)境申請成功后,還要根據(jù)實際的需要設(shè)置CTX的屬性,通常的設(shè)置是指定SSL握手階段證書的驗證方式和加載自己的證書。制定證書驗證方式的函數(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 *Cafile,const char *Capath);

SSL會話加載用戶證書的函數(shù)是:

SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,int type);

SSL會話加載用戶私鑰的函數(shù)是:

SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx,const char* file,int type);

在將證書和私鑰加載到SSL會話環(huán)境之后,就可以調(diào)用下面的函數(shù)來驗證私鑰和證書是否相符:

int SSL_CTX_check_private_key(SSL_CTX *ctx);

(4) 建立SSL套接字

SSL套接字是建立在普通的TCP套接字基礎(chǔ)之上,在建立SSL套接字時可以使用下面的一些函數(shù):

SSL *SSl_new(SSL_CTX *ctx);

//申請一個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 ()替代傳統(tǒng)的函數(shù)accept ()來完成握手過程:

int SSL_accept(SSL *ssl);

握手過程完成之后,通常需要詢問通信雙方的證書信息,以便進行相應(yīng)的驗證,這可以借助于下面的函數(shù)來實現(xiàn):

X509 *SSL_get_peer_certificate(SSL *ssl);

該函數(shù)可以從SSL套接字中提取對方的證書信息,這些信息已經(jīng)被SSL驗證過了。

X509_NAME *X509_get_subject_name(X509 *a);

該函數(shù)得到證書所用者的名字。

(6) 進行數(shù)據(jù)傳輸

SSL握手完成之后,就可以進行安全的數(shù)據(jù)傳輸了,在數(shù)據(jù)傳輸階段,需要使用SSL_read( )SSL_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通信

當客戶端和服務(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 *ctx); 

//釋放SSL會話環(huán)境

4  結(jié)束語

SSL協(xié)議采用數(shù)字證書進行雙端實體認證,用非對稱加密算法進行密鑰協(xié)商,用對稱加密算法將數(shù)據(jù)加密后進行傳輸以保證數(shù)據(jù)的保密性,并且通過計算數(shù)字摘要來驗證數(shù)據(jù)在傳輸過程中是否被篡改和偽造,從而為敏感數(shù)據(jù)在Internet上的傳輸提供了一種安全保障手段。

OpenSSL是一個開放源代碼的SSL協(xié)議的產(chǎn)品實現(xiàn),它采用C語言作為開發(fā)語言,具備了跨系統(tǒng)的性能。調(diào)用OpenSSL  的函數(shù)就可以實現(xiàn)一個SSL加密的安全數(shù)據(jù)傳輸通道,從而保護客戶端和服務(wù)器之間數(shù)據(jù)的安全。

 

參考文獻

[1]  信息系統(tǒng)安全[M].戴宗坤,羅萬伯 北京:電子工業(yè)出版社,2002

[2]  計算機網(wǎng)絡(luò)安全與加密技術(shù)[M]. 李海泉,李健.北京:科學(xué)出版社,2001

[3]  SSLTLS Designing and Building Secure Systems.北京:中國電力出版社,2002

[4]  Network Security with Openss1

PublisherO’Reilly& Associates2002

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
openssl簡易文檔
使用OpenSSL API 建立SSL安全通信的一般流程
使用 OpenSSL API 進行安全編程
全球互聯(lián)網(wǎng)“心臟出血”
深入理解HTTPS原理、過程與實踐
用OpenSSL編寫SSL,TLS程序
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服