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

这是第一个由美国国安局(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)

图解漏洞CVE-2020-0601中涉及的ECC签名算法ECDSA_第1张图片

验签

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

图解漏洞CVE-2020-0601中涉及的ECC签名算法ECDSA_第2张图片

 

、原理

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

计算流程

(x_1,y_1)

= [u_1]G+[u_2]P_A

= [es^{-1}]G+[rs^{-1}]\cdot [d_A]G

= [s^{-1}\cdot (e+rd_A)]G

=[k\cdot(e+rd_A)^{-1}\cdot(e+rd_A) ]G 

= [k ]G

=(x_1,y_1)

 

你可能感兴趣的:(密码技术与应用,密码)