APP下载

基于ARM的安全文件传输系统设计

2010-10-26唐浩波方兵侯克斌周建斌成都理工大学610059

中国科技信息 2010年4期
关键词:服务端加密算法客服

唐浩波 方兵 侯克斌 周建斌 成都理工大学 610059

基于ARM的安全文件传输系统设计

唐浩波 方兵 侯克斌 周建斌 成都理工大学 610059

本文介绍一种基于sbc2410开发板的安全文件传输系统设计方法。首先对基于ARM9处理器的sbc2410开发板和openssl安全传输原理进行了简要介绍,然后重点说明了软件设计部分的服务端和客服端的设计原理。服务端文件在传输过程中通过openssl协议传输加密,实现了多用户数据操作。客服端主要提供了用户命令以及QT图形界面的操作数据。

ARM;Linux;网络安全传输;openssl

1、引言

随着网络的飞速发展,网络文件存储使人们的生活和工作变得更加方便、快捷。但随之而来的数据安全的问题越来越受到人们的重视。本文基于Samsung公司的ARM9处理器S3c2410,设计了一种基于ARM处理器的安全文件传输系统。该系统不但能为用户提供方便的文件管理、上传、下载功能,更在文件传输方面加入openSSL加密传输协议,使文件安全得到保障。

2、sbc2410简介

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。

3、OPENSSL简介

openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。

加密技术简介:加密,即将明文数据转换为密文数据的过程,以起到对明文保密的作用。加密算法: 数据加密过程所采用的一种运算算法,用于将明文转换为密文。密钥: 加密算法通过与密钥进行某种运算,将明文数据进行加密,生成加密数据。解密时,加密算法通过密钥, 将加密数据再转换为明文数据。

现今的加密技术,加密算法是公开的,即所有人都知道加密所采用的运算方式。但只有使用密钥才能进行对密文的解密。所以,密钥的保护,是数据安全的核心。

图3 结核框图

功能如下:1.在网络中传输的数据包,同时保护这些数据不被修改和伪造;2.网络对话中双方的身份SSL协议包含两个子协议,一个是包协议,一个是握手协议。包协议是说明SSL的数据包应该如何封装的。握手协议则是说明通信双方如何协商共同决定使用什么算法以及算法使用的key。很明显包协议位于握手协议更下一层。SSL握手过程说就是:通信双方通过不对称加密算法来协商好一个对称加密算法以及使用的key,然后用这个算法加密以后所有的数据完成应用层协议的数据交换。

4、系统软件设计

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图形界面部分主要包含有:登录界面,注册界面,用户管理界面。通过调用后台的数据通信部分,实现了客服端与远程服务端的信息交互。

5、结论

本文设计了一种基于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级硕士生,主要研究方向智能仪器。

猜你喜欢

服务端加密算法客服
语音推销
基于整数矩阵乘法的图像加密算法
基于混沌系统和DNA编码的量子图像加密算法
新时期《移动Web服务端开发》课程教学改革的研究
敬业的客服
混沌参数调制下RSA数据加密算法研究
基于小波变换和混沌映射的图像加密算法
基于广东“一张网”对内客服模式的探讨
销售能手
摸清黑客套路防范木马侵入