< 返回动态列表
由 MDUKEY 加密方式引申开:关于区块链中常见的非对称加密算法
2020-09-07 18:48


一、背景:

一直以来,用户隐私数据的安全都是 MDUKEY 的重中之重。作为最优先级的事项,MDUKEY 存储服务使用代理重加密、多层加密(应用层、网关层、文件系统层)等技术保护用户隐私数据,并对用户数据数据进行最小拆分,分布式存储,减少数据大面积泄露 的风险,同时保证服务的高可用性。

 

而在数据安全的基础上,MDUKEY 使用对称加密与非对称加密技术结合的加密方式,以及专业的加解密硬件,提高加解密的速率,保证服务的高吞吐量。

 

其中,非对称加密作为区块链领域中的基石,虽然被很多人听说过,但并不被具体了解。

 

因此,本文将从加密方式引申开,深入浅出介绍关于非对称加密算法中的“签名与加密”。

 

二、什么是非对称加密?

 

非对称加密(asymmetric cryptography),也称为公开密钥加密(Public-key cryptography),是密码学的一种算法。它需要两个密钥,一个是公开密钥,另一个是私有密钥。顾名思义,公钥可以任意对外发布;而私钥必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给要通信的另一方。

 

非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。

 

非对称加密具有两个重要的性质:

2.1 加密的双向性

加密具有双向性,即公钥和私钥中的任一个均可用作加密,此时另一个则用作解密。 



使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文,甚至连最初用来加密的密钥也不能用作解密,这是非对称加密最重要的性质或者说特点。

 

2.2 公钥无法推导出私钥

必须确保使用公钥无法推导出私钥,至少妄想使用公钥推导私钥必须在计算上是不可行的,否则安全性将不复存在。

虽然两个密钥在数学上相关,但如果知道了公钥,并不能凭此计算出私钥;因此公钥可以公开,任意向外发布;而私钥不公开,绝不透过任何途径向任何人提供。

 

三、常见的非对称加密算法:

 

目前常见的非对称加密有RSA算法、 Elgamal算法和椭圆曲线数字签名算法(ECDSA),其中椭圆曲线数字签名算法(ECDSA)是区块链中应用最多的方法。

 

3.1 RSA算法

RSA 是被研究得最广泛的公钥算法,从提出到现在已有四十年的历史,经历了各种攻击考验。RSA的安全性主要依赖大数分解,优势是秘钥长度可以增加到任意长度。RSA运算方式造成了签名内容如果较短,会被很容易修改为攻击者想要的内容,所以一般还需要将签名内容进行一次哈希运算,并填充至和私钥差不多的长度。此外,随着计算能力的增长,为防止被破解,秘钥长度也需要不断增长,目前认为安全的秘钥长度是2048bit。同时RSA的私钥生成需要两个质数的组合,因此寻找更长私钥的计算速度也更慢。


 

3.2 Elgamal算法

Elgamal由Taher Elgamal于1985年发明,其基础是DiffieˉHellman 密钥交换算法,后者使通信双方能通过公开通信来推导出只有他们知道的秘密密钥值[DiffieˉHellman]。

 

DiffieˉHellman是Whitfield Diffie和Martin Hellman于1976年发明的,被视为第一种 非对称加密算法,DiffieˉHellman 与RSA的不同之处在于,DiffieˉHellman不是加密算法,它只是生成可用作对称密钥的秘密数值。

 

在DiffieˉHellman密钥交换过程中,发送方和接收方分别生成一个秘密的随机数,并根据随机数推导出公开值,然后,双方再交换公开值。DiffieˉHellman算法的基础是具备生成共享密钥的能力。只要交换了公开值,双方就能使用自己的私有数和对方的公开值来生成对称密钥,称为共享密钥。对双方来说,该对称密钥是相同的,可以用于使用对称加密算法加密数据。


 

3.3 椭圆曲线数字签名算法(ECDSA)

椭圆曲线算法是利用在有限域上的椭圆曲线的离散对数问题来加密或签名的。椭圆曲线的秘钥和RSA不同,有效范围会受椭圆曲线参数的限制,因此不能像RSA一样可以通过增加私钥长度来提高安全性,对于安全性不够的曲线,必须修改椭圆曲线的参数,不如RSA灵活。

 

和RSA算法比,椭圆曲线的优势在于:私钥可以选取有效范围内的任意数,私钥的生成速度远快于RSA算法的私钥。最重要的是相同秘钥长度的椭圆曲线安全性能高很多,因此达到相同安全等级需要的椭圆曲线秘钥的长度远小于RSA秘钥的长度,因此占用的存储空间相对较小,对于存储比较受限的区块链来说,椭圆曲线更适用。