張雪峰 張海榆 張新紀(jì) 牛國鋒 周劍
摘要:基于SSL安全協(xié)議機(jī)制設(shè)計(jì)了一種網(wǎng)絡(luò)云盤系統(tǒng),實(shí)現(xiàn)客戶端與服務(wù)器之間文件數(shù)據(jù)傳輸。服務(wù)器端基于多線程的并發(fā)處理機(jī)制,在信息數(shù)據(jù)傳輸過程中,通過分塊組件Webuploader實(shí)現(xiàn)大文件分塊傳輸和校驗(yàn),與多個(gè)客戶端進(jìn)行通信,且支持?jǐn)帱c(diǎn)續(xù)傳功能。通信雙方采用自定義的傳輸協(xié)議格式進(jìn)行文件加密和交互通信,提高了數(shù)據(jù)信息的正確性、有效性以及安全性,且具有傳輸速率高和容錯(cuò)率高等優(yōu)點(diǎn)。
關(guān)鍵詞:SSL協(xié)議;并發(fā)服務(wù)器;斷點(diǎn)續(xù)傳;網(wǎng)絡(luò)云盤
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)29-0059-03
在互聯(lián)網(wǎng)飛速發(fā)展并日漸普及,信息數(shù)據(jù)泛濫的今天,人們對(duì)于數(shù)據(jù)文件的存儲(chǔ)及安全性和便捷性等實(shí)際需求也在不斷提高。云存儲(chǔ)技術(shù)的出現(xiàn)和應(yīng)用將為解決數(shù)據(jù)存儲(chǔ)領(lǐng)域提出了最具前景的存儲(chǔ)方式。近年來各種信息泄露事件層出不窮,各種安全隱患致使個(gè)人或企業(yè)蒙受巨大的利益損害,因此研究和優(yōu)化安全有效的信息數(shù)據(jù)交互環(huán)境和網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)具有現(xiàn)實(shí)意義。本文在Linux系統(tǒng)環(huán)境下,基于SSL網(wǎng)絡(luò)安全協(xié)議提出了一種優(yōu)化的網(wǎng)絡(luò)云盤系統(tǒng),可實(shí)現(xiàn)文件的加密傳輸和大文件分塊斷點(diǎn)續(xù)傳功能,提高了數(shù)據(jù)信息交互傳輸過程中的安全性、可靠性和實(shí)用性。
1 SSL協(xié)議及優(yōu)點(diǎn)
在眾多網(wǎng)絡(luò)安全協(xié)議中,SSL(Secure Sockets Laver安全套接字協(xié)議)協(xié)議是一種國際標(biāo)準(zhǔn)加密及身份認(rèn)證并完整開放的通信協(xié)議,它也是目前網(wǎng)絡(luò)應(yīng)用最為廣泛的安全協(xié)議之一。SSL協(xié)議使用對(duì)稱加密方法實(shí)現(xiàn)通信的保密性,使用PKI對(duì)通信雙方進(jìn)行身份認(rèn)證,使用通信雙方的客戶證書,允許客戶朋艮務(wù)器以一種不能被偷聽的方式相互通信[1-2]。SSL協(xié)議使數(shù)據(jù)在傳輸過程中得到有效的加密保護(hù),能夠加強(qiáng)傳輸層的安全性,主要應(yīng)用于網(wǎng)絡(luò)服務(wù)器、Email系統(tǒng)、客戶端/服務(wù)器系統(tǒng)等。
使用SSL安全協(xié)議優(yōu)點(diǎn):1)可通過授權(quán)的數(shù)字認(rèn)證證書完成通信雙方的身份認(rèn)證,實(shí)現(xiàn)鑒別機(jī)制;2)通過非對(duì)稱加密技術(shù)對(duì)會(huì)話,服務(wù)器與客戶端密鑰達(dá)成一致,使用對(duì)稱加密算法實(shí)現(xiàn)加密機(jī)制[3];3)通信過程中發(fā)送方通過對(duì)信息進(jìn)行分塊、壓縮、增加MAC地址、加密與增加SSL記錄等方法,實(shí)現(xiàn)和保障傳輸信息的完整性機(jī)制[4]。
2 系統(tǒng)架構(gòu)
2.1系統(tǒng)總體設(shè)計(jì)
網(wǎng)絡(luò)云盤文件傳輸系統(tǒng)設(shè)計(jì)包括三個(gè)模塊:云服務(wù)器端、個(gè)人客戶端、自定義應(yīng)用層傳輸協(xié)議。系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)如圖1所示。
2.2 服務(wù)器端設(shè)計(jì)
服務(wù)器端的功能主要有服務(wù)器配置、服務(wù)器狀態(tài)(線程管理)、服務(wù)器并發(fā)處理、SSL加密傳輸、文件傳輸隊(duì)列查看、傳輸記錄處理等。
首先啟動(dòng)服務(wù)端程序,通過賬號(hào)和密碼驗(yàn)證登錄服務(wù)器,系統(tǒng)對(duì)服務(wù)器端用戶連接數(shù)、Socket地址、運(yùn)行程序線程池分別進(jìn)行初始化,完成后創(chuàng)建任務(wù)子線程,主線程通過監(jiān)聽功能并采用1/0復(fù)用方式,循環(huán)等待接收客戶端的連接請(qǐng)求,喚醒線程池的空閑線程進(jìn)行文件傳輸處理。當(dāng)服務(wù)器開起運(yùn)行,系統(tǒng)管理員對(duì)服務(wù)端進(jìn)行配置和修改,以及分配最大用戶連接數(shù)等。服務(wù)器提供文件傳輸處理服務(wù),并發(fā)處理多個(gè)客戶端的連接請(qǐng)求。
2.3 客戶端設(shè)計(jì)
個(gè)人客戶端主要設(shè)計(jì)功能包括客戶端配置及文件加密、傳輸進(jìn)度顯示、大文件分塊處理、斷點(diǎn)續(xù)傳、任務(wù)管理等。
首先客戶端程序通過遠(yuǎn)程對(duì)服務(wù)器客戶端底層一些配置和存儲(chǔ)地址等進(jìn)行初始化,再連接服務(wù)器通過SSL加密信息和規(guī)則進(jìn)行身份驗(yàn)證,驗(yàn)證通過后進(jìn)人文件操作功能菜單,根據(jù)顯示服務(wù)器/客戶端提供文件目錄等,用戶選擇進(jìn)行相應(yīng)的操作,實(shí)現(xiàn)文件多線程上傳和下載、任務(wù)管理等功能。
2.4 自定義文件傳輸
系統(tǒng)中文件傳輸客戶端與文件傳輸服務(wù)器通過自定義數(shù)據(jù)包格式來進(jìn)行通信。在服務(wù)器處理客戶端的連接和文件傳輸請(qǐng)求時(shí),根據(jù)接收到的文件信息創(chuàng)建Socket地址,并根據(jù)接收信息進(jìn)行端口監(jiān)聽,將Socket套接字綁定到相應(yīng)接收端IP地址,然后通過調(diào)用OpenSSL庫中對(duì)應(yīng)接口函數(shù)功能來實(shí)現(xiàn)認(rèn)證和加密,當(dāng)接收到客戶端數(shù)據(jù)包,對(duì)數(shù)據(jù)包進(jìn)行解包和分析,依據(jù)數(shù)據(jù)包類型和ACK發(fā)送相應(yīng)的回復(fù)數(shù)據(jù)包給客戶端[5]。服務(wù)器系統(tǒng)記錄定義好的文件傳輸過程操作,并保存在相應(yīng)的記錄文件中。
3 功能設(shè)計(jì)
3.1 文件斷點(diǎn)續(xù)傳功能
斷點(diǎn)續(xù)傳是指當(dāng)文件比較大的時(shí)候,可能由于網(wǎng)絡(luò)故障或者計(jì)算機(jī)系統(tǒng)軟件問題而導(dǎo)致文件傳輸失敗,很多文件的上傳或下載不是一次性就能完成的,因此在下一次連接服務(wù)器的時(shí)候不是重新上傳或下載整個(gè)文件,而是能夠從斷點(diǎn)開始繼續(xù)上傳或下載該文件[6]。大文件或數(shù)據(jù)信息在網(wǎng)絡(luò)傳輸過程中,可通過指針對(duì)文件傳輸位置進(jìn)行記錄,或采用將大文件分割為若干個(gè)大小不等的數(shù)據(jù)塊,利用線程分塊進(jìn)行傳輸,通過記錄每個(gè)線程傳輸?shù)奈恢脕順?biāo)記傳輸?shù)臄?shù)據(jù)。系統(tǒng)在整個(gè)文件傳輸工作過程中會(huì)創(chuàng)建臨時(shí)文件,記錄傳輸?shù)木€程數(shù)、每個(gè)被分割的數(shù)據(jù)塊大小、每個(gè)線程已傳輸?shù)臄?shù)據(jù)信息以及線程對(duì)應(yīng)的數(shù)據(jù)塊偏移量、傳輸文件指針的偏移量等信息。如果傳輸過程中文件未傳完發(fā)生中斷,復(fù)傳時(shí)只需讀取系統(tǒng)創(chuàng)建的臨時(shí)文件以獲取文件的斷點(diǎn)信息后繼續(xù)傳輸該文件[7]。
3.2 并發(fā)服務(wù)器設(shè)計(jì)
文件傳輸過程中服務(wù)器系統(tǒng)能支持的線程數(shù)量有限,服務(wù)器需要處理多用戶連接,當(dāng)出現(xiàn)大量并發(fā)用戶同時(shí)發(fā)起文件傳輸請(qǐng)求時(shí),采用服務(wù)器并發(fā)處理來解決實(shí)現(xiàn)。本系統(tǒng)在對(duì)并發(fā)處理服務(wù)器設(shè)計(jì)時(shí),采用基于1/0多路復(fù)用中的epoll機(jī)制結(jié)合優(yōu)化的線程池任務(wù)隊(duì)列技術(shù),實(shí)現(xiàn)服務(wù)器并發(fā)處理多用戶同時(shí)連接請(qǐng)求的問題,不但極大地降低系統(tǒng)負(fù)荷提高并發(fā)服務(wù)處理能力[8],而且也大大節(jié)約了服務(wù)器成本。
3.3 SSL加密傳輸流程設(shè)計(jì)
系統(tǒng)采用安全套接層SSL協(xié)議保證網(wǎng)絡(luò)通信過程中敏感數(shù)據(jù)和重要信息的安全性[9]。通過對(duì)該協(xié)議研究,設(shè)計(jì)服務(wù)器端SSL加密流程如下:
1)系統(tǒng)調(diào)用SSL_Library_init0函數(shù),載人優(yōu)化的SSL加密算法程序?qū)SL庫進(jìn)行初始化;
2)系統(tǒng)調(diào)用SSL_CTX_new0函數(shù),創(chuàng)建本次SSL會(huì)話連接協(xié)議和會(huì)話環(huán)境;
3)系統(tǒng)載人相匹配的用戶數(shù)字證書和通信驗(yàn)證私鑰,對(duì)用戶信息進(jìn)行校驗(yàn);
4)連接握手,將配對(duì)的套接字Socket文件描述符加入SSL中,建立SSL新連接;
5)由建立的新SSL連接接管新建立連接的套接字Socket文件描述符上數(shù)據(jù)的發(fā)送和接收;
6)當(dāng)所有數(shù)據(jù)傳輸完成后關(guān)閉建立的SSL連接,關(guān)閉Sock-et,釋放系統(tǒng)資源。
客戶端的SSL加密過程與服務(wù)器端加密流程比較類似,但相比要簡單一些,因?yàn)榭蛻舳硕际仟?dú)立的,不用進(jìn)行并發(fā)處理和端口監(jiān)聽。
4 文件安全傳輸實(shí)現(xiàn)
4.1服務(wù)端與客戶端實(shí)現(xiàn)
由于Linux操作系統(tǒng)的開放、免費(fèi)、可拓展和可裁剪等良好性能,在服務(wù)器和嵌入式操作系統(tǒng)中得到了越來越廣泛的應(yīng)用。本系統(tǒng)服務(wù)器端與客戶端的網(wǎng)絡(luò)通信采用Linux環(huán)境下的網(wǎng)絡(luò)編程接口實(shí)現(xiàn)。服務(wù)器端開啟后,系統(tǒng)通過調(diào)用socket函數(shù)創(chuàng)建socket連接,創(chuàng)建TCP字節(jié)流套接口并設(shè)置參數(shù)。為了避免文件描述符在等待1/0事件時(shí)阻塞影響系統(tǒng)效率,將文件描述符設(shè)置為非阻塞狀態(tài),系統(tǒng)調(diào)用fcntl函數(shù)設(shè)置后執(zhí)行時(shí),檢測到?jīng)]有1/0事件準(zhǔn)備好文件描述符就會(huì)直接返回進(jìn)行下一步處理,在1/0事件執(zhí)行完成后,系統(tǒng)調(diào)用的函數(shù)返回通知主循環(huán)??蛻舳税l(fā)送請(qǐng)求后,服務(wù)器端接受連接,客戶端隨即調(diào)用OpenSSL庫提供的接口函數(shù)進(jìn)行SSL協(xié)議的數(shù)據(jù)信息加密傳輸。服務(wù)器端通過1/0事件和系統(tǒng)主循環(huán)異步執(zhí)行,提高了CPU利用率和系統(tǒng)性能。
4.2 服務(wù)器并發(fā)處理實(shí)現(xiàn)
服務(wù)器在處理1/0事件的同時(shí),也需要處理信號(hào)事件。由于信號(hào)事件發(fā)生的時(shí)間是不確定的,所以需要進(jìn)行異步處理,執(zhí)行信號(hào)處理函數(shù),以防信號(hào)被屏蔽。本網(wǎng)絡(luò)云盤系統(tǒng)在處理信號(hào)事件時(shí),主程序?qū)⑿盘?hào)的處理邏輯放到主循環(huán)中,執(zhí)行過程中信號(hào)處理函數(shù)首先被觸發(fā),主循環(huán)接收到發(fā)生信號(hào)后立即進(jìn)行處理執(zhí)行。系統(tǒng)通過Unix管道將信號(hào)處理函數(shù)已觸發(fā)的信號(hào)傳遞給主循環(huán),循環(huán)中使用1/0復(fù)用系統(tǒng)調(diào)用來監(jiān)聽管道上的事件發(fā)生。這種服務(wù)器并發(fā)處理方案統(tǒng)一信號(hào)事件源,使得信號(hào)與其他1/0事件享有同等處理機(jī)會(huì),也便于程序處理實(shí)現(xiàn)和維護(hù)。
4.3 SSL加密傳輸實(shí)現(xiàn)
本系統(tǒng)采用OpenSSL庫來實(shí)現(xiàn)SSL協(xié)議傳輸過程加密。客戶端與服務(wù)器端在通信過程中,OpenSSL完成C語言編寫開發(fā)的自定義SSL庫文件,在傳輸層TCP協(xié)議的基礎(chǔ)上,利用創(chuàng)建的密鑰生成一個(gè)合法、可信的數(shù)字證書實(shí)現(xiàn)SSL加密傳輸,加密傳輸過程流程圖如圖2所示。
5 本網(wǎng)絡(luò)云盤性能優(yōu)勢(shì)
本網(wǎng)絡(luò)云盤系統(tǒng)采用多線程上傳技術(shù)和自定義文件加密傳輸協(xié)議在網(wǎng)頁端實(shí)現(xiàn),在實(shí)際使用過程中,其性能相對(duì)比一般網(wǎng)盤系統(tǒng)具有以下優(yōu)勢(shì):
(1)容錯(cuò)率高。普通網(wǎng)盤系統(tǒng)嚴(yán)重依賴于客戶端C/S模式,而對(duì)于網(wǎng)頁端B/S模式的支持有限,其文件上傳和下載的大小都有一定的限制,其傳輸原理較為傳統(tǒng),在傳輸過程中若出現(xiàn)斷網(wǎng)、斷電等意外情況時(shí),傳輸即失敗,容錯(cuò)率較低。本網(wǎng)絡(luò)云盤系統(tǒng)斷點(diǎn)續(xù)傳的支持使得文件傳輸?shù)娜蒎e(cuò)率大大提升,其使用體驗(yàn)感極佳;
(2)支持?jǐn)帱c(diǎn)續(xù)傳。本系統(tǒng)基于大文件的分塊傳輸,其傳輸原理是將大文件分塊處理,傳輸過程中允許意外情況的發(fā)生,先前傳輸?shù)姆謮K同樣能夠及時(shí)有效地保存,意外發(fā)生后重新選擇文件從斷點(diǎn)塊處繼續(xù)傳輸即可,而且能夠?qū)崿F(xiàn)同一文件的異地?cái)帱c(diǎn)續(xù)傳。自定義的傳輸協(xié)議和分塊后的加密處理,保證了文件傳輸?shù)陌踩?
(3)支持大文件,傳輸速率高。本網(wǎng)絡(luò)云盤對(duì)大文件的傳輸處理理論上不受文件大小的限制,而一般主流網(wǎng)盤不支持10G及以上文件傳輸。通過服務(wù)器帶寬限制控制帶寬統(tǒng)一為20Mbps,使用B/S端進(jìn)行文件傳輸,經(jīng)過性能對(duì)比(如圖3所示),在大文件的傳輸處理中,主流網(wǎng)盤1不支持10G及以上文件傳輸,主流網(wǎng)盤2不支持2G及以上文件傳輸,而本系統(tǒng)網(wǎng)盤可快速實(shí)現(xiàn)大文件傳輸,其傳輸速率具有較強(qiáng)的優(yōu)越性。
6 結(jié)語
相對(duì)于傳統(tǒng)的存儲(chǔ)方式,本文基于SSL協(xié)議對(duì)文件傳輸系統(tǒng)進(jìn)行研究和優(yōu)化,通過在服務(wù)器與客戶端之間打通一條基于SSL協(xié)議的安全鏈路通道,采用Linux中1/0復(fù)用模型中的epoll機(jī)制和線程池編程技術(shù),解決服務(wù)端對(duì)多個(gè)用戶同時(shí)進(jìn)行連接請(qǐng)求的并發(fā)處理,在滿足實(shí)際需求的基礎(chǔ)上設(shè)計(jì)實(shí)現(xiàn)便捷、安全的網(wǎng)絡(luò)云盤系統(tǒng)。該系統(tǒng)通過SSL安全協(xié)議進(jìn)行傳輸過程加密,實(shí)現(xiàn)大文件分塊和斷點(diǎn)續(xù)傳功能,做到了在傳輸意外情況下重新續(xù)傳時(shí),容錯(cuò)率高,對(duì)于大文件傳輸和存儲(chǔ)使用具有重要的實(shí)用價(jià)值和廣闊前景。
參考文獻(xiàn):
[1]肖雄志,基于OpenSSL的安全文件傳輸系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2015.
[2]楊興康.基于SSL的安全文件傳輸系統(tǒng)在linux環(huán)境下的研究與實(shí)現(xiàn)[J].信息通信,2015,28(10):117-118.
[3]宋強(qiáng),齊貴寶,曹沖,等.基于嵌入式Linux下安全文件傳輸系統(tǒng)的設(shè)計(jì)[J].吉林大學(xué)學(xué)報(bào)(信息科學(xué)版),2012,30(4):397-402.
[4]向春枝,李小明.基于SSL的數(shù)據(jù)庫安全代理設(shè)計(jì)[J].煤炭技術(shù),2011,30(7):135-137.
[5]張寶燕.基于SSL連接在線支付方案的設(shè)計(jì)[J].山西電子技術(shù),2015(6):62-63,83.
[6]張文錦,汪金虎,藍(lán)芳萍,等.云存儲(chǔ)關(guān)鍵技術(shù)研究[J].常熟理工學(xué)院學(xué)報(bào),2018,32(2):94-98.
[7]馮貴蘭.一種保護(hù)用戶數(shù)據(jù)私密性的云存儲(chǔ)方法[J].軟件導(dǎo)刊,2015,14(12):174-176.
[8]潘樂,胡鑫,余偉,等.一種高并發(fā)服務(wù)處理的優(yōu)化方法[J].信息技術(shù)與信息化,2020(3):22-24.
[9]李長春.基于SSL協(xié)議的VPN系統(tǒng)實(shí)現(xiàn)及安全性研究[J].江漢大學(xué)學(xué)報(bào)(自然科學(xué)版),2016,44(1):81-88.
【通聯(lián)編輯:代影】
作者簡介:牛國鋒,通訊作者,實(shí)驗(yàn)師,碩士,主要研究方向:無線傳感網(wǎng)技術(shù)、嵌入式系統(tǒng)應(yīng)用。