一、秘钥配送问题
1. 定义
在对称问题中,由于加密和解密的密钥是相同的,因此必须向接收者配送秘钥,用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。
2. 解决方法
- 通过实现共享密钥来解决
- 通过秘钥分配中心解决
- 通过Diffie-Hellman密钥交换来解决秘钥配送问题
- 通过公钥密码来解决密钥配送问题
二、公钥密码
1, 介绍
公钥密码中,秘钥分为加密秘钥和解密密钥两种。发送者通过加密秘钥对消息进行加密,接收者用解密密钥对密文进行解密。
公钥是公开的,私钥只有解密者拥有。公钥和
2. 公钥密码的历史
3. 公钥通信的流程
Alice和Bob通过公钥密码进行通信,流程如下:
4. 公钥密码无法解决的问题
公钥认证问题:判断所得到的公钥是否正确合法
5. 时钟算法
使用时钟介绍了逆运算和乘法逆元。
6. RSA
6.1 介绍
RSA是一种公钥密码算法,它的名字有三位开发者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母组成的
RSA可以被用于公钥密码和数字签名。
1983年,RSA公司为RSA算法在美国取得了专利,但现在专利已过期。
6.2 RSA加密
在RSA中,明文、秘钥和密文都是数字。
加密公式:
也就是说,对代表明文的数字的E次方除以N求余数,这个余数就是RSA的密文。
E和N就是加密的密钥,E和N的组合就是公钥,一般写成(E,N)或{E,N}
注意:E(encryption)和N(number)不是密钥对,公钥和私钥是密钥对。
6.3 RSA解密
解密公式:
也就是说,表示密文的数字的D次方除以N求余数,这个余数就是明文。(D,N)就是私钥。
6.4 生成密钥对
1.质数:因数只有1和本身
2.求最大公约数:欧几里得的辗转相除法
3.E和L的最大公约数为一这一条件的目的是保证一定存在D
6.5 RSA的攻击
【密码破译者知道的信息】
密文、E、N
【密码破译者不知道的信息】
明文、D、p、q、l
1.通过密文求明文
这是个求离散对数的问题,这比较困难,还没有发现求离散对数的高效算法
2.通过暴力破解来找出D
只要知道D就可以进行解密,一般来说,p和q的长度为512比特以上,N、D、E的长度为1024比特以上,这样的长度进行暴力破解是非常困难的。
3.通过E和N求D
N = p*q
求L就需要p和q,这是破译者不知道的,所以p和q和秘钥等价。
4.对N进行质因数分解
对N进行因数分解就可以知道p、q,就可以破译密码。所以 一旦发现了可以对大整数进行质因数分解的高效算法,就可以对RSA进行解密。但是,现在为止,还没有发现这种算法。
5.推测p、q
p、q是由伪随机数生成器生成的,如果伪随机数生成器的算法很差,就可能被密码破译者推测出p、q
6.其他攻击
只要对N进行质因数分解求出p、q,就可以求出D。但是求D和对N进行质因数分解是否等价,这个问题还没有得到证明。所以有可能存在不需要对N进行质因数分解也可以有E和N求出D的方法。但这样的方法目前还没有出现,也不知道是否有这样的方法。
7.中间人攻击
这种方法不能破译RSA,但却是一种针对机密性的有效攻击。
所谓的中间人攻击,就是主动攻击者Mallory混入发送者和接受者中间,对发送者伪装成接收者,对接收者伪装成发送者的攻击方式,这里Mallory就是中间人。
Alice给Bob发送一封邮件,为解决秘钥配送问题,他们使用了公钥密码。假设Mallory位于通信过程中,他能够任意窃听、拦截、篡改邮件内容。
这种攻击不仅针对RSA,而且可以针对任何公钥密码。在这个过程中,公钥密码并没有被破译。仅靠公钥密码本身,是无法防御中间人攻击的。
要防御中间人攻击,还需要一种手段来判断邮件是否来自Alice,这种手段称为认证。在这种情况下,我们可以使用公钥的证书。
8.其他公钥密码
这些密码都可以用于一般的加密和数字签名
8.1 ElGamal方式
ElGamal方式是由Taher ElGamal设计的公钥算法。RSA利用了质因数分解的困难度,而ElGam方式则利用了mod N下求离散对数的困难度。
ElGamal方式有一个缺点,就是经过加密的密文长度会变为明文的两倍。
8.2 Rabin方式
Rabin方式是由M.O.Rabin设计的公钥算法。Rabin方式利用了mod N下求平方根的困难度。破译Rabin方式公钥密码的困难度与质因数分解则是相当的,这一点已经得到了证明。
8.3 椭圆曲线密码
它的特点是他所需要的密钥长度比RSA短。椭圆曲线密码是通过将椭圆曲线上特定点进行特殊的乘法运算来实现的,他利用这种乘法运算的逆运算非常困难这一特性。
9.关于公钥密码问答
Q1:公钥密码的机密性比对称密码的机密性更高吗?
无法回答,机密性的高低有密钥长度的变化而变化
Q2:采用1024比特的公钥密码和采用128比特的秘钥的对称密码中,是秘钥更长的公钥密码跟安全吗?
不是,公钥密码的密钥长度和对称密码的密钥长度不可以直接比较。下表是一张密钥长度比较表。
Q3:有了公钥密码,今后对称密码会消失吗?
不会,在采用具备同等机密性的密钥长度的情况下,公钥密码的处理速度只有对称密码的几百分之一。因此,公钥密码并不适合加密很长的消息,根据目的的不同,还可能配合使用对称密码和公钥密码。
Q4:越来越多的人使用RSA,会不会有一天质数被使用完?
不会。512比特能够容纳的质数的数量大约为10的150次方,这个数量比宇宙中原子的数量还要多。
假设世界上100亿人,每人每秒生成100亿个秘钥对,那么在经过100亿年后会生成的密钥对的数量低于10的39次方,与10的150次方相差甚远。
此外,别人生成的质数组合和自己生成的质数组合偶然撞车的可能性,事实上可以认为是没有的。
Q5:要抵御质因数分解,N的长度要达到多少比特呢?
无论N的长度有多长,总有一天N会被质因数分解。