公钥私钥

文章目录
算法

    • 密钥配送问题
    • 事先共享密钥
    • 密钥中心分配密钥
    • 使用Diffie-Hellman密钥交互
    • 使用公钥私钥


密钥配送问题

上面几篇文章咱们讲到了对称加密,包括它的几种实现AES,DES算法。那么有了对称加密算法,咱们是否就能够安全的和第三方进行通讯了呢? 考虑以下状况:安全

小明想写一封情书给小红,可是这封情书是很私密的东西, 小明不想让除了小红以外的其余人知道。小明看过flydean的博客,他知道了有个对称加密的好东西。服务器

因而小明想,若是我将情书使用对称加密算法进行加密,而后再把加密后的情书传给小红岂不就是安全了? 可是小明又仔细思考了一下,发现了一个问题,对称加密算法必须须要密钥才能解密,除了传递情书之外,小明还须要把对称加密算法的密钥也传过去,这样小红才能正常解密。ide

可是怎么才能安全的传递密钥呢? 密钥必需要发送,可是又不能发送,这个就是密钥配送的问题。性能

下面咱们将一下解决密钥配送问题的几个方法。加密

事先共享密钥

解决密钥配送问题的最简单方法就是事先共享密钥,也就是小明提早将密钥交给小红。若是他们两个离得很近,那没有问题,直接线下见面交给小红就能够了。博客

若是他们分隔两地那就麻烦了。由于邮寄或者远程传输的过程当中,密钥可能会被劫持。it

即便可以有效的共享密钥,也会存在一个密钥保存的问题,每两我的间进行通讯都须要一个彻底不一样的密钥,若是通讯的人数不少的话,则须要保存一个至关大数量的密钥个数。实际操做起来不是很方便。class

密钥中心分配密钥

为了解决保存大数量的密钥的问题。能够采用密钥中心来对密钥进行集中管理。咱们能够将密钥中心当作是一个服务器,它里面保存了每个人的密钥信息,下面咱们看一下具体的通讯流程:密码

  1. 小明和小红须要进行通讯
  2. 密钥中心随机生成一个密钥,这个密钥将会是小明和小红本次通讯中使用的临时密钥
  3. 密钥中心取出保存好的小明和小红的密钥
  4. 密钥中心将临时密钥使用小明的密钥加密后,发给小明
  5. 密钥中心将临时密钥使用小红的密钥加密后,发给小红
  6. 小明收到加密后的数据,使用本身的密钥解密后,获得临时密钥
  7. 小红收到加密后的数据,使用本身的密钥解密后,获得临时密钥。
  8. 小明和小红可使用这个临时密钥自由通讯啦 。

你们请注意,这里的临时密钥的使用方法很巧妙,后面咱们会讲到你们最经常使用的https通讯协议中对这个临时密钥的巧妙使用。

密钥中心很好,可是也有缺点,首先密钥中心的密钥是集中管理的,一旦被攻破,全部人的密钥都会暴露。

其次全部的通讯都要通过密钥中心,可能会形成性能瓶颈。

使用Diffie-Hellman密钥交互

Diffie-Hellman 经过交互一些信息,双方来生成相同的密钥。具体的细节咱们后在后面的博客中讲到。

使用公钥私钥

密码配送的缘由就在于对称加密使用的密钥是相同的。 若是咱们使用非对称加密算法(公钥只用来加密,私钥只用来解密),这个问题是否是就可以解决了?

回到小明和小红通讯的问题,若是小红事先生成了公钥私钥,并把公钥发给了小明,则小明能够将情书使用公钥进行加密,而后发给小红,这个情书只有小红才能解密。即便公钥被窃听了也没有关系。

固然这里也有一个问题,就是小明要确保生成的公钥的确是小红发出来的。这个问题的解决方法咱们会在后面讨论。

公钥密钥还有一个问题就是速度的问题,只有对称加密算法的几百分之一。

相关文章
相关标签/搜索