APP下载

基于SSL安全协议的网络云盘系统

2020-12-01张雪峰张海榆张新纪牛国锋周剑

电脑知识与技术 2020年29期

张雪峰 张海榆 张新纪 牛国锋 周剑

摘要:基于SSL安全协议机制设计了一种网络云盘系统,实现客户端与服务器之间文件数据传输。服务器端基于多线程的并发处理机制,在信息数据传输过程中,通过分块组件Webuploader实现大文件分块传输和校验,与多个客户端进行通信,且支持断点续传功能。通信双方采用自定义的传输协议格式进行文件加密和交互通信,提高了数据信息的正确性、有效性以及安全性,且具有傳输速率高和容错率高等优点。

关键词:SSL协议;并发服务器;断点续传;网络云盘

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2020)29-0059-03

在互联网飞速发展并日渐普及,信息数据泛滥的今天,人们对于数据文件的存储及安全性和便捷性等实际需求也在不断提高。云存储技术的出现和应用将为解决数据存储领域提出了最具前景的存储方式。近年来各种信息泄露事件层出不穷,各种安全隐患致使个人或企业蒙受巨大的利益损害,因此研究和优化安全有效的信息数据交互环境和网络存储系统具有现实意义。本文在Linux系统环境下,基于SSL网络安全协议提出了一种优化的网络云盘系统,可实现文件的加密传输和大文件分块断点续传功能,提高了数据信息交互传输过程中的安全性、可靠性和实用性。

1 SSL协议及优点

在众多网络安全协议中,SSL(Secure Sockets Laver安全套接字协议)协议是一种国际标准加密及身份认证并完整开放的通信协议,它也是目前网络应用最为广泛的安全协议之一。SSL协议使用对称加密方法实现通信的保密性,使用PKI对通信双方进行身份认证,使用通信双方的客户证书,允许客户朋艮务器以一种不能被偷听的方式相互通信[1-2]。SSL协议使数据在传输过程中得到有效的加密保护,能够加强传输层的安全性,主要应用于网络服务器、Email系统、客户端/服务器系统等。

使用SSL安全协议优点:1)可通过授权的数字认证证书完成通信双方的身份认证,实现鉴别机制;2)通过非对称加密技术对会话,服务器与客户端密钥达成一致,使用对称加密算法实现加密机制[3];3)通信过程中发送方通过对信息进行分块、压缩、增加MAC地址、加密与增加SSL记录等方法,实现和保障传输信息的完整性机制[4]。

2 系统架构

2.1系统总体设计

网络云盘文件传输系统设计包括三个模块:云服务器端、个人客户端、自定义应用层传输协议。系统总体结构设计如图1所示。

2.2 服务器端设计

服务器端的功能主要有服务器配置、服务器状态(线程管理)、服务器并发处理、SSL加密传输、文件传输队列查看、传输记录处理等。

首先启动服务端程序,通过账号和密码验证登录服务器,系统对服务器端用户连接数、Socket地址、运行程序线程池分别进行初始化,完成后创建任务子线程,主线程通过监听功能并采用1/0复用方式,循环等待接收客户端的连接请求,唤醒线程池的空闲线程进行文件传输处理。当服务器开起运行,系统管理员对服务端进行配置和修改,以及分配最大用户连接数等。服务器提供文件传输处理服务,并发处理多个客户端的连接请求。

2.3 客户端设计

个人客户端主要设计功能包括客户端配置及文件加密、传输进度显示、大文件分块处理、断点续传、任务管理等。

首先客户端程序通过远程对服务器客户端底层一些配置和存储地址等进行初始化,再连接服务器通过SSL加密信息和规则进行身份验证,验证通过后进人文件操作功能菜单,根据显示服务器/客户端提供文件目录等,用户选择进行相应的操作,实现文件多线程上传和下载、任务管理等功能。

2.4 自定义文件传输

