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

为什么HTTPS比HTTP更安全

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

【.com原稿】前言近年来,互联网发生了翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,正在逐渐被HTTPS协议取代.在引擎、CA机构、大型互联网公司的共同推动下,互联网迎来了“HTTPS加密时代”。HTTPS将在未来几年内完全取代HTTP成为主流传输协议。看完这篇文章,希望你能明白:HTTP通信存在哪些问题?HTTPS如何改善HTTP的这些问题?HTTPS的工作原理是什么?使用HTTPS通信机制可以有效的避免这些问题。接下来,我们先了解一下HTTP协议存在哪些问题:1、通信采用明文(未加密),内容可能被窃听。由于HTTP本身不具备加密功能,所以也不可能对整个通信(使用HTTP协议通信的请求和响应的内容)进行加密。也就是说,HTTP消息以明文形式发送(指未加密的消息)。此外,互联网由连接世界各地的网络设施组成,所有通过某些设备发送和接收的数据都可能被拦截或窥探。比如大家熟悉的抓包工具:Wireshark,它可以获取HTTP协议的请求和响应的内容,并进行分析。即使是加密的,人们可能无法破译消息信息的含义,但加密后的消息本身还是会被看到。2.通讯方身份未经验证,存在被伪造的可能。HTTP协议中的请求和响应不会确认通信方。HTTP协议通信时,由于没有确认通信方的处理步骤,任何人都可以发起请求。另外,只要服务器收到请求,不管对方是谁,都会返回一个响应(但前提是发送方的IP地址和端口号不受Web服务器的限制)。HTTP协议本身的实现非常简单,无论是谁发出请求都会返回响应,所以如果通信方没有确认,就会存在以下隐患。例如,目标网络服务器可以是伪装的网络服务器。3.无法证明消息的完整性,因此可能被篡改。所谓完整性,是指信息的准确性。无法证明其完整性通常意味着无法确定信息是否准确。由于HTTP协议无法证明通信报文的完整性,因此在请求或响应发出后到对方收到之前的这段时间里,即使请求或响应的内容是否被篡改,也无从知晓。换句话说,没有办法确定发送的请求/响应和接收到的请求/响应来回是相同的。2、什么是HTTPSHTTPS,就是在HTTP上建立一个SSL加密层,对传输的数据进行加密。它是HTTP协议的安全版本。它现在广泛用于万维网上对安全敏感的通信,例如交易支付。HTTPS的主要功能是:(1)对数据进行加密,建立信息安全通道,保证数据在传输过程中的安全;(2)验证网站服务器的真实身份。我们经常在Web登录页面和购物支付屏幕上使用HTTPS通信。使用HTTPS通信时,请使用https://而不是http://。另外,当浏览器访问HTTPS通信有效的网站时,浏览器的地址栏会出现一个锁定标记。HTTPS的显示方法可能因浏览器而异。3、HTTPS是如何解决HTTP的以上三个问题的?HTTPS在应用层并不是一个新的协议。只有HTTP通信接口部分被SSL(安全套接字层)和TLS(安全传输层)协议取代。通常,HTTP直接与TCP通信。在使用SSL时,演变为先用SSL通信,再用SSL和TCP通信。简而言之,所谓HTTPS,其实就是包裹在SSL协议外壳中的HTTP。由于采用了SSL,HTTP具有HTTPS的加密、证书和完整性保护特性。也就是说,HTTP加上加密处理、认证和完整性保护就是HTTPS。HTTPS协议的主要功能基本上依赖于TLS/SSL协议。TLS/SSL的功能实现主要依赖哈希函数、对称加密和非对称加密三类基本算法,利用非对称加密实现身份认证和密钥加密。协商,对称加密算法使用协商的密钥对数据进行加密,并根据哈希函数验证信息的完整性。(一)解决内容可能被窃听的问题——加密方式1.对称加密这种方式使用相同的密钥进行加密和解密。加密和解密都使用密钥。密码没有密钥就无法解密,反之,任何人只要有密钥就可以解密。使用对称加密进行加密时,还必须将密钥发送给对方。怎样才能安全移交?当密钥在互联网上转发时,如果通信被拦截,密钥就可能落入攻击者手中,同时也就失去了加密的意义。另外,请尽量妥善保管收到的密钥。方法二、非对称加密公钥加密使用一对非对称密钥。一个称为私钥,另一个称为公钥。顾名思义,私钥不能被其他任何人知道,而公钥可以随意发布,任何人都可以获得。使用公钥加密方式,发送密文的一方使用对方的公钥进行加密,对方收到后使用自己的私钥对加密信息进行解密。这样就不需要发送用于解密的私钥,也不用担心密钥被攻击者窃听窃取。非对称加密的特点是一对多的信息传输,服务端只需要维护一个私钥就可以与多个客户端进行加密通信。这种方法有以下缺点:公钥是公开的,黑客在截获私钥加密的信息后,可以用公钥解密,获取内容;公钥不包含服务器信息,采用非对称加密算法,无法保证服务器身份的合法性,存在中间人攻击风险。服务端发送给客户端的公钥在传输过程中可能会被中间人拦截和篡改;使用非对称加密在数据加解密过程中需要一定的时间,减少了数据传输。效率;方式三、对称加密+非对称加密(HTTPS采用这种方式)。使用对称密钥的好处是解密效率比较快。使用非对称密钥的好处是传输的内容无法被破解,因为即使你截获了数据,但没有相应的私钥,你是无法解密内容的。比如你抢了一个保险柜,但是没有保险柜的钥匙是打不开保险柜的。然后我们将对称加密和非对称加密结合起来,充分利用它们各自的优势,在密钥交换环节使用非对称加密,在后续建立通信和交换消息的阶段使用对称加密。具体做法是:发送密文的一方用对方的公钥加密“对称密钥”,再由对方用自己的私钥解密得到“对称密钥”,这样可以保证信息安全在交换密钥的前提下,使用对称加密进行通信。因此,HTTPS采用了一种混合加密机制,既使用对称加密又使用非对称加密。(2)解决通信方身份可能被伪装的问题——数字证书非对称加密方式还存在一些问题。也就是说,无法证明公钥本身是真正的公钥。例如,准备与某台服务器建立公钥加密通信时,如何证明收到的公钥就是原先期望的服务器颁发的公钥。为了解决上述问题,可以使用数字证书认证机构(CA,CertificateAuthority)及相关机构颁发的公钥证书。数字证书认证机构处于客户端和服务器都信任的第三方位置。下面介绍一下数字证书认证机构的业务流程。首先,服务器运营商向数字证书认证机构申请公钥。数字证书认证机构在识别申请者的身份后,会对申请的公钥进行数字签名,然后分发签名后的公钥,并将公钥放入公钥证书中绑定到Together上。服务器将数字证书认证机构颁发的公钥证书发送给客户端进行非对称加密通信。公钥证书也可以直接称为数字证书或证书。收到证书的客户端可以使用数字证书证书颁发机构的公钥来验证该证书上的数字签名。一旦验证通过,客户端可以确认两件事:1.认证服务器的公钥是真实有效的数字证书认证机构。其次,服务器的公钥是可信的。(3)解决消息可能被篡改的问题——数字签名网络在传输过程中需要经过很多中间节点。虽然数据无法解密,但有可能被篡改。如何验证数据的完整性?----验证数字签名。数字签名有两个作用:可以确认消息确实是发件人签名发送的,因为其他人无法伪造发件人的签名。数字签名可以确认信息的完整性,证明数据是否未被篡改。验证数字签名的过程如下图所示:数字签名技术是“非对称密钥加解密”和“数字摘要”两种技术的应用。它使用发送方的私钥加密摘要信息并将其发送给接收方。接收方只能用发送方的公钥对加密后的摘要信息进行解密,然后利用HASH函数对接收到的原文生成摘要信息,并与解密后的摘要信息进行比较。如果相同,说明接收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,所以数字签名可以验证信息的完整性。四、HTTPS工作流程1、客户端发起HTTPS(https:/demo.linianhui.dev)请求。根据RFC2818的规定,客户端知道需要连接到服务器的443(默认)端口。2、服务器返回预先配置的公钥证书(publickeycertificate)给客户端。3.客户端验证公钥证书:例如是否在有效期内,证书的用途是否与客户端请求的站点匹配,是否在CRL撤销列表中,其上层是否证书有效。这是一个递归的过程,直到Verify到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过,则继续,如果验证失败,将显示警告信息。4、客户端使用伪随机数生成器生成用于加密的会话密钥,然后用证书的公钥加密会话密钥发送给服务器。5、服务器使用自己的私钥(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部署趋势是社会、企业、政府共同推动的。参考文章和书籍图解HTTPEverest架构教程(推荐)什么是数字签名?(推荐)浅谈HTTPSHTTPS原理详解详细讲解HTTPS如何保证安全?[信息安全]3.HTTPS工作流程为什么HTTPS比HTTP更安全看一篇文章了解HTTPS及其背后的加密原理乘风破浪:硕士在读,专注于前端。个人公众号:《前端工匠》,致力于打造一系列适合初中级工程师快速吸收的优质文章!【原创稿件,合作网站转载请注明原作者和出处为.com】