非对称加密和混合密码系统

简介

非对称加密算法的特点是,密钥分为加密密钥和解密密钥,并且这两个密钥是不一样的(非对称)。发送者用加密密钥对消息进行加密,接受者用解密密钥对密文进行解密。

一般情况下:

  • 加密密钥是公开的,称为公钥
  • 解密密钥是私有的,称为私钥

一次使用非对称加密通信的流程

假设A是发送者,B是接收者。

  1. B生成一个密钥对(公钥+私钥)。私钥由B自行妥善保管
  2. B将自己的公钥发送给A。公钥是公开的,无需保密
  3. A用B的公钥对消息进行加密。加密后的消息只有B的私钥能解密。
  4. A将密文发送给B。
  5. B用自己的私钥对密文进行解密。

RSA

  • RSA是目前最常用的非对称加密算法。在RSA中,明文、密钥和密文都是数字(很大的数字)。下面对RSA进行简单介绍,跟多原理和细节请自行网上搜索参考。
  • RSA的密文是对代表明文的数字的E次方求mod N的结果:密文=明文^E mod N
  • RSA解密就是密文的数字D次方求mod N就可以得到明文:明文=密文^D mode N
  • E和N是RSA加密的密钥,E和N的组合就是公钥
  • D和N是RSA解密的密钥,D和N的组合就是密钥
  • 生成RSA算法的密钥对(E、D、N):
  1. 求N
    • 准备两个很大(比如512比特)的质数p和q
    • N = p * q
  2. 求L(L是个中间数值)
    • L是p-1和q-1的最小公倍数
  3. 求E
    • 1 < E < L
    • E与L的最大公约数为1
  4. 求D
    • 1 < D < L
    • E * D mod L = 1

非对称加密存在的问题

  • 中间人攻击,公钥是公开的,怎么确定密文来自所期望的对象。
  • 计算速度慢,只有对称加密算法的几百分之一。

下面介绍混合加密系统,用于解决计算速度慢的问题。

混合密码系统

混合密码系统结合了非对称加密算法和对称加密算法的优势:

  • 利用非对称加密算法的“非对称性”,解决对称密钥的传递问题。
  • 利用对称加密算法的加解密速度,解决非对称加解密的速度问题。

混合密码系统的加密

混合加密
  1. 发送者利用一个随机数生成器生成一个对称加密算法的会话密钥。
  2. 使用会话密钥加密会话消息,得到会话消息密文(对称加密)。
  3. 使用接受者的公钥加密会话密钥,得到会话密钥密文(非对称加密)。
    4.组合会话密钥密文和会话消息密文。

混合密码系统的解密

混合解密
  1. 分离密文,等到会话密钥密文和会话消息密文。
  2. 用私钥解密会话密钥密文,得到会话密钥(非对称加密)。
  3. 用会话密钥解密会话消息密文,得到会话消息(对称加密)。

参考

  • 维基百科
  • 《图解密码学》

推荐阅读更多精彩内容