当前位置: 首页 > Web前端 > HTML

如何深入理解HTTPS

时间:2023-04-02 12:59:45 HTML

的工作原理近年来,互联网发生了翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,正逐渐被HTTPS协议取代,在浏览器中,搜索在引擎、CA机构、大型互联网公司的共同推动下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来几年内全面取代HTTP,成为传输协议的主流。看完这篇文章,希望你能明白:HTTP通信存在哪些问题?HTTPS是如何改进HTTP的?HTTP有哪些问题?HTTPS的工作原理是什么?的安全版本。它现在广泛用于万维网上对安全敏感的通信,例如交易支付。HTTPS的主要功能是:(1)对数据进行加密,建立信息安全通道,保证数据在传输过程中的安全;(2)验证网站服务器的真实身份。我们经常在Web登录页面和购物支付屏幕上使用HTTPS通信。使用HTTPS通信时,请使用https://而不是http://。另外,当浏览器访问HTTPS通信有效的网站时,浏览器的地址栏会出现一个锁定标记。HTTPS的显示方法可能因浏览器而异。2、为什么需要HTTPSHTTP协议中可能存在信息窃取或身份伪装等安全问题。使用HTTPS通信机制可以有效的避免这些问题。接下来我们先了解一下HTTP协议存在哪些问题:通信采用明文(未加密),内容可能被窃听。由于HTTP本身不具备加密功能,因此无法对整个通信(使用HTTP协议通信的请求和响应的内容)进行加密。也就是说,HTTP消息以明文形式发送(指未加密的消息)。HTTP明文协议的缺陷是造成数据泄露、数据篡改、流量劫持、钓鱼攻击等安全问题的重要原因。HTTP协议无法对数据进行加密,所有的通信数据都是以明文形式“裸奔”在网络上。通过网络嗅探设备和一些技术手段,可以还原出HTTP报文内容。无法证明消息的完整性,因此可能会被篡改。所谓完整性,是指信息的准确性。无法证明其完整性通常意味着无法确定信息是否准确。由于HTTP协议无法证明通信报文的完整性,因此在请求或响应发出后到对方收到之前的这段时间里,即使请求或响应的内容是否被篡改,也无从知晓。换句话说,没有办法确定发送的请求/响应和接收到的请求/响应来回是相同的。通信方的身份未被验证,因此可能会遇到伪装。HTTP协议中的请求和响应不会确认通信方。HTTP协议通信时,由于没有确认通信方的处理步骤,任何人都可以发起请求。另外,只要服务器收到请求,不管对方是谁,都会返回一个响应(但前提是发送方的IP地址和端口号不受Web服务器的限制)。HTTP协议无法验证通信方的身份。都可以伪造假服务器来欺骗用户,实现用户无法察觉的“钓鱼诈骗”。相比之下,HTTPS协议相对于HTTP协议有以下优势(下面详细介绍):数据隐私:内容被对称加密,为每个连接生成唯一的加密密钥数据完整性:内容传输通过完整性验证来验证身份验证:第三方无法伪造服务器(客户端)身份三.HTTPS是如何解决HTTP的上述问题的呢?HTTPS在应用层并不是一个新的协议。只有HTTP通信接口部分被SSL和TLS协议取代。通常,HTTP直接与TCP通信。在使用SSL时,演变为先用SSL通信,再用SSL和TCP通信。简而言之,所谓HTTPS,其实就是包裹在SSL协议外壳中的HTTP。HTTP采用SSL后,具有HTTPS的加密、证书和完整性保护功能。也就是说,HTTP加上加密处理、认证和完整性保护就是HTTPS。HTTPS协议的主要功能基本依赖于TLS/SSL协议。TLS/SSL的功能实现主要依赖哈希函数、对称加密和非对称加密三类基本算法,利用非对称加密实现身份认证和认证。密钥协商,对称加密算法使用协商好的密钥对数据进行加密,并根据哈希函数验证信息的完整性。解决内容可能被窃听的问题——加密方式1.对称加密这种方式是使用相同的密钥进行加密和解密。加密和解密都使用密钥。密码没有密钥就无法解密,反之,任何人只要有密钥就可以解密。使用对称加密进行加密时,还必须将密钥发送给对方。怎样才能安全移交?当密钥在互联网上转发时,如果通信被拦截,密钥就可能落入攻击者手中,同时也就失去了加密的意义。另外,请尽量妥善保管收到的密钥。方法二、非对称加密公钥加密使用一对非对称密钥。一个称为私钥,另一个称为公钥。顾名思义,私钥不能被其他任何人知道,而公钥可以随意发布,任何人都可以获得。使用公钥加密方式,发送密文的一方使用对方的公钥进行加密,对方收到后使用自己的私钥对加密信息进行解密。这样就不需要发送用于解密的私钥,也不用担心密钥被攻击者窃听窃取。非对称加密的特点是一对多的信息传输。服务器只需要维护一个私钥就可以与多个加密的客户端通信。s这种方法有以下缺点:公钥是公开的,黑客在截获私钥加密的信息后,可以用公钥解密,获取内容;公钥不包含服务器信息,采用非对称加密算法,无法保证服务器身份的合法性,存在中间人攻击风险。服务端发送给客户端的公钥在传输过程中可能会被中间人拦截和篡改;使用非对称加密在数据加解密过程中需要一定的时间,降低了数据的安全性。传输效率;方式三、对称加密+非对称加密(HTTPS采用这种方式)。使用对称密钥的好处是解密效率比较快。使用非对称密钥的好处是传输的内容无法被破解,因为即使你拦截了数据,但是没有相应的私钥,你是无法解密内容的。比如你抢了一个保险柜,但是没有保险柜的钥匙是打不开保险柜的。那么我们将对称加密和非对称加密结合起来,充分利用它们各自的优势,在密钥交换环节使用非对称加密,在后续建立通信和交换消息的阶段使用对称加密。具体做法是:发送密文的一方用对方的公钥加密“对称密钥”,再由对方用自己的私钥解密得到“对称密钥”,这样可以保证信息安全在交换密钥的前提下,使用对称加密进行通信。因此,HTTPS采用了一种混合加密机制,既使用对称加密又使用非对称加密。解决消息可能被篡改的问题——数字签名网络在传输过程中需要经过很多中间节点。虽然数据无法解密,但有可能被篡改。如何验证数据的完整性?----验证数字签名。数字签名有两个作用:可以确认消息确实是发件人签名发送的,因为其他人无法伪造发件人的签名。数字签名可以确认信息的完整性,证明数据是否未被篡改。如何生成数字签名:首先对一段文本使用Hash函数生成消息摘要,然后用发送方的私钥加密生成数字签名,与原文一起发送给接收方。下一步是接收方验证数字签名的过程。验证数字签名过程:接收方只能用发送方的公钥对加密后的摘要信息进行解密,然后利用HASH函数对接收到的原文生成摘要信息,并与上一步得到的摘要信息进行比较。如果相同,说明接收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,所以数字签名可以验证信息的完整性。假设消息传递发生在科比和詹姆斯之间。詹姆斯将消息连同数字签名一起发送给科比。科比收到消息后,可以通过验证数字签名来验证收到的消息是詹姆斯发送的。当然,这个过程的前提是科比知道詹姆斯的公钥。问题的症结在于,和消息本身一样,公钥无法在不安全的网络中直接发送给科比,或者如何证明获得的公钥属于詹姆斯。此时需要引入证书颁发机构(CertificateAuthority,简称CA)。CA的数量不多,Kobe客户端内置了所有可信CA的证书。CA对James的公钥(和其他信息)进行数字签名以生成证书。解决通信方身份可能被伪装的问题——数字证书数字证书的认证机构处于客户端和服务端都可以信任的第三方机构的地位。介绍一下数字证书认证机构的业务流程:服务器运营商向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息,并申请认证;CA通过线上、线下等方式验证申请人提供信息的真实性,如机构是否存在、企业是否合法、是否拥有域名所有权等。;如果信息被批准,CA将向申请人颁发证明文件-证书。证书包含以下信息:申请人的公钥、申请人的组织信息和个人信息、发证机构CA的信息、有效期、证书序列号的明文等信息,还包括签名。签名生成算法:首先使用哈希函数计算公开明文信息的信息摘要,然后使用CA的私钥对信息摘要进行加密,密文即为签名;当客户端Client向服务器Server发送请求时,Server返回证书文件;client客户端读取证书中的相关明文信息,使用相同的哈希函数计算出信息摘要,然后使用对应CA的公钥解密签名数据,对比证书的信息摘要。如果一致,则可以确认证书的有效性,即服务器的公钥是可信的。客户端还将验证域名信息、有效时间等与证书相关的信息;客户端会内置可信的CA证书信息(包括公钥),如果CA不可信,则找不到对应的CA证书,证书也会被删除。判断违法。四、HTTPS工作流程1.Client发起HTTPS(如https://juejin.im/user/5a9a9c...)请求。根据RFC2818的规定,Client知道需要连接到Server的443(默认)端口。2、服务器返回预先配置的公钥证书(publickeycertificate)给客户端。3.客户端验证公钥证书:例如是否在有效期内,证书的用途是否与客户端请求的站点匹配,是否在CRL撤销列表中,其上层是否证书有效。这是一个递归的过程,直到Verify到根证书(操作系统内置的Root证书或者客户端内置的Root证书)。如果验证通过,则继续,如果验证失败,将显示警告信息。4、客户端使用伪随机数生成器生成用于加密的对称密钥,然后用证书的公钥加密对称密钥发送给服务器。5.Server使用自己的私钥(privatekey)解密报文,得到对称密钥。至此,Client和Server都拥有相同的对称密钥。6、服务端用对称密钥加密“明文内容A”发送给客户端。7、客户端使用对称密钥对响应的密文进行解密,得到“明文内容A”。8、客户端再次发起HTTPS请求,使用对称密钥对请求的“明文内容B”进行加密,然后服务端使用对称密钥对密文进行解密,得到“明文内容B”。5、HTTP和HTTPS的区别HTTP是明文传输协议,而HTTPS协议是由SSL+HTTP协议构建的网络协议,可以进行加密传输和身份认证,比HTTP协议更安全。关于安全,形容两者关系最简单的比喻就是卡车送货。HTTP下的送货车是敞开的,货物是暴露的。而https是封闭的集装箱车,安全性自然提高不少。HTTPS比HTTP更安全,对搜索引擎更友好,有利于SEO。谷歌和百度首先索引HTTPS页面;HTTPS需要SSL证书,而HTTP不需要;HTTPS标准端口443,HTTP标准端口80;HTTPS基于传输层,HTTP基于应用层;HTTPS在浏览器中显示绿色安全锁,HTTP不显示;6、为什么不是所有的网站都使用HTTPS既然HTTPS如此安全可靠,为什么不是所有的网站都使用HTTPS呢?首先,很多人仍然认为HTTPS的实现是有门槛的。这个门槛在于需要权威CA颁发的SSL证书。从证书选择、购买到部署,传统模式费时费力。其次,一般认为HTTPS比HTTP更消耗性能,因为加密通信比纯文本通信消耗更多的CPU和内存资源。如果每次通信都加密,会消耗大量的资源,而当它在一台计算机上传播时,可处理的请求数肯定会相应减少。但这种情况并非如此。用户可以通过优化性能和在SLB或CDN上部署证书来解决这个问题。举一个实际的例子,在“双十一”期间,淘宝、天猫这些都是HTTPS的,依然保证了网站和手机访问、浏览、交易等操作顺畅顺畅。通过测试发现,很多页面优化后的性能与HTTP相当甚至略有提升,所以HTTPS优化后其实并不慢。此外,其中一个原因是可以节省购买证书的成本。证书对于HTTPS通信必不可少。使用的证书必须从证书颁发机构(CA)购买。最后是安全意识。与国内相比,国外互联网行业的安全意识和技术应用相对成熟,HTTPS部署趋势是社会、企业、政府共同推动的。想了解更多前端知识,可以加小编微信:AAAcoding