• 非对称加密算法与传输安全


    1、信息传输的三个安全隐患

      被伪造,被修改,被监听。

    什么是被伪造,被修改,被监听呢?

      假如我要和小姐姐以写信的方式进行通信,但是邮递员想要搞破坏。 那么邮递员自己写一封诋毁我的信,然后送给小姐姐,署名是我写的,那么我的信就被伪造了。 被修改就是邮递员拿到我的信后,删除一段内容或者添加一段内容,更改了信的原意。 被监听呢就是邮递员拿到我的信后,可以看到我的信的内容。

    2、如何能够保证信息传输安全呢?

    (1)对称加密算法

      还是以写信为例,假如我和小姐姐在分别之前,我告诉小姐姐,以后我给你写信,都后移三位,我写“def”,其实就是“abc”的意思,这样可以有效避免被伪造,被修改,被监听的问题。
    这就是对称加密算法,常用的对称加密算法有DES 和 AES,其中,DES已经被攻破了。
      对称加密算法的原理就是有一个公共的密钥,发送的原文用这个密钥进行加密,接收的人用同样的密钥进行解密查看。

      对称加密算法的局限

      局限就在于这个公共密钥怎么安全的让对方知道,还是以我和小姐姐通信为例,如果分离时,我忘了告诉小姐姐这个密钥是是施恩么,那么如果想让小姐姐知道这个密钥,就只能写信告诉她了,但是写信的话,邮递员就会知道这个密钥是什么了,一样可以伪造,修改和监听通信的内容。

    (2)非对称加密算法

      非对称加密算法和对称加密算法一样,也有很多算法,比如RSA。
      非对称加密算法的原理:首先生成一对公私密钥对,即私钥和公钥。
      加密:原文加公钥进行加密成密文。
      解密:密文加私钥还原成原文内容。
      其实公钥加密也好,私钥加密也好,都是可以的,“公钥加密私钥解,私钥解密公钥解”。

      所以,继续和小姐姐通信。假如我先写信问小姐姐的公钥是什么,然后,我用小姐姐的公钥加密我的信的内容,发送给小姐姐,那么她就可以用她的私钥解密。整个过程邮递员看不懂我在写什么,但是邮递员可以截获小姐姐的公钥,这样就解决不了被伪造的问题。

      之前提到了“公钥加密私钥解,私钥加密公钥解”,如果我先写一封信给小姐姐,告诉她我的公钥是什么,然后我在用我的私钥加密一封信发给小姐姐,邮递员不知道我的私钥,所以他无法进行伪造和修改,但是他可以截获我的公钥,直接解密查看我的信的内容,这样就解决不了被监听的问题。

      严格意义上讲,非对称加密算法无法解决通信的完全的安全。实际在开发中,对接两方会在接口文档中写明公钥,然后私下发送。按我的理解,现实很多的开发中,也就到这一步了。

    (3)对称非对称结合使用

      前不是已经学过对称加密算法了吗,如果我先写信问小姐姐的公钥是什么,拿到以后,我再写一封信告诉小姐姐,接下来我们使用对称加密算法,并告诉小姐姐我的对称加密算法使用的密钥(PSK)是什么,最后,用小姐姐的公钥加密这些内容。邮递员由于不知道小姐姐的私钥是什么,所以他是不知道信的内容的,接下来我和小姐姐就可以一直用对称加密算法来通信了,这样就有效解决被伪造、被修改、被监听的所有问题了。

    (4)第三方认证

      说完以上部分后,还有一个更大的问题就是,小姐姐是不是真的小姐姐,我是不是真的我。比如,我写信问小姐姐公钥,结果邮递员把信给了老大妈,那我不就后续会和老大妈通信了吗。
    所以,这里要引入一个我和小姐姐都信任的机构来作为身份认证。比如我和小姐姐都信任公安局,那么小姐姐把他的公钥给公安局,公安局通过公安局的私钥对小姐姐的公钥加密后,发给我,在加密时,还可以附加一点信息,比如小姐姐的身份证号。我拿到后,用公安局的公钥解开,就获取到了小姐姐的公钥,这就是签名算法。因为我信任公安局,所以我能解开就说明这确实是公安局签发的。
    在互联网来说,“公安局”就是现在各种“CA”机构。比如我现在建立了一个网站,域名是www.nidaye.com,然后我为了证明这个网站是我的,我会根据CA机构的要求上传特定的文件,一旦认证通过,CA机构就会给我颁发他们的数字证书(就像https协议的安全证书,没这个证书,那么在用浏览器访问的时候,就是提示你这是个不安全的链接),数字证书其实就是用CA机构的私钥加密的一组公司密钥对,这个证书由于是私钥加密的,其他机构是签发不下来的。
    然后谷歌浏览器信任这家机构,那么访问我的网站的时候,就是被信任的。
    信任链是:谷歌信任CA机构,CA机构信任我,所以谷歌信任我。
    以上也是HTTPS协议的核心算法。

  • 相关阅读:
    mybatis使用说明
    maven相关说明,以及使用Testng相关
    java注解相关
    maven安装,使用说明,及maven Repository如何使用.
    css相关知识
    Spring Ioc 基于Java的容器配置
    Spring DI的配置使用
    Spring —IoC的配置使用
    Spring IoC 之IoC容器的基本原理
    Spring IOC之IOC基础
  • 原文地址:https://www.cnblogs.com/dongch/p/13410476.html
Copyright © 2020-2023  润新知