编码密码学知识点回顾
距离学完编码密码学已经有一段时间了,当时只是将一些笔记和知识点记录在了纸质的本子上面,今天做一个回顾,也是做一个总结。
- 公钥密码 RSA
加密密钥与解密密钥不相同:(核心思想)
简化了密钥管理。
对公钥密码的管理要求:
1)接受方产生密钥容易
2)发送方用公钥对消息m产生密文c, c = E p k B [ m ] c= E_{pk_B}[m] c=EpkB[m]
计算容易。
3)B用自己的密码对C解密,即: m = D s k B m=D_{sk_B} m=DskB在计算上容易。
4)敌手对公钥pk_B求私钥SK_b在计算上不可行。
5)敌手有公钥PK_B和C恢复明文m在计算上不可行。
RSA算法:- 选两个大素数
- 计算 n = p ∗ q n=p*q n=p∗q, ϕ ( n ) = ( p − 1 ) ∗ ( q − 1 ) \phi(n)=(p-1)*(q-1) ϕ(n)=(p−1)∗(q−1), ϕ \phi ϕ保密,n公开
- 随机选一整数 e ∈ ( 1 , ϕ ( n ) ) e\in(1,\phi(n)) e∈(1,ϕ(n))满足: g c d ( ϕ ( n ) , e ) = 1 : g c d gcd(\phi(n),e)=1:gcd gcd(ϕ(n),e)=1:gcd标识最大公约数。
- 计算
d
d
d,满足:
d
∗
e
≡
1
(
m
o
d
ϕ
(
n
)
)
d*e\equiv1(mod\phi(n))
d∗e≡1(modϕ(n))(私钥d),
d
∗
e
−
k
ϕ
(
n
)
=
1
d*e-k\phi(n)=1
d∗e−kϕ(n)=1通过辗转相除可以求出
d
d
d
公开公钥 ( e , n ) (e,n) (e,n)
保密私钥 ( d , n ) (d,n) (d,n)
加密: C = m e m o d ( n ) C= m^emod(n) C=memod(n)
解密: m = C d m o d ( n ) m=C^dmod(n) m=Cdmod(n)
- 哈希函数(单向哈希函数:MD5,MD4,SHA-1,SHA-256)
MD5
1)填充,最后一组的大小为512-64Bit,第一位填充1。其余后各位皆填充为0,填充为数1-512Bit
2)附加上消息的长度值。留出的64bit用来表示消息被填充前的长度值
3)缓冲区初始化。对4个寄存器A,B,C,D初始化
4)压缩函数处理。压缩函数有四轮处理过程。每一轮由16步迭代组成
5)输出消息摘要,产生128bit消息摘要。
消息M被分为512bit长的快,每个快又划分为十六个32bit的字块。
FF(A,B,C,D,M[K],S,T[I]):
B ← B + ( ( A + F ( B , C , D ) + M [ k ] + T [ i ] ) < < S ) B\leftarrow B+((A+F(B,C,D)+M[k]+T[i])<<S) B←B+((A+F(B,C,D)+M[k]+T[i])<<S)
GG,HH,II也都是类似的。使用Little-endian方式存储。
SHS-1:(输入消息长度为M)
1)压缩函数 : { A , B , C , D , E } ← { ( E + f t ( B , C , D ) + ( A < < 5 ) + W t , A , ( B < < 30 ) , C , D ) } :\{A,B,C,D,E\}\leftarrow\{(E+f_t(B,C,D)+(A<<5)+W_t,A,(B<<30),C,D)\} :{A,B,C,D,E}←{(E+ft(B,C,D)+(A<<5)+Wt,A,(B<<30),C,D)},t是迭代步数 ( 0 ≤ t ≤ 79 ) (0\leq t\leq 79) (0≤t≤79)
2)将输入消息块的16个字扩展成80个字以供压缩函数使用。
W t = M t , 0 ≤ t ≤ 15 W_t = M_t,0\leq t\leq 15 Wt=Mt,0≤t≤15
W t = ( W t − 3 ⨁ W t − 8 ⨁ W t − 14 ⨁ W t − 16 ) < < 1 , 16 ≤ t ≤ 79 W_t=(W_{t-3}\bigoplus W_{t-8}\bigoplus W_{t-14}\bigoplus W_{t-16})<<1,16\leq t \leq79 Wt=(Wt−3⨁Wt−8⨁Wt−14⨁Wt−16)<<1,16≤t≤79
使用Big-endian方式存储。
SHA产生160比特的消息摘要。 - 数字签名
Hash函数的安全要求。
1)单向性
2)抗弱碰撞
3)抗强碰撞
签名的特征:
1)能验证签名者的签名的日期和时间
2)能认证被签名的消息内容
3)能由第三方仲裁,以解决争执
数字签名标准(DSS),其核心是数字签名算法(DSA)
- DSA算法:ECDSA算法、RSA-PSS数字签名算法
ELGamal密码体制。
- 认证
双向:Denning协议[为了防止重放攻击,2,3中加入了时间戳]
NEUM93协议[为了防止时钟不同步,同时加入随机数和时间戳]
单向认证: