【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等

这篇具有很好参考价值的文章主要介绍了【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. ECC椭圆曲线

  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 等需要非对称加密的场景。

1.1 曲线类型

  曲线分为素数域曲线、二元域曲线。

  • 素数域:P-192、P-224、P-256、P-384、P-521
  • 二元域:K-163、K-233、K-283、K-409、K-571、B-163、B-233、B-283、B-409、B-571

1.2 曲线标准

  曲线标准主要有: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

1.3 表示方法

  椭圆曲线其实是一个数学方程,通常用下面的方程式来表示:y2 = (x3 + ax + b) mod p

  如果a和b取的值不同,那么对应的曲线形状也会不一样,如下图:
ecdsa sm2,密码学,ECDSA,ECC,ECDH,SM2,ASYNC

1.4 曲线运算

  椭圆曲线的运算有多种,包括:点加(Point Addition)、点乘(Point Multiplication)、倍点(Point Double)等。

1.4.1 点加(Point Addition)

ecdsa sm2,密码学,ECDSA,ECC,ECDH,SM2,ASYNC

  1. 两点决定一条直线,也就是说,我们定义通过两个点(P,Q) 做一条直线,找到这条直线和EC曲线相交的那个点(图1中R’点)
  2. 根据点加法运算的定义,可以得到 P+Q+R’=0 ,那么 P+Q=−R’ , − R’的定义是关于 x 轴对称所得到的一个点R,如上图所示,这就是点加法的定义

1.4.2 点乘(Point Multiplication)

  “点加”是ECC计算中最基本和原始的概念,它描述群当中的两个元素(点)之间的操作,实际运算中大量使用的是“点乘”。但是不要被点乘这个名字所迷惑,其实它描述的是:对同一个点进行多次操作时的规则。
  很多常见的写法例如 kG,很容易误导初学者,其实这个kG描述的其实是:针对点G进行“k-1”次点加操作。比如k = 4,如何计算4G呢,既然我们知道如何任意两个点的点加,那么计算4G无非就是:
  第1步:计算G+G得到2G
  第2步:计算2G+G得到3G
  第3步:计算3G+G得到4G,计算完成。

1.4.3 倍点(Point Double)

  倍点其实就是点加的特殊运算,当P和Q完全重合时,就变成了倍点运算。如下图:
ecdsa sm2,密码学,ECDSA,ECC,ECDH,SM2,ASYNC

2. ECDSA

  ECDSA,即ECC椭圆曲线签名算法。设私钥、公钥分别为d、Q,即Q = dG,其中G为基点。

2.1 私钥签名

签名过程如下:

  1. 选择随机数r,计算点rG(x,y);
  2. 根据随机数r,消息M的哈希值h、私钥d,计算出 s = (h + dx)/r;
  3. 将消息M和签名值(rG, s)发给接收方;

举例:假设要签名的消息是一个字符串:“Hello World!”。

  1. 是对“待签名的消息”生成一个消息摘要,不同的签名算法使用不同的消息摘要算法,而ECDSA256使用SHA256生成256比特的摘要;
  2. 产生一个随机数k,利用随机数k,计算出两个大数r和s。将r和s拼在一起就构成了对消息摘要的签名;

2.2 公钥验签

  1. 接收方收到消息M、以及签名{rG=(x,y), s};
  2. 根据消息求哈希h;
  3. 使用发送方公钥Q计算:hG/s + xQ/s,并与rG比较,如相等即验签成功(原理:hG/s + xQ/s = hG/s + x(dG)/s = (h+xd)G/s = r(h+xd)G / (h+dx) = rG))。

3. ECDH

  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

4. SM2

  SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法。
  SM2是基于椭圆曲线的非对称算法,相对于RSA算法,SM2具有密钥更小,运算速度更快,相同密钥长度下具有更高安全性等优势。
  国密SM2算法标准包括5个部分:

  • GMT 0003.1-2012 SM2椭圆曲线公钥密码算法第1部分:总则
    主要介绍了ECC基本的算法描述,包括素数域和二元扩域两种算法描述
  • GMT 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法
    这个算法不同于ECDSA算法,其计算量大,也比ECDSA复杂些,也许这样会更安全吧
  • GMT 0003.3-2012 SM2椭圆曲线公钥密码算法第3部分:密钥交换协议
    与ECDH功能相同,但复杂性高,计算量加大
  • GMT 0003.4-2012 SM2椭圆曲线公钥密码算法第4部分:公钥加密算法
    使用ECC公钥进行加密和ECC私钥进行加密算法,其实现上是在ECDH上分散出流密钥,之后与明文或者是密文进行异或运算,并没有采用第3部分的密钥交换协议产生的密钥。
  • GMT 0003.5-2012 SM2椭圆曲线公钥密码算法第5部分:参数定义
    给出了SM2使用素数域256位椭圆曲线参数

  SM2与RSA的比较如下:

算法 SM2 RSA
算法结构 基于椭圆曲线(ECC) 基于椭圆曲线(ECC)
计算复杂度 完全指数级 亚指数级
存储空间 192~256bit 1024~8192bit
秘钥生成速度 较RSA算法快百倍以上
解密加密速度 较快 一般

