微信公众号:GaiaWorld
加密技术作为区块链技术里极其重要、不可或缺的一部分,为区块链的匿名性、不可篡改和不可伪造等特点保驾护航。如果说共识机制是区分一个公链质量的核心和灵魂,那么加密算法则是一个公链是否值得信赖、是否有基本的安全性的底线。不以达成共识、高交易速度为追求,只为“安全”这一个核心服务,是数字货币又称为加密货币的另一个原因。
比起共识算法,加密算法与密码学相关,更难理解,大多数公链采用的加密算法,都是经过反复验证和时间的检验的,几乎均采用保守型技术选型。加密算法一旦因为漏洞而被攻击,那么整条区块链的数据都将受到挑战。
如此重要的加密算法,需要应用在区块链哪些场景中,目前公链又普遍使用什么样的加密算法呢?
加密算法一般分为对称加密和非对称加密,在区块链中普遍使用的是非对称加密。
对称加密是指:单钥密码系统的加密,同一个秘钥可以同时作为信息的加密和解密。
非对称加密是指:在加密和解密过程中使用两个非对称的密码,分别称为公钥和私钥。
非对称秘钥对具有两个特点:一是用其中一个密钥(公钥或私钥)加密信息后,只有另一个对应的密钥才能解开。二是公钥可向其他人公开,甚至人人可获取,私钥则保密,其他人无法通过该公钥推算出相应的私钥。利用此种算法生成的公钥和私钥,目前所知实际上是无法从公钥反向破解出私钥的。换句话说,如果你能破解椭圆曲线加密算法,你就不会在意比特币这点“小钱”。
非对称加密是一个统称,在非对称加密中,代表算法有 RSA、ECC/SM2。
RSA:经典的公钥算法,1978 年由Ron Rivest、Adi Shamir、Leonard Adleman 共同提出,三人于2002 年获得图灵奖。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。
ECC:椭圆曲线算法。在1985年由Neal Koblitz和Victor Miller分别独立提出。主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。另一个优势是可以定义群之间的双线性映射,基于Weil对或是Tate对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。
两者对比之下,各有千秋,但对于追求更高安全性的区块链来说,大多数公链还是会选择椭圆曲线算法。
非对称加密在区块链中主要应用于信息加密、数字签名和登录认证。即是主要应用在区块链数字货币交易中,防止篡改和伪造信息。
信息加密:信息发送者A利用信息接收者B的公钥将信息加密后再发给B,B即可利用自己的的私钥将信息解密。
数字签名场景:则是由发送者A 采用自己的私钥加密信息后发送给B,B使用A 的公钥对信息解密、从而可确保信息是由A发送的。
登录认证场景:则是由客户端使用私钥加密登录信息后发送给服务器,后者接收后采用该客户端的公钥解密并认证登录信息。
由于加密算法并非一种能够轻松独创的技术, RSA的三个创始人均是麻省理工学院的密码学专家,三人还因创造了RSA而得到了图灵奖;而ECC的创始人Neal Koblitz 是华盛顿大学的数学教授和滑铁卢大学的兼职密码学教授。
可见想要独创加密算法是一件难度非常大,并且需要很长时间去验证安全性,安全可控性较低,所以大多数公链为了安全起见都会采用已有算法。比如比特币和以太坊均使用的是ECC椭圆体系加密。
椭圆曲线加密算法也是Gaia的选择——一个指数级的安全算法。
GaiaWorld使用椭圆曲线算法生成公钥和私钥,选择的是curve25519曲线。Curve25519 是目前最高水平的 Diffie-Hellman函数,适用于广泛的场景,由Daniel J. Bernstein教授设计。
在签名加密上,GaiaWorld选择的是椭圆曲线加密ed25519。ed25519是一个数字签名算法,签名和验证的性能都极高,一个4核2.4GHz 的 Westmere cpu,每秒可以验证 71000 个签名,安全性极高,等价于RSA约3000-bit。签名过程不依赖随机数生成器,不依赖hash函数的防碰撞性,没有时间通道攻击的问题,并且签名很小,只有64字节,公钥也很小,只有32字节。
加密算法的安全级别决定了整个公链的安全和可靠性,也是公链一切价值的底层建筑,Gaia对公链安全性的重视放在第一位。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。