深入理解HTTPS原理、过程

HTTP基本

我们经常会遇到页面被运营商插入小广告这种事情(数据被篡改),可想而知,HTTP是有多么不安全。
如何做到的?
只需要设定相应的DNS,做一个中间人攻击,再将修改后的数据返回。
那么:解决上面问题需要考虑哪些因素:

http安全需求

  • **加密**

    (客户端和服务器的对话是私密的,无须担心被窃听)

  • **服务器认证**

    (客户端知道它们是与真正的而不是伪造的服务器通信)

  • **客户端认证**

    (服务器知道它们是在与真正的而不是伪造的客户端通信)

  • **完整性**

    (客户端和服务器的数据不会被修改)

  • 效率(一个运行足够快的算法,以便低端的客户端和服务器使用)
  • 普适性(基本所有的客户端和服务器都支持这些协议)
  • 管理的可扩展性(在任何地方的任何人都可以立即进行安全通信)
  • 适应性(能够支持当前最知名的安全方法)
  • 在社会上的可行性(满足社会的政治文化需求),要有公众受信能力

HTTPS的设计的时候就主要考虑了以上的主要因素:
数据加密 –传输内容进行混淆

  • 非对称加密(也叫公钥加密)
  • 对称加密(也叫密钥加密) 身份验证 –通信双方验证对方的身份真实性
    数据完整性保护 –检测传输的内容是否被篡改或伪造
    因此切换使用HTTPS,就可以防止页面被运营商篡改问题。

https概念

是以安全为目标的HTTP通道,简单讲是HTTP的安全版

能做到的事情

  1. 数据加密 传输内容进行混淆
  2. 身份验证 通信双方验证对方的身份真实性
  3. 数据完整性保护 检测传输的内容是否被篡改或伪造

安全HTTP的实现

加密方式实现

  • 共享密钥加密 对称加密
  • 公开密钥加密

认证方式实现

  • 数字证书 附加在报文上的特殊加密校验码,如果传输的报文被篡改,则校验码不会匹配,因为校验码只有作者保存的私钥才能产生
  • 数字证书认证机构 客户端和服务器双方都可信赖的第三方机构

数据完整性

数字签名是只有信息发送者才能产生的别人无法伪造的一段文本,这段文本是对信息发送者发送信息真实性的一个有效证明,具有不可抵赖性。

  • 报文的发送方从报文文本生成一个128位的散列值(或称为报文摘要活哈希值),发送方使用自己的私钥对这个摘要值进行加密来形成发送方的数字签名。
  • 然后这个数字签名将作为报文的附件一起发送给报文的接收方。
  • 报文的接收方首先从接收到的原始报文中计算出128位的散列值,再用发送方的公钥来对报文附加的数字签名进行解密。
  • 如果两次得到的结果是一致的那么接收方可以确认该数字签名是发送方的,同时确认信息是真实的 。

HTTPS数据交互过程:

HTTP中没有加密机制,可以通过SSL(Secure Socket Layer 安全套接层)或TLS(Transport Layer Security 安全层传输协议)的组合使用,加密HTTP的通信内容。


SSL工作在OSI七层模型中的表示层,TCP/IP 四层模型的应用层。


SSL记录协议操作

SSL握手过程:

  • 第一阶段 建立安全能力 包括协议版本 会话Id 密码构件 压缩方法和初始随机数
  • 第二阶段 服务器发送证书 密钥交换数据和证书请求,最后发送请求-相应阶段的结束信号
  • 第三阶段 如果有证书请求客户端发送此证书 之后客户端发送密钥交换数据 也可以发送证书验证消息
  • 第四阶段 变更密码构件和结束握手协议

SSL记录协议操作

  • 分段 将每个上层消息分解成不大于2^14(16384)位,然后有选择的进行压缩
  • 添加MAC 在压缩数据的基础上计算MAC
  • 加密 消息加上MAC用对称加密方法加密
  • 添加SSL记录头 内容类型(8位),主版本(8位),副版本(8位),压缩长度(16位)
SSL协议两个重要概念,SSL会话,SSL连接;


SSL连接是点到点的连接,而且每个连接都是瞬态的,每一个链接都与一个会话关联。

SSL会话是一个客户端和一个服务器之间的一种关联,会话由握手协议(Handshake Protocol)创建,所有会话都定义了一组密码安全参数,这些安全参数可以在多个连接之间共享,会话可以用来避免每一个链接需要进行的代价高昂的新的安全参数协商过程。