【学】区块链技术的基石——算法和共识机制(3):公钥密码算法

公钥密码算法是现代密码学发展过程中的一个里程碑。公钥密码算法中的密钥分为公开密钥和私有密钥。公开密钥与私有密钥是用户或系统产生的一对密钥,其中的一个公开,称为公钥,另一个自己保留,称为私钥。如果用公开密钥对数据进行加密,那么只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。

由于公钥与私钥之间存在依存关系,所以只有用户本身才能解密信息,而加密和解密使用的是两个不同的密钥,所以这种算法也被叫作非对称密码算法

举例来说,如果A要使用公钥密码算法向B传输机密信息,则A首先要获得B的公钥,并使用B的公钥加密原文,然后将密文传给B,B使用自己的私钥才能解开密文。

公钥密码算法有两个重要原则:第一,要求在加密算法和公钥都公开的前提下,其加密的密文必须是安全的;第二,要求所有加密的人和掌握密钥的解密人的计算或处理比较简单,而其他不掌握密钥的人,破译极其困难。

在公钥密码算法的研究中,其安全性都是基于数学上难解的可计算问题,如:大数分解问题、计算有限域的离散对数问题、平方剩余问题、椭圆曲线的对数问题等。基于这些问题,公钥密码算法生成了各种公钥密码体制,椭圆曲线密码算法和RSA加密算法是其中的两个重要方面。

1.椭圆曲线密码算法

椭圆曲线是满足一个特殊方程的点集,注意,不要跟标准椭圆方程混淆,那根本就是两回事,椭圆曲线方程是这样的:y2=x3+ax+b。

在几何意义上,一个椭圆曲线通常是满足一个变量为2阶,另一个变量为3阶的二元方。按照这样的定义,椭圆曲线有很多种,而椭圆曲线密码算法是基于椭圆曲线数学的一种公钥密码算法,其主要的安全性在于利用了椭圆曲线离散对数难题。

椭圆曲线密码算法实现了数据加解密、数字签名和身份认证等功能,该技术具有安全性高、生成公私钥方便、处理速度快和存储空间小等方面的优势。相对于其他公钥密码算法,椭圆曲线密码算法在实际开发中运用得更广泛,比如,比特币就是使用了椭圆曲线中的SECP256k1算法,为比特币系统提供128位的安全保护。

2.RSA加密算法

RSA加密算法是以它的三个发明者罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)的名字首字母命名。RSA加密算法是一种常见的非对称加密算法,是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被国际标准化组织推荐为公钥数据加密标准。RSA的安全性基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积作为加密密钥。RSA的公钥和私钥是一对大数,将一个公钥和密文恢复成明文,等价于分解两个大素数之积,这是公认的数学难题。

RSA的安全性基于大数因数分解难题,但并没有从理论上证明破译RSA的难度与大数因数分解难度等价,无法从理论上把握它的保密性是RSA的重大缺陷。不过,RSA从提出到现在三十多年,经历了各种攻击考验,被认为是当下最安全的公钥方案之一。当然,RSA也存在其他的缺点,比如产生密钥很麻烦、受限于素数产生的技术、分组长度太大、运算代价高、速度慢等

与对称密码技术相比较,利用非对称密码技术进行安全通信,通信双方事先不需要通过保密信道交换密钥,安全性高,密钥持有量大大减少,易于管理,同时还能够提供对称密码技术很难提供的服务,比如与杂凑函数联合运用可生成数字签名等。


内容摘自《风口区块链》—— 顾炳文

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容