系统中文件传输客户端与文件传输服务器通过自定义数据包格式来进行通信。在服务器处理客户端的连接和文件传输请求时,根据接收到的文件信息创建Socket地址,并根据接收信息进行端口监听,将Socket套接字绑定到相应接收端IP地址,然后通过调用OpenSSL库中对应接口函数功能来实现认证和加密,当接收到客户端数据包,对数据包进行解包和分析,依据数据包类型和ACK发送相应的回复数据包给客户端[5]。服务器系统记录定义好的文件传输过程操作,并保存在相应的记录文件中。

3 功能设计

3.1 文件断点续传功能

断点续传是指当文件比较大的时候,可能由于网络故障或者计算机系统软件问题而导致文件传输失败,很多文件的上传或下载不是一次性就能完成的,因此在下一次连接服务器的时候不是重新上传或下载整个文件,而是能够从断点开始继续上传或下载该文件[6]。大文件或数据信息在网络传输过程中,可通过指针对文件传输位置进行记录,或采用将大文件分割为若干个大小不等的数据块,利用线程分块进行传输,通过记录每个线程传输的位置来标记传输的数据。系统在整个文件传输工作过程中会创建临时文件,记录传输的线程数、每个被分割的数据块大小、每个线程已传输的数据信息以及线程对应的数据块偏移量、传输文件指针的偏移量等信息。如果传输过程中文件未传完发生中断,复传时只需读取系统创建的临时文件以获取文件的断点信息后继续传输该文件[7]。

3.2 并发服务器设计

文件传输过程中服务器系统能支持的线程数量有限,服务器需要处理多用户连接,当出现大量并发用户同时发起文件传输请求时,采用服务器并发处理来解决实现。本系统在对并发处理服务器设计时,采用基于1/0多路复用中的epoll机制结合优化的线程池任务队列技术,实现服务器并发处理多用户同时连接请求的问题,不但极大地降低系统负荷提高并发服务处理能力[8],而且也大大节约了服务器成本。

3.3 SSL加密传输流程设计

系统采用安全套接层SSL协议保证网络通信过程中敏感数据和重要信息的安全性[9]。通过对该协议研究,设计服务器端SSL加密流程如下:

1)系统调用SSL_Library_init0函数,载人优化的SSL加密算法程序对SSL库进行初始化;

2)系统调用SSL_CTX_new0函数,创建本次SSL会话连接协议和会话环境;

3)系统载人相匹配的用户数字证书和通信验证私钥,对用户信息进行校验;

4)连接握手,将配对的套接字Socket文件描述符加入SSL中,建立SSL新连接;

5)由建立的新SSL连接接管新建立连接的套接字Socket文件描述符上数据的发送和接收;

6)当所有数据传输完成后关闭建立的SSL连接,关闭Sock-et,释放系统资源。

客户端的SSL加密过程与服务器端加密流程比较类似,但相比要简单一些,因为客户端都是独立的,不用进行并发处理和端口监听。

4 文件安全传输实现

4.1服务端与客户端实现

由于Linux操作系统的开放、免费、可拓展和可裁剪等良好性能,在服务器和嵌入式操作系统中得到了越来越广泛的应用。本系统服务器端与客户端的网络通信采用Linux环境下的网络编程接口实现。服务器端开启后,系统通过调用socket函数创建socket连接,创建TCP字节流套接口并设置参数。为了避免文件描述符在等待1/0事件时阻塞影响系统效率,将文件描述符设置为非阻塞状态,系统调用fcntl函数设置后执行时,检测到没有1/0事件准备好文件描述符就会直接返回进行下一步处理,在1/0事件执行完成后,系统调用的函数返回通知主循环。客户端发送请求后,服务器端接受连接,客户端随即调用OpenSSL库提供的接口函数进行SSL协议的数据信息加密传输。服务器端通过1/0事件和系统主循环异步执行,提高了CPU利用率和系统性能。

4.2 服务器并发处理实现

服务器在处理1/0事件的同时,也需要处理信号事件。由于信号事件发生的时间是不确定的,所以需要进行异步处理,执行信号处理函数,以防信号被屏蔽。本网络云盘系统在处理信号事件时,主程序将信号的处理逻辑放到主循环中,执行过程中信号处理函数首先被触发,主循环接收到发生信号后立即进行处理执行。系统通过Unix管道将信号处理函数已触发的信号传递给主循环,循环中使用1/0复用系统调用来监听管道上的事件发生。这种服务器并发处理方案统一信号事件源,使得信号与其他1/0事件享有同等处理机会,也便于程序处理实现和维护。

