[摘要] SSL協(xié)議是網(wǎng)景公司(Netscape)推出的在網(wǎng)絡(luò)傳輸層之上提供的一種基于瀏覽器和WEB服務(wù)器之間的安全連接技術(shù)。對(duì)于不同的系統(tǒng)架構(gòu),SSL協(xié)議實(shí)現(xiàn)身份認(rèn)證和訪問控制的原理不同。本文將分別就B/S和C/S的系統(tǒng)架構(gòu),來闡述SSL協(xié)議身份認(rèn)證和訪問控制的實(shí)現(xiàn)原理。
[關(guān)鍵詞] SSL協(xié)議 身份認(rèn)證 訪問控制 實(shí)現(xiàn)原理
一、概述
SSL(Secure socket Layer)即安全套接層協(xié)議,指使用公鑰和私鑰技術(shù)組合的安全網(wǎng)絡(luò)通訊協(xié)議。SSL協(xié)議是網(wǎng)景公司(Netscape)推出的在網(wǎng)絡(luò)傳輸層之上提供的一種用基于瀏覽器和WEB服務(wù)器之間的安全連接技術(shù)。
SSL協(xié)議采用數(shù)字證書及數(shù)字簽名進(jìn)行雙端實(shí)體認(rèn)證,用非對(duì)稱加密算法進(jìn)行密鑰協(xié)商,用對(duì)稱加密算法將數(shù)據(jù)加密后進(jìn)行傳輸以保證數(shù)據(jù)的保密性,并且通過計(jì)算數(shù)字摘要來驗(yàn)證數(shù)據(jù)在傳輸過程中是否被篡改和偽造,從而為敏感數(shù)據(jù)在Internet上的傳輸提供了一種安全保障手段。
身份認(rèn)證是指計(jì)算機(jī)及網(wǎng)絡(luò)系統(tǒng)確認(rèn)操作者身份的過程。訪問控制是指控制訪問服務(wù)器的用戶以及訪問者所訪問的內(nèi)容,限制訪問者對(duì)重要資源的訪問。基于SSL協(xié)議的身份認(rèn)證和訪問控制的實(shí)現(xiàn)原理將根據(jù)系統(tǒng)的架構(gòu)不同而有所不同。對(duì)于B/S架構(gòu),將采用利用Web服務(wù)器對(duì)SSL技術(shù)的支持,可以實(shí)現(xiàn)系統(tǒng)的身份認(rèn)證和訪問控制安全需求。而對(duì)于C/S架構(gòu),將采用簽名及簽名驗(yàn)證的方式,來實(shí)現(xiàn)系統(tǒng)的身份認(rèn)證和訪問控制需求。
二、基于B/S架構(gòu)的SSL身份認(rèn)證和訪問控制的實(shí)現(xiàn)原理
基于B/S架構(gòu)的SSL身份認(rèn)證和訪問控制是利用數(shù)字證書來實(shí)現(xiàn)的。目前,SSL技術(shù)已被大部份的Web Server及Browser廣泛支持和使用。采用SSL技術(shù),在用戶使用瀏覽器訪問Web服務(wù)器時(shí),會(huì)在客戶端和服務(wù)器之間建立安全的SSL通道。在SSL會(huì)話產(chǎn)生時(shí):首先,服務(wù)器會(huì)傳送它的服務(wù)器證書,客戶端會(huì)自動(dòng)的分析服務(wù)器證書,來驗(yàn)證服務(wù)器的身份。其次,服務(wù)器會(huì)要求用戶出示客戶端證書(即用戶證書),服務(wù)器完成客戶端證書的驗(yàn)證,來對(duì)用戶進(jìn)行身份認(rèn)證。對(duì)客戶端證書的驗(yàn)證包括驗(yàn)證客戶端證書是否由服務(wù)器信任的證書頒發(fā)機(jī)構(gòu)頒發(fā)、客戶端證書是否在有效期內(nèi)、客戶端證書是否有效(即是否被篡改等)和客戶端證書是否被吊銷等。驗(yàn)證通過后,服務(wù)器會(huì)解析客戶端證書,獲取用戶信息,并根據(jù)用戶信息查詢?cè)L問控制列表來決定是否授權(quán)訪問。所有的過程都會(huì)在幾秒鐘內(nèi)自動(dòng)完成,對(duì)用戶是透明的。
如下圖所示,除了系統(tǒng)中已有的客戶端瀏覽器、Web服務(wù)器外,要實(shí)現(xiàn)基于SSL的身份認(rèn)證和訪問控制安全原理,還需要增加下列模塊:
基于SSL的身份認(rèn)證和訪問控制原理圖
1.Web服務(wù)器證書
要利用SSL技術(shù),在Web服務(wù)器上必需安裝一個(gè)Web服務(wù)器證書,用來表明服務(wù)器的身份,并對(duì)Web服務(wù)器的安全性進(jìn)行設(shè)置。服務(wù)器證書由CA認(rèn)證中心頒發(fā),在服務(wù)器證書內(nèi)表示了服務(wù)器的域名等證明服務(wù)器身份的信息、Web服務(wù)器端的公鑰以及CA對(duì)證書相關(guān)域內(nèi)容的數(shù)字簽名。服務(wù)器證書都有一個(gè)有效期,Web服務(wù)器需要使用SSL功能的前提是必須擁有服務(wù)器證書,利用服務(wù)器證書來協(xié)商、建立安全SSL安全通道。
這樣,用戶使用瀏覽器訪問Web服務(wù)器,發(fā)出SSL握手時(shí),Web服務(wù)器將配置的服務(wù)器證書返回給客戶端,通過驗(yàn)證服務(wù)器證書來驗(yàn)證他所訪問的網(wǎng)站是否真實(shí)可靠。
2.客戶端證書
客戶端證書由CA系統(tǒng)頒發(fā)給系統(tǒng)用戶,在用戶證書內(nèi)標(biāo)識(shí)了用戶的身份信息、用戶的公鑰以及CA對(duì)證書相關(guān)域內(nèi)容的數(shù)字簽名,用戶證書都有一個(gè)有效期。在建立SSL通道過程中,可以對(duì)服務(wù)器的SSL功能配置成必須要求用戶證書,服務(wù)器驗(yàn)證用戶證書來驗(yàn)證用戶的真實(shí)身份。
3.證書解析模塊
證書解析模塊以動(dòng)態(tài)庫的方式提供給各種Web服務(wù)器,它可以解析證書中包含的信息,用于提取證書中的用戶信息,根據(jù)獲得的用戶信息,查詢?cè)L問控制列表(ACL),獲取用戶的訪問權(quán)限,實(shí)現(xiàn)系統(tǒng)的訪問控制。
4.訪問控制列表(ACL)
訪問控制列表是根據(jù)應(yīng)用系統(tǒng)不同用戶建設(shè)的訪問授權(quán)列表,保存在數(shù)據(jù)庫中,在用戶使用數(shù)字證書訪問應(yīng)用系統(tǒng)時(shí),應(yīng)用系統(tǒng)根據(jù)從證書中解析得到的用戶信息,查詢?cè)L問控制列表,獲取用戶的訪問權(quán)限,實(shí)現(xiàn)對(duì)用戶的訪問控制。
三、基于C/S架構(gòu)的SSL身份認(rèn)證和訪問控制的實(shí)現(xiàn)原理
基于C/S架構(gòu)的SSL身份認(rèn)證和訪問控制是利用數(shù)字簽名技術(shù)實(shí)現(xiàn)的,數(shù)字簽名技術(shù)的實(shí)現(xiàn)是指使用數(shù)字證書的私鑰,對(duì)被簽名數(shù)據(jù)的摘要值進(jìn)行加密,加密的結(jié)果就是數(shù)字簽名。在進(jìn)行簽名驗(yàn)證時(shí),是用數(shù)字證書(即公鑰)來進(jìn)行驗(yàn)證,用公鑰解密數(shù)據(jù),得到發(fā)送過來的摘要值,然后用相同的摘要算法對(duì)被簽名數(shù)據(jù)做摘要運(yùn)算,得到另一個(gè)摘要值,將兩個(gè)摘要值進(jìn)行比較,如果相等,則數(shù)字簽名驗(yàn)證通過,否則驗(yàn)證無效。數(shù)字簽名技術(shù)的實(shí)現(xiàn)依賴于下列兩個(gè)事實(shí):一是每一個(gè)信息的摘要值是惟一的,找不到兩個(gè)摘要值相同的不同信息;二是證書的私鑰只有數(shù)字證書的擁有者才擁有,其他人得不到擁有者的私鑰。這樣,通過簽名及簽名驗(yàn)證,可以確定數(shù)據(jù)的確是數(shù)字證書的擁有者發(fā)送的,發(fā)送者不能進(jìn)行抵賴。數(shù)據(jù)在發(fā)送的過程中,沒有被別人篡改過的,是完整的。
因此,利用這種技術(shù)可以實(shí)現(xiàn)對(duì)用戶身份的認(rèn)證,一旦對(duì)簽名數(shù)據(jù)進(jìn)行驗(yàn)證,就可以知道簽名者是誰,根據(jù)簽名者的證書可以得到簽名者的信息,查詢?cè)L問控制列表,就可以知道簽名者的訪問權(quán)限,從而實(shí)現(xiàn)身份認(rèn)證和訪問控制。
對(duì)于C/S結(jié)構(gòu),采用基于簽名及簽名驗(yàn)證的身份認(rèn)證和訪問控制的方式是非常合適的,要實(shí)現(xiàn)這種設(shè)計(jì),如下圖所示,除了系統(tǒng)原有的專業(yè)客戶端,服務(wù)器之外,需要增加上面描述的客戶端證書、服務(wù)端證書解析模塊和訪問控制列表之外,還需要增加下列模塊:
基于簽名及簽名驗(yàn)證的身份認(rèn)證和訪問控制原理
1.客戶端數(shù)據(jù)簽名模塊
客戶端數(shù)據(jù)簽名模塊以控件的方式提供給專業(yè)客戶端,對(duì)專業(yè)客戶端軟件進(jìn)行修改,調(diào)用數(shù)據(jù)簽名模塊,實(shí)現(xiàn)數(shù)字簽名功能。在用戶使用專業(yè)客戶端進(jìn)行系統(tǒng)訪問時(shí),專業(yè)客戶端調(diào)用數(shù)據(jù)簽名模塊,使用用戶選擇的客戶端證書的私鑰對(duì)客戶端發(fā)送的數(shù)據(jù)進(jìn)行數(shù)字簽名,提供服務(wù)器端認(rèn)證用戶身份時(shí)使用。
2.服務(wù)端簽名驗(yàn)證模塊
服務(wù)端簽名驗(yàn)證模塊以插件或動(dòng)態(tài)庫方式提供,安裝在服務(wù)器端,實(shí)現(xiàn)對(duì)客戶端數(shù)據(jù)簽名的驗(yàn)證,對(duì)客戶端數(shù)據(jù)簽名證書的有效性驗(yàn)證。通過驗(yàn)證簽名數(shù)據(jù),可以判斷客戶端簽名者的確擁有簽名證書,通過對(duì)簽名證書的驗(yàn)證,可以判斷客戶端證書持有者的身份。
本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。