深入剖析HTTPS原理

我们都知道HTTPS比HTTP安全,也听说过与HTTPS相关的SSL、CA证书等。但是,你知道为什么使用了HTTPS就是安全的吗?了解HTTPS的底层实现原理吗?而使用了HTTPS就一定是安全的吗?

一、HTTPS实现原理
HTTPS协议之所以是安全的,是因为HTTPS协议会对数据进行加密处理,加密的过程使用的是非对称加密
简单介绍下加密算法,加密算法分为:对称加密非对称加密,其中对称加密算法加密与解密过程使用的是相同的密钥,非对称加密算法加密密钥与解密密钥不同,此外,还有一类不需要密钥的散列算法

常见的对称加密算法主要有DES、3DES、AES等,常见的非对称算法主要有RSA、DSA等,散列算法主要有SHA-1、MD5等。

HTTPS整体的过程可以分为:证书验证和数据传输阶段,其中,HTTPS 在数据传输的加密上使用的是对称加密非对称加密只作用在证书验证阶段,具体的交互如下所示:
在这里插入图片描述
1、证书验证阶段:

a) 浏览器发起HTTPS请求;
b) 服务端返回HTTPS证书;
c) 客户端,即浏览器验证证书的合法性。若不合法,则发出警告。

2、数据传输阶段:

a) 证书合法,在本地生成随机数;
b) 通过公钥加密随机数,并把加密后的随机数传输到服务端;
c) 服务端通过私钥对随机数进行解密;
d) 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。

二、数据传输阶段使用对称加密的原因
在HTTP的应用场景中,存在大量的端与端之间的交互,而非对称加密的加解密效率非常低,难以满足该场景下的需求。此外,HTTPS只有服务端保存了私钥一对公私钥只能实现单向的加解密。因此,HTTPS的数据传输阶段采用对称加密,而不是非对称加密。

三、为什么需要使用CA认证机构颁发的安全证书?
HTTP协议之所以被认为是不安全,是因为在传输过程中容易被监听者勾线监听、伪造服务器,而HTTPS很好地解决的网络传输的安全问题。
假设,存在这么一个场景,不存在认证机构,每个人都可以制作证书。则此时,会引起“中间人攻击”问题。其过程如下图所示:
在这里插入图片描述
上述过程可以这么通俗地理解:
a) 中间人拦截了客户端发送的请求,然后中间人返回自己的证书;
b) 此时,客户端收到了中间人发送的证书,它以为是服务端发来的,于是就利用发来的公钥加密自己的真实数据;
c) 现在,中间人就拦截了客户端的真实数据。而中间人为了不让客户端发现它的数据被拦截了,于是向真实的服务端发送数据,最后返回客户端需要的响应。

准确的过程原理如下:

1、本地请求被劫持(如 DNS 劫持等),所有请求均发送到中间人的服务器;
2、中间人服务器返回中间人自己的证书;
3、客户端创建随机数,通过中间人证书的公钥对随机数加密后传送给中间人,然后凭随机数构造对称加密算法,并对传输内容进行加密传输;
4、中间人因为拥有客户端的随机数,可以通过对称加密算法进行内容解密;
5、中间人以客户端的请求内容再向正规网站发起请求;
6、因为中间人与服务器的通信过程是合法的,正规网站通过建立的安全通道返回加密后的数据;
7、中间人凭借与正规网站建立的对称加密算法对内容进行解密;
8、中间人通过与客户端建立的对称加密算法对正规网站返回的数据进行加密传输;
9、客户端通过与中间人建立的对称加密算法对返回结果数据进行解密。

综上所述:由于缺少对证书的验证,即使客户端发起的是 HTTPS 请求,但客户端完全不知道自己的请求已被拦截,传输内容被中间人全部窃取。

四、HTTPS可能保证本地随机数不会被窃取吗?
证书验证阶段是采用非对称加密实现,但是传输过程阶段是采用对称加密,而其中对称加密算法中重要的随机数是在本地生成并存储于本地的,那HTTPS会保证随机数的安全吗?
其实 HTTPS 并不包含对随机数的安全保证,HTTPS 保证的只是传输过程安全,而随机数存储于本地。因此,保证本地随机数的安全是属于本地电脑安全的范畴,可采用的措施有:安装杀毒软件、反木马、浏览器升级修复漏洞等。

五、使用HTTPS,还存在被抓包的可能吗?
HTTPS的数据是加密的,常规的抓包工具代理请求后抓到的包内容是呈加密状态,无法直接查看的。

但是,若你在请求时,存在非法的CA证书,浏览器此时只会提示存在安全风险,如果你继续授权,仍然是可以继续访问并完成请求的。因此,当客户端是我们自己的终端时,在授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理。

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

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

总结Q&A:
Q:HTTPS安全的原因。

A:因为 HTTPS 保证了传输安全防止传输过程被监听防止数据被窃取,可以确认网站的真实性

Q:为什么需要证书?

A防止“中间人”攻击,同时可以为网站提供身份证明。

Q:使用 HTTPS 会被抓包吗?

A会被抓包,HTTPS只防止用户在不知情的情况下通信被监听,如果用户主动授权,此时是可以构建“中间人”网络,代理软件可以对传输内容进行解密。

原创文章 7 获赞 35 访问量 4402

猜你喜欢

转载自blog.csdn.net/weixin_41427129/article/details/105882741