HTTPS

HTTPS

Http的缺点

明文通信,内容可能被窃听

​ HTTP本身不具备加密的功能,所以也无法对使用HTTP协议同通信的请求和相应的内容进行加密。即HTTP报文使用铭文的方式发送。

TCP/IP是可能被监听的网络

​ 按照TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窃听。即使已经加密处理过的通信,也会被窃听到通信内容,这和未加密的通信时相同的。只是说如果通信经过加密,就有可能让人无法破解报文信息的含义,但加密处理后的报文信息本身还是会被看到。

图1

加密处理防止被窃听

通信的加密

​ HTTP协议中没有加密机制,但可以通过和SSL(安全套接层)或TSL(安全层传输协议)组合使用,加密HTTP的通信内容。

用SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信了。与SSL组合使用的HTTP被称为HTTPS(超文本传输安全协议).

图2

服务器与客户端建立安全的通信线路之后开始通信

内容的加密

​ 将参与通信的内容本身加密的方式。即把HTTP报文里所含的内容进行加密处理。这种情况下,客户端需要对HTTP报文进行加密处理后再发送请求。

图3

​ 为了有效的内容加密,客户端和服务器必须同时具备加密和解密的机制。该方式不同于SSL或TLS将整个通信线路加密,同样有可能会被篡改。

无身份验证,可能遭遇伪装

​ Http协议中的请求和响应时不会对通信方进行确认。也就是,是否访问到URI中指定的主机,返回的响应是否真的返回到实际发出请求的客户端等都是问题。

任何人都可发送请求

图4

​ Http协议的实现非常简单,不论谁发送过来的请求都会返回响应,不确认通信方,会存在一下问题:

  • 无法确定请求发送至目标的Web服务器是否是按真实意图返回响应的那台服务器。有可能是已伪装的Web服务器。
  • 无法确定接受响应的客户端是否是按真实意图接受响应的客户端。有可能是伪装的客户端。
  • 无法确定正在通信的对方是否具备相应的访问权限。
  • 无意义的请求也会照单全收。(无法处理海量请求下的Dos(拒绝服务攻击)攻击)。
验证证书

​ SSL不仅提供加密处理,而且还是证书的方式,用于确定通信方。

​ 证书由值得信任的第三方机构颁发,用以争么服务器和客户端是实际存在的。由于伪造证书的困难程度很高,所以只要能确认通信方持有的证书,即可判断是否是真实的通信方。

图5

客户端只有证书即可完成个人身份的确认,也可用于对Web网站的认证环节。

报文的完整性无法保证,可能已被篡改
接受到的内容可能有误

​ Http协议无法证明通信报文的完整性。因此,在请求或响应送出之后直到对方接受之前的这段时间内,发送出的请求或响应内容遭到篡改,也无从得知。

​ 请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击。、

图6

防止篡改

​ Http可以通过MD5和SHA-1等散列值校验的方法或者用确认文件的数字前面来确定报文的完整性。但是这样的方式存在的问题是:

  • 浏览器无法自动帮用户检测,需要客户端手动下载验证。
  • MD5和PGP本身也可能被劫持篡改,用户无法意识到。

Http+加密+认证+完整性保护=Https

​ 为了解决上述存在的问题,需要在Http上再加入加密处理和认证等机制。这样的Http被称为Https(HTTP secure)。

图7

通常会在Web登录页面、结算页面等页面使用HTTPS通信。

Https是Http披上了SSL的外壳

​ Https并非一种新的协议,只是Http通信接口部分用SSL和TSL协议代替而已。

图8

​ 通常Http直接和TCP通信。当使用SSL时,则变成先和SSL通信,在由SSL和TCP通信。所以,HTTPS就是身披SSL协议外壳的HTTP。

​ 在采用了SSL之后,HTTP就拥有了HTTPS的加密、证书和完整性保护的功能。

SSL是独立的协议,所以除了HTTP之外的应用层协议(SMTP等)也可以配合使用。

密钥传输和非对称加密技术

​ 加密和解密都需要用到密钥,所以也可以说,只要有了密钥,就能进行解密了。所以密钥安全就尤为重要。

共享密钥的困难

​ 加密和解密使用同一个密钥的加密方式称为对称密钥加密。

图9

​ 对称密钥加密必须将密钥也发送给信息接收方,接收方才能进行解密得到正确的信息。但如果密钥被劫持,那么加密也是去了意义。

非对称加密技术

​ 非对称加密方式很好的解决了密钥共享的问题。SSL采用的就是非对称密钥加密的方式。

​ 非对称加密有一对密钥。一个为私钥,一个为公钥。其中私钥是除了自己之外的任何人都不可得知的。公钥则是可以随意发布的,任何人都可获得。

​ 非对称加密技术的特点是,发送密文方如果用公钥进行加密,那么只有私钥解密才能得到正确的信息。

图10

Https采用混合加密机制

​ Https采用对称加密和非对称加密两者并用的混合加密机制。充分利用两者各自的优势,将多种方法组合起来用于通信。在交换密钥环节使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式。

图11

证明非对称加密密钥正确性的证书

​ 为了保证非对称加密方式中,公钥的正确性(即得到的公钥是货真价实的公钥,没有被攻击者篡改),可以使用由数字证书认证机构和其他相关机构颁发的公开密钥证书。流程如下:

图12

  1. 服务器把自己的公钥登录至数字证书认证机构。
  2. 数字证书认证机构用自己的私钥对服务器的公钥进行签名并颁发公钥证书。
  3. 客户端拿到服务器的公钥证书,使用数字证书认证机构的公钥,向数字证书认证机构验证公钥证书上的前面,以确认服务器的公钥的真实性。
  4. 客户端使用服务器的公钥对报文进行加密后发送。
  5. 服务器使用私有密钥对报文进行解密。
https的安全通信机制

图13

  1. 客户端发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法和密钥长度等)。
  2. 服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本已经加密组件。服务器的加密组件内容是从接受到的客户端加密组件内筛选出来的。
  3. 之后服务器发送Certificate报文。报文中包含公钥证书。
  4. 最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。
  5. SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用第三步中的服务器公钥进行加密。
  6. 接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。
  7. 客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能正确解密该报文作为判断标准。
  8. 服务器同样发送Change Cipher Spec报文。
  9. 服务器同样发送Finished报文。
  10. 服务器和客户端的Finished报文交换完毕之后,SSL连接结算建立完成。当然,通信会受到SSL保护。从此后开始进行应用层协议的通信,即发送HTTP请求。
  11. 应用层协议通信,发送HTTP响应。
  12. 最后由客户端断开连接。断开连接时,发送close_notify报文。这部之后再发送TCP FIN报文来关闭TCP通信。

​ HTTPS安全可靠,但不能一直使用HTTPS。

  • 与纯文本通信相比,加密通信会需要更多的CPU和内存资源。
  • 解决证书的购买开销
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值