前置知识
数字摘要与数字摘要算法
数字签名原理
- 发送端(服务端)
-
原始数据经过数字摘要算法生成数字摘要 -
私钥对数字摘要进行加密生成数字签名 - 将
原始数据、数字签名打包发送
- 接收端(客户端)
- 提取
原始数据,使用约定的数字摘要算法计算出数字摘要A - 提取出
数字签名,使用公钥对其解密得到数字摘要B - 判断
数字摘要A是否与数字摘要B一致
接收端如何获取到公钥?数字证书可以帮到你
- 发送端(服务端)
- 发送端向CA申请
数字证书 -
发送端公钥经过数字证书里的摘要算法生成数字摘要 -
数字证书私钥对数字摘要进行加密生成数字签名 - 将
发送端公钥、数字签名、数字证书打包发送
- 接收端(客户端)
- 提取
发送端公钥 - 提取
数字证书,校验数字证书是否可信 - 如果可信,使用
发送端公钥和数字证书里的摘要算法计算出数字摘要A - 从
数字证书中拿到数字证书公钥 - 提取出
数字签名,使用数字证书公钥对其解密得到数字摘要B - 判断
数字摘要A是否与数字摘要B一致 - 如果一致,发送与接收双方可以利用非对称加密进行通信
HTTP的不安全性
- 被中间人窃听(HTTPS可解决)
- 被中间人篡改(HTTPS可解决)
- 被中间人伪造(HTTPS可解决)
- 被中间人丢弃(HTTPS不可解决)
HTTPS概念
HTTP over SSL/TLS
HTTPS请求过程
- C向S发起访问请求
- S向C发送数字证书
- C校验接收到的数字证书是否可信
- 如果不可信,显示警告
- 如果可信,提取公钥
- C生成对称加密私钥对
- C使用证书提取的公钥加密私钥对,发送给S
- S使用证书私钥解密接收到的C端私钥对
- 后续通信使用C端私钥对进行