非对称算法属于密码学范畴,是一种可以对信息进行加密和解密的算法。它的运行需要一个公钥和一个私钥,公钥用于公开给其他人,私钥需要自己保存,两个密钥可以互相加密解密。由于加密的密钥与解密的密钥不是同一把而产生了非对称性,因此被称为非对称加密。
与之对应是加密解密使用同一密钥的算法,对称加密算法。比如把单词“gate”使用AES对称加密算法加密可以得到字符串U2FsdGVkX18fop1iGBPzNdnADZ57AJxOn+wEBSIUAG4。反之密文也可以通过AES对称加密算法解密得出原字符串gate。在早期,发送加密电报使用的就是这种对称加密算法。这种方式解密过程简单且速度快,但加密方法被泄露后,很容易将截获的信息破译出来,安全性不高。
非对称加密算法的安全性比对称加密算法要高,但是由于运行复杂,效率比对称加密算法要低一些。我们通过一个例子来简单理解:假设Jim想给Bob使用非对称加密的方式发送一条信息,需要经过以下过程:
1.Jim与Bob都需要产生一对公钥和私钥;
2.Jim的公钥发送给Bob,私钥自己保存;Bob的公钥发送给Jim,私钥自己保存;
3.Jim向Bob发信息时,使用Bob的公钥加密信息;
4.Bob收到消息后,使用自己的私钥即可解密查阅。
常见的非对称加密算法
RSA(Rivest Shamir Adleman)算法:因其难以破解的特点在数字加密和数字签名领域被广泛应用。在RSA算法中使用公钥私钥都可以对信息加密,公钥加密(防止信息被盗取)则私钥解密,私钥加密(防止信息被篡改)则公钥解密(数字签名)。理论上,RSA算法中密钥位数越长,其破解难度越高(未排除量子计算)。所以目前业界普遍使用的密钥不低于2048位。
DSA数字签名算法(Digital Signature Algorithm):这种算法无法对信息进行加密或者解密,主要运用于对加密信息进行签名和认证。安全程度和RSA算法一样高,但处理速度更快。
ECC椭圆曲线加密算法(Elliptic-curve Cryptography):加密过程源于数学中的椭圆曲线。相较于RSA算法,ECC算法加密和解密速度更快,单位安全强度更高。同样的秘钥长度,ECC算法有**的安全性。
ECDSA椭圆曲线签名算法(Elliptic Curve Digital Signature Algorithm):这种算法在椭圆曲线加密算法基础上融合了数字签名算法。比特币与以太坊采用的就是ECDSA算法技术。
非对称算法在区块链资产中也得到了实际的运用。加密货币钱包账户的地址就是用公钥根据哈希算法计算出的,私钥则用于验证和进行数字签名。
总结
密码学已成为现代计算机安全中不可或缺的一部分,也是日益发展的加密货币生态系统的关键组成部分。随着密码学的不断发展,在未来的计算机安全及加密货币安全验证方面,对称与非对称加密算法在抵御各类威胁上会有更大的作用。