何 玲
(天津農(nóng)學(xué)院計(jì)算機(jī)科學(xué)與信息工程系,天津 300384)
高校數(shù)字圖書館中SSL VPN系統(tǒng)的安全策略研究
何 玲
(天津農(nóng)學(xué)院計(jì)算機(jī)科學(xué)與信息工程系,天津 300384)
對高校數(shù)字圖書館遠(yuǎn)程訪問的安全需求進(jìn)行分析,提出系統(tǒng)構(gòu)建時(shí)應(yīng)用的安全策略,并在此基礎(chǔ)上,利用OpenVPN和二次開發(fā)程序具體實(shí)現(xiàn)適合于高校圖書館這一具體應(yīng)用領(lǐng)域的SSL VPN系統(tǒng).
數(shù)字圖書館;OpenVPN;身份認(rèn)證;加密算法
目前,大學(xué)圖書館提供的數(shù)字資源在教學(xué)和科研過程中發(fā)揮著重要的作用.為了解決資源訪問受IP地址限制的問題,很多高校圖書館都提供數(shù)字資源的遠(yuǎn)程訪問功能,使教師在校外也能訪問到受限資源[1].在實(shí)現(xiàn)遠(yuǎn)程訪問功能時(shí),為保護(hù)著作人的權(quán)益及數(shù)據(jù)庫提供商的利益,需要從以下方面保證數(shù)據(jù)的安全性.第一,為確保只有被授權(quán)的用戶才能訪問數(shù)字圖書館資源,需提供身份驗(yàn)證機(jī)制;第二,為保護(hù)數(shù)據(jù)在傳輸過程中的機(jī)密性,需采用加密解密機(jī)制;第三,為防止數(shù)據(jù)在傳輸過程中被損壞或被惡意篡改,需采用完整性驗(yàn)證機(jī)制.SSL協(xié)議[2]可以為實(shí)現(xiàn)這些安全需求提供保障,因此,通過構(gòu)建 SSL VPN系統(tǒng)可以解決高校數(shù)字資源遠(yuǎn)程訪問的問題.
不同應(yīng)用環(huán)境下,VPN系統(tǒng)對安全等級、速度快慢、部署成本高低和是否易用具有不同的側(cè)重.應(yīng)用于大學(xué)數(shù)字圖書館的SSL VPN系統(tǒng)在滿足安全需求的同時(shí),還要考慮一些具體特點(diǎn):第一,客戶端身份驗(yàn)證方式應(yīng)盡量簡單;第二,需要防止合法用戶有意或無意的將自己的身份證明轉(zhuǎn)告給他人,造成資源的濫用,增加整個(gè)系統(tǒng)的不安全因素;第三,由于用戶數(shù)量有限,為了降低成本,高校圖書館多以軟件方式構(gòu)建VPN系統(tǒng),因此,安全算法的復(fù)雜程度直接影響資源的訪問速度.所以,在應(yīng)用安全策略時(shí),應(yīng)該在安全和速度之間取得平衡,采用適合的安全策略,構(gòu)建高校數(shù)字圖書館的SSL VPN系統(tǒng).
現(xiàn)有的SSL VPN軟件產(chǎn)品已經(jīng)比較成熟,可以用來構(gòu)建安全的SSL VPN系統(tǒng),但為了滿足特定環(huán)境的需求,軟件應(yīng)支持二次開發(fā)和多種配置方法.OpenVPN是一種功能齊全、安全可靠的SSL VPN軟件,該軟件主要借助OpenSSL庫實(shí)現(xiàn)[3],具備開源、支持二次開發(fā)、可配置性強(qiáng)和支持多種操作系統(tǒng)等其他商業(yè)SSL VPN軟件所不具備的優(yōu)點(diǎn).本研究在W indow s操作系統(tǒng)下,對OpenVPN進(jìn)行二次開發(fā),構(gòu)建一個(gè)能滿足高校數(shù)字圖書館遠(yuǎn)程訪問安全需求的SSL VPN系統(tǒng).
服務(wù)器與客戶端通信之前,雙方要相互認(rèn)證身份.為保證通信安全,SSL協(xié)議要求必須以 PKI證書的方式認(rèn)證服務(wù)器端身份,而客戶端的身份認(rèn)證方式可有多種選擇.若采用證書方式認(rèn)證客戶端身份,生成和分發(fā)證書的過程加大了管理人員的工作量.同時(shí),服務(wù)器對客戶端進(jìn)行證書認(rèn)證的過程,也會增加服務(wù)器開銷,影響訪問速度.如果采用用戶名/密碼的方式進(jìn)行客戶端身份認(rèn)證,用戶申請“用戶名”和“密碼”的工作以及管理員審核資格的工作就可以借助Web應(yīng)用程序自動(dòng)進(jìn)行,從而節(jié)省人力.在SSL協(xié)議支持下,服務(wù)器完成證書認(rèn)證之后,即在客戶端和服務(wù)器之間建立了一個(gè)安全的SSL連接.客戶端的“用戶名”和“密碼”是在安全連接的基礎(chǔ)上,以密文方式傳送給服務(wù)器的,可以有效地避免被竊聽.因此,本系統(tǒng)采用證書方式認(rèn)證服務(wù)器端身份,以用戶名/密碼方式認(rèn)證客戶端身份.
為認(rèn)證服務(wù)器端身份,需要?jiǎng)?chuàng)建認(rèn)證中心(CA)和服務(wù)器端證書.OpenSSL庫提供了一系列證書管理命令,OpenVPN將這些命令寫成批命令文件,方便用戶生成證書文件,具體實(shí)施方法為:
(1)執(zhí)行批命令build-ca.bat,生成認(rèn)證中心文件ca.crt和ca.key,必須由此文件簽發(fā)和管理服務(wù)器證書,文件ca.crt需要同時(shí)拷貝給客戶端;
(2)執(zhí)行批命令 build-dh.bat,生成文件dh1024.pem,用于密鑰交換;
(3)執(zhí)行批命令 build-key-server.bat server,生成文件server.crt,server.csr和server.key,這些是由CA簽發(fā)的服務(wù)器端證書和私鑰.
在OpenVPN的服務(wù)器配置文件中加入語句“ca ca.crt”“,cert server.crt”“,key server.key”和“dh dh1024.pem”;在客戶端配置文件中加入語句“ca ca.crt”,并使用這些文件進(jìn)行身份認(rèn)證和密鑰交換.
OpenVPN提供接口,允許編寫程序?qū)崿F(xiàn)用戶名/密碼等客戶端身份認(rèn)證方式.M ySql數(shù)據(jù)庫系統(tǒng)與C語言結(jié)合能夠?qū)崿F(xiàn)高效、簡便的數(shù)據(jù)庫操作.
用M ySql設(shè)計(jì)數(shù)據(jù)庫 vpnusers,建立二維表Login(userid ,pass,active,times).其中 “,userid”是登錄賬號 “,pass”是登錄密碼 “,active”是用戶激活狀態(tài)(0鎖定/1激活)“,times”是登錄次數(shù).
在OpenV PN中設(shè)置環(huán)境變量 username和password.編寫C語言程序check.c,該程序從環(huán)境變量中獲取 username和password的值,并到表Login中查詢賬號、密碼和激活狀態(tài),從而確定用戶能否登錄.在OpenVPN服務(wù)器配置中增加語句“auth-user-pass-verify check.exe via-env”,則運(yùn)行OpenVPN客戶端,即觸發(fā)check.exe執(zhí)行.
為方便用戶且減輕管理員工作,用asp.net設(shè)計(jì)Web應(yīng)用程序,借助圖書館現(xiàn)有的借閱證管理數(shù)據(jù)庫和vpnusers數(shù)據(jù)庫,實(shí)現(xiàn)網(wǎng)上申請開通VPN、修改密碼和自動(dòng)審核功能.
為了防止合法用戶將自己的用戶名和密碼大范圍轉(zhuǎn)告他人或用戶密碼被破解,系統(tǒng)需要在數(shù)據(jù)庫中記錄每個(gè)用戶當(dāng)天的登錄次數(shù),如果超出了管理員設(shè)定的閾值,系統(tǒng)將自動(dòng)關(guān)閉該用戶的使用權(quán).
服務(wù)器日志文件openvpn.log中記錄了連接用戶名、連接時(shí)間和斷開時(shí)間等信息.編寫C語言程序police.c,從日志文件中讀取信息,計(jì)算每個(gè)用戶24 h內(nèi)的連接次數(shù),并更新表Login的times字段,程序每天定時(shí)自動(dòng)運(yùn)行一次.當(dāng)times字段值超過預(yù)設(shè)閾值時(shí),“active”字段值由1變?yōu)?,表示用戶處于鎖定狀態(tài),暫停VPN使用權(quán),直至人工干預(yù)后才能繼續(xù)使用.
此外,OpenVPN配置語句“dup licate-cn”表示允許相同用戶同時(shí)登錄,刪除該項(xiàng)配置,可以及時(shí)發(fā)現(xiàn)并有效防止用戶名/密碼被他人使用.
為防止數(shù)據(jù)內(nèi)容被非法竊聽,SSL協(xié)議要求通信雙方在握手階段協(xié)商好加密算法并交換密鑰,此后的數(shù)據(jù)通信則以此密鑰加密[4].加解密算法分為對稱和非對稱兩種.對稱算法的加解密速度較非對稱算法高很多,所以當(dāng)對系統(tǒng)安全級別要求不是很高時(shí),VPN系統(tǒng)采用對稱加密算法.blow fish-CBC是一種對稱密鑰算法[5].
blow fish算法是一種64 bit的可變密鑰長度的分組密碼算法,具有如下特點(diǎn):
(1)快速:在32 bit微處理器上加密數(shù)據(jù)的速率是每個(gè)字節(jié)用18個(gè)時(shí)鐘周期;
(2)緊湊:可以在少于5 k的內(nèi)存上運(yùn)行;
(3)可變的安全性:密鑰長度可變,最長可達(dá)448 bit,使得同時(shí)兼顧更高速度和更高安全性成為可能.
blow fish-CBC將blow fish算法和密碼分組鏈接(CBC)模式結(jié)合起來,即加密前先對明文數(shù)據(jù)塊做CBC變換,然后再進(jìn)行加密.
OpenVPN支持多種加密算法,修改服務(wù)器和客戶端的配置文件可以設(shè)定使用何種加密算法.在服務(wù)器與客戶端的配置文件中增加語句“cipher BFCBC”即表示使用blow fish-CBC算法加密數(shù)據(jù).
SSL VPN系統(tǒng)在解決遠(yuǎn)程訪問的問題時(shí)優(yōu)勢明顯,根據(jù)具體應(yīng)用場合,采用適合的安全策略,能夠有效提升系統(tǒng)安全性能,節(jié)約部署成本,提高訪問速度.OpenVPN作為出色的開源SSL VPN軟件,為實(shí)現(xiàn)具體的安全策略提供了可能.
[1] 王穎,熊軍潔,王媛.SSL VPN-攀登巴別塔的云梯[J].圖書館工作與研究,2009,7:46-47.
[2] Chou W.Inside SSL:the secure sockets layer p rotocol[J].IT Professional,2002,4(4):47-52.
[3] Charlie H.OpenVPN and the SSL VPN revolution[EB/OL].[2009-03-05].http://www.openvpn.net/index.php/opensource/documentation.htm l.
[4] 金家琴.基于SSL VPN技術(shù)實(shí)現(xiàn)公共圖書館電子資源遠(yuǎn)程訪問[J].圖書館雜志,2009,28(3):62-63.
[5] 鐘黔川,朱清新.Blow fish密碼系統(tǒng)分析[J].計(jì)算機(jī)應(yīng)用,2007,27(12):40-41.
Study on security policy of SSL VPN system in college digital library
H E L ing
(Department of Computer Science and Information Technology,Tianjin Agriculture College,Tianjin 300384,China)
Security requirement of college digital library remote access is analyzed in this paper.And security algorithm is discussed which is fit of digital library.A SSL VPN system is realized making use of OpenVPN and self p rogramming in the end.
digital library;Open VPN;indentity authentication;encrypt arithmetic
TP309.1
A
1671-1114(2010)01-0027-02
2009-08-03
天津農(nóng)學(xué)院科學(xué)研究發(fā)展基金資助項(xiàng)目(2007005)
何 玲(1979—),女,講師,主要從事計(jì)算機(jī)網(wǎng)絡(luò)和編程方面的研究.E-mail:heling@tjau.edu.cn
(責(zé)任編校 紀(jì)翠榮)