图解漏洞CVE-2020-0601中涉及的ECC签名算法ECDSA

牧云@^-^@ 提交于 2020-01-20 13:35:04

这是第一个由美国国安局(NSA)所发现并主动提交给微软的安全漏洞。

CVE-2020-0601漏洞位于Window的加密组件CryptoAPI。 CryptoAPI是微软提供给开发人员的Windows安全服务应用程序接口,可用于加密的应用程序,实现数据加密、解密、签名及验证等功能。

由Crypt32.dll提供的Microsoft Windows CryptoAPI无法以正确验证ECC证书的信任链。攻击者可以利用该漏洞伪造受信任的根证书签发证书。ECC椭圆曲线加密(Elliptic curve cryptography)于1985年由Neal Koblitz和Victor Miller分别独立提出的公钥密码算法。

 

算法见

ANS X9.62, Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA).

签名

  1. 输入:
    1. 待签名的消息M杂凑值转化为域上整数记为e
    2. 签名者用户A的私钥dA(A的密钥对包括其私钥dA公钥PA=[dA]G= (xA,yA))
  2. 输出:
    1. 数字签名(r,s)

 

 

5.4 验签

  1. 输入:
    1. 待签名的消息M杂凑值转化为域上整数记为e
    2. 签名者用户A的公钥PA(A的密钥对包括其私钥dA公钥PA=[dA]G= (xA,yA))
    3. 数字签名(r,s)
  2. 输出:验证通过或失败。

 

原理

验证流程5计算的点(x1; y1) 和签名步骤2计算的点( x1, y1 )相等。

计算流程

(x1; y1)

= [u1]G + [u2]PA

= [es-1]G + [rs-1]·[dA]G

= [s-1]·[e+r·dA]G

= [k(e+r·dA)-1]·[e+r·dA]G

= [k]G

= ( x1, y1 )

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!