三、公钥加密 (Diffie-Hellman、RSA、PKI)
1、公钥密码
基于数学函数,不基于替换和置换。非对称(两个独立密钥,加密与解密由不同的密钥完成)
解决两个问题:密钥分配,数字签名。
从解密密钥得到加密密钥在计算上是不可行的;加密与解密的顺序没有限制(不是必须的)。
应用范畴:加密/解密,数字签名(认证),密钥交换
涉及到各方:发送方、接收方、攻击者
涉及到数据:公钥、私钥、明文、密文
2、公钥算法的条件
产生一对密钥是计算可行的
已知公钥和明文,产生密文是计算可行的
接收方利用私钥来解密密文是计算可行的
对于攻击者,利用公钥来推断私钥是计算不可行的
已知公钥和密文,恢复明文是计算不可行的
(可选)加密和解密的顺序可交换
3、单向函数与单向陷门函数
单向函数是满足下列性质的函数:每个函数数值都存在唯一的逆,并且计算函数值是容易的,但求逆是不可行的。
陷门:如果知道那个秘密陷门,则也能很容易在另一个方向计算这个函数。
4、数学基础
素数,最大公约数,互素,模运算,同余
Fermat定理:
p素数,a是整数且不能被p整除,则: ap-1 =1 mod p
推论: p素数,a是任意整数,则: ap =a mod p
Euler数:Euler数Fai(n)定义为小于n且与n互素的正整数个数
Euler定理: 若a与n为互素的正整数,则: aFai(n) =1 mod n
5、RSA算法
RSA算法是块加密算法
分组大小为k, 2k < n < 2k+1
加密: C = Pe mod n
解密: P = Cd mod n = Ped mod n
公钥: KU={e,n}, 私钥: KR={d,n}
6、Diffie-Hellman:密钥交换
原根:对于素数p,若a是p的一个原根,则:a1,a2 , …,ap-1
关于p两两不同余,从而构成了p的非0剩余类,即与{1,2,…,(p-1)}关于模p等价。
7、对称密钥密码应用:
Kerberos(第五章)
随机数:相互认证;会话密钥;RSA公钥算法
8、密钥分发
KDC(密钥分发中心)
PKA:Public-Key Authority