面试官让我白话一下HTTPS,用一句话就说清楚了

开发 前端
通过数字证书和非对称加密建立SSL连接,生成并传递对称加密所使用的的密钥。后续的HTTP通信就使用对称加密来保护内容。保证安全的同时也提高了效率。

[[328666]]

1.从加密算法说起

非对称加密:

简单说一句话:公钥加密的密文只能用私钥解密,私钥加密的密文只能用公钥解密。

私钥可以生成公钥,但是公钥几乎无法反推出公钥。

面试官让我白话一下HTTPS,我用一句话就说清楚了

举个例子:

任意想一个3位数,并把这个数和91相乘,然后告诉我积的最后三位数,我就可以猜出对方想的是什么数字!

比如123,计算出123 * 91等于11193,并把结果的末三位193告诉我。

这时候我只需要把对应的结果再乘以11,乘积的末三位就是刚开始想的数了。可以验证一下,193 * 11 = 2123 =》 123

原理非常简单,91乘以11等于1001,而任何一个三位数乘以1001后,末三位都不变。(当然随便你用2001、3001 只要你可以因式分解开)

根据这个原理,我们可以构造一个加密数值更大的加密解密系统。比方说,任意一个数乘以10000000001后,后10位都不会变,然后用计算机对10000000001进行因式分解,一个十位不对称加密系统就构造好了。

对称加密

加密、解密使用的相同的密钥,常见对称加密DES、AES等

小结

对称加密相比非对称加密算法来说,加解密的效率要高得多、加密速度快。但是缺陷在于对于密钥的管理和分发上比较困难,不是非常安全,密钥容易被丢失或者窃取。相对来说非对称加密只公开公钥,自己保管私钥会更加安全。

2.HTTPS原理

HTTP协议的缺点

  • 明文通信-内容会被监听
  • 不验证通信方身份-可能会遭遇伪装
  • 不验证内容的完整性-内容被篡改

HTTPS 简介

HTTPS 协议(HyperText Transfer Protocol over Seure Socket Layer)可以理解为 HTTPS = HTTP + SSL/TLS,通过SSL/TLS来增加HTTP的安全性。

面试官让我白话一下HTTPS,我用一句话就说清楚了

SSL(TLS)

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

证书

为什么需要第三方颁发证书?

服务端向客户端发送的公钥依旧会被劫持,传输内容依旧会被解密。劫持者可以用自己的私钥生成一把新的公钥,修改内容后用自己的私钥进行加密,再把修改后的内容以及自己生成的公钥发送给客户端。所以需要引入第三方机构颁发证书。

面试官让我白话一下HTTPS,我用一句话就说清楚了

3.一次完整的HTTPS通信

一句话概括

通过数字证书和非对称加密建立SSL连接,生成并传递对称加密所使用的的密钥。后续的HTTP通信就使用对称加密来保护内容。保证安全的同时也提高了效率。

  1. 客户端第一次向服务端进行请求建立SSL连接。
  2. 服务端返回CA颁发的数字证书,其中也包含了非对称加密的密钥。
  3. 与服务端建立连接以后,客户端会发送一个随机密码串称为Pre-master secret(用公钥加密) - 此时该密码串只有服务端可以解密
  4. 服务端通过私钥解密出Pre-master secret,并通过一定算法计算出对称加密(一般是AES算法)的密钥master (客户端也会用同样的算法计算这个master)
  5. SSL连接建立成功,进行HTTP通信,并使用AES 对称算法对内容进行加解密。
面试官让我白话一下HTTPS,我用一句话就说清楚了

4.HTTPS一定安全吗

HTTPS 的数据是加密的,常规下抓包工具代理请求后抓到的包内容是加密状态,无法直接查看。

但是,只要客户端授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理。

通常 HTTPS 抓包工具(Charles)的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。

HTTPS 可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密,同时做好移动端的防反编译加固,防止本地算法被破解。

 

责任编辑:庞桂玉 来源: 今日头条
相关推荐

2015-08-03 10:21:04

设计模式表达

2023-09-05 23:34:52

Kubernetes云原生

2020-11-27 09:57:11

Python代码PyPy

2018-01-15 10:45:43

社交网络互联网巨头百度

2023-12-13 21:50:59

腾讯AI模型

2010-03-29 11:55:12

无线上网报错

2023-05-08 15:44:23

3D数字人

2022-12-12 13:45:46

模型修图

2019-03-27 09:31:36

互联网面试技术

2019-08-15 11:42:56

程序员电脑软件

2014-05-07 10:47:51

移动金融互联网金融GMIC

2020-12-16 10:43:44

PythonPyPy代码

2023-08-25 17:10:14

LLM人工智能

2011-06-03 16:42:47

SEO

2014-12-16 08:58:17

甲骨文Oracle数据库选件

2023-09-06 15:23:30

Docker容器K8S

2013-05-10 10:56:09

2022-09-30 15:35:43

AI视频

2024-02-08 09:33:37

苹果AI

2011-11-01 07:23:59

乔布斯悼文
点赞
收藏

51CTO技术栈公众号