HTTPS原理分析

作者: 小怪兽大作战 | 来源:发表于2019-07-25 19:59 被阅读29次

    一、概要

    http通信中信息都是明文传输的,信息很容易被泄漏和篡改。
    https通信使用了加密算法,安全性更高。

    二、预备知识

    https中有一些知识点需要我们预先了解。

    2.1 对称加密

    对称加密中加密和解密使用的密钥都是相同的,加密算法是公开的,但是密钥是要保密的。
    常见的对称加密算法有:DES,3DES,TDEA、Blowfish、RC5和IDEA。

    2.2 非对称加密

    非对称加密中加密和解密使用的密钥是不同的,分别称为公钥和私钥。公钥是公开的,私钥是保密的。用公钥加密的信息必须用私钥解密,相反,用私钥加密的信息必须用公钥解密。
    常见的非对称加密算法有:RSA,Elgamal,Rabin,ECC

    2.3 Hash签名/数字摘要/数字指纹

    Hash签名采用Hash算法将明文转换成固定长度的密文。同样的明文转换的密文相同,明文的微小变化就会造成密文的巨大变化。
    信息传输过程中,发送者先计算数据的数字签名,然后将签名和数据一起传输给接收者;接收者重新计算数据的数字签名,对比签名是否相同就可以确认数据在传输过程中是否被修改。

    2.4 CA证书

    CA:Catificate Authority,凭证管理中心。
    CA机构:是收信人的第三方认证结构,负责管理和发布CA证书的机构。
    CA证书:用户向CA机构申请的,证明自己身份的证书,在网络通信中相当于用户的身份证,不能被篡改。
    CA证书主要包含以下信息:

    • 颁发者 : 颁发该证书的CA机构名称
    • 使用者 : 使用该证书的网站地址
    • hash签名算法:对证书进行数字签名的算法
    • 公钥 : 使用者(网站)的公钥
    • 有效日期 : 证书的有效日期
    • 数字签名 : CA机构使用hash签名算法对证书信息进行计算,得到签名A,并使用CA机构的密钥对A进行加密后的数字签名B


      图一 CA证书

    2.5 CA证书的申请

    CA机构负责发布和管理CA证书,CA机构有自己的公钥和密钥,CA机构通过重重的安全机制保证自己的密钥不会被泄漏。CA机构的公钥是公开的,电脑操作系统中保存着本电脑所有信任的CA机构的公钥。
    一个CA证书的申请主要由以下步骤构成:
    1.申请者将自身的信息:域名,公钥等发送给CA机构
    2.CA机构验证申请者的身份。如果验证通过,生成证书信息,使用hash签名算法对证书信息进行签名,并且使用CA机构自身的密钥对hash签名进行加密(如图一所示)。所以,CA证书中信息是明文的,但是签名是使用非对称加密的。

    2.6 CA证书的验证

    https通信中服务端首先需要将自身的CA证书发送给客户端,客户端需要对证书进行验证,查看证书的真伪。CA证书的验证过程如下所示:
    1.读取证书中的明文信息,如:使用者,日期,颁发者等。
    2.检查操作系统中存储的可信CA机构,与证书中的颁发者进行对比,查看是否存在该CA机构。如果不存在该可信机构,浏览器发出证书不可信提醒。
    3.从操作系统中取出该CA机构的公钥,对证书中的签名进行解密,得到解密后的签名A。
    4.用证书中的hash签名算法对证书进行进行签名,得到签名B,对比A和B是否相等。
    5.如果签名一致,说明证书合法。
    解释:证书中的签名是用CA机构的密钥加密的,CA机构的密钥是保密的。在这些前提下,如果通信过程中证书被篡改或者伪造,一定是可以检查出来的。

    三、https通信可靠通信原理

    有了上面的基础知识,下面来看一下https是怎么进行通信的。
    https = http + ssl。 https在http的基础上使用ssl进行加密。 http是基于tcp的。http属于应用层,tcp属于运输层。ssl位于http之下,tcp之上。http将数据交给ssl,ssl进行加密后交给tcp进行可靠传输。
    https通信中使用了对称加密和非对称加密。其中对称加密用于对传输的信息加密,非对称加密用于对对称加密中的密钥进行加密。
    https建立ssl握手的流程图如下所示:


    图二 ssl握手

    解析:
    1.客户端向服务端发出https连接请求。
    2.服务端将自己的证书发送给客户端。
    3.客户端使用2.6中的方法验证证书的合法性。如果证书合法,随机生成一个对称加密的密钥,并用证书中的公钥进行加密。将加密后的密钥发送给服务端。
    4.服务端接收加密后的密钥,使用自身存储的私钥解密密钥。使用对称加密加密信息,开始传输数据。
    5.客户端也使用对称加密加密信息,开始传输数据。

    相关文章

      网友评论

        本文标题:HTTPS原理分析

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