Schnorr数字签名方案

Schnorr签名算法最初由德国密码学家claus schnorr于2008年提出,在密码学中,它是一种数字签名方案,以其简单著称

Schnorr数字签名方案也是基于离散对数的(基于离散对数的还有ElGamal数字签名方案、DSA数字签名方案)。Schnorr方案将生成签名所需的消息计算量最小化。生成签名的主要工作不依赖于消息,可以在处理器空闲时执行。

该方案的第一部分是生成私钥/公钥对,它由以下步骤组成:

  1. 选择素数p和q,使得q是p-1的素因子。即 p-1 ≡ 0 (mod q)
  2. 选择一整数a,使得a^q = 1 mod p , a,p和q组成全局公钥参数,在用户组内的每一个用户都可以取此值
  3. 选择随机整数s,0<s<q,作为用户的私钥
  4. 计算v=a^(-s) mod p ,作为用户的公钥

对于私钥为s,公钥为v的用户,可以通过以下步骤产生签名:

  1. 选择随机整数r,0<r<q,并且计算x=a^r mod p 
  2. 将x附在消息M的后面一起计算hash值e , e=H(M||x)
  3. 计算y=(r+se) mod q .签名由(e,y)对组成

任何其他用户能够通过以下步骤验证签名:

  1. 计算
  2. 验证是否

对于该验证过程有,

因此,有

 

 

 

 

 

 

 

 

 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