理解对称加密与非对称加密

前段时间在公司的读书会上分享了网络服务中的安全部分,现在把当中涉及的一个很基础的概念笔记下来,就是关于加密的两种方式:对称加密与非对称加密。

其实就名字而言都可以把两者作以区分,对称说明可能是某种事物的相同(当然这里指密钥),非对称则反之。先来看看对称加密百科的定义吧:

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

简而言之就是,对称加密是加密解密用的是同样的“钥匙”,举个网上邮局寄件的例子就是:

Alice 在盒子里放有信息,盒子上有挂锁,她有钥匙。通过邮局她把这个盒子寄给Bob。Bob收到盒子后,用相同的钥匙打开盒子(钥匙之前就得到了,可能是Alice面对面给他的)。然后Bob可以用同样的方法回复。如图:

Alt text

怎么样?很好理解吧。再来看看非对称加密的解释:

与对称不相同,非对称加密需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

还是用百科的图来理解它的概念吧,上图:

Alt text

介绍一下图示的流程:

  1. 乙方生成一对密钥(公钥和私钥)并将公钥向其它方公开。
  2. 得到该公钥的甲方使用该密钥对机密信息进行加密后再发送给乙方。
  3. 乙方再用自己保存的另一把专用密钥(私钥)对加密后的信息进行解密。乙方只能用其专用密钥(私钥)解密由对应的公钥加密后的信息。

这样做最大的好处就在于,在传输过程中,即使攻击者截获了传输的密文,并得到了乙的公钥,也无法破解密文,因为只有乙的私钥才能解密密文。同样,如果乙要回复加密信息给甲,那么需要甲先公布甲的公钥给乙用于加密,甲自己保存甲的私钥用于解密。所以,在两端进行安全传输之前,他们之间需要交换各自公钥!

以上便是对两种加密方式的基础笔记,后续有时间会在https的网络传输中,对非对称加密的应用作进一步了解。