4.1 数字签名

待添加文章来源地址https://www.toymoban.com/news/detail-539564.html

4.2 秘钥交换

待添加

4.3 加密

待添加

4.4 解密

待添加

5. SM9

待添加

6. 总结

待添加

到了这里,关于【密码算法 之十四】非对称算法,ECC椭圆曲线算法 之 ECDSA、ECDH、SM2、SM9等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SM2椭圆曲线公钥密码算法(Python实现)

    Windows11 PyCharm2019.3.3 x64 通过编写代码实现SM2椭圆曲线公钥密码算法,加深对SM2椭圆曲线公钥密码算法的理解,体会该算法在解决实际问题的价值; 将密码学和数学知识相联系,并灵活运用到密码学的设计方案中; 提高实践能力和逻辑思维能力。 random math gmssl SM2算法和RSA算法

    2024年02月02日
    浏览(55)
  • SM2椭圆曲线公钥密码算法--密钥对与数字签名

    SM2算法全称是SM2椭圆曲线公钥密码算法(SM是商用密码的拼音缩写),是一种基于“椭圆曲线”的密码ECC(Elliptic Curve Cryptography)。2016年,SM2成为中国国家密码标准。 在商用密码体系中,SM2主要用于替换RSA加密算法。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于

    2024年02月11日
    浏览(47)
  • Solidity--如何实现椭圆算法签名(ECDSA)

    椭圆算法签名 椭圆曲线算法签名(ECDSA)是一种数字签名算法,其基于椭圆曲线密码学(ECC)。它是一种非对称密码算法,即发送方和接收方都有不同的密钥。在数字签名中,发送方使用它的私钥对数据进行签名,以证明数据的完整性和发送方身份。接收方可以使用发送方的

    2023年04月09日
    浏览(33)
  • 椭圆曲线密码(SM2)

    1. 公钥生成 ① Alice首先构造一条椭圆曲线E,在曲线上选择一点G作为生成元,并求G的阶为n,要求n必须为质数。此时构成了一个循环群G. ② Alice选择一个私钥k (k n),生成公钥 Q = kG ③ Alice将公钥组E、Q、G发送给Bob 2. 加密过程 ① Bob收到信息后,将明文编码为M,M为曲线上一点,

    2024年02月17日
    浏览(42)
  • sCrypt 合约中的椭圆曲线算法:第二部分

    我们在脚本中实现了椭圆曲线 (EC) 算法。在之前的实现中,我们进行链下计算并在脚本中验证结果。我们这里直接用脚本计算。 基于EC的应用非常多,特别是在密码学领域,如数字签名、加密、承诺方案等。作为具体示例,我们重新实现了 ECDSA 签名验证,允许使用任意消息验

    2024年01月16日
    浏览(50)
  • 区块链数字签名、验签,以及椭圆曲线算法JS库—elliptic的使用

    目录 一、简介 二、椭圆曲线密码elliptic 1、安装elliptic和js-sha3 2、Keccak256 3、签名过程

    2024年02月02日
    浏览(46)
  • 深入解析Ed25519椭圆曲线数字签名算法的C#移植及应用示例

    第一部分:Ed25519算法的简介与重要性 随着数字加密技术的飞速发展,我们不断地探索更安全、更高效的加密算法来保护数据和身份验证。其中,Ed25519已经成为了椭圆曲线数字签名算法(ECDSA)的一个重要分支,其在性能和安全性方面都表现出了卓越的特点。 Ed25519的特点 :

    2024年02月12日
    浏览(65)
  • 公钥密码系统主要依赖的三种数学难题:1.大整数因子分解问题 2.离散对数问题 (DLP问题) 3. 椭圆曲线上的离散对数问题(ECDLP)

    1.大整数因子分解问题,如 RSA 系统 1.数理 将两个大素数相乘容易,但对其乘积进行因式分解极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥 先找到两个非常大的质数P和Q,使 N=P Q,T=(P-1) (Q-1) 在区间(0~N)之间取一个与T互质的数 E,即 GCD(E,T)

    2023年04月08日
    浏览(44)
  • 【密码算法 之一】对称加密算法 DES \ 3DES 浅析

      DES(Data Encryption Standard)是1977年美国联邦信息处理标准(FIPS)中所采用的一种对称密码(FIPS 46-3)。DES一直以来被美国以及其它国家的政府和银行等广泛使用。   然而,随着计算机的进步,现在DES已经能够被暴力破解,强度大不如从前了。20世纪末,RSA公司举办过破

    2024年02月09日
    浏览(58)
  • 【密码算法 之二】对称加密算法 AES(Advanced Encryption Standard)浅析

      AES的全称是 Advanced Encryption Standard,意思就是“高级加密标准”。它的出现主要是用于取代其前任DES算法的,因为我们都知道EDS算法的秘钥长度实际为56bit,因此算法的理论安全强度为2的56次方,但是随着计算能力的大幅提高,虽然出现了3DES的加密方法,但由于它的加密

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包