理解HTTPS

news/2024/7/12 3:48:14 标签: https

为什么要有HTTPS

HTTPS的出现主要是为了解决HTTP协议在安全性上的不足

HTTP的不足

HTTP是被广泛使用的web协议,但其在安全性上存在以下不足:

  • 明文通信,内容可能被窃听
  • 不验证通信方身份,通信方可能是伪装的。
  • 不验证报文的完整性,报文可能被修改。

明文通信

进行web通信时,通信线路上的设备可能分布与世界上的任何角落,这些网络设备、光缆、计算机等很多都是公用的。在这种情况下,要抓取通信的报文并非难事。

HTTP使用明文通信,如果通信报文被抓取,通信的内容就很容易被解毒出来。因此会有信息被窃取的隐患。

不验证通信方的身份

HTTP协议本身比较简单,任何人都可以发起请求,任何人也都可以返回响应。

HTTP协议不会对请求和响应的通信方进行验证。对于客户端来说,它不能保证与它通信的服务器是否就是其请求的URI中指定的主机;对于服务器来说,也不能保证它的响应是否真正传递给了实际提出请求的客户端。

不验证报文的完整性

完整性,也可以认为是准确性。

HTTP报文在传输过程中会经过很多设备,这些设备经常是公用的。恶意的攻击这可以在这些设备转发报文时篡改报文的内容。

HTTPS

HTTPS可以有效解决刚刚提到的三个问题。我们先看下HTTPS的原理和通信过程,再讨论HTTPS是如何解决HTTP的三个缺点的。

基本概念

HTTPS并不是一种新的协议,而是把HTTP通信接口部分用SSL和TLS协议代替。

HTTP协议是直接与TCP通信。而HTTPS是HTTP通过SSL/TLS与TCP通信,即给HTTP协议加了一层外壳。从协议栈来看,是在应用层和传输层之间增加了安全层。

对称加密

加密和解密使用同一个密钥。

非对称加密

加密和解密使用不同的密钥。一般会把其中一个密钥公开,成为公钥。另一个自己保存,成为私钥。

混合加密

通信过程中既使用了对称加密,又使用了非对称加密。

一般是通过非对称加密做通信协商,协商出一套对称密钥,然后利用这套对称密钥传输数据。HTTPS通信中,对称密钥是利用随机数生成的,每个客户端都不一样,因此需要协商。

数字签名

HTTPS中,数字签名是根据消息内容生成的一串“只有自己才能计算出来的数值”。

数字签名是用来验证通信方身份的。

数字签名采用了非对称加密的方式,消息的发送方(服务器)使用私钥生成数字签名,消息的接收方利用发送方(服务器)提供的公钥验证数字签名,以此验证消息发送方的身份。

在数字签名的概念中,私钥是加密密钥,公钥是解密密钥。加密密钥为消息生成数字签名(指明消息的发送方身份),解密密钥验证数字签名。这里利用了“没有私钥的人无法生成使用该密钥所生成的报文”这一性质。

签名是可以被复制的,但这并不影响其发挥作用。因为数字签名是根据特定消息内容绑定在一起的,它是用来验证特定的消息最初的发送方是谁,一旦消息的内容跟原始内容不一致,数字签名就不能验证通过。

数字证书

数字证书其实就是为公钥加上数字签名。

对于Web通信来说,数字证书就是认证机构对服务器的公钥、服务器的基本信息等施加数字签名。

这里其实就涉及到三个角色:客户端、服务器、认证机构,以及两套非对称加密:客户端与服务器之间的,客户端与认证机构之间的(也就是有两对公、私钥)。

服务器有自己的私钥,然后把服务器的公钥交给认证机构;认证机构利用认证机构的私钥对服务器的公钥施加数字签名,客户端利用认证机构的公钥加密认证机构下发的证书,从而获得服务器的公钥。

