[ 网络协议篇 ] 一篇文章让你掌握什么是 HTTPS ?
Posted _PowerShell
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 网络协议篇 ] 一篇文章让你掌握什么是 HTTPS ?相关的知识,希望对你有一定的参考价值。
HTTP 和 HTTPS 是老生常谈的问题,无论是在校学习还是找工作,老师和面试官几乎都会问道HTTP 是什么?HTTPS 是什么?他们有什么区别 ?
其实学好 HTTP 和 HTTPS 是很重要的,有利于我们后续的学习和参加工作。相信平时上网的时候也很少有人关注这个问题,只是知道计算机网络里 HTTP 的概念。
其实这一块的知识延伸很广,还需要了解加密算法和 SSL 协议。
未来几篇文章我们就来聊一聊这几个问题,相信仔细看完,会有很大收获。
目录
一、什么是HTTPS ?
HTTPS 全称:Hyper Text Transfer Protocol over SecureSocket Layer。即超文本传输安全协议,是一种网络安全传输协议。由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。常称为 HTTP over TLS,HTTP over SSL 或 HTTP Secure。
是以安全为目标的 HTTP 通道,在 HTTP 的基础上通过传输加密和身份认证保证了传输过程的安全性。
HTTPS占用443端口通讯,在计算机网络上,HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。
也就是说:HTTPS 在 HTTP 的基础下加入SSL ,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
二、为什么要有 HTTPS ?
1. HTTP存在缺点(不安全)
HTTP 虽然使用极为广泛,但是却存在不小的安全缺陷:
数据的明文传送、消息完整性检测的缺乏
而这两点恰好是网络支付,网络支付等新兴应用中安全方面最需要关注的。
1. 针对明文传输攻击手段
关于 HTTP 的明文数据传输,攻击者最常用的攻击手法就是网络嗅探,试图从传输过程当中分析出敏感的数据,例如管理员对 web 程序后台的登录过程等等。
从而获取网站管理权限,进而渗透到整个服务器的权限。
即使无法获取到后台登录信息,攻击者也可以从网络中获取普通用户的隐秘信息,包括手机号码,身份证号码,信用卡号等重要资料,导致严重的安全事故。
进行网络嗅探攻击非常简单,对攻击者的要求很低。
使用网络发布的任意一款抓包工具, 一个新手就有可能获取到大型网站的用户信息。
2. 针对未校验数据完整性的攻击
HTTP在传输客户端请求和服务端响应时,唯一的数据完整性检验就是在报文头部包含了本次传输数据的长度,而对内容是否被篡改不作确认。
因此攻击者可以轻易的发动中间人攻击,修改客户端和服务端传输的数据,甚至在传输数据中插入恶意代码,导致客户端被引导至恶意网站被植入木马。
2. HTTPS 达到的目标
HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。
设计目标主要有三个:
1. 数据保密性:
2. 数据完整性:
及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收。
3. 身份校验安全性:
保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方
三、工作原理(HTTP加入SSL证书)
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。
TLS/SSL 协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS / SSL中使用了非对称加密,对称加密以及HASH算法。
1. 握手过程的具体描述如下:
1. 浏览器将发送自己的加密规则
浏览器将自己支持的一套加密规则发送给网站。
2. 网站选择加密规则,回复证书
网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3. 浏览器获得网站证书之后浏览器的操作:
1. 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
2. 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
3. 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4. 网站接收浏览器发来的数据之后网站要做的操作:
1. 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
2. 使用密码加密一段握手消息,发送给浏览器。
5. 浏览器解密HASH进行验证
浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
6. 注意:
这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。
2. HTTPS一般使用的加密与HASH算法如下:
这里不过过多介绍,想详细了解的可以看:
虚拟专用网的五种技术里面的加解密技术详细讲解了加密算法
1. 非对称加密算法:RSA,DSA/DSS
2. 对称加密算法:AES,RC4,3DES
3. HASH算法:MD5,SHA1,SHA256
3. 数据包过程
注意:公钥数字证书 = 数字证书 = CA证书
公钥数字签名 = 数字签名
HTTPS所使用到的数字证书是SSL证书(下一篇文章将详细介绍数字证书)
1. 关键点:公钥数字证书(数字证书、CA证书)
2. 公钥数字证书是怎么生成的 ?
站点运维人员生成非对称密钥(私钥公钥)向CA机构提交信息,CA机构验证信息。生成公钥数字证书。
3. 公钥数字证书包括什么 ?
公钥数字证书包括:公钥、组织信息、CA信息、有效时间、证书序列号、签名算法、同时生成一个签名(数字签名)
4. CA信息包括什么 ?
CA信息:CA机构颁发的。包括CA机构信息、包括CA机构的公钥
5. 签名步骤:
hash(拟用于申请证书所提交的明文信息)= 信息摘要
将提交的信息做一个信息摘要 防止篡改
CA再使用CA机构的私钥对信息摘要进行加密,密文就是数字签名
数字签名包含在公钥数字证书里面
站点运维人员再把它部署在服务器上面
6. 浏览器如何验证数据 ?
浏览器验证数据:这时候的公钥就不单单是一个公钥了是一个公钥数字证书(有很多信息组成)(CA信息 公钥用户信息 公钥 权威机构签名 有效期)
第五个包 浏览器收到公钥数字证书之后还需要完成一个验证的操作
服务器拿到了数字证书,就拿到了,公开的信息
公钥数字证书里面包括了一个 签名算法 就可以利用签名算法 对公开信息进行加密
得到信息摘要 再通过公钥数字签名里面的CA信息(包含CA机构的公钥)利用公钥对数字签名进行解密 通过浏览器自己得到的摘要 和解密得到的摘要进行兑对比
如果两个信息摘要是一致的 说明这个证书是正确的没有被篡改的
7. 谁来验证CA信息呢?
由上级权威机构验证,权威机构由根CA机构验证
我们再进行CA证书的部署的时候部署的是一个公钥的证书链,不是说只有一个证书(谁给他颁发的,上级是谁颁发的)。
但是不会包含根证书,根证书是内置在浏览器里面的(或者说内置在操作系统里面的(这个是一定不能有问题的)(由操作系统来保障它的安全))
8. 公钥数字证书生成过程图示:
四、HTTPS 的优缺点
1. 优点
1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
2. HTTPS 协议是由 SSL+HTTP 构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性
。
2. 缺点
1. 资源消耗大
相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗。
2. 并非绝对安全
HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
3. SSL 证书的信用链问题
最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
4. 成本增加
部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗。
例如: SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。
随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。
五、专栏分享
每个专栏都在持续更新中~~~
写在最后:
HTTPS其实是一个很广的东西,要学明白得花点功夫。
以上是关于[ 网络协议篇 ] 一篇文章让你掌握什么是 HTTPS ?的主要内容,如果未能解决你的问题,请参考以下文章