(1) 该签名方案的执行过程如下:

  • 密钥产生:选取两个大素数p、q,计算g = h^((p-1)/q) mod p,其中h是一个随机的数,ord(g) = q。选取私钥x,计算公钥y = g^x mod p。
  • 签名产生:Alice对消息m进行签名,计算h = hash(m) mod q,计算z = x*h^(-1) mod q,计算s = g^z mod p。
  • 签名验证:Bob对签名进行验证,计算h = hash(m) mod q,计算y' = s^h mod p,判断y'是否等于y。

在签名合法的条件下,有: s = g^z mod p = g^(x*h^(-1)) mod p = (g^x mod p)^(h^(-1)) mod p = y^(h^(-1)) mod p 因此,y' = s^h mod p = (y^(h^(-1)))^h mod p = y^((h^(-1))*h) mod p = y mod p 因此,如果y' = y,则签名合法。

(2) 窃听者可以伪造签名,具体步骤如下:

  • 窃听者截获Alice发送的消息m和签名s。
  • 窃听者选取一个随机的数r,并计算s' = s*g^r mod p。
  • 窃听者将消息m和签名s'发送给Bob。
  • Bob计算y' = s'^h mod p = (sg^r)^h mod p = (g^zg^r)^h mod p = g^(zr+h) mod p 窃听者可以通过适当选择r,使得zr+h = h' mod q,其中h'是窃听者想要伪造的消息的hash值,因此y' = g^(h') mod p。
  • Bob验证y'是否等于y,由于y = g^x mod p,窃听者可以通过计算x' = log_g(y') mod p,然后计算y'' = g^(x') mod p,将y''作为合法的公钥y伪装成Bob计算出的公钥,使得y' = y''。

因此,窃听者可以通过选择合适的r和伪造公钥y来伪造签名

从专业的网络空间安全专业的高材生的角度1、考虑下面的数宇签名方案。1密钥产生p、q是两个大素数g属于Zpordg= q私钥x属于 Zq公钥 y = g^x mod p。2签名产生Alice 对消息m进行签名时她计算 h = hashm mod qz = xh^-1 mod qs=g^z mod p即为m的签名。3签名验证 Bob 对签名验证他计算 h = hashm mod qy = s^h mo

原文地址: https://www.cveoy.top/t/topic/cuvV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录