非对称加密
与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。
1976年,美国学者Dime和Henman为解决信息公开传送和密钥管理问题,提出一种新的密钥交换协议,允许在不安全的媒体上的通讯双方交换信息,安全地达成一致的密钥,这就是“公开密钥系统”。相对于“对称加密算法”这种方法也叫做“非对称加密算法”。
非对称加密为数据的加密与解密提供了一个非常安全的方法,它使用了一对密钥,公钥(public key)和私钥(private key)。私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人–银行才能对你的消息解密。与对称加密不同的是,银行不需要将私钥通过网络发送出去,因此安全性大大提高。
非对称加密的典型应用是数字签名。
常见的非对称加密算法有:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)、SM2
RSA算法 | SM2算法 | |
---|---|---|
计算结构 | 基于特殊性的可逆模幂运算 | 基于椭圆曲线 |
计算复杂度 | 亚指数级 | 完全指数级 |
相同的安全性能下所需要的公钥位数 | 较多 | 较少(160位的SM2与1024位的RSA具有相同的安全登记) |
密钥生成速度 | 慢 | 较RSA算法快百倍以上 |
解密加密速度 | 一般 | 较快 |
安全性 | 基于分解大整数的难度 | 基于离散对数问题丶fcdlp数学难题 |
RSA密钥强度 | ECC密钥强度 | SM2密钥强度 | 破解时间 |
---|---|---|---|
1024 | 163 | 106 | 104 |
2240 | 233 | 132 | 108 |
3072 | 283 | 160 | 1011 |
7680 | 409 | 210 | 1020 |
算法 | 签名速度(次/秒) | 验签速度(次/秒) |
---|---|---|
1024RSA | 2792 | 51224 |
2048RSA | 455 | 15122 |
192ECDSA | 1695 | 2040 |
256SM2 | 4095 | 871 |