http和https的区别-关于SSL

1. http:超文本传输协议
2. https:由http和SSL协议构建的可进行加密传输和身份认证的网络协议,比http安全性更高

具体区别,参考:HTTPS协议详解(一):HTTPS基础知识

3. SSL

百度百科:
**SSL(Secure Sockets Layer 安全套接字协议),及其继任者传输层安全(Transport Layer Security,TLS)**是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层与应用层之间对网络连接进行加密。

SSL实际上,是为所有基于TCP协议的网络应用提供应用编程接口(API),作为介于HTTP和TCP之间的一个可选层,绝大多数应用层协议都可以直接建立在SSL之上。SSL不是一个单独的协议,而是两层协议。
http和https的区别-关于SSL
(1) 简化的SSL:一个简单的安全信道

  • 握手:A和B利用他们的证书、私钥认证(鉴别)彼此,以及交换共享**
  • **派生:A和B利用共享**派生出一组**(即公钥和私钥)
  • 数据传输:待传输数据分割成一系列记录
  • 连接关闭:通过发送特殊信息,关闭安全连接

SSL是架构在TCP之上的,在SSL进行信息传输之前,TCP连接已经建立,同样地,在SSL安全连接断连之后,才是TCP开始断开连接

a. 简单握手过程:http和https的区别-关于SSL
b. **派生
报文认证码(MAC)**和数据加***

  • 四个**
    • Kc:用于加密客户向服务器发送数据的**
    • Mc:用于客户向服务器发送数据的MAC**
    • Ks:用于加密服务器向客户发送数据的**
    • Ms:用于服务器向客户发送数据的MAC**

**派生过程:

  • 客户一次随机数、服务器一次随机数和预主**输入伪随机数发生器,产生主**MS
  • 主**和新一次随机数输入另一个随机数发生器:“**块”
  • **块“切片”:
    • 客户MAC**
    • 服务器MAC**
    • 客户加***
    • 服务器加***
    • 客户初始向量(IV)
    • 服务器初始向量(IV)

**派生过程,对于客户端和服务端是一样的,使用的输入、派生函数等都是一样的,确保客户端和服务端派生的私有**是相同的

  • 通过**派生函数(KDF)实现**派生
    • 提取主**和(可能的)一些额外的随机数,生成**

c. 数据记录

  • 为什么不直接加密发送给TCP的字节流

    • MAC放到哪? 如果放到最后,则只有全部数据接收全才能进行完整性认证
  • 方案:将字节流分割为一系列记录

    • 每个记录携带一个MAC
    • 接收方可以对每个记录进行完整性检验
  • 问题:对于每个记录,接收方需要从数据中识别出MAC

    • 采用变长记录

完整的SSL工作过程,参考:SSL的体系结构

(2)详细的握手过程

  1. 客户发送其支持的算法列表,以及客户一次随机数(nonce)
  2. 服务器从算法列表中选择算法,并发回给客户:选择+证书+服务器一次随机数
  3. 客户验证证书,提取服务器公钥,生成预主**,并利用服务器的公钥加密预主**,发送给服务器
  4. 客户与服务器基于与预主**和一次随机数分别独立计算加***和MAC**
  5. 客户发送一个针对所有握手消息的MAC
  6. 服务器发送一个针对所有握手消息的MAC

最后两步是为了保护握手过程免遭篡改

4. https协议的工作原理
  • 客户使用https url访问服务器,要求web服务器建立ssl链接
  • web服务器接收到客户端请求后,会将网站的证书(证书中包含公钥)传输给客户端
  • 客户端和web服务器端开始协商SSL链接的安全等级,也就是加密等级
  • 客户端通过双方协商一致的安全等级,建立会话**,然后通过网站的公钥来加密会话**,并传输给服务器端
  • web服务器通过自己的私钥解密出会话**
  • web服务器通过会话**加密与客户端之间的通信

补充:
http和https的区别-关于SSL

协商是必要的
  • 允许客户与服务器支持不同加密算法
  • 客户和服务器在数据传输之前商定密码组
    • 客户提供选项(choice)
    • 服务器挑选其一
密码组

SSL在安全通信过程中涉及到很多密码,也涉及到多个加密算法,例如:

  • 公开**算法(public-key algorithm)
  • 对称加密算法(symmetric encryption algorithm)
  • MAC算法
    加密算法以及相关的**称为密码组,即密码套件
SSL更改密码规格协议
  • 更新当前连接的密码组,标志着加密策略的改变
  • ContentType = 20
  • 只包含一条消息,一个值为1的字节
SSL警告协议
  • 当握手过程或数据加密过程出错或者发生异常时,为对等实体传递SSL警告或终止当前连接
  • ContentType = 21
  • 协议包含两个字节:警告级别和警告代码
SSL握手协议
  • 协商结果是SSL记录协议的基础
  • SSL v.3的握手过程用到三个协议:握手协议、更改密码规格协议和警告协议
  • ContentType = 22
SSL记录协议
  • 描述SSL信息交换过程中的记录格式
  • 所有数据(包含SSL握手信息)都被封装在记录中
  • 一个记录由两部分组成:记录头和数据