4.3 SSL加密传输实现

本系统采用OpenSSL库来实现SSL协议传输过程加密。客户端与服务器端在通信过程中,OpenSSL完成C语言编写开发的自定义SSL库文件,在传输层TCP协议的基础上,利用创建的密钥生成一个合法、可信的数字证书实现SSL加密传输,加密传输过程流程图如图2所示。

5 本网络云盘性能优势

本网络云盘系统采用多线程上传技术和自定义文件加密传输协议在网页端实现,在实际使用过程中,其性能相对比一般网盘系统具有以下优势:

(1)容错率高。普通网盘系统严重依赖于客户端C/S模式,而对于网页端B/S模式的支持有限,其文件上传和下载的大小都有一定的限制,其传输原理较为传统,在传输过程中若出现断网、断电等意外情况时,传输即失败,容错率较低。本网络云盘系统断点续传的支持使得文件传输的容错率大大提升,其使用体验感极佳;

(2)支持断点续传。本系统基于大文件的分块传输,其传输原理是将大文件分块处理,传输过程中允许意外情况的发生,先前传输的分块同样能够及时有效地保存,意外发生后重新选择文件从断点块处继续传输即可,而且能够实现同一文件的异地断点续传。自定义的传输协议和分块后的加密处理,保证了文件传输的安全性;

(3)支持大文件,传输速率高。本网络云盘对大文件的传输处理理论上不受文件大小的限制,而一般主流网盘不支持10G及以上文件传输。通过服务器带宽限制控制带宽统一为20Mbps,使用B/S端进行文件传输,经过性能对比(如图3所示),在大文件的传输处理中,主流网盘1不支持10G及以上文件传输,主流网盘2不支持2G及以上文件传输,而本系统网盘可快速实现大文件传输,其传输速率具有较强的优越性。

6 结语

相对于传统的存储方式,本文基于SSL协议对文件传输系统进行研究和优化,通过在服务器与客户端之间打通一条基于SSL协议的安全链路通道,采用Linux中1/0复用模型中的epoll机制和线程池编程技术,解决服务端对多个用户同时进行连接请求的并发处理,在满足实际需求的基础上设计实现便捷、安全的网络云盘系统。该系统通过SSL安全协议进行传输过程加密,实现大文件分块和断点续传功能,做到了在传输意外情况下重新续传时,容错率高,对于大文件传输和存储使用具有重要的实用价值和广阔前景。

参考文献:

[1]肖雄志,基于OpenSSL的安全文件传输系统设计与实现[D].武汉:华中科技大学,2015.

[2]杨兴康.基于SSL的安全文件传输系统在linux环境下的研究与实现[J].信息通信,2015,28(10):117-118.

[3]宋强,齐贵宝,曹冲,等.基于嵌入式Linux下安全文件传输系统的设计[J].吉林大学学报(信息科学版),2012,30(4):397-402.

[4]向春枝,李小明.基于SSL的数据库安全代理设计[J].煤炭技术,2011,30(7):135-137.

[5]张宝燕.基于SSL连接在线支付方案的设计[J].山西电子技术,2015(6):62-63,83.

[6]张文锦,汪金虎,蓝芳萍,等.云存储关键技术研究[J].常熟理工学院学报,2018,32(2):94-98.

[7]馮贵兰.一种保护用户数据私密性的云存储方法[J].软件导刊,2015,14(12):174-176.

[8]潘乐,胡鑫,余伟,等.一种高并发服务处理的优化方法[J].信息技术与信息化,2020(3):22-24.

[9]李长春.基于SSL协议的VPN系统实现及安全性研究[J].江汉大学学报(自然科学版),2016,44(1):81-88.

【通联编辑:代影】

作者简介:牛国锋,通讯作者,实验师,硕士,主要研究方向:无线传感网技术、嵌入式系统应用。