《图解密码学》第五章之公钥密码
一、秘钥配送问题
在之前的对称密码中,解密和加密都用的是同一个密钥,但是对于这个密钥如何安全的告诉接收者,这是一个比较严重的问题。
所上图所示,窃听者能够窃听到密文和密钥,自然就能够获取明文了。
二、解决密钥配送的问题
-
通过事先共享密钥来解决
缺点:有一定的局限性,如果参与加密通信的人比较多,则密钥数量会比较大。
-
通过密钥分配中心来解决
缺点:随着人数的增加,密钥中心的负荷会比较大,如果密钥分配中心发生故障,加密通信会失败。
-
通过Diffie-Hellman密钥交换来解决(接收方和发送方交换一些信息,通过所交换的信息来生成相同的密钥)
-
通过公钥密码来解决
三、公钥密码
在公钥密码中,密钥分为加密密钥和解密密钥。
解密密钥是由接收者自己保管的,因此不存在密钥配送的问题。
公钥和私钥是一一对应的,一对公钥和私钥系统称为密钥对。因此公钥和私钥是不能分别单独生成的。
公钥加解密消息流程如下图所示:
四、公钥密码存在的问题
公钥密码虽然解决了密钥配送的问题,但是我们仍然不能判断得到的公钥是否正确合法,还需要对公钥进行认证。
五、RSA
1、RSA的概念
RSA是一种公钥密码算法,是Ron Rivest、Adi Shamir、Leonard Adleman 三位开发者姓氏的首字母组成。RSA可以用于公钥密码和数字签名。
2、RSA加密
在RSA中,明文、密钥、密文都是数字。RSA的加密过程可以用如下公式来表示:
可以看出E和N就是加密的密钥,即E和N的组合就是公钥。
3、RSA的解密
解密所使用的的N和加密所使用的N是同一个,数D和数N结合起来就是RSA的解密密钥,即D和N的组合就是私钥。
4、RSA的加解密
5、生成密钥对
由于E和N是公钥,D和N是私钥,因此E、D、N这三个数就是生成密钥对,RSA密钥对的生成步骤如下:
- 求N
- 求L(L是仅在生成密钥对的过程中使用的数)
- 求E
- 求D
六、对RSA的攻击
1、通过暴力破解进行攻击
2、通过中间人进行攻击
所谓中间人攻击就是主动攻击者Mallory混入发送者和接收者的中间,对发送者伪装成接收者,对接收者伪装成发送者。如下图所示:
3、选择密文攻击
七、其他的公钥密码
1、ElGamal
RSA 利用了质因数分解的困难度,而ElGamal方式则利用了modN下求离散对数的困难度。
缺点:加密的密文长度会变成明文的两倍。
2、Rabin
Rabin方式利用了mod N 下求平方根的困难度。破译Rabin方式公钥密码的困难度与质因数分解是相当的。
3、椭圆曲线密码
椭圆曲线密码(ECC)的密钥长度比RSA短。ECC是通过将椭圆曲线上的特定点进行特殊的乘法运算来实现的。
式公钥密码的困难度与质因数分解是相当的。
3、椭圆曲线密码
椭圆曲线密码(ECC)的密钥长度比RSA短。ECC是通过将椭圆曲线上的特定点进行特殊的乘法运算来实现的。