美文网首页网络与Linux
从SSL协议谈一谈https的安全性

从SSL协议谈一谈https的安全性

作者: 凉拌姨妈好吃 | 来源:发表于2018-06-08 22:44 被阅读27次

    1. SSL协议的基本过程

    它的基本思路就是采用公钥加密法,客户端向服务端索要公钥,用公钥加密信息,服务端收到信息后用私钥解密。

    如何保证公钥不被修改?
    将公钥放于数字证书中,数字证书可信,公钥就可信。

    公钥加密计算量过大,如何减少耗用时间
    每一次对话(session),客户端和服务端都生成一个对话密钥(session key),用它来对信息进行加密。因为对话密钥是对称加密的,所以加密速度非常快,服务器公钥只用于加密对话密钥本身

    TLS/SSL的功能实现主要依赖于三类基本算法:散列函数 Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性

    SSL的基本过程:

    1.客户端向服务端索要并验证公钥(握手阶段1)
    2.服务端与客户端协商生成对话密钥(握手阶段2)
    3.使用对话密钥进行加密通信

    2. SSL协议中的握手阶段

    握手阶段
    2.1 ClientHello

    客户端向服务端发起加密通信的请求。
    在这一步,客户端主要向服务端提供以下几个信息:

    1. 支持的协议版本
    2. 随机数(稍后用于和服务端生成“对话密钥”)
    3. 加密算法
    4. 压缩方法
    5. (未填充的)sessionID
    2.1 ServerHello

    服务器收到客户端发过来的请求后,向客户端发出回应。
    服务端向客户端提供以下几个信息

    1. 确定SSL协议版本
    2. 随机数(稍后用于生成对话密钥)
    3. 压缩算法
    4. (已填充的)sessionID
    2.2 ServerHelloDone

    在完成ServerHello后,服务端会发生ServerHelloDone的信息给客户端,表示SeverHello结束了

    2.3 ServerCertificate

    服务端将自己的数字证书发送给客户端

    2.4 客户端回应

    当客户端收到服务端的数字证书的时候,会首先对数字证书进行检查,检查数字证书完整性及数字证书与域名是否相符合,然后使用加密算法生成一个随机数preMaster secret,并且通过服务端的公钥进行加密,然后发送给服务端。
    它会向服务器发送以下消息:

    1. preMaster secret
    2. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    3. 客户端握手结束通知,表示客户端的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供服务器校验。
    2.5 最后服务器的响应

    服务器在收到客户端发来的preMaster secret后,计算本次会话使用的会话密钥,向客户端发送以下消息:

    1. 编码改变通知,表示随后的信息都将用双方商定的加密方法和密钥发送。
    2. 服务器握手结束通知,表示服务器的握手阶段已经结束。这一项同时也是前面发送的所有内容的hash值,用来供客户端校验。

    引用:
    SSL/TLS协议运行机制的概述
    理解SSL/TLS协议
    HTTPS协议详解(二):TLS/SSL工作原理

    相关文章

      网友评论

        本文标题:从SSL协议谈一谈https的安全性

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