zoukankan      html  css  js  c++  java
  • HTTPS原理

    引言

      大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议有关的概念如SSL 、非对称加密、CA证书等。但是对于以下灵魂三拷问可

      能就答不上了:

      为什么用了HTTPS就是安全的?

      HTTPS底层原理是如何实现的?

      用了 HTTPS就一定安全吗?

    用一个故事讲HTTPS

      对称加密 

      A和B在网上聊天,因为通信是明文,怕被偷窥,所以采用了对称加密的算法,将消息加密。

      对称加密:加密和解密用的是同一个秘钥。

      但是如果这个秘钥被中间人劫持了呢?

      非对称加密

       有一种叫RSA的非对称加密算法,有两把钥匙,一把公钥,一把私钥。

       用私钥加密的数据,只有对应的公钥才能解密,用公钥加密的数据只有对应的私钥才

       解密。

      例如:下图中我想给胡歌发消息,那么我用胡歌的公钥(这个是公开的)将消息加密,

      胡歌拿到密文后,用他的私钥(他自己保管)解密,就得到密文了。

       非对称加密 + 对称加密

       版本2采用非对称加密,性能大大降低。不妨回到版本1,那个时候对称加密也是极好的,速度快,也加密处理了,但是最大的问题是

       担心中间人劫持秘钥?

         那么我们何不把二者结合一下呢?(1)用RSA的方式发送对称加密算法的秘钥 (2)传输内容的时候用对称算法

        CA证书

       1. 新的问题又出现了:假如胡歌给我发他的公钥的时候,有一个中间人劫持了胡歌的公钥,把他的公钥发给我了,然后我和胡歌发消

       息的时候每次都会被中间人劫持

          此时的问题变成了:如何证明胡歌的钥匙是胡歌的?而不是胡唱的?

       2.  现实中有公证中心,他提供的公证材料大家都信任,那么在网络世界中也可以建立一个具备公信力的认证中心,这个中心给大家颁发

        发一个证书,用来证明这个人的身份。

       3.但是证书在传递过程中也会被篡改?用数字签名。 

    总结

      Q: HTTPS 为什么安全?

      A:因为HTTPS传输过程中用了加密算法,为了提升效率,用的是对称算法;但是为了防止公钥被中间人劫持,首先用非对称算法传输

      秘钥;又担心非对称算法的公钥被中间人劫持,又采用了CA证书,CA证书本身也有证书来证明自己的身份,一层一层,但是最上面那层

      相当于我们自动信任了他们,相对而言,HTTPS比较安全的。

      Q: HTTPS 的传输过程?

      客户端发起https请求,服务端返回证书(证书中包含公钥),客户端验证证书,如果有问题,则提示风险;如果没有没问题或者用户

      继续,客户端发送传输内容阶段的对称算法的秘钥,用服务端发送证书里的公钥加密;服务端接收后,用自己的私钥解密,然后就拿到

      了传输内容阶段的对称算法的秘钥;然后就用 愉快的加密了。

      

     

        

      

        

  • 相关阅读:
    C SHARP.net 中DataSet.Fill实现不很理想,摸索中
    java程序代码 Exchenge.java
    java中的BREAK和CONTINUE语句的应用
    C++ 和 Java 中的变参
    BS程序代码与安全与基本攻击/防御模式
    MySql与Java的时间类型
    Ant 阅读笔记
    进度,效率,与个人事务管理 Personal Task 1.0
    Struts 实现的I18N
    解决站点关键数据,状态数据,无须持久化数据的一些思路
  • 原文地址:https://www.cnblogs.com/juanzhi/p/12638181.html
Copyright © 2011-2022 走看看