电子公文传输系统安全性设计方案与实现
一、项目目标
- 通过CA给通讯双方颁发数字证书,从而使得通讯各方可以验证彼此的身份。
- 采用公开密钥加密会话密钥,使用会话密钥加密所传输的文件,从而使得文件可以在公开链路上安全传输。
- 设计通讯握手协议,使通讯双方可以协商所采用的密码算法。
二、系统分析与设计
(一)系统目标分析
作为一个安全文件传输系统,系统必须达到以下目标:
- 保障数据机密性:系统必须确保只有预期的文件接收方才能读取文件信息;
- 保障数据完整性:文件接收方能够验证他所接收到的文件是否完整,是否在传输过程中被非法篡改过,以保证他接收到的文件与发送方发送出来的文件完全相同;
- 对数据源的身份验证:文件接收方可以验证文件是否确实是由指定的发送方发送过来的;
- 网络信息成功收发:系统必须确保发送方能够成功地将文件以及必要的即时消息传输给接收方。
(二)系统设计概述
为了实现上述目标,系统将通过高强度的、安全可靠的加密技术对文件进行加密,以防止攻击者截获文件数据后能成功进行破解而导致文件信息泄漏,完善的加密技术尽可能做到使攻击者无法解读其所截获的数据包中的信息。
系统还将对文件进行数字签名以及相应的验证签名处理,以使文件接收方可以判断出文件在传输的过程中是否已被篡改以及文件是否确实是由指定的发送方发送过来的。数字签名技术还保证了文件信息的不可否认性,即如果用户确实向其他用户发送了某一文件,他将无法对此进行否认。
通过引入 PKI技术,利用数字证书对文件进行数字签名、加密等安全处理后再通过网络进行传输,接收方接收到文件之后相应地对文件进行解密、验证签名等安全处理,系统将能够保障文件的机密性、完整性并验证文件的真实来源,实现文件的安全传输。
在网络数据的传输方面,系统通过 Socket 套接字编程技术建立通信双方之间的连接,并自定义一个简单的通信协议,这一协议的核心是双方所发送的数据包的格式、采用的加密算法等,通信双方将严格按照这一协议进行通信、传输文件、即时消息和连接控制消息。
(三)系统分层设计
本系统按分层次设计如下:
- TCP/IP层:Socket套接字工作所在的层,为上一层提供可靠的点对点网络数据传输服务;
- STP层:自定义STP(SecurityTransferProtocol)通信协议,负责通信双方的握手及协商,在该层进行数据的加密解密处理,确保在该层流动数据具有安全性,为上一层提供公文安全传输服务;
- 应用层:使用STP提供的服务进行远程安全公文传输;
(四)系统分模块设计
根据上述的系统目标以及系统设计概述,我们将系统划分成三大模块,即安全处理模块、IO模块、用户界面模块。
安全处理模块主要负责对文件进行数字签名、加密、解密和验证签名等安全处理;由于系统使用了数字证书,所以访问公钥基础设施,辅助用户申请、查询和下载数字证书,将数字证书安装到操作系统证书库中,查看和删除用户已安装的数字证书等,也是安全处理模块所要兼顾的功能。此模块也是本系统中的要实现的模块。
IO传输模块则主要负责建立和管理通信双方之间的通信连接,读取写入本地文件。
用户界面模块向用户提供友好易用的使用界面。
(五)安全处理模块的具体设计
为了保障文件传输的安全,发送方首先要对文件进行数字签名处理,并且采用对此加密和非对称加密相结合的方式进行加密处理,然后才将处理后的文件传输给接收方,接收方接收到文件之后要先进行解密处理,然后进行验证签名处理,验证无误后方可读取文件信息。当然,用户也可以根据实际的安全需求只对文件进行加密处理或数字签名处理,这样接收方在接收到文件后将只需相应地进行解密处理或验证签名处理。上述这些安全处理操作都是设计由系统的安全处理模块来完成,包括以下几点:
1. 通过CA给通讯双方颁发数字证书
通过已有的CA证书机构或使用其他证书服务,为通讯双方颁发数字证书,从而使得通讯各方可以验证彼此的身份。拟使用使用OpenSSL或Windows证书服务。
2. 安全传输过程设计
- 发送方生成一个会话密钥(对称密钥)并用接收方的公钥对会话密钥进行加密,然后通过网络传输到接收方;
- 发送方对需要传输的文件用会话密钥进行加密,然后通过网络把加密后的文件传输到接收方;
- 发送方从文件原文提取摘要,并使用自己的私钥加密,形成签名发送给接收方;
- 接收方用自己的私钥进行解密后得到会话密钥;
- 接收方用会话密钥对接收到的文件进行解密,得到文件的明文形式;
- 接收方用对方的公钥对数字签名进行解密,对文件真伪进行验证。
因为只有接收方才拥有自己的对称密钥,所以即使其他人得到了经过加密的会话密钥,也因为无法进行解密而保证了会话密钥的安全性,从而也保证了传输文件的安全性。并且通过数字签名可以验证文件的真伪。
3. 通信握手协议设计
通过设计握手协议帮助传输双方协商使用的加密方式、加密算法的方法,确定文件传输何时开始何时结束。