一种安全高效的文件传输协议设计

介绍

随着3G、4G、5G的发展,使得文件传输变得轻而易举,我们可以随时随地地进行文件传输,与好友之间,与云服务器之间。文件的传输,意味着一个数据信息需要在网络上暴露,当受到恶意攻击时,导致数据泄露,造成一些不可磨灭的灾难。因此,文件的安全传输是一个值得探讨的问题。
1、加密技术,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已知的加密信息,但因不知解密的方法,仍然无法了解信息内容。进而使得数据可以在互联网上安全传输。
2、对称加密技术,采用单**密码系统的加密方法,同一个**进行加密解密,当加密者生成**对数据进行加密之后,如何把**安全的送到解密者手中,成为了一个至关重用的问题。
3、非对称加密技术,非对称加密需要两个**,公钥和私钥。一般使用公钥加密,私钥解密。非对称加密效率较低,但非对称加密技术的出现为对称加***的安全传输提供了保障。
4、TLS技术全称为安全传输层协议,TLS结合了对称加密技术和非对称加密技术,用于在两个通信程序之间提供数据包的保密性和数据的完整性。
本文将模拟TLS协议,建立一个安全文件传输系统。

设计

整个上传协议运行在 TCP 协议之上,采用非阻塞 I/O 模型(epoll 模型,Java 中称 NIO 模型),以保证单点服务器对大量并发的支撑,客户端直接也采用非阻塞 I/O 模 型。由于非对称加密解密效率较低,本方案未全采用非对称加密算法,而是采用将非对称加 密和对称加密结合的方式,第三方生成非对称加***对将公钥传递到 A 端,A 端先通过 非对称加密将对称加密的**进行加密,B 通过非对称解密将对称**进行解密。双方都得 到对称加***后,双方则可通过该**进行安全通信。

系统模块

客户端主要模块:登录模块,加密解密模块,传输模块,协商模块
服务端主要模块:网络支持模块,**分配模块,缓存模块,用户登录模块

1、登录模块
客户端和服务器端都含登录模块,客户端随机随机生成一个 6 位 ID,提交到服务器端, 并通过服务器的用户缓存模块对其进行缓存。
2、用户缓存模块
用户缓存模块主要记录各个用户的 ID 和起对应的秘钥。
3、秘钥分配模块
服务器端负责对客户端进行秘钥分配,通过 RSA 秘钥分配机制对其分配公钥或者私钥, 公钥分配给发送方,私钥分配给接收方。
4、秘钥协商模块
客户端登录到服务器之后,则可项目通信,发送方选择一种对称加密算法并并告知接收 方,接收方收到发送发传递过来的加密类型,自动适配对应的解密算法。并获取发送方 通过公钥加密的对称加密的秘钥,对其解密,得到解密后的对称加密秘钥。
5、加密解密模块
加密解密模块主要负责对数据进行加密和对对称加密秘钥进行加密,如秘钥协商模块协商好对应的加密算法之后,发送方通过对称加密秘钥对数据进行加密,接收方通过对称 加密秘钥对数据进行解密。
6、发送文件模块
发送问价模块主要负责读取文件,和存储文件,并发送加密后的数据文件。

一种安全高效的文件传输协议设计

系统工作流程

服务器发放非对称加***给客户端,客户端之间通过非对称加密算法保证整个传输过程是
安全的,本系统中采用 RSA 的非对称加密算法,其具体流程为:
1、服务端生成一对**(公钥和私钥),私钥不公开,分别发送给 A 和 B,A 自己保留
公钥,B 保留私钥。
2、A 生成对称加*** p,和所选的加密类型,并用刚刚收到的公钥对其进行加密。
3、B 收到 A 的加密数据后,用服务器传递过来的非对称加密的私钥进行解密,得到**
和加密类型。
4、B 端根据加密类型自动适配对应的加密算法
5、A 发送文件,用 p 进行加密
6、B 端接收文件,用 p 进行解密
一种安全高效的文件传输协议设计
一种安全高效的文件传输协议设计

系统设计(代码实现)

代码结构

1、客户端代码总体结构
一种安全高效的文件传输协议设计
2、服务端代码总体结构
一种安全高效的文件传输协议设计

具体实现

具体代码实现在我的Github下:点击跳转

运行实例

1、启动服务器
一种安全高效的文件传输协议设计
2、启动两个客户端
3、选择需要发送的文件
一种安全高效的文件传输协议设计
4、输入对方ID、并选择加密算法
一种安全高效的文件传输协议设计

5、点击发送文件
6、对方接收,并验证文件是否完整

总结

本文描述了一种安全文件传输系统的设计,并且给出了其详流程和具体的代码的实现,最后给出了具体的程序运行实例。