HTTP认证(后篇)—— HTTPS

HTTPS —— HTTP over SSL/TLS

特点:

  • 身份认证
  • 对话加密
  • 数据完整

SSL/TLS协议

SSL与TLS的关系:

  • SSL: Secure Sockets Layer
  • TLS: Transport Layer Security
  • TLSSSL的标准版

SSL握手(RSA方式)

握手的作用:

  • 协商加密套件
  • 对于Server的认证(Client的认证可选)
  • 交换Session Key

名词术语:

  • Cipher suite: 加密套件
  • Premaster Secret: 是Client随机生成的,用于与Client和Server随机数结合生成Session Key
  • Session Key: 会话密钥,SSL握手产生,用于对称加密之后C/S间的消息

具体交互步骤:

  1. Round Trip1: 交换双方的随机数和约定加密手段
    1. Client Hello:
      • 协议版本
      • ClientHello.random
      • 加密套件组
    2. Server Hello:
      • ServerHello.random
      • 所确定的加密套件
      • 证书(包含Server的公钥)
      • Session ID(用于下文的快速恢复)
  2. Round Trip2:
    1. Client Finished:
      • 验证Server的证书(CA可信? 过期? 域名一致?)
      • 发送Premaster Secret(用Server的公钥加密)
      • Client用双方的随机数Premaster Secret合成Session Key
      • Client用Session Key加密”Client Finished”消息发送给Server
    2. Server Finished
      • Server收到并解密Premaster Secret后,与双方的随机数合成出相同的Session Key
      • Server用Session Key解密验证Finish消息,确认无误
      • Server用Session Key加密”Server Finished”消息发送给Client
        • Client收到确认无误后完成握手

注意点:

  • Round Trip的两次Hello交互都是明文传输
  • Premaster Secret的传输是非对称加密的
  • 默认只进行对Server单向的认证(证书)

关于安全性:

  可以看出这种RSA方式的核心就在于Premaster Secret是否会被破解。假设第三方记录了整个握手过程和接下来的会话过程,一旦这个第三方得到了服务器的私钥,他就可以计算出Premaster Secret从而得到关键的Session Key。这当证书过期或者吊销这就有可能会发生。


SSL快速恢复

Session Ticket恢复

  • Server会在握手期间,发送给Client一个Session Ticket(当”Server Hello”中指定了SessionTicket扩展),Client会将其缓存
  • 需要恢复时,Client可以选择将Session Ticket发回给Server,只有Server才能将其解密。
  • 这其中包含了所有能继续建立会话的参数信息
  • 在此之前,Server端不需要保存任何信息
Session ID恢复

  在Session ID的方式下,Server就需要保存之间Session信息,因此双方通过SessionID就可以直接建立连接



参考

-------------本文结束-------------
0%