关于Https我的理解

之前一直没有怎么仔细看https tls/ssl握手这部分,感觉特别繁琐,但是面试中还挺常被问的。最近认真看了看,感觉很多都写的特别严肃,理解好晦涩,我写一下我自己的理解(比较通俗,不是很严谨。

首先凡事都要先想为什么…

为什么要有https

主要就是因为 http 是明文传输。存在安全风险的问题。
这样做存在的问题:客户端c向服务端s ,如果有个中间人m,m截获得到它的原始数据,再篡改内容,再发给s;这样的话c发给s的内容就能被篡改,不安全。
所以为了提高安全性使用https

https 原理

简单来说就是比http 多了一层 tls/ssl,并且使用混合加密技术。

都说https 是混合加密的,其实就是 即用了非对称加密,又有对称加密;

按我自己的理解,自顶向下我把它拆分为三阶段,0阶段 tcp 三次握手,1阶段 非对称加密生成 会话密钥 (只有通信双方知道),2 阶段 对称加密(使用会话密钥)

  • 对称加密:按我的理解,比较白话的来说就是 x 被 a 加密 生成 x* ,然后再使用 a 对 x* 进行解密得到 x; 【x 就是消息,a 就是密钥】
  • 非对称加密:按我的理解,【x 为消息, u 为公钥, v为私钥】x 被 u 加密成 x* , 只有 v 可以将 x* 解密成 x,并且,x 若被 v 加密成 x* ,只有 u 可以将 x* 解密成 x。
    服务器是 公钥,私钥都有,客户端是只有公钥

0 阶段 tcp三次握手 ,没什么特别的。省略

1阶段 ,非对称加密生成会话密钥, tls/ssl握手部分

首先,服务器端需要向 ca 申请 ssl 证书,比较重要的是 这个证书里 包括了特定的 公钥和私钥
客户端 有个 公钥,服务器端有 公钥和私钥。

这个阶段,主要是为了生成会话密钥,这个会话密钥关键是靠几个随机数。所以我自己理解的时候,倾向于以随机数的视角看这个过程。其它内容可能会有所省略

  1. 客户端 c 向 服务器 s 发送一个 client hello, 并发一个 随机数1 给 服务器 s;
  2. 服务端s 收到后,也给客户端 c 返回一个 随机数2;然后服务器还会发证书给客户端,还会发个公钥给客户端;最后发给客户端告诉它发送完了
  3. 此时,客户端会再生成一个 随机数3 (aka 预主密钥),这随机数3,会用刚刚收到的 公钥 进行加密,并且将这个加密后的 随机数3’ 发送给服务器s。
  4. 服务端s 收到加密后的预主密钥,也就是 随机数3’ 后,会用 私钥 进行解密,得到 随机数3
  5. 然后客户端、服务端用 随机数3 (预主密钥)、随机数1随机数2 计算出 会话密钥,双方各自得到的会话密钥是相同的。

后面的会话,都是用这个会话密钥 进行加密、解密,也就是进入2阶段,对称加密阶段。

会话密钥只应用于当前会话,很安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值