zoukankan      html  css  js  c++  java
  • 公钥密码

      公钥密码可以解决密钥配送问题。

    什么是公钥密码

      公钥密码(public-key cryptography)中,密钥分为加密密钥解密密钥两种。发送者用加密密钥对消息进行加密,接收者用解密密钥对密文进行解密。要理解公钥密钥,清楚地区分加密密钥和解密密钥是非常重要改的。加密密钥是发送者加密时使用的,而解密密钥则是接收者解密时使用的。

      加密密钥和解密密钥的区别:

      • 发送者只需要加密密钥
      • 接收者只需要解密密钥
      • 解密密钥不可以被窃听者获取
      • 加密密钥被窃听者获取也没关系

      业绩就是说,解密密钥从一开始就是由接收者自己保管的,因此只要将加密密钥发给发送者就可以解决密钥配送问题了,而根本不需要配送解密密钥。

      

      公钥密钥中,加密密钥一般是公开的。正是由于加密密钥可以任意公开,因此该密钥被称为公钥(public key)。公钥可以通过邮件直接发送给接收者,也可以刊登在报纸的广告栏上,做成看板放在街上,或者做成网页公开给世界上任何人,而完全不必担心内窃听者Eve窃取。

      当然,我们也没有必要非要将公钥公开给全世界所有的人,但至少我们需要将公钥发送给需要使用公钥进行加密的通信对象(也就是给自己发送密文的发送者)。

      相对地,解密密钥是绝不能公开的,这个密钥只能由自己来使用 ,因此成为私钥(private key)。私钥不可以被别人知道,也不可以将它发送给别人,甚至也不能发送给自己的通信对象。

      公钥和私钥是一一对应的,一对公钥和私钥统称为密钥对(key pair)。由公钥进行加密的密文,必须使用与该公钥配对的私钥才能够解密。密钥对中的两个密钥之间具有非常密切的关系——数学上的关系——因此公钥和私钥是不能分别单独生成的。

      公钥密码的使用者需要生成一个包含公钥和私钥的密钥对,其中公钥会被发送给别人,而私钥则仅供自己使用。

    公钥的通信流程

      假设Alice要给Bob发送一条消息,Alice是发送者,Bob是接收者,窃听者Eve能够窃听到他们之间的通信内容。

      

      在公钥密钥通信中,通信过程是由接收者Bob来启动的。

      (1) Bob生成一个包含公钥和私钥的密钥对。

        私钥有Bob自行妥善保管。

      (2) Bob将自己的公钥发送给Alice。

        Bob的公钥被窃听者Eve截获也没有关系。

        Bob将公钥发送给Alice,表示Bob请Alice用这个公钥对消息进行加密蹦发送给他。

      (3) Alice用Bob的公钥对消息进行加密。

        加密后的密文只有用Bob的私钥才能够解密。

        虽然Alice拥有Bob的公钥,但用Bob的公钥是无法对密文进行解密的。

      (4) Alice将密文发送给Bob。

        密文被窃听者Eve截取也没关系。Eve可能拥有Bob的公钥,但是用Bob的公钥是无法进行解密的。

      (5) Bob用自己的私钥对密文进行解密。

      请参看图5-2,看一看Alice和Bob直接到底传输了哪些信息。其实他们之间传输的信息只有两个:Bob的公钥以及用Bob公钥加密的密文。由于Bob的私钥没有出现在通信内容中,因此窃听者Eve无法对密文进行解密。

      

       窃听者Eve可能拥有Bob的公钥,但是Bob的公钥只是加密密钥,而不是解密密钥,因此窃听者Eve就无法完成解密操作。

    相关术语

      公钥密钥还有各种不同的称谓,例如非对称密钥(asymmetric cryptography)和公钥密码就表示通一个含义,这一术语是相对于对称密钥而言的。在对称密码中,加密和解密使用相同的密钥,即加密和解密只是用同一密码进行相反的操作而已,因此对称密码中的加密和解密就像照镜子一样,是相互对称的。相对地,非对称密码中,加密和解密使用的是不同的密钥,并不是相互对称的,因此称为非对称密码。

      此外,私钥(private key)这个术语也有很多同义的别名,例如个人密钥私有密钥非公开密钥等,也有人将其称为秘密密钥(secret key)。不过,秘密密钥这个词也可以指对称密码的密钥,因此在使用时需要注意。出于这个原因,也有人将对称密码的密钥称为共享秘密密钥,将公钥密码的私钥称为私有秘密密钥以示区别。

      private key(私钥)是世界上使用最广泛的,也是最不容易引起歧义的名称。

    公钥密码无法解决的问题

      公钥密码解密了密钥配送的问题,但这并不意味着它能够解决所有的问题,因为我们需要判断所得到的共啊哟是否正确合法,这个问题被称公钥认证问题。

      此外,公钥密码还有一个问题就是,它的处理速度只有对称密码的几百分之一。

     

  • 相关阅读:
    Python学习笔记之递归函数
    包管理工具-yum
    ElasticSearch定时清理缓存索引
    pytest实现多进程与多线程运行
    获取webView页面内窗体句柄
    文档测试
    ClickHouse 运维相关部分命令记录
    [转]contains a file system with errors, check forced
    log日志重复打印 修改
    jmeter参数化
  • 原文地址:https://www.cnblogs.com/doitjust/p/12758484.html
Copyright © 2011-2022 走看看