关于ECDSA/ECC(密钥加密传输)和ECDSA/ECDH(密钥磋商) ╰+攻爆jí腚メ 2022-09-29 15:50 189阅读 0赞 最近项目中用到了ECC的相关算法,恶补了一下相关知识 **ECC**:Elliptic Curves Cryptography,椭圆曲线密码编码学 **ECDSA**:用于数字签名,是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。 **ECDH**:是基于ECC(Elliptic Curve Cryptosystems,椭圆曲线密码体制,参看ECC)的DH( Diffie-Hellman)密钥交换算法。交 重点说一下,**ECDH用途**: 由于通过ECDH,双方可以在不共享任何秘密的前提下协商出一个共享秘密,因此,ECDH广泛用于协议之中,通过ECDH得到对称加密密钥。如TLS中的\*\_ECDH\_\*密码套件。使用DH算法的协议,都可以升级到ECDH算法。ECDH具有ECC的高强度、短密钥长度、计算速度快等优点。 **密钥交换过程:** 假设密钥交换双方为Alice、Bob,其有共享曲线参数(椭圆曲线E、阶N、基点G)。 1.Alice生成随机整数a,计算A=a\*G。Bob生成随机整数b,计算B=b\*G。 2.Alice将A传递给Bob。A的传递可以公开,即攻击者可以获取A。由于椭圆曲线的离散对数问题是难题,所以攻击者不可以通过A、G计算出a。Bob将B传递给Alice。同理,B的传递可以公开。 3.Bob收到Alice传递的A,计算Q=b\*A 4.Alice收到Bob传递的B,计算Q‘=a\*B **总结:** Alice、Bob双方即得Q=b\*A=b\*(a\*G)=(b\*a)\*G=(a\*b)\*G=a\*(b\*G)=a\*B=Q' (交换律和结合律),即双方得到一致的密钥Q。 参考资料:[ECDH][] [ECC-ECDSA][] [ECC-ECDH][] [ECDH -wiki][] [ECDH-PYTHON][] [ECDH]: http://baike.sogou.com/v7328994.htm [ECC-ECDSA]: http://blog.sina.com.cn/s/blog_55a9111c01011zxt.html [ECC-ECDH]: http://blog.csdn.net/mingzznet/article/details/47168691 [ECDH -wiki]: https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman [ECDH-PYTHON]: https://pypi.python.org/pypi/ecdsa/
还没有评论,来说两句吧...