亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種Linux環(huán)境下文件安全傳輸技術(shù)的研究與實現(xiàn)

        2015-05-29 12:09:05祁磊令曉明
        電腦知識與技術(shù) 2015年10期
        關(guān)鍵詞:服務(wù)器端線程客戶端

        祁磊+令曉明

        摘要:在當(dāng)今移動互聯(lián)網(wǎng)環(huán)境下,為了保證數(shù)據(jù)文件在網(wǎng)絡(luò)中傳輸?shù)陌踩?,加密傳輸就顯得尤為重要。具體實現(xiàn)了一種在嵌入式Linux系統(tǒng)環(huán)境下加入SSL協(xié)議,并對將要傳輸?shù)臄?shù)據(jù)文件利用一定的加密算法進(jìn)行加密,能夠較好的解決數(shù)據(jù)文件在網(wǎng)絡(luò)環(huán)境下傳輸?shù)陌踩詥栴}。同時在服務(wù)器端利用線程池技術(shù)解決了多用戶多進(jìn)程的問題,避免了服務(wù)器端不斷創(chuàng)建和銷毀線程所帶來的資源浪費和時間開銷。

        關(guān)鍵字:Linux;文件安全傳輸;SSL;線程池

        中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)10-0043-04

        SSL協(xié)議是在繁多的網(wǎng)絡(luò)協(xié)議中應(yīng)用比較廣泛,它可以確保TCP/IP上所有協(xié)議收發(fā)雙方端到端的信息安全傳輸,并且運用了對稱加密技術(shù)對數(shù)據(jù)文件進(jìn)行加密,而運用非對稱加密技術(shù)對用戶身份進(jìn)行驗證以及交換密鑰。SSL協(xié)議不但可以彌補TCP/IP本身的一些缺陷,同時還可以很好的確??蛻?服務(wù)器雙方通信時數(shù)據(jù)的保密性、完整性,并且能 夠保證雙方的身份認(rèn)證。在一個系統(tǒng)或是一個應(yīng)用程序中,往往會有多個傳輸任務(wù)需要執(zhí)行,每個任務(wù)都對應(yīng)處理器一個線程,在執(zhí)行多個任務(wù)時勢必要不停的創(chuàng)建線程銷毀線程,這無疑增加了處理時間,并且對傳輸?shù)陌踩詭硪欢ǖ碾[患。因此,在系統(tǒng)中引入了線程池技術(shù),就可以解決該隱患。線程池是在執(zhí)行任務(wù)之前就創(chuàng)建好一些線程,并使這些線程處于等待狀態(tài),當(dāng)有新任務(wù)到來時,應(yīng)用程序會激活線程池中的某一線程,當(dāng)任務(wù)執(zhí)行完畢后會重新變?yōu)榈却隣顟B(tài)放回線程池,等待下一次新任務(wù)的到來。

        1 文件安全傳輸?shù)捏w系結(jié)構(gòu)模型

        文件傳輸是由硬軟件兩部分實現(xiàn)的,硬件是以嵌入式平臺來支撐,軟件部分是以Linux網(wǎng)絡(luò)編程加上SSL協(xié)議[1]、線程池技術(shù)以及文件安全傳輸?shù)姆?wù)器/客戶端程序。主要是實現(xiàn)不同機器上服務(wù)器與客戶端之間的文件互傳,服務(wù)器監(jiān)聽客戶機的請求,并且做出相應(yīng)的響應(yīng)。該系統(tǒng)主要實現(xiàn)的具體要求如下:①服務(wù)器和客戶端都支持用戶賬號和密碼的驗證;②客戶端可以瀏覽本地和服務(wù)器端的文件列表;③服務(wù)器端可以實現(xiàn)多用戶同時連接,必須是多線程的;④服務(wù)器端的系統(tǒng)日志可以記錄文件操作的事件日志;⑤在上傳和下載文件之前要先檢查磁盤的大小,以確保上傳和下載可以正常執(zhí)行。系統(tǒng)結(jié)構(gòu)模型如圖1所示:

        圖1 系統(tǒng)結(jié)構(gòu)模型

        2 文件加密

        2.1 服務(wù)器端的文件SSL加密

        文件安全傳輸?shù)闹饕δ苡蒘SL協(xié)議加密來實現(xiàn),SSL協(xié)議完成的主要流程是:先對SSL協(xié)議相應(yīng)庫的初始化,然后載入相應(yīng)的加密算法模塊。應(yīng)用程序再回調(diào)加密算法模塊即可對數(shù)據(jù)進(jìn)行加密,然后載入所有SSL錯誤信息,該錯誤信息對應(yīng)于在處理過程中可能會產(chǎn)生的所有錯誤。然后創(chuàng)建本次會話連接中所用到的所有協(xié)議,以便用于通訊雙方進(jìn)行通訊的連接。接下來就是申請SSL回話的環(huán)境CTX,載入數(shù)據(jù)證書,載入用戶私鑰,并檢查用戶私鑰是否正確。創(chuàng)建套接字并開啟socket監(jiān)聽,等待客戶端的連接請求。再基于CTX產(chǎn)生一個新的SSL,并將連接用戶的socket套接口加入SSL,建立SSL連接完成SSL握手,接收數(shù)據(jù)并做相關(guān)處理。最后關(guān)閉SSL并釋放SSL、關(guān)閉socket、釋放CTX等操作。服務(wù)器端的SSL加密過程如圖2所示:

        圖2 服務(wù)器端的SSL加密過程

        2.2 客戶端的SSL加密

        客戶端文件的SSL加密過程與服務(wù)器端基本一致,主要區(qū)別是客戶端不用處理并發(fā)任務(wù),不用對端口進(jìn)行監(jiān)聽等操作。具體的SSL加密流程如下:先對相應(yīng)的SSL庫進(jìn)行初始化,再載入所有的SSL算法,用于在對數(shù)據(jù)處理過程中對數(shù)據(jù)的加密。然后載入所有SSL錯誤信息,以應(yīng)付在處理過程中可能出現(xiàn)的各種錯誤。然后在創(chuàng)建本次會話連接所使用的協(xié)議,用于通訊雙發(fā)進(jìn)行通訊連接。接下來是申請會話環(huán)境CTX,創(chuàng)建socket用于TCP通訊,建立SSL連接完成SSL握手,對數(shù)據(jù)進(jìn)行接收并做相關(guān)的處理。最后關(guān)閉連接以及釋放相關(guān)的資源等操作。

        2.3 SSL協(xié)議

        SSL是一種協(xié)議套件,它是由握手協(xié)議、記錄協(xié)議、更改密碼規(guī)范協(xié)議以及警告協(xié)議,四部分協(xié)議組成。SSL協(xié)議在TCP/IP協(xié)議站中的位置以及與這四部分的關(guān)系如圖3所示:

        圖3 SSL協(xié)議關(guān)系示意圖

        應(yīng)用SSL協(xié)議建立的通道是透明的,服務(wù)器端與客戶端之間的數(shù)據(jù)經(jīng)過加密,不改變傳輸數(shù)據(jù)的內(nèi)容。這樣的透明性是基于TCP/IP的協(xié)議,然后稍加修改就可以運行在SSL之上,就可以打造一個安全通道[2]。SSL是位于應(yīng)用層和傳輸層之間的,該協(xié)議一般是由握手協(xié)議和記錄協(xié)議兩部分組成,前者一般用于通信雙方之間會話時的密碼參數(shù)協(xié)商,記錄協(xié)議一般用于數(shù)據(jù)傳輸前的身份驗證、算法協(xié)商、交換密鑰。一個基本的SSL會話應(yīng)當(dāng)包括握手、下發(fā)證書、密鑰交換和算法協(xié)商四個階段[5]。如圖4所示:

        圖4 SSL會話基本步驟

        3 加密模塊的代碼實現(xiàn)

        3.1 傳輸協(xié)議的設(shè)置

        客戶端與服務(wù)器端進(jìn)行命令交互的時候,通訊雙方需要遵循一定的標(biāo)準(zhǔn),只有這樣雙方才能夠準(zhǔn)確的知道來自對方的報文意義。

        本系統(tǒng)的傳輸協(xié)議結(jié)構(gòu)如下[3]:

        在雙方通訊的過程中,當(dāng)要發(fā)送數(shù)據(jù)時,要調(diào)用打包函數(shù)將要發(fā)送的數(shù)據(jù)封裝成協(xié)議包,在要接收數(shù)據(jù)的時候,要調(diào)用解包函數(shù)解析出有效的數(shù)據(jù)。這兩個函數(shù)分別如下:

        ⑴ 打包函數(shù)

        struct FilePackage pack (char tCmd, char* tBuf, char* tFilename, int tFilesize, int tAck,int count,char *uname)

        ⑵ 解包函數(shù)

        struct FilePackage unpack (SSL * ,struct FilePackage )

        客戶端能否連接上服務(wù)器,還取決于服務(wù)器上連接的客戶端數(shù)量,因此,還要對服務(wù)器的最大連接數(shù)加以設(shè)置。調(diào)用函數(shù)InitMaxClientNum()來對客戶端最大連接數(shù)進(jìn)行初始化。

        3.2 安全鏈接的建立

        在安全鏈接建立之前,我們需要提前加載可以信任的證書庫。在此過程中需要進(jìn)程握手協(xié)商,服務(wù)器首先要向客戶機端發(fā)送一個證書,客戶機端根據(jù)自己提前加載的可信任的證書庫來驗證服務(wù)器端的證書是否有效。并且在這個過程中通訊信雙發(fā)之間需要傳遞密碼參數(shù)從而建立安全的連接。

        1) 設(shè)置安全鏈接

        首先通過調(diào)用SSL_CTX_new()函數(shù)來創(chuàng)建一個類型為SSL_CTX型的指針ctx,并用該指針來保存一些與SSL相關(guān)的參數(shù)。

        SSL_library_init(); //初始化SSL庫

        OpenSSL_add_all_algorithms(); // 將所有的SSL算法載入

        SSL_load_error_strings(); // 載入錯誤消息

        ctx = SSL_CTX_new(); // 創(chuàng)建SSL_CTX型的指針

        2)加載可信任的證書庫

        調(diào)用函數(shù)SSL_CTX_use_certificate_file()來對用戶的數(shù)字證書進(jìn)行加載,數(shù)字證書加載完成之后,還需要調(diào)用函數(shù)SSL_CTX_use_PrivateKey_file()來對用戶私鑰進(jìn)行加載。

        SSL_CTX_use_certificate_file(ctx,temp=strcat(pwd,"/cacert.pem"),SSL_FILETYPE_PEM); //載入數(shù)字證書

        SSL_CTX_use_PrivateKey_file(),SSL_FILETYPE_PEM); //載入用戶私鑰

        3)創(chuàng)建連接

        調(diào)用函數(shù)SSL_new()來創(chuàng)建一個新的ssl,然后需要將用戶創(chuàng)建的socket對象鏈接到ssl,接著需要調(diào)用SSL_accept()函數(shù)等待客戶端鏈接請求,若是沒有客戶端請求,程序會一直阻塞在這里,一直等到有客戶端的請求到來。

        ssl = SSL_new(ctx); //創(chuàng)建一個新的ssl

        SSL_set_fd(ssl, new_fd);

        SSL_accept(ssl); //建立ssl鏈接

        3.3 客戶端與服務(wù)器端進(jìn)行通信

        在客戶端常見完socket套接字之后,調(diào)用OpenSSL API中的SSL_set_fd()函數(shù)來設(shè)置socket文件描述符來作為ssl的I/O設(shè)備,然后在調(diào)用SSL_connect()函數(shù)來請求連接服務(wù)器。通過調(diào)用兩個函數(shù),SSL_read()和SSL_write()來完成對SSL對象的數(shù)據(jù)包接收與發(fā)送操作。

        SSL_set_fd (ssl, sockclient); //設(shè)置socket文件描述符

        SSL_connect (ssl); //建立ssl鏈接

        SSL_read (ssl,data,sizeof(struct FilePackage); //發(fā)送數(shù)據(jù)

        SSL_write (ssl,&data,sizeof(struct FilePackage); //接收數(shù)據(jù)

        4 線程池的設(shè)計

        一般情況下服務(wù)器端所要承擔(dān)的任務(wù)遠(yuǎn)比想象中要復(fù)雜的多,就單單拿數(shù)據(jù)文件傳輸來說,它可能要同時處理多個客戶端的請求,服務(wù)器端要不斷的創(chuàng)建和銷毀客戶端的請求進(jìn)程。服務(wù)器端處理多用戶關(guān)系如圖5所示:

        相對于進(jìn)程而言,創(chuàng)建和銷毀線程已經(jīng)是很輕量級的任務(wù)了。但是如果服務(wù)器系統(tǒng)來頻繁的執(zhí)行線程的創(chuàng)建、銷毀,對于服務(wù)器來說這也是一筆很大的資源浪費。那么線程池技術(shù)的使用就可以很大程度上減少這樣的資源消耗。

        調(diào)用函數(shù)CreateThreadPool()來創(chuàng)建線程池,線程池會把一些已經(jīng)創(chuàng)建好的線程集中在一起,這些線程都處于等待狀態(tài)。當(dāng)有新任務(wù)到達(dá)時,應(yīng)用程序就會去激活線程池中的某個線程。當(dāng)該線程執(zhí)行完成后,再去調(diào)用MoveToIdle()函數(shù),該線程就又恢復(fù)等待狀態(tài),重新放回到回線程池中,等待下一個新任務(wù)的到達(dá)。當(dāng)線程池中的每一個線程都處于忙碌狀態(tài)的時候,會將其他的新任務(wù)放入等待隊列中,直到線程池中有線程空閑下來,然后去執(zhí)行隊列中的新任務(wù)。線程池的工作過程如圖6所示:

        為了更進(jìn)一步具體的說明,利用了線程池以后可以大大的提高資源的利用率,節(jié)約系統(tǒng)資源。運行了一下線程池代碼thread.c加以解釋。有運行結(jié)果可以看出,線程池中有3個線程0xb6e2cb70、0xb782db70、0xb642bb70被10任務(wù)重復(fù)利用。運行結(jié)果如圖7所示:

        5 結(jié)果測試

        以Linux虛擬機作為服務(wù)器端,輸入管理員的ID和密碼,就可以成功登陸并進(jìn)入服務(wù)器端的控制界面(如圖8),并按照相應(yīng)的提示完成對服務(wù)器端的操作。

        輸入正確的用戶名和密碼即可登錄客戶端(如圖9),客戶端可以顯示本地目錄文件,并且可以通過命令,對文件進(jìn)行上傳、下載已經(jīng)退出客戶端操作。

        6 總結(jié)與分析

        本文實現(xiàn)了在Linux環(huán)境下基于SSL協(xié)議的數(shù)據(jù)文件安全傳輸系統(tǒng)的基本框架,并且在服務(wù)器端利于了線程池技術(shù),減小了服務(wù)器不停的創(chuàng)建和撤銷應(yīng)用線程所帶來的資源浪費和時間開銷[3]。但是,由于個人能力欠缺以及時間關(guān)系,該系統(tǒng)還存在很多的問題和不足。例如:所設(shè)計的Linux系統(tǒng)環(huán)境,只是在Windows下的虛擬機模擬實現(xiàn),并沒有實現(xiàn)遠(yuǎn)程網(wǎng)絡(luò)上的傳輸,以及在集群服務(wù)器下的多線程處理能力的驗證等,這些問題都有待進(jìn)一步的研究和驗證。

        參考文獻(xiàn):

        [1] 令曉靜. SSL安全傳輸協(xié)議在網(wǎng)絡(luò)通信中的應(yīng)用研究[D].西安:西安電子科技大學(xué),2006.

        [2] 孟彥, 侯整風(fēng). 基于SSL/TLS的安全文件傳輸系統(tǒng)[J]. 計算機技術(shù)與發(fā)展, 2006,16(5):118-120

        [3] 汪成林. Linux環(huán)境下基于SSL的安全文件傳輸系統(tǒng)的研究[D]. 杭州: 浙江工業(yè)大學(xué), 2012

        [4] 支超. 基于SSL協(xié)議的加密文件傳輸系統(tǒng)設(shè)計[D]. 呼和浩特:內(nèi)蒙古大學(xué),2013.4

        [5] 劉明波, 候孝民. 網(wǎng)絡(luò)化數(shù)據(jù)采集與處理系統(tǒng)設(shè)計[M].北京:電子工業(yè)出版社,2008.

        [6] 徐立松, 郭曉金. 嵌入式Linux中安全文件傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J]. 數(shù)字通信, 2009(12):78-82

        [7] 曹江華. Linux服務(wù)器安全策略詳解[M].北京:電子工業(yè)出版社, 2009.

        [8] 張興. 多線程編程技術(shù)原理[M].北京:電子工業(yè)出版社,2008.

        [9] 王瑛. 基于SSL加密協(xié)議的網(wǎng)絡(luò)終端安全研究[J].長春理工大學(xué)校報,2010(9):45-46.

        [10] Mark Stamp. Information Security: Principles and Practice [M]. Wiley, 2011.

        猜你喜歡
        服務(wù)器端線程客戶端
        縣級臺在突發(fā)事件報道中如何應(yīng)用手機客戶端
        傳媒評論(2018年4期)2018-06-27 08:20:24
        孵化垂直頻道:新聞客戶端新策略
        傳媒評論(2018年4期)2018-06-27 08:20:16
        基于Vanconnect的智能家居瘦客戶端的設(shè)計與實現(xiàn)
        電子測試(2018年10期)2018-06-26 05:53:34
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        淺談linux多線程協(xié)作
        在Windows中安裝OpenVPN
        客戶端空間數(shù)據(jù)緩存策略
        Linux線程實現(xiàn)技術(shù)研究
        網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
        么移動中間件線程池并發(fā)機制優(yōu)化改進(jìn)
        无码人妻精品一区二区三区在线| 日本刺激视频一区二区| 精品厕所偷拍一区二区视频| 午夜福利啪啪片| 人妻无码中文专区久久五月婷| 玩弄人妻奶水无码AV在线| 久久精品av在线视频| 午夜精品久久久久久久99老熟妇| 99精品免费久久久久久久久日本| 调教在线播放黄| 亚洲无av码一区二区三区| 亚洲色一区二区三区四区| 国产va在线观看免费| 亚洲AV无码永久在线观看| 免费在线av一区二区| 国产乱人伦偷精品视频免观看| 麻豆果冻传媒在线观看| 亚洲综合色区无码专区| 亚洲av日韩av天堂久久不卡| 日韩乱码人妻无码系列中文字幕| 免费看泡妞视频app| 国产激情无码Av毛片久久| 国产在线视频网友自拍| 精品人妻av区乱码| 人人做人人妻人人精| 亚洲va中文字幕欧美不卡| 华人在线视频精品在线| 欧美丰满熟妇xxxx性| 香蕉网站在线| 美腿丝袜网址亚洲av| 九九影院理论片私人影院| 失禁大喷潮在线播放| 国产精品制服一区二区| 久久国产精品婷婷激情| 黄网站欧美内射| 久久免费国产精品一区二区| 亚洲精品中文字幕一二三| 日韩少妇内射免费播放18禁裸乳 | 一级免费毛片| 免费av网址一区二区| 亚洲狠狠婷婷综合久久久久|