博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解HTTPS
阅读量:5971 次
发布时间:2019-06-19

本文共 1063 字,大约阅读时间需要 3 分钟。

HTTP+加密+认证+完整性保护=HTTPS

最近在看《图解HTTP》总结了一下HTTPS。

基础决定你可能达到的高度,而业务决定了你的最低瓶颈,两者不可偏颇。——技术最前沿

  • 加密


通常, HTTP协议承载于TCP协议之上,HTTPS则在HTTP和TCP之间添加一个安全协议层SSL(Secure Socket Layer)、TSL(Transport Layer Security)。当使用SSL时,则变成先和SSL通信,再由SSL和TCP通信。

  • 非对称加密

SSL使用两把密钥进行加密。公开密钥随意发布。发送密文的一方使用对方公开的密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

总结:这种加密比较复杂不容易被破解,但是需要复杂的通信方式。无法证明公开密钥本身就是货真价实的公开密钥(后面会介绍https解决方案)

  • 对称加密

共享密钥:加密解密使用共同的一套秘钥。

总结:这种加密简单但是特别容易被破解。如果攻击者使用“中间人攻击”即在通信的时候监听你的拦截你的通信信息,就可以知道你发送的秘钥。

公开密钥加密处理起来比共享密钥加密更为复杂,因此若在通信时使用公开密钥加密的方式,效率就很低。

HTTPS采用混合加密。在交换密钥环节使用公开密钥加密方式,之后建立的通信交换报文阶段则使用共享密钥加密方式。

示例:https->(验证时期)采用公共秘钥加密->(通信时期)采用共享秘钥加密通信

  • 认证


上面说道了公开加密的缺点:使用公开密钥存在一个问题:无法证明公开密钥本身就是货真价实的公开密钥。

  1. 为了解决此问题,可以使用由数字证书机构CA和其相关机构颁发的公开密钥证书。

  2. 在申请到数字证书之后,服务器在收到通过HTTPS的访问请求时,会将这份由认证机构颁发的公钥证书发送给客户端。

  3. 接到证书的客户端可以使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一,认证服务器的公开密钥是真实有效的数字证书认证机构。二,服务器公开密钥是值得信赖的。

  4. 为了保认证机构的公开密钥安全转交给客户端,多数浏览器选择在内部植入常用认证机关的公开密钥,问题得以解决。


  • 完整性保护


HTTPS的通信步骤较HTTP复杂很多,在完整性保护方面,应用层发送数据时会附加MAC(Message Authentication Code)的报文摘要。MAC能够查知报文是否遭到篡改,从而保护报文的完整性。

转载地址:http://onzox.baihongyu.com/

你可能感兴趣的文章
浅析面向对象开发
查看>>
Hystrix降级逻辑中如何获取触发的异常
查看>>
【跃迁之路】【535天】程序员高效学习方法论探索系列(实验阶段292-2018.07.25)...
查看>>
mac系统下git、mysql、nginx、php的环境搭建
查看>>
JavaScript面向对象编程——Array类型
查看>>
让IE兼容background-size的方法_background-size ie下使用
查看>>
中国发布自主开发的域名系统基础软件 “红枫”
查看>>
优秀程序员必须知道的32个算法,提高你的开发效率
查看>>
在WPF中实现平滑滚动
查看>>
java并发编程实践 part 01 --> 线程创建方式
查看>>
PHP查看PECL模块包含的函数
查看>>
dedecms上传图片不自动改名,以利于seo图片优化
查看>>
Java新手小程序之三
查看>>
我的友情链接
查看>>
Spring Web Application Security
查看>>
grant&revoke
查看>>
leveldb demo
查看>>
VMware网络配置详解
查看>>
再学 GDI+[83]: TGPImage(3) - 平行四边形变换
查看>>
Linux vmstat命令实战详解
查看>>