这篇是为了对大容量数据安全传输系统设计中遇到的问题和概念理解进行一个梳理和总结。
数字签名和数据加密的区别
- 数字签名主要经过以下几个过程:
(1)信息发送者使用一单向散列函数(HASH函数)对信息生成信息摘要;
(2)信息发送者使用自己的私钥签名信息摘要;
(3)信息发送者把信息本身和已签名的信息摘要一起发送出去;
(4)信息接收者通过使用与信息发送者使用的同一个单向散列函数(HASH函数)对接收的信息本身生成新的信息摘要,再使用信息发送者的公钥对信息摘要进行验证,以确认信息发送者的身份和信息是否被修改过。 - 数字加密主要经过以下几个过程:
(1)当信息发送者需要发送信息时,首先生成一个对称密钥,用该对称密钥加密要发送的报文;
(2)信息发送者用信息接收者的公钥加密上述对称密钥;
(3)信息发送者将第一步和第二步的结果结合在一起传给信息接收者,称为数字信封;
(4)信息接收者使用自己的私钥解密被加密的对称密钥,再用此对称密钥解密被发送方加密的密文,得到真正的原文。 - 数字签名和数字加密的过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。
- 数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密,这是一个一对多的关系,任何拥有发送方公开密钥的人都可以验证数字签名的正确性。
- 数字加密则使用的是接收方的密钥对,这是多对一的关系,任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。
- 另外,数字签名只采用了非对称密钥加密算法,它能保证发送信息的完整性、身份认证和不可否认性,而数字加密采用了对称密钥加密算法和非对称密钥加密算法相结合的方法,它能保证发送信息保密性。
需求分析
- 对传输的文件进行数字签名和加密;
- 对接受的文件进行解密和验证签名。
系统模块设计
1. 文件发送和接收模块
实现文件的发送和接收功能。在发送端选择合适的接收端,指定发送文件,调用加密模块对文件进行加密传输;在接收端接收文件并进行解密。
2. 加解密模块
负责对待传输文件计算摘要,签名和加密,对接收的文件进行解密和解签名,该模块的实现主要用到MD5摘要,公钥加解密,对称密钥加解密等。
系统的流程
1. 发送方
以文件加密传输流程为例:在服务端输入监听端口后,客户端开始连接,查看所有可下载的文件,使用download指令下载想要下载的大容量数据,系统在后台对文件进行加密操作,发送方加密的具体步骤如下:
(1)系统根据用户选择的文件地址找到文件,用MD5算法计算文件的摘要;
(2)发送方使用自己的RSA私钥对生成的摘要信息进行签名;
(3)使用AES对原始文件和签名后的摘要信息一起加密;
(4)使用接收方的公钥对AES密钥进行加密;
(5)将上面两步加密生成的文件合并成一个完整的文件,进行文件传输。
2. 接收方
文件接收完成后系统将自动进行文件的解密操作,解密与加密是相对应的,接收方解密的具体步骤如下:
(1)根据读取的长度信息,从文件中读取出加密后的AES密钥;
(2)用接收方的RSA私钥解密出AES密钥;
(3)用AES密钥对文件进行解密;
(4)从解密出的文件中读取出发送方的签名(即用发送方的私钥加密过的原始文件摘要信息),并用发送方的公钥对摘要信息进行解密;
(5)使用MD5算法计算接收到文件的摘要信息,与解密得到的摘要信息进行比较,如果相同,则可以验证文件的完整性和来源性,如果不同,则说明文件在传输过程中遭受篡改。
3. 安全性
从以上的文件加密传输流程可以看到,系统对待发送文件即进行签名操作,又进行加密操作,且使用的都是可靠的密码算法,安全性很高,能够确保文件在传输过程中的安全。