从专业的网络空间安全专业的教授的角度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 mod
(1) 在签名合法的情况下,Alice会计算出h和z,其中h是根据消息m计算出来的摘要,z是根据私钥x和h计算出来的。然后,Alice计算出s=g^z mod p,即为消息m的签名。Bob在验证签名时,会计算出h并计算出y'=s^h mod p,然后将y'与公钥y进行比较,如果y'=y,则签名合法,否则签名非法。 为了证明y'=y,在签名合法的情况下,我们可以将s=g^z mod p代入计算y',得到y'=g^(zh) mod p。由于y=g^x mod p,因此我们需要证明y'=y,即g^(zh) mod p = g^x mod p。这可以通过证明zh和x模q同余来完成。因为z=x*h^(-1) mod q,所以xz=h mod q,即x和z模q同余。因此,g^x mod p = g^z mod p = s,所以y'=s^h mod p = g^(zh) mod p = g^(xh) mod p = y,因此y'=y,签名合法。
(2) 窃听者可以伪造签名的方法是,窃听者可以选择任意的z和s,然后用公钥y和消息m计算出y'=s^h mod p。然后,窃听者将y'发送给验证者,如果y'=y,则验证者会接受签名,否则拒绝签名。因此,窃听者需要找到一个合适的z和s,使得y'=y。窃听者可以通过试错的方式来找到合适的z和s,但是这需要很多的计算和时间。此外,如果窃听者没有私钥x,他无法计算出合法的签名
原文地址: https://www.cveoy.top/t/topic/cuvD 著作权归作者所有。请勿转载和采集!