密码学要点整理
CH1 古典密码学
- 维吉尼亚密码的破解
- Kasiski测试法+指数重合法确定密钥长度:找长度至少为3的相同的密文段
- 指数重合法确定密钥:\(M_g=0.065\)
CH2 完善保密加密机制
- 完善保密的定义:攻击者即使有无限的计算资源,也无法攻破密码体制
- \(Pr\left[ M=m|C=c\right] =Pr[M=m]\)
\(Pr[C=c|M=m]=Pr[C=c]\)
证明,利用Bayes定理 - 给出数据,会计算概率
- 给出密码体制,会证明无条件安全
- \(Pr\left[ M=m|C=c\right] =Pr[M=m]\)
- 敌手能力
- 四种攻击能力下攻击实验的不同
- 完善保密的等价定义:\(Pr[Privk(n)=1]\leqslant 1/2+negl(n)\)
- 证明一次一密是无条件安全的,全概率公式
CH3 对称加密与伪随机性
理论
- 计算安全的定义:攻击者具有有限的计算资源时,很难攻破密码体制
- 可忽略函数的定义及性质
- 对称加密体制:\(\left( Gen, Enc, Dec\right)\),三个算法,一个性质
- 攻击实验:定义,从攻击角度定义计算安全\(Pr[Privk(n)=1]\leqslant \frac{1}{2}+negl(n)\)
流密码
- 伪随机生成器\(G(s)\):扩展性\(l(n)>n\),伪随机性(计算不可区分)
- 流加密方案:加密解密过程都是密钥扩展之后再异或
- \(k\leftarrow \{0,1\}^n\)
- \(c:=G(k)\oplus m\)
- \(m:=G(k)\oplus c\)
- 安全性
- CPA不安全
- CPA安全的方案:\(\langle r, G(r\oplus k)\oplus m\rangle\)
- CCA不安全:如何攻击?
分组密码
- 伪随机函数:伪随机性(计算不可区分),x和y都是n位时,有\({2^n}^{2^n}\)种可能
- CPA安全的加密方案
- \(k\leftarrow \{0,1\}^n\)
- \(r\leftarrow \{0,1\}^n, c:=\langle r,F_k(r)\oplus m\rangle\)
- \(c=\langle r,s\rangle , m:=F_k(r)\oplus s\)
- 工作模式
- ECB电子密码本:\(y_i=e_K(x_i)\),\(x_i=d_K(y_i)\),直接分组加密,不安全
- CBC密文分组链接:\(y_i=e_K(y_{i-1}\oplus x_i)\),\(x_i=d_K(y_i)\oplus y_{i-1}\),先异或再加密
- CFB密文反馈模式:\(y_i=e_K(y_{i-1})\oplus x_i\),\(x_i=e_K(y_{i-1})\oplus y_i\),先加密再异或
- OFB输出反馈模式:\(z_i=e_K(z_{i-1})\),\(y_i=z_i\oplus x_i\),\(x_i=z_i\oplus x_i\),反复加密IV得到密钥流,与明文异或
- CTR计数器模式:\(T_i=ctr+i-1\),\(y_i=x_i\oplus e_K(T_i)\),\(x_i=y_i\oplus e_K(T_i)\),加密\(T_i\)后与明文异或(可并行计算)
- 不需要加密子算法可逆的模式:CFB,OFB,CTR
流加密算法RC4
- RC4描述
- 变成非确定性算法
- WEP方案
分组加密算法DES、AES
- 代换置换网络SPN:异或轮密钥->代换->置换
- Feistel密码结构:右边到左边,用密钥加密右边后与左边异或作为右边
- 加密:\(L_i=R_{i-1}, R_i=L_{i-1}\oplus F_{k_i}(R_{i-1})\)
- 解密:\(R_{i-1}=L_i, L_{i-1}=R_i\oplus F_{k_i}(R_{i-1})\)
- DES:密钥长度56,分组长度64,循环次数16
- AES:分组长度128,密钥长度128,192,256,循环次数10,12,14
四种操作:SubBytes代换,ShiftRows置换,MixColumns,AddRoundKey。
CH4 消息认证码和散列函数
理论
- 消息认证码体制:\((Gen, Mac, Vrfy)\),三个算法,一个性质
- 选择消息攻击:消息认证实验定义,安全标准\(Pr[MacForge(n)=1]\leqslant negl(n)\)
CBC-MAC
- 最普通 -> m1和IV的对称性:\((m_1\parallel m_2\parallel ...\parallel m_n, IV\parallel c_1\parallel c_2\parallel ...\parallel c_n)\) -> \((IV\parallel m_2\parallel ...\parallel m_n, m_1\parallel c_1\parallel c_2\parallel ...\parallel c_n)\)
- 只要cn -> m1和IV的对称性:\((m_1\parallel m_2\parallel ...\parallel m_n, IV\parallel c_n)\) -> \((IV\parallel m_2\parallel ...\parallel m_n, m_1\parallel c_n)\)
- 不要IV -> IV默认为0:\((m_1\parallel m_2\parallel ...\parallel m_n,c_n)\)->\((m_1\parallel m_2,\sigma_1), (\sigma_1,\sigma_2), (m_1\parallel m_2\parallel 0...0, \sigma_2)\)
- 在开头异或n是安全的
- 把n放在后面异或是不安全的
HASH函数
- 性质:单向性,抗若碰撞性,抗强碰撞性(原像稳固,第二原像稳固,抗碰撞),生日攻击\(2^\frac{n}{2}\)
- 压缩函数:定长输入,定长输出;哈希函数:无限长输入,定长输出
- MD结构:若压缩函数是抗碰撞的,则用MD结构构成的Hash函数也是抗碰撞的
MAC
- \(MAC(k,x)=H(k||x)\)是不安全的,攻击?
- NMAC: \(NMAC(k,x)=H(k_2\parallel H(k_1\parallel m\parallel n))\),开始用k1,最后加上分组长度n,最后用k2再压缩
- HMAC:\(HMAC(k,x)=H(k\oplus opad\parallel H(k\oplus ipad\parallel x))\)
- MD5*和SHA*
CH5 RSA密码体制
RSA密码体制
- 描述
- 密钥:\(K=\{(n,p,q,e,d): n=pq,\ p\ and\ q\ are\ primers,\ ed \equiv 1 \ (mod\ \phi(n))\}\)
- 加密:\(e_K(x)=x^e\ mod\ n\)
- 解密:\(d_K(y)=y^d\ mod\ n\)
- 其中,\(x,y \in \mathbb{Z}_n\),公钥为\((n,e)\),私钥为\((p,q,d)\)
- 生成算法:整体时间复杂度\(O(n^3)\)
- 随机化选择两个素数\(p\)和\(q\)
- \(n=pq, \phi(n)=(p-1)(q-1)\)
- \(e\leftarrow \mathbb{Z}_n^*,\ d= e^{-1}\ mod\ \phi(n)\)
- \(y=x^e\ mod\ n\)
- \(x=y^d\ mod\ n\)
- 正确性证明
- \(\mathbb{Z}_n^*\)中的元素满足
- \(\mathbb{Z}_n/\mathbb{Z}_n^*\)中的元素亦满足
- 扩展欧几里得算法求逆元,快速幂
- 素性检验
- 二次剩余
- 欧拉准则
- Legendre符号的定义
- 欧拉运算与Legendre运算的的等价性
- Jacobi符号的定义
- 欧拉伪素数
- 素性检验
- 攻击
- CCA攻击:c', c/c' -> c=c' * c/c'
- 低加密指数攻击
- 公共模数攻击:
- 同一个n生成对密钥e1,e2, 且e1 e2互素,那么有r*e1+s*e2=1
- c1r*c2r = m(e1*r)*m(e2*s) = m
Rabin密码体制
- 描述
- 密钥:\(K =\{(n,p,q): n=pq\wedge\ q\equiv 3\ (mod\ 4)\}\)
- 加密:\(e_K(x)=x^2\ mod\ n\)
- 解密:\(d_K(y)=\sqrt{y}\ mod\ n\)
- 其中,\(x,y \in \mathbb{Z}_n\),公钥为\(n\),私钥为\((p,q)\),一个密文会对应四个明文
- 中国剩余定理
- 求平方根
- 攻击
CH6 离散对数
El Gamal 密码体制
-
描述(天然是非确定性的,因为有秘密随机数\(k\))
- \(P=\mathbb{Z}_p^*,\ C=\mathbb{Z}_p^*\times \mathbb{Z}_p^*\)
- 密钥:\(K=\{(p,\alpha, a, \beta): \alpha\in \mathbb{Z}_p^*,\ \beta=\alpha ^a\ (mod\ n)\}\),\((p,\alpha ,\beta)\)是公钥,\(a\)是私钥,
- 加密:\(k\in \mathbb{Z}_{p-1},\ e_k(x,k)=(\alpha^k\ mod\ p,\ x\beta^k\ mod\ p)\)
- 解密:\(d_k(y_1,y_2)=y_2(y_1^a)^{-1}\ mod\ p\)
- 形象理解:“伪装”,“去伪装”
-
给出实例,要会具体计算
-
安全的必要条件:\(\mathbb{Z}_p^*\)上的离散对数问题是难处理的(\(p\)至少取300个十进制位,\(p-1\)应该具有一个较大的素因子)
Diffie-Hellman问题
- 计算Diffie-Hellman问题(CDH):已知\(\beta\)和\(\gamma\),计算\(\delta\)使得\(\log_\alpha \delta=\log_\alpha \beta \times \log_\alpha \gamma\)
- 判定Diffie-Hellman问题(DDH):判定\(\log_\alpha \delta=\log_\alpha \beta \times \log_\alpha \gamma\)是否成立
- 安全性:
- 破解El Gamal密码体制等价于求解CDH问题
- 解决了CDH问题\(\rightarrow\)求出明文:已知\(y_1=\alpha^k,\ \beta=\alpha^a\),求出\(\delta=\alpha^{ak}\)
- 区分出明文\(\rightarrow\)解决了DDH问题:
CH7 数字证书和数字签名
数字证书
-
权威机构CA
- 一个证书认证机构
- 最简单的形式是,证书把一个ID与公钥进行绑定,由CA完成
-
根证书
- 在严格的层次模型中,根CA有一个自签名,自颁发的证书,用于标识CA身份
- 根证书是未被签名的证书或自由签名的证书
-
证书链
- 根CA可以给下级CA颁发证书,任何CA可以给终端用户颁发证书
- 而终端用户不可以给其他终端用户颁发证书,不符合信任模型
-
证书吊销
- 证书在有效期内被撤销(有效期在证书内指定)
- 由于一些不可预见的情形,如私钥丢失、被盗、被用于诈骗活动等
- 需要颁发一张新证书来替代它
- 证书上并没有标识来表示它是否被撤销,因此需要辅助机制
数字签名体制
- 数字签名的定义:\((Gen, Sig, Vrfy)\),三个算法,一个性质
- 攻击
- 攻击模型:唯密钥攻击、已知消息攻击、选择消息攻击(最强的攻击)
- 攻击目标:选择性伪造、存在性伪造(最弱的目标)
- 攻击实验,从攻击角度定义安全性
RSA签名方案
- 直接RSA签名方案(不安全)
- 描述:私钥\(d\)签名,公钥\(e\)验证
- 攻击
- 天然的伪造:\((y^e, y)\)
- 乘法性质:\((x_1,y_1),\ (x_2,y_2)\rightarrow (x_1x_2,y_1y_2)\)
- 拆分:\(x=x_1x_2,\ (x_1,y_1),\ (x_2,y_2)\rightarrow (x, y_1y_2)\)
- 先Hash再签名方案(安全)
- 描述:利用带陷门的Hash函数\((Gen, H)\)
- 公钥:\(\langle pk, s\rangle\),私钥:\(\langle sk, s\rangle\)
- 签名:先Hash再签名
- 验证:先Hash再验证
- 描述:利用带陷门的Hash函数\((Gen, H)\)
El Gamal签名方案
- El Gamal签名方案(天然是非确定性的,因为有秘密随机数\(k\))
- 描述:私钥签名,公钥验证(给出实例要会计算)
- 攻击:泄露秘密随机数k或使用相同的随机数k