https原理和流程

https原理和流程

https实际上是使用SSL/TLS对传输数据进行加密的HTTP通信.
如果不使用SSL/TLS的话, 所有的数据是明文传输, 很容易被截取进行中间人攻击.带来的风险有:

  1. 窃听风险: 第三方可以获知通信内容.
  2. 篡改风险: 第三方可以修改通信内容.
  3. 冒充风险: 第三方可以冒充他任身份进行通信.

使用SSL/TSL协议可以规避这些风险:

  1. 所有信息都是加密传播,第三方无法窃听。
  2. 具有校验机制,一旦被篡改,通信双方会立刻发现。
  3. 配备身份证书,防止身份被冒充。

基本的运行过程:

基本的运行过程是, 客户端先向服务器索要公钥, 然后用公钥加密信息, 服务器收到密文后, 用自己的私钥解密.
但是这里面有两个个问题:

  1. 如何保证公钥可信?

解决方法:
公钥放在数字证书中, 证书颁发机构作为公钥背书.

  1. 公钥加密计算量太大,效率不高.

解决方法:
每一次会话, 单独生成一个对话密钥(session-key), 用他来解密信息.
由于对话密钥是对称加密, 所以加密和解密速度都非常快.
服务器公私钥只用来加密解密对话密钥.

具体的流程:

开始加密通信之前,客户端和服务器首先必须建立连接和交换参数,这个过程叫做握手(handshake)。

假定客户端叫做爱丽丝,服务器叫做鲍勃,整个过程如下:

  1. 爱丽丝给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。
  1. 鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。
  1. 爱丽丝确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给鲍勃。
  1. 鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret)。
  1. 爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

其中关键是第三步, 由客户端生成的随机数, 使用公钥加密. 即使中间人获得这个数据, 因为没有私钥, 也无法获得通信内容.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容