加密算法组合使用的目的:

常见的网络加密技术有对称加密、非对称加密、单项哈希算法,这三种加密技术有各自的特点,分别解决不同的问题,所以在实际应用中往往会组合使用,下面介绍几种常见组合方案!如果对网络加密技术不熟悉,可以先看《对称和非对称加密算法及单向哈希算法》这篇文章了解基础知识和基本概念!

常见加密组合方案:

下面方案中的场景都是“用户A”和“用户B”通信,A表示数据发送方,B表示数据接收方!

方案一

对称加密算法 + 非对称加密算法

  • 加密过程:A用对称密钥加密数据,再用B的公钥加密对称密钥 !
  • 解密过程:B用自己的私钥解密出对称密码,再用对称密钥解密出数据!

加密后的数据结构:
encryp-case-1

特点:

  • 使用公钥加密对称密钥,对称密钥数据量小,对加解密效率基本没影响,解决了密钥传输问题,实现了密钥交换!
  • 使用对称密钥加密数据,实现了数据保密性!

缺陷:

  • 无法验证数据的来源,存在冒充发送方的隐患!
  • 无法验证数据完整性,存在数据被篡改的隐患!

方案二

对称加密算法 + 非对称加密算法 + 单向哈希(散列)算法

  • 加密过程:A用hash算法计算出数据的摘要,摘要放在数据后面,用A的私钥来签名此摘要!
  • 解密过程:B用A的公钥解密出摘要,然后再将数据进行hash(hash算法要和A一样)得出摘要,如果两个摘要一样,B 接受数据并使用!

加密后的数据结构:
encryp-case-2

特点:

  • 实现了数据来源的确认!
  • 实现了数据完整性校验!

缺陷:

  • 数据明文发送,没有实现数据加密!

方案三

对称加密算法 + 非对称加密算法 + 单向哈希(散列)算法

  • 加密过程:
    1. A用hash算法计算出数据的摘要,再用A的私钥来签名此摘要,然后将数据放在后面!
    2. 用对称密钥加密签名后的摘要和数据(数据放在摘要的后面)!
    3. 使用B的公钥加密对称密钥!
  • 解密过程:
    1. B用私钥解密出对称密钥!
    2. 使用对称密钥解密出经过A签名的摘要和数据,再用A的公钥解密出摘要!
    3. 数据进行hash(hash算法要和A一样)得出摘要,如果两个摘要一样,B 接受数据并使用!

加密后的数据结构:
encryp-case-3

特点:

  • 实现了数据来源的确认!
  • 实现了数据加密!
  • 实现了数据完整性校验!

说明: 在实际应用中,即要实现数据加密,又要保证数据来源的可靠性、以及数据的完整性!所以方案3能满足实际需求!

中间人攻击:

上面三种方案都存在一个共同的漏洞: 客户端和服务端通信,会向服务端请求服务端的公钥,假如有个中间人截住了客户端的请求,中间人会冒充服务器,发送了中间人自己的公钥。同时中间人冒充客户端,向服务端请求公钥。客户段如果不做公钥校验,就会拿中间人的公钥加密数据,中间人收到后用自己的私钥就能解密数据!中间人解密数据后可以替换成自己的数据(比如把收款人改为中间人自己),然后用真的服务端的公钥加密,加密后发送给服务端!

中间人两边欺骗,在通讯过程中能截获数据和破解数据,这就会造成数据泄漏以及篡改数据!

middle-attract-public-key

出现这种漏洞的原因: 任何人都有自己的公钥,且公钥公开,不能确认对方公钥的真实性!

解决方案: 要保证公钥公开,要必须确保公钥的真实性,这就是CA机构存在的意义!

公钥和身份证一样,需要一个权威机构来证明、验证身份,验证公钥的权威机构称为"CA"!