注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

HTTPS原理解析  

来自姜cong   2017-03-21 14:22:22|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
随着今年苹果ATS推行,各个产品线也在陆续将http替换为https,作为接口的测试员花了点时间整理了下https的的5个步骤,希望测试的同时能够了解https的原理,有助于更好的理解https的接口测试!
https原理(五个步骤)
步骤一
- 客户端
  - 行为操作:
      - 生成随机数randoms
      - 加密算法清单
      - 传输:randoms,加密算法清单
  - 已有数据:randoms


步骤二
- 服务端
  - 行为操作:
      - 生成随机数randomc
      - 从客户端提交的加密算法清单选择加密算法
      - 传输:randomc,算法,ca证书(公钥,服务器地址,ca颁布机构)

  - 已有数据:randoms,randomc,ca的秘钥

步骤三
- 客户端
  - 行为操作:
    - ca证书合法性认证:ca证书颁发,服务器地址与证书是否一致
    -  pre-master(c):客户端生成随机数
    - enc-pre-master:利用ca证书的公钥加密
    - enc-key(c)协商密钥:fun(randoms+randomc+pre-master)
    - hash值(c):随机的文本信息通过hash算法进行压缩加密,获得hash值
    - 握手消息(c):hash值(c)被enc-key加密获得握手消息
    - 传输:enc-premaster(c),握手消息(c),hash(c)
  - 已有数据:randoms,randomc,公钥


步骤四
- 服务端
  - 行为操作:
    - pre-master(s):客户端传递的enc-pre-master使用ca证书密钥解密,获得pre-master(s)
    - enc-key(s):计算服务端的协商密钥func(randoms,randomc, pre-master(s))
    - hash(s):客户端传递的握手信息(c)用enc-key(s)解密,获得hash(s)
    - hash值比较:hash(c) == hash(s)
    - 握手信息(s):截取一段hash值为hash1(s),利用enc-key(s)加密计算的握手信息(s)
    - 传递信息:hash1(s),握手信息(s)
  - 已有数据:randoms,randomc,密钥,hash(s),握手信息(c)

步骤五
- 客户端
  - 行为操作:
      - hash1(c):服务端返回的握手信息(s)使用enc-key(c)解密,获得hash1(s)
      - hash比较:hash1(1) == hash(2),若相等表明握手成功,后面的数据传输都使用enc-key来加密数据

整理:
客户端
  -  随机生成:randomc,pre-master,
  -  加密:enc-pre-master=fun(pre-master,公钥)
  -  计算enc-key =fun(randomc,randoms,pre-master)
  -  握手信息=fun(hash值,enc-key)
服务端
  - 随机生成:randoms
  - 计算pre-master:pre-master = fun(enc-pre-master,密钥)
  - 计算enc-key = fun(random,randoms,pre-master)
  - 握手信息=fun(hash值,enc-key)

其中pre-master只有一份,且是对非对称算法加密后从客户端传递给服务端,然后通过随机生成的randomc,randoms计算得到enc-key,接着通过enc-key对hash算法处理后的文本进行加密及解密来比较,完成验证工作。

下图从加密算法出发,从各个参数的选取角度来解析https加密基本过程

HTTPS原理解析 - 网易杭州QA - 网易杭州 QA Team
 
  评论这张
 
阅读(800)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017