非对称秘钥加密
定义和应用原理
公开秘钥加密 Public Key Cryptography,与私有秘钥加密解密所用同一秘钥不同,公开秘钥加密和解密所用的秘钥是不同的,也称非对称秘钥加密法。
借助秘钥生成器生成秘钥A和秘钥B,两把秘钥在数学上相关,被称作秘钥对。当用秘钥对其中任何一个秘钥加密时,可以用另一个秘钥解密,而且只能用此秘钥对中的另一个秘钥解密,自己不能解密。
实际应用中:
约定其中一个秘钥只能自己知道和使用,不与他人共享,这个就是私钥。
另一个秘钥通过网络公开,谁都可以获取一把,属于公开的秘钥,这个就是公钥。
以下两种应用情况,
1、任何收到公钥的人,都可以用公钥进行加密,这个时候能且只能被这个有私钥的人解密,实现定向通讯。
2、私钥拥有者用私钥进行信息加密,形成密文发送出去,这个密文只能被公钥进行解密,根据相关性,
这个密文的形成一定是私钥进行加密,而私钥只有一个拥有者,实现不可抵赖。
使用过程
1、收发双方分别生成秘钥对,并公开自己的公钥,保存自己的私钥
2、发送方使用接收方的公开秘钥加密信息,密文传输给接收方
3、接收方收到发送方发送的密文后,使用自己的私钥进行解密,获得自有自己知晓的内容。确定是发给自己的
4、接收方使用自己私钥进行加密回执报文,密文传输给发送方
5、发送方接收到后,只能用接收方的公钥进行解密成功,推定该回执只能为接收方所发。
常用算法
RSA算法,大整数因子分写系统,安全性基于大整数因子分解的困难性,而大整数因子分解问题是数学上的著名难题,目前没什么有效方法解决。
ECC算法,椭圆曲线离散对数系统,安全强度依赖于取现的选择和体制,可以达到更高的安全强度
DSA算法,离散对数系统,只适合做数字签名,安全强度和效率都不如RSA算法
三类系统目前都被认为是安全和有效的。
其他的一些算法有:
POHLIG-Hellman算法
Rabin算法
ElGamal算法
SCHNORR算法
ESIGN算法
MCEliece算法
OKAMOTO算法
优缺点
优点
- 身份认证方便
- 秘钥分配简单
- 可以解决数据的否认、抵赖的问题
缺点
- 加密解密速度
由于都是用的大数据计算,所以RSA最快的情况也比DES慢两个数量级,所以只适用于少量数据加密