在对称密钥系统中,分发密钥往往是最薄弱的环节
1976年,斯坦福大学的Diffie和Hellman提出了一种全新的密钥系统
特点:
1.加密密钥和解密密钥不同
2.解密算法E和解密算法D满足三个要求:
D(E(p))=p p指文本字符
从E推出D极其困难
从选择明文攻击不可能破解E
因为具备上述条件,加密密钥和加密算法都可以被公开
这种系统被称为公开密钥密码系统。
公开密钥密码系统要求每个用户拥有两个密钥,一个是公开密钥(公钥),另一个是私有密钥(私钥)
其他人给某个用户发送消息的时候,用该用户的公钥加密
用户解密收到的消息的时候,使用自己的私钥解密
RSA 公开密钥算法由MIT的Rivest、Shamir、Adleman发明,主要使用数论中的大数分解
1.预计算
选择两个大的素数x和y(通常1024位)
计算n=x*y和z=(x-1)*(y-1)
选择一个与z互素的数,称为d
找到e,使其满足e*d=1 mod z
2.将明文划分成k位的块,k是满足2^k<n的最大整数
加密消息p,p是文本字符,只需计算c=p^e (mod n)
解密密文c,只需计算p=c^d(mod n)
注:e,d,n 在第一步都已算出
公钥对是(e,n) ,私钥对是(d,n)
RSA算法的安全性建立在大数分解的难度基础上,如果能够分解大数n,则算法自动破解,但是数学家探索了大数分解300年也进展不大
算法的缺点是速度太慢,一般用来分发密钥,而不直接用来加密数据。
一个例子帮大家理解:
取x=3,y=11
计算n=33,z=20
选取d=7以便与z互素,计算出e=3,使其满足e*d=1 mod z
c=p^3(mod 33) ; p=c^7(mod 33)