美文网首页
HTTPS 加密方式

HTTPS 加密方式

作者: Rruop旋转 | 来源:发表于2021-05-10 11:02 被阅读0次

    一、Http

    在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文的,因此使 用HTTP协议传输隐私信息非常不安全。为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS

    二、加密方式

    在学习HTTPS加密方式之前,有必要了解几种常见的加密方式,如:

    • 对称加密


      src=http___www.wendangwang.com_pic_3b1693e8332cf07c2fd28e9d_1-155-png_6_0_0_135_343_506_174_892.979_1262.879-450-0-189-450.jpg&refer=http___www.wendangwang.jpeg

    对加密和解密使用相同密钥的加密算法。由于其速度,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。对称式数据加密的方式的工作原理如图。所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥实际上是一种算法,通信发送方使用这种算法加密数据,接收方再以同样的算法解密数据。因此对称式加密本身不是安全的

    • 非对称加密


      src=http___image.mamicode.com_info_202004_20200418140716652718.png&refer=http___image.mamicode.jpeg

    非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

    事实上,在没有引入证书之前,非对称加密也并非传输安全的。

    在此举个例子:

    • 服务器以明文的方式给客户端传输公钥的时候,中间人截取了这把属于服务器的公钥,并且把中间人自己的公钥冒充服务器的公钥传输给了客户端。
    • 之后客户端就会用中间人的公钥来加密自己生成的密钥。然后把被加密的密钥传输给服务器,这个时候中间人又把密钥给截取了,中间人用自己的私钥对这把被加密的密钥进行解密,解密后中间人就可以获得这把密钥了。
    • 最后中间人再对这把密钥用刚才服务器的公钥进行加密,再发给服务器。
      毫无疑问,在这个过程中,中间人获取了对称加密中的密钥,在之后服务器和客户端的对称加密传输中,这些加密的数据对中间人来说,和明文没啥区别。

    非对称性加密之所以不安全,是应为客户端不知道,这把公钥是不是服务器的。因此,我们需要找到一种策略来证明这把公钥就是服务器的,而不是别人冒充的。解决这个问题的方式就是使用数字证书.

    三、数字证书

    src=http___wk.impress.sinaimg.cn_maxwidth.600_sto.kan.weibo.com_d2998774d9117b9d0fe635c05fd7d933.png_width=650&height=427&refer=http___wk.impress.sinaimg.jpeg
    • 数字证书就好比我们的身份证,我们需要找到一个第三方机构,它是一个拥有公信力、大家都认可的认证中心,那就是数字证书认证机构(简称CA)。
    • 网站在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明“该公钥对应该网站”。而这里又有一个显而易见的问题,“证书本身的传输过程中,如何防止被篡改”?即如何证明证书本身的真实性?身份证运用了一些防伪技术,而数字证书怎么防伪呢?解决这个问题我们就接近胜利了!

    如何放防止数字证书被篡改?

    我们把证书原本的内容生成一份“签名”,比对证书内容和签名是否一致就能判别是否被篡改。这就是数字证书的“防伪技术”,这里的“签名”就叫数字签名:

    数字签名的制作过程:

    • CA机构拥有非对称加密的私钥和公钥。
    • CA机构对证书明文数据T进行hash。
    • 对hash后的值用私钥加密,得到数字签名S。
      明文和数字签名共同组成了数字证书,这样一份数字证书就可以颁发给网站了。

    浏览器验证过程:

    • 拿到证书,得到明文T1,数字签名S1。
    • 用CA机构的公钥对S1解密,得到S2。
      -用证书里说明的hash算法对明文T1进行hash得到T2。
      比较S2是否等于T2,等于则表明证书可信。

    假设中间人篡改了证书的原文,由于他没有CA机构的私钥,所以无法得到此时加密后签名,无法相应地篡改签名。浏览器收到该证书后会发现原文和签名解密后的值不一致,则说明证书已被篡改,证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人。

    src=http___pic2.zhimg.com_v2-52d30db5ce87f5d7a0196b407994fb49_1200x500.jpg&refer=http___pic2.zhimg.jpeg

    四、总结:

    HTTPS 先利用数字证书保证服务器端的公匙可安全无误的到达客户端;再用非对称加密安全的传递共享密匙;最后用共享密匙安全的交换数据。

    HTTPS 虽提供了消息安全传输的通道,但每次消息的加解密十分耗时,消耗系统资源。
    因此除非在一些对安全性比较高的场景下,比如银行系统,购物系统中必须要使用HTTPS 进行通信,其他一些对安全性要求不高的场景,没必要使用 HTTPS。

    使用 HTTPS 需要使用到数字证书,但一般权威机构颁发的数字证书都是收费的,而且价格也是不菲的。
    因此对于一些个人网站来讲,若对安全性要求不高,没必要使用 HTTPS

    相关文章

      网友评论

          本文标题:HTTPS 加密方式

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