1. 概念
1.1 公钥(对称)密码体制与对称密码体制比较
对称密码体制:保密性,运算速度快,适合加密大量数据
公钥密码体制:保密性,密钥分配,认证;运算速度慢,适合加密少量数据。如:用公钥密码加密传送分组密码的密钥。
1.2 陷门单向函数
单向函数:已知x,计算y使得y=f(x)容易;反过来,已知y,计算x使得y=f(x)是难解的
陷门单向函数:t是与f有关的一个参数。已知x,计算y使得y=f(x)容易;如果不知道t,已知y,计算x使得y=f(x)是难的,但知道t时,已知y,计算x使得y=f(x)是容易的。参数t称为陷门。
1.3 RSA 的安全性
RSA 的安全性是基于分解大整数的困难性假定。如果 RSA 的模数 n 被成功地分解为 p × q,则立即获得 φ(n) = (p - 1)(q - 1),从而能够确定 e mod φ(n) 的逆元 d,容易被攻击成功
1.4 RSA 算法 p、q 的选取
- |p - q|要大
- p 和 q 的长度应该相差不多
- p - 1 和 q - 1 都应有大素因子
- gcd(p - 1, q - 1)应该很小
1.5 对 RSA 进行攻击的方法
- 共模攻击:在实现 RSA 时,可能会给每一个用户相同的模数 n,虽然加密解密密钥不同,但是还是容易引起攻击。例如敌手截获两个密文,使用推广的 Euclid算法就能求出明文。
- 低指数攻击:将 RSA 同时用于多个用户,然而每个用户的加密指数都很小,这样容易引起攻击。
- 选择密文攻击:RSA 是确定性的加密算法,不能抵御选择密文攻击。
1.6 Rabin 密码体制特点
- 它不是以一一对应的单向陷门函数为基础,对同一密文,可能有两个以上对应的明文;
- 破译该 Rabin 体制的困难程度等价于对大整数 n 的分解。
1.7 ElGamal 密码体制
- 安全性基于有限域上的离散对数的难解性
- 加密算法是概率算法
- 不能抵御选择密文攻击
1.8 椭圆曲线密码体制的优点
1.安全性高
攻击有限城上的离散对数问题可以用指数积分法,但它对椭圆曲线上的离散对数问题是无效的。由于其运算的复杂度,椭圆曲线密码体制比甚于有限域上的离散对数问题的公钥体制更加的安全。
2.密钥量小
通过攻击两者的算法复杂度可以知道在达到一致的安全性能情况下,椭圆曲线密码体制需要的密钥量,远远小于基于有限域上的离散对数问题的公钥体制的密钥量.
3.灵活性好
椭圆曲线能借助变化曲线参数,得到不同的曲线,形成不同的循环群。因此,椭圆曲线存在多样的群结构与多选择性。
1.9 Diffie-Hellman密钥交换
- 算法的安全性基于求离散对数的困难性
2. 定理
2.1 费尔玛(Fermat)定理
若p是素数,a是正整数且gcd(a, p)=1,则:
Fermat 定理也可写成如下形式:设p是素数,a是任一正整数,则:
2.2 欧拉(Euler)函数
设n是一正整数,小于n且与n互素的正整数的个数称为n的欧拉函数,记为φ(n)。
定理1
若 n 是素数,则显然有 φ(n) = n - 1
例如:φ(6)=2 ,φ(7)=6 ,φ(8)=4。
定理2
若 n 是两个素数 p 和 q 的乘积,
则 φ(n) = φ§ × φ(q) = (p - 1) × (q - 1)。
定理3
更一般的
2.3 欧拉(Euler)定理
若 a 和 n 互素,则
3. 辗转相除法求模的逆元(计算题)
- 问题:求 A 关于模 N 的逆元 B,即要找出整数 B 使 A × B mod N = 1(或 A × B = x × N + 1),这里要求 A 和 N 互素。
- 方法:辗转相除法(即欧几里德算法),该算法原用于求两个数的最大公约数,经过变换可用于求模逆元
参考链接:
https://wenku.baidu.com/link?url=HGHfqdkCv42RlFRq6rP1wNjUXCVdFibUO3w9gS_dX7ATqQops2Wx5WOjQrf-Gm5OTMicJELa2gQ5xHzaiDbDkWtHEyhTu4d6XNXzFOk7TYe
也可以参考作业题:
4. RSA 算法(精华计算题)
4.1 由公钥计算私钥
题目会给出n = p * q、公钥的 e 是多少。
计算步骤:
①先用 p, q 求出欧拉函数 φ(n) = p * q
②求 e 关于 mod φ(n) 的逆元 d,d就是所求的私钥
③公钥{e,n},私钥{d}
4.2 加密解密方法
- 加密:密文 = 明文^公钥 mod n
- 解密:明文 = 密文^私钥 mod n
5. Rabin 密码体制
6. ElGamal 密码体制(计算题)
7. 椭圆曲线
有限域中最常用的椭圆曲线为:
7.1 Ep(a, b)上的加法(计算题)
设 P,Q∈Ep(a, b),则:
① P + O = P。
② 如果 P=(x, y),那么(x, y)+(x, -y) = O,即(x, -y)是 P 的加法逆元,表示为 -P。