简介
非对称加密算法的特点是,密钥分为加密密钥和解密密钥,并且这两个密钥是不一样的(非对称)。发送者用加密密钥对消息进行加密,接受者用解密密钥对密文进行解密。
一般情况下:
- 加密密钥是公开的,称为公钥。
- 解密密钥是私有的,称为私钥。
一次使用非对称加密通信的流程
假设A是发送者,B是接收者。
- B生成一个密钥对(公钥+私钥)。私钥由B自行妥善保管。
- B将自己的公钥发送给A。公钥是公开的,无需保密。
- A用B的公钥对消息进行加密。加密后的消息只有B的私钥能解密。
- A将密文发送给B。
- 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):
- 求N
- 准备两个很大(比如512比特)的质数p和q
- N = p * q
- 求L(L是个中间数值)
- L是p-1和q-1的最小公倍数
- 求E
- 1 < E < L
- E与L的最大公约数为1
- 求D
- 1 < D < L
- E * D mod L = 1
非对称加密存在的问题
- 中间人攻击,公钥是公开的,怎么确定密文来自所期望的对象。
- 计算速度慢,只有对称加密算法的几百分之一。
下面介绍混合加密系统,用于解决计算速度慢的问题。
混合密码系统
混合密码系统结合了非对称加密算法和对称加密算法的优势:
- 利用非对称加密算法的“非对称性”,解决对称密钥的传递问题。
- 利用对称加密算法的加解密速度,解决非对称加解密的速度问题。
混合密码系统的加密
- 发送者利用一个随机数生成器生成一个对称加密算法的会话密钥。
- 使用会话密钥加密会话消息,得到会话消息密文(对称加密)。
- 使用接受者的公钥加密会话密钥,得到会话密钥密文(非对称加密)。
4.组合会话密钥密文和会话消息密文。
混合密码系统的解密
- 分离密文,等到会话密钥密文和会话消息密文。
- 用私钥解密会话密钥密文,得到会话密钥(非对称加密)。
- 用会话密钥解密会话消息密文,得到会话消息(对称加密)。
参考
- 维基百科
- 《图解密码学》