通信开始前,三方要含有一下信息:

  • 服务器: 自己的私钥
  • 认证机构: 自己的私钥 + 服务器的公钥
  • 客户端:认证机构的公钥(即信任认证机构的证书,浏览器上一般都默认会信任很多认证机构的证书)

HTTPS通信过程

初始阶段:

  1. 客户主机安装客户端(如浏览器), 客户端内置了CA机构公钥。
  2. 服务端向CA机构上传自己的公钥,获取CA机构认证的数字证书。

连接通信阶段:

  1. 客户端要发起对服务端的请求。
  2. 服务端下发CA机构认证过的数字证书给客户端。
  3. 客户端利用内置的CA机构的公钥,对数字证书进行验证。并从数字证书中获取服务器公钥。
  4. 客户端使用服务器的公钥与服务器建立加密通信,协商数据通信时的加密算法和对称加密秘钥。
  5. 客户端和服务器使用协商的算法和密钥进行数据通信。

HTTP的三个问题是如何解决的?

  1. 明文通信问题:

    HTTPS的数据通信是使用了对称密钥进行加密的,只有知道密钥的人才能获取解读数据内容。而我们前面的分析看到对称密钥只有客户端和服务器知道。

  2. 身份认证问题:

    首先,客户端是从信任的认证机构获取到服务器的公钥的。这个公钥加密的密文只有对应的私钥能解密,而对应的密钥只有服务器有。因此,对与客户端而言,可以验证能够与之进行后续通信的只有服务器。

    另一方面,数据通信时的对称密钥是随机生成的,每个客户端都不一样,因此服务器可以以此验证客户端的身份。

  3. 报文完整性问题:

    既不能读取报文内容,也不能伪装成通信任何一方,那就不能篡改报文了。因此报文的完整性也可以得到保障。

一些问题


http://www.niftyadmin.cn/n/1078772.html

相关文章

解决多并发

http://msdn.microsoft.com/zh-cn/magazine/cc817398.aspx http://blog.csdn.net/heiyeshuwu/article/details/8619332 转载于:https://www.cnblogs.com/zhiji6/p/3682476.html

关于模态和振型的初步讨论

百度词典的英文翻译: 模态 ———— modal ; mode ;modality 振型 ————mode of vibration 百度百科对这两个名词的解释: 模态 …

微信支付实战(与支付宝和其他一些支付有些不一样)

微信支付组件项目地址(提供源码下载):https://webchatpay.codeplex.com/ 微信支付组件项目地址(提供源码下载):https://github.com/zhiji6/Yintai.Partner.WebChatPay 转载于:https://www.cnblogs.com/zhij…

开启Windows Server 2008 R2上帝模式

TAG标签: 摘要:这个“God Mode” 应该大部分的网友都听过了,只是在 Windows Server 2008 R2 上也支持此一功能。启用方式非常简单,在桌面新建一个文件夹,命名为: GodMode.{ED7BA470-8E54-465E-825C-9971204…

PowerDesigner使用教程

PowerDesigner是一款功能很强大的建模工具软件,足以与Rose比肩,相同是当今最著名的建模软件之中的一个。Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesigner则与其正好相反,它是以数据库建模起家…

EasyPR--开发详解(6)SVM开发详解

在前面的几篇文章中,我们介绍了EasyPR中车牌定位模块的相关内容。本文开始分析车牌定位模块后续步骤的车牌判断模块。车牌判断模块是EasyPR中的基于机器学习模型的一个模块,这个模型就是作者前文中从机器学习谈起中提到的SVM(支持向量机&…

配置VS代码生成工具ReSharper快捷键

VS代码生成工具ReSharper提供了丰富的快捷键,可以极大地提高你的开发效率。安装ReSharper后首次启动Visual Studio时,会出现一个名为ReSharper Keyboard Scheme的对话框,如下图所示: 选择对话框提供的三个选项之一后的任何时候&am…

ActivePerl shellcode

Windows下 ActivePerl 0A ---> 0D 0A shellcode 转载于:https://www.cnblogs.com/ppmars/p/4272136.html