大家在网上冲浪的时候,经常会遇到下面这种情况,即提醒与该网站的链接不安全。
不安全的原因大部分盒友也都清楚,是因为使用了已经被淘汰的HTTP协议,而不是带有加密认证功能的HTTPS协议和HTTPS安全证书。那么这两类协议有什么区别?以及为什么要采用安全证书?我们先来探讨第一个问题。
HTTP和HTTPS的区别
HTTP协议是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议。即我们的谷歌浏览器是一个本地客户端,通过网址URL,从互联网服务器上下载数据,并呈现我们(网页)。
所谓协议,理解为一系列的规则和约定。就好像在一场游戏中,大家需要遵循共同的规则才能顺利进行游戏。互联网协议也是如此,它规定了计算机在网络中如何相互通信、交换数据的方式和格式。所谓超文本,盒友们最熟悉的应该就是 HTML 了,它本身只是纯文字文件,但内部用标签定义了多种多媒体链接,组成文字、图片、音频和视频等的混合体,含有“超链接”,能够从一个“超文本”跳跃到另一个“超文本”,形成复杂的非线性、网状的结构关系。
但是HTTP协议是不安全的,不包含加密和认证的部分,所有就诞生了HTTPS,HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层(后来改成了升级版的TLS,这里统一用SSL),HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是数字签名,确认网站的真实性。
下面从两个方面来介绍SSL/TLS带来的安全性,即:1.验证服务器的身份,2.浏览器和服务器之间的通信加密。
通信加密
证书体系是利用数字签名来构建的,数字签名需要用到非对称加密的知识,所以我们先谈谈第二个功能,即建立一个加密信道,我们先假设互联网服务器和我们的浏览器客户端已经认证了双方的身份,这时我们要引入公钥加密:
公钥加密:客户端和服务端均拥有一个公有密匙和一个私有密匙。公有密匙可以对外暴露,所有人都知道你的公钥,而私有密匙只有自己可见。 当我们想给A发消息时,我们使用A的公有密匙加密消息,只有对应的A的私有密匙才能解开。这样客户端在发送消息前,先用服务器的公匙对消息进行加密,服务器收到后再用自己的私匙进行解密。
公钥加密采用公有密匙和私有密匙的方式,解决了http中消息保密性问题,建立起来加密的通信信道。但是缺点也很明显,即公钥和私钥是通过数学算法生成的,常见的TLS签名使用RSA2048或者椭圆曲线,加密的速度和加密的规模都是很大的,非常的麻烦,所以还要引入对称加密:
在对称加密中,加密和解密使用相同的密钥。这就好比有一把锁和一把钥匙,用这把钥匙把锁锁上,然后再用这把钥匙来开锁。
对称加密的优点是加密和解密速度快,效率高。例如,在大量数据需要加密传输的情况下,能迅速完成加密工作。
对称加密的性能相对对称加密来说会慢上几倍甚至几百倍,比较消耗系统资源。正是因为如此,https将两种加密结合了起来,也就引入了第一部分,数字签名与证书。
数字证书
为了应对上面非对称加密带来的效率问题,HTTPS协议引入了数字证书与数字签名
数字签名与公钥加密原理类似,也是有公钥和私钥,签名者使用自己的私钥对消息进行处理,生成一个独特的签名。接收者则使用发送者的公钥来验证这个签名。如果验证通过,就可以确认消息的来源和完整性。例如,在电子合同签署中,一方使用自己的私钥对合同内容进行签名,另一方收到后用对应的公钥验证,就能确定合同来自对方且内容未被改动。
一些具有广泛公信力的组织(称之为CA)会为网站签发数字安全证书,具体过程是CA 会把持有者的公钥、⽤途、颁发者、有效时间等信息使⽤CA⾃⼰的私钥将其签名,⽣成 Certificate Signature,也就是 CA 对证书做了签名;
CA(证书颁发机构):负责颁发、管理和撤销数字证书,具有权威性和公信力。 RA(注册机构):接收证书申请、验证身份信息并传递给 CA。 VA(验证机构):负责验证数字证书的有效性和状态。
而通常浏览器和操作系统中集成了这些CA 的公钥信息,浏览器收到证书后可以使⽤ CA 的公钥对网站的 暑期前面进行认证,来判断该网站是否是合法的交互方。即如果我们信任CA,那么我们就应该信任这个网站服务器。
通过这种授权认证和数字签名的手段,我们就可以在建立加密信道之前判断对方的身份,避免遭受到攻击。
因此,在一开始,客户端向服务器端索要证书并验证公钥,双方通过密钥协商(最简单的例子就是用公钥加密的方法去加密对称密钥,传递给对方)生成”对话密钥”,该密钥为对称加密使用的密钥,双方使用对称加密来进行加密通信,这样就避免了公钥加密的效率问题,同时避免了对称密钥密钥保密和分发的问题。
当然,真实的TLS算法比这个流程更加复杂且,通常为密钥交换算法 + 签名算法 + 对称加密算法 + 摘要算法,比如使用 ECDHE 算法(基于离散对数的公钥加密算法)进行密钥交换,用 RSA (基于因子分解的公钥算法)签名和身份认证,握手后的通信使用 AES 对称算法(基于置换和混淆的对称加密算法)。
有什么缺点?
虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处,主要是两点,一是慢,二是贵
虽然说上面看起来还蛮快的,但是相比不交换证书以及通信不加密的HTTP,HTTPS要慢的多,在《HTTP与HTTPS的区别,详细介绍[通俗易懂]》提到,HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电。
另外,证书肯定是要花钱的,常见的https证书包括DVSSL证书(域名验证)、OV SSL证书(组织验证)和EV SSL证书(扩展验证)。我简单搜了一下,似乎DV证书价格相对较低,通常在几百元之间。OV证书需要验证企业身份,价格在几百至几千不等。而EV证书则是安全性最高的证书,价格在数千元以上。而且证书这东西有“保质期”,需要年年找CA续费,所以这也造成一些小网站仍在使用HTTP协议(比如我们山大的青春山大网站)
总结一下,网站的安全认证和签名使用了密码学中的数字签名以及公钥加密/对称加密算法,保障了网站内容不被恶意篡改。
参考自:
HTTP与HTTPS的区别 – 爱笑的蛙蛙 – 博客园
HTTP与HTTPS的区别,详细介绍[通俗易懂]-全栈程序员站长-腾讯云
HTTP 与 HTTPS 的区别-菜鸟教程
更多游戏资讯请关注:电玩帮游戏资讯专区
电玩帮图文攻略 www.vgover.com