https协议流程

参考: https://blog.csdn.net/kefengwang/article/details/81219121

RSA非对称加密 公钥加密算法
明文 + 加密算法 + 私钥 => 密文
密文 + 解密算法 + 公钥 => 明文
对于数据交换双方, 都拥有自身的公钥和私钥, 私钥都为自己私藏, 公钥都向对方公开
同样一个数据, 发送方使用自身的私钥加密, 接收方收到后可以用发送方的公钥解密
缺点: 加密和解密花费时间长、速度慢, 只适合对少量数据进行加密 主要算法有:
RSA、Elgamal、Rabin、D-H、ECC等

https为了兼顾安全与效率, 同时使用了对称加密非对称加密

RNc=Random Number of Client
RNs=Random Number of Server
PMS=Pre Master Secret
MS=Master Secret


1.双方协商交互参数
客户端 --发送随机数RNc–> 服务端
客户端 <–发送随机数RNs– 服务端
协商使用的SSL/TLS协议版本、加密算法


2.双方交换并验证证书
服务端: 发送服务端证书, 并索要客户端证书
客户端: 收到服务端证书后, 验证其身份有效性, 取出服务端公钥
客户端: 向服务端发送客户端证书(证书中包含客户端公钥)
服务端: 收到客户端证书后, 验证其身份真实性


3.双方生成"主密钥" (非对称加密)
客户端对随机数值(RNc+RNs)作哈希, 并用自己的公钥私钥、对方公钥签名, 并发送给服务端
服务端以同样算法(自己的公钥私钥、对方公钥), 检查客户端发送的哈希签名RNc+RNs
客户端生成随机数PMS并用客户端私钥加密, 再发送给服务端
服务端使用客户端公钥解密取得PMS, 至此双方有相同的PMS
双方使用D-H密钥交换算法生成相同的"主密钥"(MS: RNc+RNs+PMS)


4.完成握手并开始交互 (对称加密)
双方使用"主密钥"作为数据传输时对称加密使用的密钥


整个验证过程, 折腾了半天, 其实是为了安全地得到一个双方约定的对称加密密钥

https协议为什么通信时使用对称加密, 而不使用非对称加密?
非对称加密计算量大、比较耗时, 而对称加密耗时少
对称加密的密钥只在这次连接中断前有效, 从而保证数据传输安全






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章