再复习一遍通信过程,以及 https 到底是对称加密还是非对称加密
https://www.cnblogs.com/imstudy/p/12015889.html
https://www.jianshu.com/p/918d9f517749
公钥和私钥
公钥用于加密会话密钥、验证数字签名、或加密可以用相应的私钥解密的数据。公钥和私钥是一种通过算法得到的一个密钥对,其中的一个向外界公开,称为公钥,另一个自己保留,称为私钥。
加密
- 对称加密:加密与解密使用的是同一个密钥;
- 非对称加密:加密使用的密钥(公钥)和解密使用的密钥(私钥)是不相同的,公钥、算法是公开的,私钥是保密的。
数字签名:
数字签名是加密过程,数字签名认证是解密过程。用私钥加密的消息称为签名,只有拥有私钥的用户可以生成签名;用公钥解密签名这一步称为验证签名,所有用户都可以验证签名。
数字签名是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后对收到的原文产生一个摘要信息,与解密的摘要信息对比,如果相同,说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
证书验证机制
采用https协议的服务器必须有一套数字证书,可自己制作,也可以向组织申请。自己颁发的证书需要客户端验证通过,才可以继续访问,使用受信机构申请的证书不会弹出提示页面。
证书本质上是对公钥进行数字签名。A 将自己的公钥和域名信息发送给CA,CA用自己的私钥加密A的CSR,得到的密文称为数字签名,A和B通信时,A出示自己的CA证书,只要B在自己机器上安装了CA,可以拿到CA的公钥,用公钥解密A的CSR,与明文中的信息进行比对,如果相同则证书校验通过。
https通信过程:
- client hello 客户端与服务端建立链接,http版本,算法,随机数1
- server hello 服务端发送证书,随机数2
- 客户端验证证书
- 客户端生成会话密钥,随机数3(服务端的公钥进行加密)
5.服务端用私钥解密随机数3,根据约定的算法使用随机数1, 2, 3生成会话密钥
代理机制
手机上安装自己的证书,将自己的证书发送给客户端进行校验通过。代理知道随机数1,2,使用的算法,服务端公钥,客户端返回的随机数 3用代理生成的证书里面的公钥加密,代理用自己的私钥进行解密,再用服务端公钥加密,发送给服务端。
因此代理可以获得客户端与服务端的对称加密密钥。代理处可以获取到明文的报文。
HTTPS原理和通信流程
什么是数字签名和证书
https抓包为什么能看到明文
浅谈HTTPS抓包原理,为什么Charles能够抓取HTTPS报文?
HTTPS协议原理和流程分析
SSL的通讯原理
网友评论