相关博客:https://www.cnblogs.com/chentianwei/p/9374341.html  (讲的更明白,有图)

HTTPS


7.1http的缺点

  1. 使用明文,内容会被窃听。
  2. 不验证通信方的身份,遭遇伪装。
  3. 无法证明报文完整性,可能被篡改。

7.11 通信被窃听

互联网上任何角落都存在被窃听的风险。

Packet Capture, Sniffer抓包和嗅探器,如广泛使用的Wireshark工具。

  • 通信加密: HTTP over SSL就是HTTPS。  增加了Secure Socket Layer安全套接层SSL。
  • 内容加密:报文主体进行算法加密(非整个通信线路的加密,有被破解的风险)

7.12 不验证,遭遇伪装

http协议由于不对身份验证,任何人都可以发送请求,所以留下各种隐患:

  • 伪装的服务器。无法确定请求是否发送到真正的目标服务器,可能请求被拦截,然后使用伪装的服务器返回响应。
  • 同样,客户端也有可能是伪装的。
  • 无法判定请求来自何方,(没有证书)
  • 服务器对无意义的请求也会接收,无法阻止海量的DoS攻击,(拒绝服务攻击:通过大量请求信息沾满服务器资源,导致真正的请求无法处理)

通过证书机构颁发的证书来验证身份是一种安全保障:

7.13 无法证明报文的完整性, 中间人攻击

Man-in-the-Middle attach中间人攻击: 攻击人会篡改请求和响应,让服务器和客户端之间的通信看起来仍是正常的,但实际已经被控制。

如何防止篡改:

常用的MD5和SHA-1等hash值校验的方法,和用来确认文件的数字签名方法,仍不能完全保障安全。

(见博客:6.66 Content-MD5首部)

MD5是单向函数生成的散列值。本身仍可能被篡改。因此必须使用HTTPS。

SSL提供了认证和加密处理, 摘要功能。


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

7.23 Public-key cryptography  公开密匙 密码算法

加密算法公开,但密匙是保密的。只有通过密匙,才能对密码解密。

双方使用这个算法对通信的内容进行加密和解密,以保障信息的安全。但是,

如何安全的把密匙传给对方?

这是对称加密算法的困境。(Common key crypto system 共享密匙加密系统)

答案:使用公开密匙加密算法。又叫做非对称密匙加密算法。

公开密匙由,一把private key和 任意多的公key组成。接收密文的一方持有private key,发送密文的一方持有公key。通过公key加密的报文,只有private key可以解开。

因此,服务器只需要把公key提供给客户端。

HTTPS的混合加密机制:

  1. 密匙交换环节:客户端获得公开密匙,通过非对称加密算法加密传输‘对称密匙’给服务器
  2. 通信交换报文环节:双方使用对称密匙加密方式,交换报文。

7.24证明公开密匙正确性的证书

客户端获得的公开密匙有可能被黑客调包了,客户得到的是假的公开密匙,怎么办?

答案:使用数字证书认证机构颁发的公开密匙证书。

服务器运营者申请数字证书的业务流程:

  申请->确认身份->对申请的公开密匙做数字签名->分配这个签名的公开密匙,并将密匙和证书绑定。

  1. 服务器把公钥和证书发给客户端。
  2. 客户端用数字证书认证机构的公开密匙对证书上的数字签名进行验证。
  3. 一旦验证通过,客户端即可安全的使用服务器的公开密匙了。

⚠️: 多数浏览器内部会有常用认证机构的公开密匙。

客户端也可以使用数字证书。在安全性极高的领域:如网上银行的网银登陆就使用了客户端证书。

扩展:认证机构的信誉第一,认证机构有被黑客入侵的事件发生。

7.25 HTTPS的安全通信机制

HTTPS的成本导致网站不会一直使用

  1. 加密消耗更多的cpu, cache
  2. 购买证书也是开销,一个证书600元/年。

SSL导致通信慢,和处理速度慢。比http慢2-100倍。

针对这一问题有专门的服务器来改善问题,不过这又是成本。

