公钥密码概述


https://mp.weixin.qq.com/s/6cY2CCEe_w1LfPnu36Xg3g

概述

公钥密码算法也常称为非对称密码算法。其最大特点是其密钥是成对出现的,其密钥对由公钥和私钥组成。公钥和私钥是不相同的,已知私钥可推导出公钥,但已知公钥不能推导出私钥。公钥可对外公开,私钥由用户自己秘密保存。

公钥密码算法有两种基本应用模式:一是加密模式,即以用户公钥作为加密密钥,以用户私钥作为解密密钥,实现多个用户的加密信息只能由一个用户解读;二是认证模式,即以用户私钥进行数字签名,以用户公钥验证签名,实现一个用户的签名可以由多个用户验证。用于加解密中的密钥对,称为加密密钥对。用于签名验证中的密钥对称为签名密钥对。

目前的公钥密码主要有RSA、ECC、IBC三类,针对RSA我国没有相应的标准算法出台,而针对ECC和IBC,我国分别有相应的SM2、SM9标准算法发布。

RSA

1977年,麻省理工学院的三位数学家Rivest、Shamir、Adleman创建了一个比较完善的公钥密码算法,就是著名的RSA算法。RSA算法在过去一直是最受欢迎的公钥密码算法,其算法比较简单,加密解密都只是一个模幂运算,速度快,效率高。在相当长的一段时间内,RSA在公钥密码算法中占据着主导地位,并得到了广泛的应用。

也许因为RSA密码的特殊地位和重要应用,国际上破解RSA的研究工作从来没有间断并在不断推进。目前RSA 1024已失去其安全性,将被淘汰。目前看来,RSA 2048(及以上)是安全的,而RSA算法复杂度随着模长的增加,运算量成指数级上升,同时也相应增加了密钥存储量。

2011年,国家密码管理局下发通知,停止审批RSA密码应用新建项目。

ECC(SM2)

1985年, Miller和 Koblitz分别独立提出了椭圆曲线密码(ECC)。和RSA相比,ECC算法的数学理论比较复杂,单位安全强度相对较高。ECC安全性建立在离散对数求取困难性基础上,它的破译或求解难度基本上是完全指数级的,而破解RSA的难度是亚指数级的。ECC公钥密码是单位比特强度最大的公钥密码,256比特的ECC公钥密码的安全强度比2048比特的RSA公钥密码强度还要强。要达到同样的安全强度,ECC所需的密钥长度远比RSA低。

2012年,国家密码管理局发布ECC国密标准算法SM2。

IBC (SM9)

基于标识的密码(Identity-Based Cryptography)简称IBC,是与RSA、ECC相比具有其独特性的又一种公钥密码。这种独特性表现在其公钥是用户的身份标识,而不是随机数(乱码)。

IBC这个概念最初出现于1984年Shamir(RSA密码创始人之一)的论文中,IBC密码系统公钥和私钥采用一种不同于RSA和ECC的特殊方法产生,即公钥是用户的身份标识,而私钥通过绑定身份标识与系统主密钥(master key)生成。

Miller在1985年创建椭圆曲线密码(ECC)后不久,在其一篇未发表的手稿中首次给出了计算双线性对的多项式时间算法。但因为当时双线性对在公钥密码中尚未取得有效应用,因此没有引起研究者的关注。当双线性对在公钥密码学中获得诸多应用后,其计算的重要性也日趋显著,时隔19年之后,Miller于2004年重新整理了当年的手稿,详尽地论述了双线性对的计算。双线性对的有效计算奠定了IBC密码算法基础。

2016年,国家密码管理局于发布IBC国密标准算法即SM9。

三种公钥密码应用比较

RSA与ECC/SM2公钥密码是基于数字证书的公钥密码,IBC/SM9是无证书的基于标识的公钥密码。

基于数字证书的公钥密码是目前广泛使用的公钥密码,由可信的权威机构(CA)为每个用户签发公钥证书。

CA拥有用户的身份和公钥后,CA需要验证用户的有效性和合法性,如果验证通过,CA为其颁发证书,而这个证书包含CA的私钥对用户公钥和身份等信息的签名。如果想要验证用户的公钥,需通过CA的公钥验证用户的证书。

IBC作为PKI体系的发展和补充,既保证了签名的安全特性,又满足了各种应用更灵活的安全需求。IBC应用于PKI中是无证书的(certificateless),由于标识本身就是实体的公钥,这类系统就不再依赖证书,在某种程度上简化了PKI的应用。

在IBC中,可信第三方是密钥生成中心KGC(key generation center),类似于PKI中的CA,一旦用户的身份标识确定,KGC仅仅只需要验证该用户是否拥有该身份标识。如果验证成功,则KGC为用户创建其私钥,这个私钥是根据用户身份标识和KGC的根私钥生成的。

IBC密码的应用比传统公钥密码的应用在某种程度上更加简单,但是,其代价是IBC密码的设计与计算却比其他公钥密码复杂得多。在IBC算法中,除了RSA和ECC中所具有的运算外,还增加了复杂的双线性对(bilinear)计算。因此,IBC密码算法运行速度远不如RSA和ECC。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM