当前位置: 首页 > 科技观察

你知道吗,HTTPS使用的是对称加密还是非对称加密?

时间:2023-03-19 21:50:46 科技观察

1。引言随着互联网安全意识的普遍提高,在对安全性要求稍高的应用中,HTTPS的使用非常普遍。甚至在一年前,AppleInc.就将使用HTTPS作为APP在AppleAppStore上架的先决条件之一。所以不管是即时通讯还是其他应用,在网络安全意识增强的今天,很多场景使用HTTPS肯定是对的。对于即时通信的开发者来说,长连接使用TLS毫无疑问,短连接也使用HTTPS,但是我想问你一个基本的面对面的问题:HTTPS使用对称加密还是非对称加密加密??要回答这个问题,显然有必要重新梳理一下HTTPS的技术原理。本文将带你了解HTTPS是使用对称加密还是非对称加密,以及如何使用。2、HTTPS的灵魂拷问随着HTTPS建站成本的下降,现在大部分网站都开始使用HTTPS协议。我们都知道HTTPS比HTTP更安全,也听说过与HTTPS协议相关的概念包括SSL、非对称加密、CA证书等。但我可能无法回答以下灵魂三个拷问问题:1)为什么使用HTTPS是安全的?2)如何实现HTTPS的底层原理?3)使用HTTPS安全吗?别着急,本文将为您解答《HTTPS使用对称加密还是非对称加密?同时会从原理上讲解HTTPS的安全性,你也会同时明白上面的问题。3、HTTPS的实现原理大家可能听说过,HTTPS协议之所以安全,是因为HTTPS协议对传输的数据进行了加密,加密过程采用非对称加密实现。但实际上:HTTPS在内容传输的加密中采用了对称加密,非对称加密只是在证书验证阶段使用。HTTPS的整体流程分为证书验证和数据传输两个阶段。具体交互过程如下:①证书验证阶段:1)浏览器发起HTTPS请求;2)服务器返回HTTPS证书;3)客户端验证证书是否合法,如果不合法,会提示告警。②数据传输阶段:1)当验证证书有效时,在本地生成一个随机数;2)用公钥对随机数进行加密,并将加密后的随机数传送给服务器;3)服务端使用私钥验证随机数解密;4)服务端通过客户端传入的随机数构造对称加密算法,对返回结果的内容进行加密后再传输。4、为什么数据传输采用对称加密?首先:非对称加密的加解密效率很低,而且在http的应用场景中,端与端之间通常会有大量的交互,非对称加密的效率是不能接受的。另外:在HTTPS场景下,只有服务器保存私钥,一对公私钥只能实现单向加解密。因此,HTTPS中的内容传输加密采用对称加密,而不是非对称加密。5、为什么需要CA证书颁发机构颁发证书?HTTP协议被认为是不安全的,因为传输过程容易被监听者和伪造的服务器监听,而HTTPS协议主要解决网络传输的安全问题。首先,我们假设没有证书颁发机构,任何人都可以创建证书。由此带来的安全风险就是经典的“中间人攻击”问题。“中间人攻击”的具体过程如下:如上图所示,其过程原理如下:1)本地请求被劫持(如DNS劫持等),并将所有请求发送到中间人的服务器;2)中间人服务器返回中间人自己的证书;3)客户端创建一个随机数,用中介证书的公钥加密随机数,然后传输给中介,然后基于随机数构造对称加密,对传输内容进行加密;算法解密内容;5)中间商以客户请求的内容向正规网站发起请求;6)由于中间人与服务器的通信过程是合法的,正规网站通过建立的安全通道返回加密数据;7)中间人依靠与正规网站建立的对称加密算法对内容进行解密;8)中间人通过与客户端建立的对称加密算法对正则内容返回的数据进行加密传输;9)客户端通过与中间人建立的对称加密算法对返回结果进行加密数据解密。由于没有进行证书校验,虽然客户端发起了HTTPS请求,但客户端并不知道自己的网络已经被拦截,所有的传输内容都被中间人窃取了。6、浏览器如何保证CA证书的合法性?6.1证书包含哪些信息?1)发行人信息;2)公钥;3)公司资料;4)域名;5)有效期;6)指纹;1)首先:权威机构必须是经过认证的,不是随便什么机构都有资格颁发证书的,否则就不叫权威机构;2)另外:证书的可信度是建立在信任体系之上的,需要权威机构对证书进行信用背书,只要是权威机构生成的证书,我们就认为是合法的。因此,权威机构会对申请者的信息进行审核,不同级别的权威机构对审核的要求不同,所以证书也分为免费、廉价和昂贵。6.3浏览器如何验证证书的合法性?当浏览器发起HTTPS请求时,服务器会返回网站的SSL证书,浏览器需要对证书进行如下验证:1)验证域名、有效期等信息是否正确:证书包含这些信息,更容易完成验证;2)判断证书来源是否合法:每个颁发的证书都可以根据验证链找到对应的根证书。操作系统和浏览器会在本地存储权威机构的根证书,使用本地的根证书完成相应机构颁发的证书的来源验证。(如下图所示):3)判断证书是否被篡改:需要与CA服务器进行验证;4)判断证书是否被吊销:通过CRL(CertificateRevocationList)和OCSP(OnlineCertificateStatusProtocol在线证书状态协议),其中OCSP可以用在第三步减少与CA服务器的交互和提高验证效率。只有满足以上任一步骤,浏览器才认为证书有效。这里有一个问题我想了很久其实答案很简单:证书是公开的,如果我想发起中间人攻击,我从官网下载一个证书作为我的服务器证书,客户端肯定会认同这个证书是合法的,如何避免这种证书被冒用呢?其实这是在非加密对称的情况下使用公钥和私钥。中间人虽然可以拿到证书,但是无法拿到私钥。不可能从公钥计算出对应的私钥。即使中间人拿到了证书,也不能冒充Legitimateserver,因为客户端传入的加密数据是无法解密的。6.4只有证书颁发机构才能生成证书吗?如果浏览器没有提示安全风险,只能使用证书颁发机构颁发的证书。但是浏览器通常只会提示安全风险,并不会限制网站的访问,所以技术上任何人都可以生成证书,只要有证书就可以完成网站的HTTPS传输。比如早期的12306通过手动安装私有证书实现HTTPS访问:7.本地随机数被盗怎么办?证书验证采用非对称加密实现,但传输过程采用对称加密,对称加密算法中重要的随机数在本地生成并存储在本地。HTTPS如何保证随机数不被窃取?事实上,HTTPS不包括对随机数的安全保证。HTTPS只保证传输过程的安全,随机数存储在本地。本地安全属于另一个安全类别。对策包括安装杀毒软件、防木马、升级浏览器等。错误修复等。8.如果使用HTTPS,我会被捕获吗?HTTPS的数据是加密的。通常情况下,抓包工具代理请求抓包的内容是加密的,无法直接查看。但是,如前所述,浏览器只会提示存在安全风险,如果用户授权,仍然可以继续访问网站并完成请求。所以,只要客户端是我们自己的终端,我们授权了,就可以组成中间人网络,抓包工具就是中间人的代理。通常使用HTTPS抓包工具生成证书,用户需要手动将证书安装到客户端,然后终端发起的所有请求都通过证书完成与抓包工具的交互,然后抓包工具将请求转发到服务器,最终将服务器返回的结果在控制台输出后返回给终端,这样就完成了整个请求的闭环。既然HTTPS不能阻止抓包,那HTTPS还有什么意义呢?HTTPS可以防止用户在不知情的情况下在通信链路上被监听。不对主动信用包抓包操作提供保护,因为用户已经意识到这种场景下的风险。为防止数据包被抓包,需要采用应用层的安全防护,比如使用私有对称加密,同时做好移动端的反反编译加固,防止本地算法被泄露破解。九、本文小结以下以简短问答的形式对全文进行小结。问:为什么HTTPS是安全的?A:因为HTTPS保证传输安全,防止传输过程被监听,防止数据被窃取,可以确认网站的真实性。Q:HTTPS的传输过程是怎样的?A:客户端发起HTTPS请求,服务器返回证书,客户端验证证书。验证通过后,在本地生成一个修改对称加密算法的随机数,并通过证书中的公钥对该随机数进行加密传输给服务器,服务端通过私钥解密得到随机数,后续的数据交互通过对称加密算法进行加密和解密。问:为什么需要证书?A:防止“中间人”攻击,同时为网站提供身份证明。Q:使用HTTPS会不会被抓包?A:数据包将被捕获。HTTPS只是防止用户在他们不知情的情况下被监控。如果用户主动授信,就有可能建立一个“中间人”网络,代理软件可以对传输内容进行解密。好了,回到本文的主题,我们来总结回顾一下。Q:HTTPS使用对称加密还是非对称加密?Q:HTTPS使用对称加密进行内容传输加密,非对称加密只用在证书验证阶段。(本文同步发表于:http://www.52im.net/thread-2866-1-1.html)我方便贴一张学习过程图: