七、加解密技术综合应用
7.1、业务场景
主体:公司总部(发送方A)→\rightarrow→分部(接收方B)。
数据特征:邮件附件很大,高达2GB。
7.2、安全需求拆解
7.2.1、以加密方式传输
保密性
技术难点:数据太大(2GB),非对称加密太慢,必须用对称加密。
架构方案:混合加密(数字信封)。用对称密钥(K)加密数据,用非对称公钥加密对称密钥(K)。
7.2.2、发送者不可抵赖
认证性/不可否认性
技术方案:数字签名。必须使用发送方A的私钥签名。
7.2.3、第三方无法篡改
完整性
技术方案:信息摘要。计算Hash值进行比对。
7.3、发送方 A 的操作 (封包)
7.3.1、处理数据 (明文)
生成一个随机对称密钥 K。
使用K对2GB邮件明文进行加密→\rightarrow→生成邮件密文。
7.3.2、处理密钥 (K)
使用接收方B 的公钥 (PbP_bPb)对K进行加密→\rightarrow→生成加密后的密钥K。(注意:给谁发,就用谁的公钥锁,保证只有B能解开)。
7.3.3、处理签名 (防抵赖)
对邮件明文进行摘要运算→\rightarrow→生成邮件摘要。
使用发送方A 的私钥 (SaS_aSa)对摘要进行加密→\rightarrow→生成数字签名。(注意:我发的,我就用我的私钥盖章)。
7.4、接收方 B 的操作 (拆包)
7.4.1、解密密钥
使用B 自己的私钥 (SbS_bSb)解密→\rightarrow→拿到随机对称密钥 K。
7.4.2、解密数据
使用拿到的K解密邮件密文→\rightarrow→拿到邮件明文。
7.4.3、验证签名
计算摘要:对拿到的邮件明文做摘要运算→\rightarrow→生成摘要1。
解密签名:使用发送方A 的公钥 (PaP_aPa)解密数字签名→\rightarrow→拿到摘要2。
对比:如果摘要1 == 摘要2,证明:
- 数据没被改过(完整性)。
- 确实是A发的(认证性)。