赞
踩
ECC(Elliptic Curve Cryptography),就是椭圆曲线密码算法,它是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全,RSA加密算法也是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密(有待考证)。
ECDSA(Elliptic Curve Digital Signature Algorithm)算法是基于 ECC 的的一种签名算法,广泛用于区块链、HTTPS 等需要非对称加密的场景。
曲线分为素数域曲线、二元域曲线。
曲线标准主要有:SECG / NIST / WTLS / ANSI X9.62 / RFC 5639 / SM2
SECG
(1)SECG(Standards for Efficient Cryptography Group),高效密码学标准组织(SECG),它是一个行业联盟,成立于1998年,旨在开发商业标准,输出SEC标准规范;
(2)SECG成员包括信息安全行业的领先技术公司和关键行业参与者。主要输出SEC的规范;
(3)SECG官网:https://www.secg.org/;
NIST
(1)NIST(National Institute of Standards and Technology),是美国国家标准技术研究所,前身是美国国家标准局,目前是隶属于商务部的政府实验室。主要从事标准测量方面的研究,职能类似中国计量院或者法国的LNE,为业界提供国家计量标准,计量检测和校准技术,参加标准委员会制定标准等,但本质上还是一个大型的实验室。有两个分部,一个在马里兰州的Gaithersburg,一个在科州的Boulder;
(2)NIST是美国的标准,并不是世界标准;
(3)NIST官网:https://www.nist.gov/ ;
WTLS
WTLS(Wireless Transport Layer Security),无线传输层安全,它是无线应用协议(WAP)的安全级别,特别是针对使用WAP的应用程序。
官网:https://www.techtarget.com/searchmobilecomputing/definition/Wireless-Transport-Layer-Security
ANSI X9.62
该项目始于1995年,并于1999年正式作为ANSI标准颁布。ANSI X9.62具有高安全性和通用性。它的基域可以是Fp,也可以是F2m。F2m中的元素可以以多项式形式或正规基形式来表示。若用多项式形式,ANSI X9.62要求模多项式为不可约三项式,标准中提供了一些不可约三项式,另外还给出了一个不可约五项式。为了提高通用性,针对每一个域提供了一个模多项式。若使用正规基表示方法,ANSI X9.62规定使用高斯正规基。椭圆曲线最主要的安全因素是n,即基点阶,ANSI X9.62的n大于2160。椭圆曲线是使用随机方法选取的。ANSI X9.62规定使用以字节为单位的字符串形式来表示曲线上的点,ASN.1语法可以清楚地描述域参数,公钥和签名。
RFC5639
ECC曲线标准
官网:https://www.rfc-editor.org/
FIPS 186-2
1997年,NIST开始制定包括椭圆曲线和RSA签名算法的FIPS 186标准。1998年,NIST推出了FIPS186,它包括RSA与DSA数字签名方案,这个方案也称为FIPS 186-1。1999年NIST又面向美国G0vment推出了15种椭圆曲线。这些曲线都遵循ANSI X9.62和IEEE 1363-2000的形式。2000年,包含ANSI X9.62中说明的ECDSA,使用上述曲线的FIPS 186-2问世。
SM2
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。
SM2是基于椭圆曲线的非对称算法,相对于RSA算法,SM2具有密钥更小,运算速度更快,相同密钥长度下具有更高安全性等优势。
IEEE 1363-2000
该标准于2000年作为IEEE标准问世。IEEE 1363的覆盖面很广,包括公钥加密,密钥协商,基于IFP、DLP、ECDLP的数字签名。它与ANSI X9.62和FIPS 186完全不同,它没有最低安全性限制(比如不再对基点阶进行限制),用户可以有充分的自由。
OpenSSL | NIST | SECCG | ANSI |
---|---|---|---|
prime192v1 | nistp192 | secp192r1 | prime192v1 |
secp224r1 | nistp224 | secp224r1 | |
prime256v1 | nistp256 | secp256r1 | prime256v1 |
secp384r1 | nistp384 | secp384r1 | |
secp521r1 | nistp521 | secp521r1 | |
sect163k1 | nistk163 | sect163k1 | |
sect163r2 | nistb163 | sect163r2 | |
sect233k1 | nistk233 | sect233k1 | |
sect233r1 | nistb233 | sect233r1 | |
sect283k1 | nistk233 | sect283k1 | |
sect283r1 | nistb283 | sect283r1 | |
sect409k1 | nistk409 | sect409k1 | |
sect409r1 | nistb409 | sect409r1 | |
sect571k1 | nistk571 | sect571k1 | |
sect571r1 | nistb571 | sect571r1 |
椭圆曲线其实是一个数学方程,通常用下面的方程式来表示:y2 = (x3 + ax + b) mod p
如果a和b取的值不同,那么对应的曲线形状也会不一样,如下图:
椭圆曲线的运算有多种,包括:点加(Point Addition)、点乘(Point Multiplication)、倍点(Point Double)等。
“点加”是ECC计算中最基本和原始的概念,它描述群当中的两个元素(点)之间的操作,实际运算中大量使用的是“点乘”。但是不要被点乘这个名字所迷惑,其实它描述的是:对同一个点进行多次操作时的规则。
很多常见的写法例如 kG
,很容易误导初学者,其实这个kG描述的其实是:针对点G进行“k-1”次点加操作。比如k = 4,如何计算4G呢,既然我们知道如何任意两个点的点加,那么计算4G无非就是:
第1步:计算G+G得到2G
第2步:计算2G+G得到3G
第3步:计算3G+G得到4G,计算完成。
倍点其实就是点加的特殊运算,当P和Q完全重合时,就变成了倍点运算。如下图:
ECDSA,即ECC椭圆曲线签名算法。设私钥、公钥分别为d、Q,即Q = dG,其中G为基点。
签名过程如下:
举例:假设要签名的消息是一个字符串:“Hello World!”。
ECDH 是椭圆曲线的笛福赫尔曼算法的变种,它其实不单单是一种加密算法,而是一种密钥协商协议,也就是说 ECDH 定义了(在某种程度上)密钥怎么样在通信双方之间生成和交换,至于使用这些密钥怎么样来进行加密完全取决通信双方。
ECDH的工作流程如下:
(1)Alice 和 Bob 生成各自的私钥和公钥。
Alice的私钥为 dA,公钥为 HA = dAG
Bob的私钥为 dB,公钥为 HB = dBG
Alice 和 Bob 需要使用一样的主要参数:在同一条曲线的同一个有限域上选择一样的基点 G。
(2)Alice和Bob通过不安全信道交换各自的公钥 HA 和 HB,中间人可以窃听到和,但是在无法攻破离散对数难题的情况下无法得到 dA 和 dB。
(3)Alice计算 S = dAHB(使用自身的私钥和Bob的公钥),Bob计算 S = dBHA(使用自身的私钥和Alice的公钥),双方求得的S是一样的,因为 S = dAHB = dA(dBG) = dB(dAG) = dBHA
SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。
SM2是基于椭圆曲线的非对称算法,相对于RSA算法,SM2具有密钥更小,运算速度更快,相同密钥长度下具有更高安全性等优势。
国密SM2算法标准包括5个部分:
SM2与RSA的比较如下:
算法 | SM2 | RSA |
---|---|---|
算法结构 | 基于椭圆曲线(ECC) | 基于椭圆曲线(ECC) |
计算复杂度 | 完全指数级 | 亚指数级 |
存储空间 | 192~256bit | 1024~8192bit |
秘钥生成速度 | 较RSA算法快百倍以上 | 慢 |
解密加密速度 | 较快 | 一般 |
待添加
待添加
待添加
待添加
待添加
待添加
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。