唐浩波 方兵 侯克斌 周建斌 成都理工大學 610059
基于ARM的安全文件傳輸系統設計
唐浩波 方兵 侯克斌 周建斌 成都理工大學 610059
本文介紹一種基于sbc2410開發板的安全文件傳輸系統設計方法。首先對基于ARM9處理器的sbc2410開發板和openssl安全傳輸原理進行了簡要介紹,然后重點說明了軟件設計部分的服務端和客服端的設計原理。服務端文件在傳輸過程中通過openssl協議傳輸加密,實現了多用戶數據操作。客服端主要提供了用戶命令以及QT圖形界面的操作數據。
ARM;Linux;網絡安全傳輸;openssl
隨著網絡的飛速發展,網絡文件存儲使人們的生活和工作變得更加方便、快捷。但隨之而來的數據安全的問題越來越受到人們的重視。本文基于Samsung公司的ARM9處理器S3c2410,設計了一種基于ARM處理器的安全文件傳輸系統。該系統不但能為用戶提供方便的文件管理、上傳、下載功能,更在文件傳輸方面加入openSSL加密傳輸協議,使文件安全得到保障。
Sbc2410開發板是一款基于ARM9、結構緊湊的嵌入式平臺。它使用三星公司的成熟的ARM9處理器s3c2410,s3c2410是基于ARM920T核的嵌入式通用處理器,使得主頻為一般為200MHZ,最高可達到266M H Z,采用A R M V 4T(Harvard)結構,五級流水處理以及分離的Cache結構,平均功耗為0.7mW/ MHz。SBC2410使用了兩片外接的32M bytes 總共64M bytes 的SDRAM 芯片,同時具備兩種Flash,一種是Nor Flash,大小為2Mbyte;另一種是Nand Flash,大小為64Mbyte。同時采用了CS8900網卡芯片,它可以自適應10/100M 網絡。sbc2410內部帶有全性能的 MMU,支持Linux, Windows CE等操作系統。支持TFT LCD/觸摸屏,音頻,USB,網卡,SD卡, IDE, AD等,它適用于設計移動手持設備類產品,具有高性能、低功耗、接口豐富和體積小能優良特性。
結核框圖如圖1。
openssl是一個功能豐富且自包含的開源安全工具箱。它提供的主要功能有:SSL協議實現(包括SSLv2、SSLv3和TLSv1)、大量軟算法(對稱/非對稱/摘要)、大數運算、非對稱算法密鑰生成、ASN.1編解碼庫、證書請求(PKCS10)編解碼、數字證書編解碼、CRL編解碼、OCSP協議、數字證書驗證、PKCS7標準實現和PKCS12個人數字證書格式實現等功能。
加密技術簡介:加密,即將明文數據轉換為密文數據的過程,以起到對明文保密的作用。加密算法: 數據加密過程所采用的一種運算算法,用于將明文轉換為密文。密鑰: 加密算法通過與密鑰進行某種運算,將明文數據進行加密,生成加密數據。解密時,加密算法通過密鑰, 將加密數據再轉換為明文數據。
現今的加密技術,加密算法是公開的,即所有人都知道加密所采用的運算方式。但只有使用密鑰才能進行對密文的解密。所以,密鑰的保護,是數據安全的核心。

圖3 結核框圖
功能如下:1.在網絡中傳輸的數據包,同時保護這些數據不被修改和偽造;2.網絡對話中雙方的身份SSL協議包含兩個子協議,一個是包協議,一個是握手協議。包協議是說明SSL的數據包應該如何封裝的。握手協議則是說明通信雙方如何協商共同決定使用什么算法以及算法使用的key。很明顯包協議位于握手協議更下一層。SSL握手過程說就是:通信雙方通過不對稱加密算法來協商好一個對稱加密算法以及使用的key,然后用這個算法加密以后所有的數據完成應用層協議的數據交換。
4.1 服務端的簡要設計流程
服務端設計流程圖如圖2。
服務端的設計流程圖形如圖2所示,服務端分別有服務端初始化、命令解析,數據管理,數據傳輸3部分組成。命令解析主要用于解析用戶所要執行的操作,數據管理主要用于對用戶數據的上傳下載刪除等功能的實現。用戶管理主要是管理用戶的登錄注冊信息。下面分別介紹圖2中所提及到的部分功能和實現:
4.1.1 服務端配置以及初始化:
SSL初始化說明:在使用OPENSSL之前,需要對其進行初始化,這個過程通過SSL_library_init()函數來完成,它主要加載OpenSSL將會用到的算法, 同樣需要通過SSL_load_error_strings()來加載錯誤字符串,否則,就不能夠將OpenSSL錯誤映射為字符串。通過使用S S L_C T X_n e w (SSLv23_server_method())為當前服務器創建S S L上下文C T X。同時使用SSL_CTX_use_certificate_file(ctx,“cacert. pem”,SSL_FILETYPE_PEM)載入用戶的數字證書,此證書用來發送給客服端口。最后使用SSL_CTX_use_PrivateKey_file()載入用戶私鑰。

圖2 服務端設計流程圖
4.1.2 套接字初始化:
應用層通過傳輸層進行數據通信時,TCP和UDP會遇到同時為多個應用程序進程提供并發服務的問題。多個TCP連接或多個應用程序進程可能需要通過同一個TCP協議端口傳輸數據。為了區別不同的應用程序進程和連接,許多計算機操作系統為應用程序與TCP/IP協議交互提供了稱為套接字(Socket)的接口。Socket可以看成在兩個程序進行通訊連接中的一個端點。
相關函數:int socket(int domain, int type, int protocol)。 一旦通過socket調用返回一個socket描述符,就將該socket與你本機上的一個端口相關聯,即配置套接字基本信息。同時使用int bind(int sockfd,struct sockaddr *my_addr, int addrlen)將服務端的信息和套接字綁定。在服務器端程序中,當socket與某一端口捆綁以后,就需要監聽該端口,以便對到達的服務請求加以處理。使用函數int listen(int sockfd, int backlog)。
4.1.3 循環等待服務器的連接
基于上面SSL初始化時候生成的SSL上下文CTX,用SSL_new(SSL_CTX* ctx)函數實現以個SSL結構實例。和當前accept函數返回的客服端套接字,建立SSL結構與TCP套接字聯系,使SSL結構對套接字中的TCp數據進行SSL封裝(SSL_set_fd(SSL *ssl,int fd),同時接收新的SSL連接(int SSL_accept(SSL *ssl)).同時開啟一個新的線程為新連接的客服端執行不同的數據命令。
1)命令解析:對于用戶的不同操作命令信息,進行解析,主要有解析以下命令的功能:登錄,注冊,上傳,下載,刪除,重命名,退出等命令的解析。同時也包含了傳輸過程中的出錯信息的處理功能。
2)數據管理:主要用于查詢數據庫文件。用戶登錄信息管理數據庫文件,記錄了所有用戶的賬號和密碼,主要有登錄、注冊2大功能,用于判定用戶登錄時的密碼校驗。文件信息管理數據庫,主要數據成員包括如下:文件擁有者,文件名,文件大小,修改時間等元數據。在本程序中使用了int sqlite3_open(const char*,sqlite3**),用于打開或者創建特定的數據庫文件。文件數據管理主要有以下幾個功能:查詢,插入,搜索,重命名,刪除等功能。
4.1.4 數據傳輸:主要實現了用戶與服務器之間的信息和數據文件的安全傳輸,出錯信息的傳輸。主要是使用了openssl協議進行安全文件的傳輸。這里先說一下SSL接受和發送數據的實現方式:和普通的read()/write()調用一樣,用下面的函數完成數據的SSL發送和接收,函數輸入數據是明文,SSL自動將數據封裝進SSL中:
讀/接收:int SSL_read(SSL *ssl, void *buf, int num);
寫/發送:int SSL_write(SSL *ssl, const void *buf, int num);
當服務端接收到客服端連接時,等待客服端口發送的第一個命令數據包。這里通過ssl_read接收數據包信息,解析當前執行的命令,做出相應的操作。
4.1.5 循環讀取客服端命令:
當執行完當前的命令后,將等待客服端發來的下一個命令,并處理。這里涉及前面提及到的數據庫文件中上傳、下載、刪除等命令,都需要使用當前file管理數據庫文件,查詢,刪除,插入等功能實現當前操作。當用戶選擇退出,結束當前線程,重新設置剩余客服端連接數量。
4.2 客服端簡要設計概述:
客服端流程圖如圖3。
如圖3所示:客服端主要有2部分:后臺數據通信部分和前臺QT圖形部分:
數據通信部分主要包含以下2部分:
4.2.1 SSL的初始化說明:通過前面服務端對SSL的簡單介紹,這里與前面略微不同的就是生成SSL上下文ctx所使用的方法,通過使用 SSL_CTX_new函數創建保存SSL信息的結構體,這里使用的方法函數是SSLv23_client_method,還設置另一個SSL類型的指針保持SSL的連接結構。

客服端流程圖 圖2
4.2.2 socket套接字的初始化:需要設置socket的服務端IP地址和客服端的端口。對于客服端套接字就不需要對其綁定和監聽,利用SSl庫文件對其傳輸的數據實現封裝。同時也采用了ssl_read()和ssl_write()兩大函數實現了文件在傳輸和接受過程中的安全性。
4.2.3 QT圖形界面部分主要包含有:登錄界面,注冊界面,用戶管理界面。通過調用后臺的數據通信部分,實現了客服端與遠程服務端的信息交互。
本文設計了一種基于ARM9處理器S3C2410的安全文件傳輸系統。在介紹了本系統所使用的ARM9處理器S3C2410和SSL協議的加密方法基礎上,依次說明了系統的硬件結構設計,軟件服務端、客戶端設計,并在sbc2410和PC機上進行文件安全傳輸實驗,效果很好。該安全文件傳輸系統研究的實現,有利于提高文件傳輸過程中用戶資料的安全性和保密性。
[1](美)史蒂文斯編著.Unix環境高級編程(第2版)(M). 人民郵電出版社.2006-05
[2](美)史蒂文斯編著.TCP/IP詳解(M).機械工業出版社.2002-06
[3]令曉靜 等.SSL安全傳輸協議在網絡通信中的應用研究[D]. 西安電子科技大學. 2006
[4] 贠睿 等.SSL協議及其安全性[D]. 電腦知識與技術.2009
[5]李曉峰 等. SSL協議及其應用[J]. 信息安全與通信保密. 2007
唐浩波 男,成都理工大學核技術與自動化工程學院2007級碩士生,主要研究方向智能儀器。