网络加密算法的组合使用
0 条评论加密算法组合使用的目的:
常见的网络加密技术有对称加密、非对称加密、单项哈希算法,这三种加密技术有各自的特点,分别解决不同的问题,所以在实际应用中往往会组合使用,下面介绍几种常见组合方案!如果对网络加密技术不熟悉,可以先看《对称和非对称加密算法及单向哈希算法》这篇文章了解基础知识和基本概念!
常见加密组合方案:
下面方案中的场景都是“用户A”和“用户B”通信,A表示数据发送方,B表示数据接收方!
方案一
对称加密算法 + 非对称加密算法
- 加密过程:A用对称密钥加密数据,再用B的公钥加密对称密钥 !
- 解密过程:B用自己的私钥解密出对称密码,再用对称密钥解密出数据!
加密后的数据结构:

特点:
- 使用公钥加密对称密钥,对称密钥数据量小,对加解密效率基本没影响,解决了密钥传输问题,实现了密钥交换!
- 使用对称密钥加密数据,实现了数据保密性!
缺陷:
- 无法验证数据的来源,存在冒充发送方的隐患!
- 无法验证数据完整性,存在数据被篡改的隐患!
方案二
对称加密算法 + 非对称加密算法 + 单向哈希(散列)算法
- 加密过程:A用hash算法计算出数据的摘要,摘要放在数据后面,用A的私钥来签名此摘要!
- 解密过程:B用A的公钥解密出摘要,然后再将数据进行hash(hash算法要和A一样)得出摘要,如果两个摘要一样,B 接受数据并使用!
加密后的数据结构:

特点:
- 实现了数据来源的确认!
- 实现了数据完整性校验!
缺陷:
- 数据明文发送,没有实现数据加密!
方案三
对称加密算法 + 非对称加密算法 + 单向哈希(散列)算法
- 加密过程:
- A用hash算法计算出数据的摘要,再用A的私钥来签名此摘要,然后将数据放在后面!
- 用对称密钥加密签名后的摘要和数据(数据放在摘要的后面)!
- 使用B的公钥加密对称密钥!
- 解密过程:
- B用私钥解密出对称密钥!
- 使用对称密钥解密出经过A签名的摘要和数据,再用A的公钥解密出摘要!
- 数据进行hash(hash算法要和A一样)得出摘要,如果两个摘要一样,B 接受数据并使用!
加密后的数据结构:

特点:
- 实现了数据来源的确认!
- 实现了数据加密!
- 实现了数据完整性校验!
说明: 在实际应用中,即要实现数据加密,又要保证数据来源的可靠性、以及数据的完整性!所以方案3能满足实际需求!
中间人攻击:
上面三种方案都存在一个共同的漏洞: 客户端和服务端通信,会向服务端请求服务端的公钥,假如有个中间人截住了客户端的请求,中间人会冒充服务器,发送了中间人自己的公钥。同时中间人冒充客户端,向服务端请求公钥。客户段如果不做公钥校验,就会拿中间人的公钥加密数据,中间人收到后用自己的私钥就能解密数据!中间人解密数据后可以替换成自己的数据(比如把收款人改为中间人自己),然后用真的服务端的公钥加密,加密后发送给服务端!
中间人两边欺骗,在通讯过程中能截获数据和破解数据,这就会造成数据泄漏以及篡改数据!

出现这种漏洞的原因: 任何人都有自己的公钥,且公钥公开,不能确认对方公钥的真实性!
解决方案: 要保证公钥公开,要必须确保公钥的真实性,这就是CA机构存在的意义!
公钥和身份证一样,需要一个权威机构来证明、验证身份,验证公钥的权威机构称为"CA"!
