美文网首页
HTTPS原理解析

HTTPS原理解析

作者: 龙猫六六 | 来源:发表于2017-01-05 16:50 被阅读66次

    原理

    步骤一

    • 客户端
      • 行为操作:
        • 生成随机数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算法处理后的文本进行加密及解密来比较,完成验证工作。

    31031f564bf3d4585a26629740fe6524.jpg

    相关文章

      网友评论

          本文标题:HTTPS原理解析

          本文链接:https://www.haomeiwen.com/subject/huuzvttx.html