HTTPS

·  阅读 47

不可逆加密(单向散列函数MD5,SHA) 比如登录密码 可逆加密:对称加密和非对称加密 1.对称加密DES: 加解密需要的密钥是一样的,加解密速度快,比较常用,但是需要解决秘钥派送问题
2.非对称加密RSA: 一对公钥和私钥,公钥加密的密文可以用私钥解密, 私钥加密的密文也可以用公钥解密,优点是安全,缺点是加密算法负责,效率低,可以使用RSA解决  秘钥的配送问题。 

混合密码加密步骤:
首先消息发送者需要拥有消息接受者的公钥;
生成会话秘钥,作为对称加密的秘钥,加密消息
用消息接收者的公钥对会话秘钥进行加密
将上面2步中生成的加密结果,一并发送给消息接收者

存在问题,无法解决中间人拦截消息接受者发送的公钥,篡改成自己的公钥,发给消息发送者

数字签名:用自己的私钥进行加密,使用公钥进行解密

解决办法:CA机构对证书进行数字签名
1.CA作为权威机构做担保
2.消息接收者(Bob)向CA机构注册自己的公钥,CA机构使用它自己的私钥对Bob的公钥进行数字签名生成一个证书。
证书里面包括: Bob的公钥,CA的签名
3.消息发送者(Ali)从CA机构下载带有认证机构数字签名的Bob的公钥(证书)
4.Ali使用CA的公钥验证数字签名,确保Bob的公钥的合法性。
5.签名验证通过,证明证书没问题,然后可以使用公钥向Bob发消息了
6.Bob使用自己的私钥,对收到的密文进行解密

CA的公钥我们不用担心安全问题,都内置在操作系统和浏览器中
Https:超文本传输安全协议
Http默认端口80, https默认端口443
http是明文传输,一旦有中间人攻击的话,就能直接拿到请求的报文
https:能保证传输通道是安全的, 中间人及时拿到也是加密过的报文\

HTTPS的通信过程: 1.TCP的三次握手 2.TLS的连接(建立安全连接)  3.HTTP请求和相应

TLS连接步骤:大概10个步骤
1.client hello : 包括TLS版本号, 支持的加密套件(加密算法列表),一个随机数
2.server hello: TLS版本, 选择的加密组件,一个随机数
3.certificate: 服务器的公钥证书(被CA签名过的),server->client
4.server key exchange: 用于实现ECDHE算法的其中一个参数(server params)
5.server hello done; 告知客户端,协商部分结束
到目前为止客户端和服务器明文共享了: client 随机数, server随机数, server params,而且客户端你也拿到了服务器的公钥证书,接下来,客户端会对证书有消息,借助于CA机构

6.client key exchange: 用于实现ECDHE算法的另一个参数 client params

到目前为止,客户端和服务端都拥有了ECDHE算法的两个参数,客户端和服务端都可以使用这个算法根据server params和client params计算出一个新的随机密钥串pre-master secret,然后结合client随机数,server随机数,pre-master secret生成用于加密会话的会话密钥

7.change cipher spec: 告知服务器,之后的通信都会采用计算出来的会话密钥进行加密
8.client finished,包含连接至今全部报文的整体校验值(摘要),加密(用第6步生成的密钥)之后发送给服务器,这次协商能否成功,要以服务器是否能正确解密成功为判定标准
9.change sipher spec(server->client)
10.finish(server->client)
到此为客户端和服务器都验证加解密没问题,握手正式结束,后面开始传输加密的http请求和相应

TCP和UDP的区别: TCP比较负责,会将之前发送失败的内容,在未来某个时间再次发送

屏幕快照 2021-08-28 下午3.36.33.png

UDP数据格式: UDP是无连接的,减少了建立和释放连接的开销 UDP是尽最大努力交付,不保证可靠交付 UDP长度占16位(首部长度+数据长度)

分类:
iOS
标签:
分类:
iOS
标签:
收藏成功!
已添加到「」, 点击更改