(1)首先证明产生的签名是唯一的。由于a是q的本原根,那么a的阶为q-1。因此,对于任何整数z,aᶻ mod q=a^(z+k(q-1)) mod q,其中k为任意整数。因此,若存在两个签名z1和z2,满足a^(z1) mod q=a^(z2) mod q,则有a^(z1-z2) mod q=1。由于a的阶为q-1,因此z1-z2必须是q-1的倍数。然而,由于x<q,因此z1和z2必须在模q-1意义下相等。因此,签名是唯一的。

接下来证明签名验证的正确性。根据签名的生成方式,有a^(zh)=a^(x mod(q-1)) mod q,即a^(zh-x)=a^((q-1)k) mod q,其中k为任意整数。由于a是q的本原根,因此a^((q-1)k) mod q=1,因此有a^(zh-x)=1 mod q。因为h和q-1互素,所以z必须是x在模(q-1)意义下的乘法逆元。因此有a^(zh)=a^(x mod(q-1)) mod q,即y=(a^z)^h mod q,签名验证通过。

最后证明该体制的正确性。由于a是q的本原根,因此y=a^x mod q是离散对数问题,不易解决。根据签名的验证方式,签名者只需要在知道x的情况下,计算z使得z×h=x mod(q-1),然后计算a^z作为签名。但是,离散对数问题可以防止攻击者计算出x,因此攻击者无法伪造签名。

(2)攻击者可以选择一个任意的z,并计算a^z作为签名,然后将z和签名一起发送给验证者。验证者计算h=H(m),选择一个任意的整数k,并计算y=(a^z)^h×a^k mod q。然后将y作为伪造的签名返回给攻击者。由于y和a^z在模q意义下相等,因此验证者接受了伪造的签名。这种攻击方式称为弱伪造攻击,因为攻击者需要知道x才能伪造签名

以下是一种基于离散对数的签名方方法。公开大素数q和q的本原根aaq。私钥为 xxq。公钥是y=aˣ mod q。对消息m签名时先计算该消息的Hash值h=Hm这里要求gcdhq-1=1若gcdhq-1不为1则将该Hash值附于消息后再计算h继续该过程直到产生的h与q-1互素;然后计算满足 z×h=x modq-1的z并将aᶻ作为对该消息的签名。验证签名即是验证y=aᶻʰ mod q。1证明该体制能

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

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