《图解Http》 HTTPS 安全协议的更多相关文章

  1. Https握手协议以及证书认证

    1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以 ...

  2. (转) HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手、TCP/IP协议基础、加密学)

    HTTP & HTTPS网络协议重点总结(基于SSL/TLS的握手.TCP/IP协议基础.加密学) 原文:http://blog.csdn.net/itermeng/article/detai ...

  3. 【密码学】Https握手协议以及证书认证

    1. 什么是https Https = http + 加密 + 认证 https是对http的安全强化,在http的基础上引入了加密和认证过程.通过加密和认证构建一条安全的传输通道.所以https可以 ...

  4. 安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法

    一.我们先在XML当中自定义一个webview(Second_layout.xml) 代码如下: <?xml version="1.0" encoding="utf ...

  5. https安全协议原理

    那么什么是HTTPS? HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议.HTTPS经由HTTP进行通信,但利用TLS来加密 ...

  6. 图解HTTP / HTTPS

    http://kb.cnblogs.com/page/155287/ 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议 ...

  7. 在window平台下,自己DIY编译OpenSSL,Libcurl ,来支持HTTPS传输协议

    1 缘起 原来就了解些libcurl,一直没有机会在项目实际使用libcurl.   恰好最近一个云存储的项目,服务器使用openstack 恰好我负责现在的一个云存储SDK c++版本的开发中. 与 ...

  8. TCP/IP,HTTP,HTTPS,WEBSocket协议

    我看看着挺多的,我暂时没时间自己写,有需要的请借鉴 http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247486927&id ...

  9. 【计算机网络】你真的了解HTTP(HTTPS)协议的这12个知识点吗

    HTTP协议 1. 介绍一下OSI七层参考模型和TCP/IP五层模型 1.1 OSI七层模型 1.2 TCP/IP五层模型 1.3 各层的设备 [各层设备] 1.4 各层对应协议 2. HTTP协议和 ...

随机推荐

  1. ArcGIS 10——地理数据库管理GIS数据

    写本文的最初意向是当前正在进行的项目中有实现ESRI版本化数据管理的功能模块,碰到一些棘手的问题,几经周折还是决定系统学习ArcGIS10的帮助文档.(文章摘抄的比较多) 地理数据库是用于保存数据集集 ...

  2. [转] Matlab编程规范(MATLAB Programming Style Guidelines)

    转自: Jerry Zitao Liu的博客 主要是参考了下面这篇文章,简洁总结在这里. MATLAB Programming Style Guidelines 简洁总结如下: 表示object的数量 ...

  3. Excel脱拽或者下拉公式时, 保持公式里单元格数字不变

    绝对引用 可以选中B1 用F4快捷键自己就给加绝对引用符号了 然后回车 复制或者拖拽

  4. Python: 字典列表: itemgetter 函数: 根据某个或某几个字典字段来排序列表

    问题:根据某个或某几个字典字段来排序Python列表 answer: 通过使用operator 模块的itemgetter 函数,可以非常容易的排序这样的数据结构 eg: rows = [ {'fna ...

  5. linux常用命令:chmod 命令

    chmod命令用于改变linux系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中的每 ...

  6. 常用linux命令:locate 命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...

  7. python进程join()函数理解

    Join()是主程序等我这个进程执行完毕了,程序才往下走  

  8. Kotlin语言Web库又添一虎将:Kweb

    Kweb是一个库,您可以利用它使用Kotlin编程语言轻松构建Web应用程序.从程序员的角度来看,它基本上消除了浏览器和服务器之间的分离.这意味着只操纵DOM的事件不需要进行服务器往返.由于Kweb是 ...

  9. bzoj1633 / P2875 [USACO07FEB]牛的词汇The Cow Lexicon

    P2875 [USACO07FEB]牛的词汇The Cow Lexicon 三维dp 它慢,但它好写. 直接根据题意设三个状态: $f[i][j][k]$表示主串扫到第$i$个字母,匹配到第$j$个单 ...

  10. Ubuntu下使用face_recognition进行人脸识别

    Face Recognition是一个基于Python的人脸识别库,在github上地址如下:https://github.com/ageitgey/face_recognition. 看着挺好玩,本 ...