• 公开密钥加密


    公开密钥加密是加密和解密使用不同密钥的一种加密方法。由于使用的密钥不同,所以这种算法也被称为“非对称加密”。加密用的密钥叫作“公开密钥”,解密用的叫作“私有密钥”。

    加密处理流程

    假设A准备通过互联网向B发送数据。

    首先,需要由接收方B来生成公开密钥和私有密钥。

    然后把公开密钥发送给A。

    A使用B发来的公开密钥加密数据。

    A将密文发送给B, B再使用私有密钥对密文进行解密。这样,B就得到了原本的数据。

     公开密钥和密文都是通过互联网传输的,因此可能会被X窃听。但是,使用公开密钥无法解密密文,因此X也无法得到原本的数据。

    存在的问题

    公开密钥加密存在公开密钥可靠性的问题。让我们回到B生成公开密钥和私有密钥的时候。在接下来的说明中,B生成的公开密钥用PB来表示、私有密钥用SB来表示。

    X想要窃听A发给B的数据,于是他也准备了公开密钥PX和私有密钥SX。

    在B把公开密钥PB发给A的时候

    X把公开密钥PB替换成自己的公开密钥PX

    于是公开密钥PX传到了A那里。由于公开密钥无法显示自己是由谁生成的,所以A不会发现自己收到的公开密钥已经被人替换。

    A使用公开密钥PX对数据加密。

    当A把想要给B的密文发送出去后,X接收了这个密文。

    这个密文由X生成的公开密钥PX加密而成,所以X可以用自己的私有密钥SX对密文进行解密。

    接下来,X用B生成的公开密钥PB加密数据。

    X把密文发送给B,这个密文由B发出的公开密钥PB加密而成,所以B可以用自己的私有密钥SB来解密。从收到密文到解密密文都没发生任何问题,因此B也意识不到数据已经被窃听。这种通过中途替换公开密钥来窃听数据的攻击方法叫作“中间人攻击”(man-in-the-middle attack)。

    公开密钥的可靠性会出现问题,就是因为A无法判断收到的公开密钥是否来自B。要想解决这个问题,就要用到之后会讲到的“数字证书”。

    公开密钥加密还有一个问题,那就是加密和解密都比较耗时,所以这种方法不适用于持续发送零碎数据的情况。要想解决这个问题,就要用到“混合加密”。

    公开密钥加密的算法

    实现公开密钥加密的算法有RAS算法、椭圆曲线加密算法等,其中使用最为广泛的是RSA算法。

    参考: 我的第一本算法书 5-5 公开密钥加密

  • 相关阅读:
    ectouch第四讲 之缓存文件的生成
    ectouch第三讲之加载调用机制
    Ubuntu 16.04下安装sublime Text的插件
    有关于Git操作(持续更新)
    MongoDB简单查询语句<平时使用语录,持续更新>
    Ruby小白入门笔记之<Rubymine工具的快捷键>
    Ruby小白入门笔记之 <Gemfile 文件>
    Ubuntu 16.04安装、卸载mysql及怎么使用SQL常用操作语句
    Git中.gitignore忽略文件(maven项目)
    Git入门之常用命令(转载阮一峰老师)
  • 原文地址:https://www.cnblogs.com/ooo0/p/15820931.html
Copyright © 2020-2023  润新知