TLS/SSL

作者: grimlock44 | 来源:发表于2019-02-22 15:32 被阅读0次

    版本发展

    SSL1.0>SSL2.0>SSL3.0>TLS1.0>TLS1.1>TLS1.2>TLS1.3

    作用

    保证数据传输中的
    1:数据保密性(加密明文,别人看不见)
    2:数据完整性(保证数据不被篡改)
    3:身份认证(标识数据的发送方)

    相关数学工具

    对称加密

    加密和解密使用的是同一密钥。用来做数据保密性。缺点在于需要一个传输密钥的安全信道。
    由于对称加密的速度快,通常使用非对称加密来传输一个对称密钥,使用对称密钥加密通信数据。

    非对称加密

    加密和解密使用的不是同一个密钥,分两种
    1:RSA:公私钥系统,用于身份认证,密钥交换。


    RSA算法.png

    身份认证就是使用私钥加密一个信息的摘要,只用对应公钥才能加密出。
    密钥交换就是公钥加密一个对称密钥,只用私钥持有者才能拿到对称密钥。
    2:DH:用于密钥协商。注意协商和交换不一样。


    dh算法图.png
    其中A和B为私钥,a和b为公钥。
    dh算法是不能用于身份认证的,因为它不能做加解密操作,只是个协商密钥的算法。

    摘要

    将信息形成一段固定长度的摘要,保证信息的完整性。

    数字证书

    基于RSA实现,用于标明身份,主要构成:身份信息,公钥,签发CA和数字签名,有效期。
    CA:证书授权中心,链式的信任机构,最顶点是公认的安全(不是绝对的安全),CA使用自己的RSA私钥对证书签名。CA签名是证明证书有效的内容。
    公钥:拥有此证书的服务器自己的公钥,客户端可以用这个公钥可以验证服务器签名,或者给服务器发送加密信息。公钥是证书里表明身份的内容。

    SSL握手过程

    SSL复杂的地方在于握手阶段,目的是双方的身份认证和密钥协商,其中身份认证主要是证书的传递和验证,密钥协商是双方确定一个对称密钥。

    身份认证的过程

    1:服务器向客户端发送证书。
    2:客户端用通过CA验证证书的有效性。
    3:客户端使用证书内的公钥加密「密钥协商的信息」发给服务器。只有服务器能解密,进而就证明了身份。

    密钥交换和协商

    方法分几种,包括无效(没有密钥交换)、RSA、匿名Diffie-Hellman、暂时Diffie-Hellman、固定Diffie-Hellman、Fortezza。

    没有密钥交换
    SSL无交换.png

    服务器证书中包含RSA公钥表明身份,客户端选取一个随机数当密钥,使用服务器公钥加密传给服务器。
    缺点:取决于客户端产生随机数的能力,伪随机很容易被破解。服务器不能信任客户端的随机能力。
    解决方案:DH算法是3个随机数生成密钥,服务器和客户端各有一个,最后还有个premasterkey,大大提高了随机能力。

    RSA
    ssl_rsa.png

    服务器证书中包含RSA公钥表明身份,一开始双方各产生一个随机数,最后客户端产生第三个随机数,用证书中的公钥加密发送。三个随机数共同生成对称密钥。
    缺点:依赖于客户端的随机能力,也没有前向安全性。

    DH-RSA
    dh-rsa.png

    匿名的DH无法表明身份,一般和RSA一起使用,RSA负责身份认证,DH负责密钥交换(交换premaster_key)。分两种DH-RSA和DHE-RSA
    使用DH算法协商出premaster_key,证书中包含服务器固定的DH参数(公钥)表明身份,CA使用RSA签名表明证书的合法性。
    缺点:固定的服务器DH公私钥,一旦泄露,历史信息全部都可以被解密,无法保证前向安全性。

    DHE-RSA
    DHE-RSA.png

    相对于DH-RSA,加入了server key exchange消息,传输了一个临时的服务器DH参数(公钥),每次都不一样,解决了前向安全问题。
    证书中包含服务器的RSA公钥,服务器需要用RSA私钥签名服务器DH参数来表明身份。
    由于服务器DH参数是临时的,对应的私钥也是临时的(用后不保存),所以可以保证前向安全
    注意DH-RSA和DHE-RSA中的RSA是有区别的,前一个是指CA用RSA签名,后一个是服务器用RSA签名DH参数。
    最后就形成了我们常用的SSL协商过程:


    sslhandshake.png

    其他:
    DH算法分两种:
    DLP:离散对数问题,上述的DH算法就是DLP。
    ECDLP:基于椭圆曲线的离散对数,比上述更安全。
    ElGamal是一种基于DH的公私钥加密,功能和RSA一样。

    相关文章

      网友评论

          本文标题:TLS/SSL

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